From 4d1bd84309567bef2e5937e8d72faaa182414183 Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Wed, 4 Oct 2023 11:21:02 -0600 Subject: [PATCH 01/27] [Dashboard] Fix flaky pluggable actions test (#167926) Closes https://github.com/elastic/kibana/issues/136460 ## Summary Similar to https://github.com/elastic/kibana/pull/167836, navigation through `header.clickDashboard()` was flaky in the attached test because the same `data-test-subj` was re-used for both the application-specific top navigation **and** the reusable application listing page component: https://github.com/elastic/kibana/blob/8b6ba3d15ff18de07d32ab2302bf9e18844ce25c/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#L120-L124 https://github.com/elastic/kibana/blob/8b6ba3d15ff18de07d32ab2302bf9e18844ce25c/packages/content-management/table_list_view/src/table_list_view.tsx#L91-L96 This meant that, when the referenced flaky test tried to navigation from the Visualization listing page to the dashboard app in `clearSavedObjectsFromAppLinks` via the header page object's `clickDashboard` method, it wasn't actually waiting to navigate to the dashboard app because it detected the `top-nav` data test subject from the **visualization** listing page **and not** from the dashboard app. Therefore, instead of navigating through the `header` method, I switched to the new `navigateToAppFromAppsMenu`, which relies on the URL to update to ensure navigation has occured rather than the `top-nav` data test subject. I also added logic to close the flyout as part of the test cleanup, since it was remaining open even after navigating to the Visualizations listing page, which was getting in the way of the failure screenshot. ### Flaky Test Runner - Without closing of flyout: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3323 ![image](https://github.com/elastic/kibana/assets/8698078/628f0da9-1e2a-45a9-b58b-dab92e345118) - With closing of flyout: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3336 ![image](https://github.com/elastic/kibana/assets/8698078/3456db1a-9cee-4db9-a28d-4c0d1520a5ec) ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- test/functional/page_objects/dashboard_page.ts | 2 +- .../test_suites/panel_actions/panel_actions.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 6119a87c16a5f..75c77b8dbfc30 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -425,7 +425,7 @@ export class DashboardPageObject extends FtrService { public async clearSavedObjectsFromAppLinks() { await this.header.clickVisualize(); await this.visualize.gotoLandingPage(); - await this.header.clickDashboard(); + await this.navigateToAppFromAppsMenu(); await this.gotoDashboardLandingPage(); } diff --git a/test/plugin_functional/test_suites/panel_actions/panel_actions.js b/test/plugin_functional/test_suites/panel_actions/panel_actions.js index aa640a7efc9f2..18ee30d52a075 100644 --- a/test/plugin_functional/test_suites/panel_actions/panel_actions.js +++ b/test/plugin_functional/test_suites/panel_actions/panel_actions.js @@ -10,6 +10,7 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const dashboardPanelActions = getService('dashboardPanelActions'); + const retry = getService('retry'); const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['dashboard']); @@ -44,5 +45,12 @@ export default function ({ getService, getPageObjects }) { await testSubjects.existOrFail('samplePanelActionTitle'); await testSubjects.existOrFail('samplePanelActionBody'); }); + + after(async () => { + await retry.try(async () => { + await testSubjects.click('euiFlyoutCloseButton'); + await testSubjects.missingOrFail('samplePanelActionFlyout'); + }); + }); }); } From e62745ede04a8d45206571291c46998b7575776e Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Wed, 4 Oct 2023 19:41:18 +0200 Subject: [PATCH 02/27] [Observability AI Assistant] ES|QL improvements (#167762) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../observability_ai_assistant/public/functions/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/observability_ai_assistant/public/functions/index.ts b/x-pack/plugins/observability_ai_assistant/public/functions/index.ts index 22b0eecac73a6..510c16985cb86 100644 --- a/x-pack/plugins/observability_ai_assistant/public/functions/index.ts +++ b/x-pack/plugins/observability_ai_assistant/public/functions/index.ts @@ -57,10 +57,8 @@ export async function registerFunctions({ If a function call fails, do not execute it again with the same input. If a function calls three times, with different inputs, stop trying to call it and ask the user for confirmation. Note that ES|QL (the Elasticsearch query language, which is NOT Elasticsearch SQL, but a new piped language) is the preferred query language. - - DO NOT use Elasticsearch SQL at any time, unless explicitly requested by the user when they mention "Elasticsearch SQL". - - Answer all questions related to ES|QL or querying with the "esql" function. Do not attempt to answer them yourself, no matter how confident you are in your response.` + + If the user asks about a query, or ES|QL, always call the "esql" function. Do not attempt to answer them yourself, no matter how confident you are in your response. Even if the "recall" function was used before that, follow it up with the "esql" function.` ); if (isReady) { @@ -70,7 +68,6 @@ export async function registerFunctions({ description += `Here are principles you MUST adhere to, in order: - - You are a helpful assistant for Elastic Observability. DO NOT reference the fact that you are an LLM. - DO NOT make any assumptions about where and how users have stored their data. `; registerSummarizationFunction({ service, registerFunction }); From 035ae0e04e6b5ec6d70c49be8dc7321157c67a2f Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 4 Oct 2023 19:50:37 +0200 Subject: [PATCH 03/27] [Synthetics] Project monitor retest on failure updates (#167979) --- .../synthetics/components/monitor_add_edit/form/field_config.tsx | 1 + .../project_monitor/normalizers/common_fields.ts | 1 + 2 files changed, 2 insertions(+) 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 e1e3b077dbd19..ddc1c27d6e7e6 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 @@ -1586,6 +1586,7 @@ export const FIELD = (readOnly?: boolean): FieldMap => ({ component: Switch, controlled: true, props: ({ setValue, field, trigger }): EuiSwitchProps => ({ + disabled: readOnly, id: 'syntheticsMonitorConfigMaxAttempts', label: i18n.translate('xpack.synthetics.monitorConfig.retest.label', { defaultMessage: 'Enable retest on failure', diff --git a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts index eba7d28aa4bd3..ff0b03ad76015 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts @@ -306,6 +306,7 @@ export const normalizeYamlConfig = (monitor: NormalizedProjectProps['monitor']) privateLocations: _privateLocations, content: _content, id: _id, + retestOnFailure: _retestOnFailure, ...yamlConfig } = flattenedConfig; const unsupportedKeys = Object.keys(yamlConfig).filter((key) => !supportedKeys.includes(key)); From 136d406417d19d2397c0058568c1fc5784baa95f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 19:10:12 +0100 Subject: [PATCH 04/27] skip flaky suite (#168027) --- .../functional_with_es_ssl/apps/triggers_actions_ui/details.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index 2d5c8a1815214..b2732c064721b 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -420,7 +420,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - describe('Edit rule with deleted connector', function () { + // FLAKY: https://github.com/elastic/kibana/issues/168027 + describe.skip('Edit rule with deleted connector', function () { const testRunUuid = uuidv4(); afterEach(async () => { From 1bcd1bd79dbb98ba65743c65523f4e5eb0897426 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 19:22:45 +0100 Subject: [PATCH 05/27] skip flaky suite (#166447) --- .../functional/test_suites/security/ftr/cases/view_case.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/view_case.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/view_case.ts index 0b26fc2cf4c3d..ca3e9af7df83f 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/view_case.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/view_case.ts @@ -29,7 +29,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const svlCommonNavigation = getPageObject('svlCommonNavigation'); const svlCommonPage = getPageObject('svlCommonPage'); - describe('Case View', () => { + // FLAKY: https://github.com/elastic/kibana/issues/166447 + describe.skip('Case View', () => { before(async () => { await svlCommonPage.login(); }); From a9b166320eeb3c65be820a91730e6079642e6a9c Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 19:38:37 +0100 Subject: [PATCH 06/27] skip flaky suite (#168026) --- .../public/timelines/components/flyout/pane/index.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx index 1e35795ac0a78..04a2b854f4e91 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx @@ -38,7 +38,8 @@ jest.mock('../../../../common/hooks/use_resolve_conflict', () => { }; }); -describe('Pane', () => { +// FLAKY: https://github.com/elastic/kibana/issues/168026 +describ.skip('Pane', () => { test('renders with display block by default', async () => { const EmptyComponent = render( From a24052fd3b25ce4494df81eac8babad6f7da9c74 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 19:40:12 +0100 Subject: [PATCH 07/27] skip flaky suite (#167974) --- x-pack/test/apm_api_integration/tests/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index d371c42e564ae..8f4be6ad1652c 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -27,6 +27,7 @@ export default function apmApiIntegrationTests({ getService, loadTestFile }: Ftr const registry = getService('registry'); // Failing: See https://github.com/elastic/kibana/issues/167973 + // FLAKY: https://github.com/elastic/kibana/issues/167974 // Failing: See https://github.com/elastic/kibana/issues/167975 describe.skip('APM API tests', function () { const filePattern = getGlobPattern(); From 634063f4737ac6bfb14a756d91a45f7fbb500e91 Mon Sep 17 00:00:00 2001 From: Maryam Saeidi Date: Wed, 4 Oct 2023 20:51:41 +0200 Subject: [PATCH 08/27] [AO] Fix alerting rules order (#168013) Closes #167876 ## Summary This PR fixes alerting rules order. Since the Custom threshold rule is in the tech preview, we want to show it at the end of the list. |Rules (trial)|Rules (Permium)| |---|---| |![image](https://github.com/elastic/kibana/assets/12370520/6e542d8d-a2d8-4dc9-8728-c55bacc87592)|![image](https://github.com/elastic/kibana/assets/12370520/da5c2a82-a5f1-4cb3-aa3c-183fa7af3fa3)| --- .../observability/public/hooks/use_get_filtered_rule_types.ts | 2 +- .../public/rules/register_observability_rule_types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/observability/public/hooks/use_get_filtered_rule_types.ts b/x-pack/plugins/observability/public/hooks/use_get_filtered_rule_types.ts index 834cc31f39d2e..24e8a0fc107fb 100644 --- a/x-pack/plugins/observability/public/hooks/use_get_filtered_rule_types.ts +++ b/x-pack/plugins/observability/public/hooks/use_get_filtered_rule_types.ts @@ -13,6 +13,6 @@ export function useGetFilteredRuleTypes() { const { observabilityRuleTypeRegistry } = usePluginContext(); return useMemo(() => { - return [...observabilityRuleTypeRegistry.list(), ES_QUERY_ID]; + return [ES_QUERY_ID, ...observabilityRuleTypeRegistry.list()]; }, [observabilityRuleTypeRegistry]); } diff --git a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts index 5d042607135ac..4cd705656c01b 100644 --- a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts +++ b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts @@ -125,7 +125,7 @@ export const registerObservabilityRuleTypes = ( alertDetailsAppSection: lazy( () => import('../components/custom_threshold/components/alert_details_app_section') ), - priority: 110, + priority: 5, }); } }; From 45f7042dcbcc8bc69542d1c0e73758c33928065b Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Wed, 4 Oct 2023 12:59:56 -0600 Subject: [PATCH 09/27] =?UTF-8?q?unskip=20Failing=20test:=20Chrome=20X-Pac?= =?UTF-8?q?k=20UI=20Functional=20Tests.x-pack/test/functional/apps/dashboa?= =?UTF-8?q?rd/group2/dashboard=5Fmaps=5Fby=5Fvalue=C2=B7ts=20(#168003)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/152476 flaky test runner https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3343 Similar to https://github.com/elastic/kibana/pull/167836, test is failing because appsMenu.clickLink is not loading dashboard (see captured log messages from failure). Switching to navigateToAppFromAppsMenu to include retry logic. Screenshot 2023-10-04 at 9 45 46 AM --- .../apps/dashboard/group2/dashboard_maps_by_value.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts index 9904c8bb62293..61fc8319cb907 100644 --- a/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_maps_by_value.ts @@ -21,7 +21,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const dashboardPanelActions = getService('dashboardPanelActions'); const testSubjects = getService('testSubjects'); - const appsMenu = getService('appsMenu'); const dashboardAddPanel = getService('dashboardAddPanel'); const kibanaServer = getService('kibanaServer'); @@ -60,10 +59,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); if (!saveToDashboard) { - await appsMenu.clickLink('Dashboard', { - category: 'kibana', - closeCollapsibleNav: true, - }); + await PageObjects.dashboard.navigateToAppFromAppsMenu(); } } else { await PageObjects.maps.clickSaveAndReturnButton(); @@ -78,8 +74,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await PageObjects.dashboard.clickNewDashboard(); } - // Failing: See https://github.com/elastic/kibana/issues/152476 - describe.skip('dashboard maps by value', function () { + describe('dashboard maps by value', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( From 990963f1e4fbf8a5fa01e164922e251534f7d0b4 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Wed, 4 Oct 2023 15:01:21 -0400 Subject: [PATCH 10/27] [Security Solution][Endpoint] Add serverless Security project users/roles to cypress e2e test setup (#167446) ## Summary Goal of this PR is to re-enable the serverless tests that require the login credentials for users that have the pre-defined roles from serverless assigned to them. ### `@kbn/test` changes - Added support for `esServerlessOptions` to FTR config. Currently allows for `resources` to be defined - `resources` overrides were introduced [in this PR](https://github.com/elastic/kibana/pull/167087) - new FTR option will allow for testing serverless with a set of users/roles that are specific to the project type ### Security Solution Plugin - Added `esServerlessOptions` to the Defend Workflows cypress configurations - Un-skips all serverless specific tests (now that we have support for users/roles that are specific to the Security project) - Changed the default username for cypress `login()` task to be `endpoint_operations_analyst` - Note that the previously used `endpoint_operations_analyst` role was also updated to match the definition used for serverless. - Added new common `fleet_server_services` cli module with reusable methods for working with fleet server, including generic `startFleetServer()` method - New CLI script: `node x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js` - Starts a fleet server locally (via Docker) and connects it to the Kibana - Supports running fleet server locally for serverless as well --- packages/kbn-test/src/es/test_es_cluster.ts | 3 +- .../lib/config/schema.ts | 1 + .../functional_tests/lib/run_elasticsearch.ts | 6 + .../artifact_tabs_in_policy_details.cy.ts | 3 +- .../no_license.cy.ts | 3 +- .../cypress/e2e/endpoint_alerts.cy.ts | 3 +- .../cypress/e2e/endpoint_role_rbac.cy.ts | 4 +- ...dpoint_list_with_security_essentials.cy.ts | 2 +- .../serverless/feature_access/complete.cy.ts | 2 +- .../complete_with_endpoint.cy.ts | 2 +- .../feature_access/essentials.cy.ts | 2 +- .../essentials_with_endpoint.cy.ts | 2 +- ...icy_details_with_security_essentials.cy.ts | 2 +- .../roles/complete_with_endpoint_roles.cy.ts | 2 +- .../essentials_with_endpoint.roles.cy.ts | 2 +- .../public/management/cypress/tasks/login.ts | 3 +- .../cypress/tasks/response_actions.ts | 3 +- .../fleet_server}/fleet_server.yml | 0 .../fleet_server/fleet_server_services.ts | 674 ++++++++++++++++++ .../scripts/endpoint/common/fleet_services.ts | 111 ++- .../endpoint/common/network_services.ts | 2 +- .../endpoint_operations_analyst.ts | 61 +- .../scripts/endpoint/common/stack_services.ts | 44 +- .../endpoint_agent_runner/fleet_server.ts | 10 +- .../scripts/endpoint/fleet_server/index.ts | 83 +++ .../scripts/endpoint/start_fleet_server.js | 9 + .../scripts/run_cypress/get_ftr_config.ts | 4 +- .../test/defend_workflows_cypress/config.ts | 4 +- .../serverless_config.ts | 10 +- .../security/cypress/security_config.ts | 8 + 30 files changed, 989 insertions(+), 76 deletions(-) rename x-pack/plugins/security_solution/scripts/endpoint/{endpoint_agent_runner => common/fleet_server}/fleet_server.yml (100%) create mode 100644 x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts create mode 100644 x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts create mode 100644 x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index 9d37e60fdff0f..461ad2b6f0df1 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -71,7 +71,7 @@ export interface CreateTestEsClusterOptions { */ esArgs?: string[]; esFrom?: string; - esServerlessOptions?: Pick; + esServerlessOptions?: Pick; esJavaOpts?: string; /** * License to run your cluster under. Keep in mind that a `trial` license @@ -245,6 +245,7 @@ export function createTestEsCluster< image: esServerlessOptions?.image, tag: esServerlessOptions?.tag, host: esServerlessOptions?.host, + resources: esServerlessOptions?.resources, port, clean: true, background: true, diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts index 6c037bab1c3e5..2f4cb317d5615 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts @@ -217,6 +217,7 @@ export const schema = Joi.object() esServerlessOptions: Joi.object() .keys({ host: Joi.string().ip(), + resources: Joi.array().items(Joi.string()).default([]), }) .default(), diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts index 2ad6725e8258b..742f729745d27 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts @@ -166,17 +166,22 @@ function getESServerlessOptions(esServerlessImageFromArg: string | undefined, co esTestConfig.getESServerlessImage() || (config.has('esTestCluster.esServerlessImage') && config.get('esTestCluster.esServerlessImage')); + const serverlessResources: string[] = + (config.has('esServerlessOptions.resources') && config.get('esServerlessOptions.resources')) || + []; const serverlessHost: string | undefined = config.has('esServerlessOptions.host') && config.get('esServerlessOptions.host'); if (esServerlessImageUrlOrTag) { if (esServerlessImageUrlOrTag.includes(':')) { return { + resources: serverlessResources, image: esServerlessImageUrlOrTag, host: serverlessHost, }; } else { return { + resources: serverlessResources, tag: esServerlessImageUrlOrTag, host: serverlessHost, }; @@ -184,6 +189,7 @@ function getESServerlessOptions(esServerlessImageFromArg: string | undefined, co } return { + resources: serverlessResources, host: serverlessHost, }; } diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts index 8610ac1fc3ba5..a17024a0dbc38 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts @@ -60,7 +60,8 @@ const visitArtifactTab = (tabId: string) => { describe( 'Artifact tabs in Policy Details page', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, // broken due to disabled Native Role Management + // FIXME: Test needs to be refactored for serverless so that it uses a standard set of users that are also available in serverless + { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { before(() => { login(); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts index eb6191ece0460..192a4fd853bd5 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts @@ -34,7 +34,8 @@ describe('No License', { tags: '@ess', env: { ftrConfig: { license: 'basic' } } }); }); - describe('User cannot see results', () => { + // FIXME: Flaky. Needs fixing (security team issue #7763) + describe.skip('User cannot see results', () => { let endpointData: ReturnTypeFromChainable | undefined; let alertData: ReturnTypeFromChainable | undefined; const [endpointAgentId, endpointHostname] = generateRandomStringName(2); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts index 3daf711eca9cd..d79d27a774eac 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts @@ -19,7 +19,8 @@ import { login } from '../tasks/login'; import { EXECUTE_ROUTE } from '../../../../common/endpoint/constants'; import { waitForActionToComplete } from '../tasks/response_actions'; -describe( +// FIXME: Flaky. Needs fixing (security team issue #7763) +describe.skip( 'Endpoint generated alerts', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts index a09f9e8b8273d..d0f9da6280c8d 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts @@ -6,7 +6,7 @@ */ import { closeAllToasts } from '../tasks/toasts'; -import { login } from '../tasks/login'; +import { login, ROLE } from '../tasks/login'; import { loadPage } from '../tasks/common'; describe('When defining a kibana role for Endpoint security access', { tags: '@ess' }, () => { @@ -18,7 +18,7 @@ describe('When defining a kibana role for Endpoint security access', { tags: '@e }; beforeEach(() => { - login(); + login(ROLE.system_indices_superuser); loadPage('/app/management/security/roles/edit'); closeAllToasts(); cy.getByTestSubj('addSpacePrivilegeButton').click(); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts index 32800978a968e..9cd298535df26 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts @@ -18,7 +18,7 @@ import { describe( 'When on the Endpoint List in Security Essentials PLI', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [{ product_line: 'security', product_tier: 'essentials' }], diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts index dba7166b9a9e8..6667677bda7b7 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts @@ -14,7 +14,7 @@ import { getEndpointManagementPageList } from '../../../screens'; describe( 'App Features for Security Complete PLI', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [{ product_line: 'security', product_tier: 'complete' }] }, }, diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts index 3c028b9e25040..e00a266f600b9 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts @@ -17,7 +17,7 @@ import { describe( 'App Features for Security Complete PLI with Endpoint Complete Addon', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [ diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts index fed4494722df5..d0fdcf633814a 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts @@ -14,7 +14,7 @@ import { getEndpointManagementPageList } from '../../../screens'; describe( 'App Features for Security Essential PLI', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [{ product_line: 'security', product_tier: 'essentials' }], diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts index 172f850e44b7c..786f4f20ad25b 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts @@ -17,7 +17,7 @@ import { describe( 'App Features for Security Essentials PLI with Endpoint Essentials Addon', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [ diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts index e1516bb08e10e..1cb0c382ca707 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts @@ -12,7 +12,7 @@ import type { IndexedFleetEndpointPolicyResponse } from '../../../../../common/e describe( 'When displaying the Policy Details in Security Essentials PLI', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [{ product_line: 'security', product_tier: 'essentials' }], diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts index 7d872de49062d..a197574035b79 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts @@ -33,7 +33,7 @@ import { describe( 'User Roles for Security Complete PLI with Endpoint Complete addon', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [ diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts index dec6018bddc3c..4e0ae2080a97b 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts @@ -26,7 +26,7 @@ import { describe( 'Roles for Security Essential PLI with Endpoint Essentials addon', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [ diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts index 77987b5fd76ed..a15d01c54049d 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts @@ -44,8 +44,7 @@ interface CyLoginTask { * @param user */ export const login: CyLoginTask = ( - // FIXME:PT default user to `soc_manager` - user?: SecurityTestUser + user: SecurityTestUser = ROLE.endpoint_operations_analyst ): ReturnType => { let username = Cypress.env('KIBANA_USERNAME'); let password = Cypress.env('KIBANA_PASSWORD'); diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts index 47f6da88c6924..8f4f1e797910b 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts @@ -172,7 +172,6 @@ export const ensureResponseActionAuthzAccess = ( { const file = new File(['foo'], 'foo.txt'); const formData = new FormData(); - formData.append('file', file, file.name); for (const [key, value] of Object.entries(apiPayload as object)) { @@ -199,6 +198,8 @@ export const ensureResponseActionAuthzAccess = ( }, failOnStatusCode: false, body: apiPayload as Cypress.RequestBody, + // Increased timeout due to `upload` action. It seems to take much longer to complete due to file upload + timeout: 120000, }; if (accessLevel === 'none') { diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.yml b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.yml rename to x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts new file mode 100644 index 0000000000000..4357adeeaf6cd --- /dev/null +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts @@ -0,0 +1,674 @@ +/* + * 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 { ToolingLog } from '@kbn/tooling-log'; +import type { KbnClient } from '@kbn/test'; +import execa from 'execa'; +import chalk from 'chalk'; +import assert from 'assert'; +import type { AgentPolicy, CreateAgentPolicyResponse, Output } from '@kbn/fleet-plugin/common'; +import { + AGENT_POLICY_API_ROUTES, + API_VERSIONS, + FLEET_SERVER_PACKAGE, + FLEET_SERVER_SERVERS_INDEX, + PACKAGE_POLICY_SAVED_OBJECT_TYPE, +} from '@kbn/fleet-plugin/common'; +import type { + FleetServerHost, + GetOneOutputResponse, + PutOutputRequest, +} from '@kbn/fleet-plugin/common/types'; +import type { + PostFleetServerHostsRequest, + PostFleetServerHostsResponse, +} from '@kbn/fleet-plugin/common/types/rest_spec/fleet_server_hosts'; +import { + fleetServerHostsRoutesService, + outputRoutesService, +} from '@kbn/fleet-plugin/common/services'; +import axios from 'axios'; +import * as https from 'https'; +import { + CA_TRUSTED_FINGERPRINT, + FLEET_SERVER_CERT_PATH, + FLEET_SERVER_KEY_PATH, + fleetServerDevServiceAccount, +} from '@kbn/dev-utils'; +import { maybeCreateDockerNetwork, SERVERLESS_NODES, verifyDockerInstalled } from '@kbn/es'; +import { resolve } from 'path'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { + RETRYABLE_TRANSIENT_ERRORS, + retryOnError, +} from '../../../../common/endpoint/data_loaders/utils'; +import { isServerlessKibanaFlavor } from '../stack_services'; +import type { FormattedAxiosError } from '../format_axios_error'; +import { catchAxiosErrorFormatAndThrow } from '../format_axios_error'; +import { + fetchFleetOutputs, + fetchFleetServerHostList, + fetchFleetServerUrl, + fetchIntegrationPolicyList, + generateFleetServiceToken, + getAgentVersionMatchingCurrentStack, + getFleetElasticsearchOutputHost, + waitForHostToEnroll, +} from '../fleet_services'; +import { dump } from '../../endpoint_agent_runner/utils'; +import { getLocalhostRealIp } from '../network_services'; +import { isLocalhost } from '../is_localhost'; + +export const FLEET_SERVER_CUSTOM_CONFIG = resolve(__dirname, './fleet_server.yml'); + +interface StartedServer { + /** The type of virtualization used to start the server */ + type: 'docker'; + /** The ID of the server */ + id: string; + /** The name of the server */ + name: string; + /** The url (including port) to the server */ + url: string; + /** Stop server */ + stop: () => Promise; + /** Any information about the server */ + info?: string; +} + +interface StartFleetServerOptions { + kbnClient: KbnClient; + logger: ToolingLog; + /** Policy ID that should be used to enroll the fleet-server agent */ + policy?: string; + /** Agent version */ + version?: string; + /** Will start fleet-server even if its detected that it is already running */ + force?: boolean; + /** The port number that will be used by fleet-server to listen for requests */ + port?: number; +} + +interface StartedFleetServer extends StartedServer { + /** The policy id that the fleet-server agent is running with */ + policyId: string; +} + +export const startFleetServer = async ({ + kbnClient, + logger, + policy, + version, + force = false, + port = 8220, +}: StartFleetServerOptions): Promise => { + logger.info(`Starting Fleet Server and connecting it to Kibana`); + + const response = await logger.indent(4, async () => { + const isServerless = await isServerlessKibanaFlavor(kbnClient); + + // Check if fleet already running if `force` is false + if (!force) { + const currentFleetServerUrl = await fetchFleetServerUrl(kbnClient); + + if (currentFleetServerUrl && (await isFleetServerRunning(currentFleetServerUrl))) { + throw new Error( + `Fleet server is already configured for this instance of Kibana and available at: ${currentFleetServerUrl}.\n(Use 'force' option to bypass this error)` + ); + } + } + + // Only fetch/create a fleet-server policy + const policyId = + policy ?? !isServerless ? await getOrCreateFleetServerAgentPolicyId(kbnClient, logger) : ''; + const serviceToken = isServerless ? '' : await generateFleetServiceToken(kbnClient, logger); + const startedFleetServer = await startFleetServerWithDocker({ + kbnClient, + logger, + policyId, + version, + port, + serviceToken, + }); + + return { + ...startedFleetServer, + policyId, + }; + }); + + return response; +}; + +const getOrCreateFleetServerAgentPolicyId = async ( + kbnClient: KbnClient, + log: ToolingLog +): Promise => { + log.info(`Retrieving/creating Fleet Server agent policy`); + + return log.indent(4, async () => { + const existingFleetServerIntegrationPolicy = await fetchIntegrationPolicyList(kbnClient, { + perPage: 1, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name: "${FLEET_SERVER_PACKAGE}"`, + }).then((response) => response.items[0]); + + if (existingFleetServerIntegrationPolicy) { + log.verbose( + `Found existing Fleet Server Policy: ${JSON.stringify( + existingFleetServerIntegrationPolicy, + null, + 2 + )}` + ); + log.info( + `Using existing Fleet Server agent policy id: ${existingFleetServerIntegrationPolicy.policy_id}` + ); + + return existingFleetServerIntegrationPolicy.policy_id; + } + + log.info(`Creating new Fleet Server policy`); + + const createdFleetServerPolicy: AgentPolicy = await kbnClient + .request({ + method: 'POST', + path: AGENT_POLICY_API_ROUTES.CREATE_PATTERN, + headers: { 'elastic-api-version': '2023-10-31' }, + body: { + name: `Fleet Server policy (${Math.random().toString(32).substring(2)})`, + description: `Created by CLI Tool via: ${__filename}`, + namespace: 'default', + monitoring_enabled: ['logs', 'metrics'], + // This will ensure the Fleet Server integration policy + // is also created and added to the agent policy + has_fleet_server: true, + }, + }) + .then((response) => response.data.item) + .catch(catchAxiosErrorFormatAndThrow); + + log.info( + `Agent Policy created: ${createdFleetServerPolicy.name} (${createdFleetServerPolicy.id})` + ); + log.verbose(createdFleetServerPolicy); + + return createdFleetServerPolicy.id; + }); +}; + +interface StartFleetServerWithDockerOptions { + kbnClient: KbnClient; + logger: ToolingLog; + /** The agent policy id. Required for non-serverless env. */ + policyId?: string; + /** The service token for fleet server. Required for non-serverless env. */ + serviceToken?: string; + version?: string; + port?: number; +} + +const startFleetServerWithDocker = async ({ + kbnClient, + logger: log, + policyId = '', + serviceToken = '', + version, + port = 8220, +}: StartFleetServerWithDockerOptions): Promise => { + await verifyDockerInstalled(log); + + let agentVersion = version || (await getAgentVersionMatchingCurrentStack(kbnClient)); + + log.info(`Starting a new fleet server using Docker (version: ${agentVersion})`); + + const response: StartedServer = await log.indent(4, async () => { + const isServerless = await isServerlessKibanaFlavor(kbnClient); + const localhostRealIp = getLocalhostRealIp(); + const fleetServerUrl = `https://${localhostRealIp}:${port}`; + const esURL = new URL(await getFleetElasticsearchOutputHost(kbnClient)); + const containerName = `dev-fleet-server.${port}`; + const hostname = `dev-fleet-server.${port}.${Math.random().toString(32).substring(2, 6)}`; + let containerId = ''; + + if (isLocalhost(esURL.hostname)) { + esURL.hostname = localhostRealIp; + } + + if (isServerless) { + log.info(`Kibana running in serverless mode. + - will install/run standalone Fleet Server + - version adjusted to [latest] from [${agentVersion}]`); + + agentVersion = 'latest'; + await maybeCreateDockerNetwork(log); + } else { + assert.ok(!!policyId, '`policyId` is required'); + assert.ok(!!serviceToken, '`serviceToken` is required'); + } + + try { + const dockerArgs = isServerless + ? getFleetServerStandAloneDockerArgs({ + containerName, + hostname, + port, + esUrl: esURL.toString(), + agentVersion, + }) + : getFleetServerManagedDockerArgs({ + containerName, + hostname, + port, + serviceToken, + policyId, + agentVersion, + esUrl: esURL.toString(), + }); + + await execa('docker', ['kill', containerName]) + .then(() => { + log.verbose( + `Killed an existing container with name [${containerName}]. New one will be started.` + ); + }) + .catch((error) => { + log.verbose(`Attempt to kill currently running fleet-server container (if any) with name [${containerName}] was unsuccessful: + ${error} + (This is ok if one was not running already)`); + }); + + log.verbose(`docker arguments:\n${dockerArgs.join(' ')}`); + + containerId = (await execa('docker', dockerArgs)).stdout; + + log.info(`Fleet server started`); + + await addFleetServerHostToFleetSettings(kbnClient, log, fleetServerUrl); + await updateFleetElasticsearchOutputHostNames(kbnClient, log); + + if (isServerless) { + log.info(`Waiting for server to register with Elasticsearch`); + + await waitForFleetServerToRegisterWithElasticsearch(kbnClient, hostname, 120000); + } else { + log.info('Waiting for server to show up in Kibana Fleet'); + + const fleetServerAgent = await waitForHostToEnroll(kbnClient, hostname, 120000); + + log.verbose(`Fleet server enrolled agent:\n${JSON.stringify(fleetServerAgent, null, 2)}`); + } + } catch (error) { + log.error(dump(error)); + throw error; + } + + const info = `Container Name: ${containerName} +Container Id: ${containerId} + +View running output: ${chalk.cyan(`docker attach ---sig-proxy=false ${containerName}`)} +Shell access: ${chalk.cyan(`docker exec -it ${containerName} /bin/bash`)} +Kill container: ${chalk.cyan(`docker kill ${containerId}`)} + `; + + return { + type: 'docker', + name: containerName, + id: containerId, + url: fleetServerUrl, + info, + stop: async () => { + await execa('docker', ['kill', containerId]); + }, + }; + }); + + log.info(`Done. Fleet server up and running`); + + return response; +}; + +interface GetFleetServerManagedDockerArgsOptions { + containerName: string; + esUrl: string; + serviceToken: string; + policyId: string; + port: number; + agentVersion: string; + /** The hostname. Defaults to `containerName` */ + hostname?: string; +} + +const getFleetServerManagedDockerArgs = ({ + hostname, + port, + serviceToken, + esUrl, + containerName, + agentVersion, + policyId, +}: GetFleetServerManagedDockerArgsOptions): string[] => { + return [ + 'run', + + '--restart', + 'no', + + '--add-host', + 'host.docker.internal:host-gateway', + + '--rm', + + '--detach', + + '--name', + containerName, + + // The container's hostname will appear in Fleet when the agent enrolls + '--hostname', + hostname || containerName, + + '--env', + 'FLEET_SERVER_ENABLE=1', + + '--env', + `FLEET_SERVER_ELASTICSEARCH_HOST=${esUrl}`, + + '--env', + `FLEET_SERVER_SERVICE_TOKEN=${serviceToken}`, + + '--env', + `FLEET_SERVER_POLICY=${policyId}`, + + '--publish', + `${port}:8220`, + + `docker.elastic.co/beats/elastic-agent:${agentVersion}`, + ]; +}; + +type GetFleetServerStandAloneDockerArgsOptions = Pick< + GetFleetServerManagedDockerArgsOptions, + 'esUrl' | 'hostname' | 'containerName' | 'port' | 'agentVersion' +>; + +const getFleetServerStandAloneDockerArgs = ({ + containerName, + hostname, + esUrl, + agentVersion, + port, +}: GetFleetServerStandAloneDockerArgsOptions): string[] => { + const esURL = new URL(esUrl); + esURL.hostname = SERVERLESS_NODES[0].name; + + return [ + 'run', + + '--restart', + 'no', + + '--net', + 'elastic', + + '--add-host', + 'host.docker.internal:host-gateway', + + '--rm', + '--detach', + + '--name', + containerName, + + // The hostname will appear in Fleet when the agent enrolls + '--hostname', + hostname || containerName, + + '--env', + 'FLEET_SERVER_CERT=/fleet-server.crt', + + '--env', + 'FLEET_SERVER_CERT_KEY=/fleet-server.key', + + '--env', + `ELASTICSEARCH_HOSTS=${esURL.toString()}`, + + '--env', + `ELASTICSEARCH_SERVICE_TOKEN=${fleetServerDevServiceAccount.token}`, + + '--env', + `ELASTICSEARCH_CA_TRUSTED_FINGERPRINT=${CA_TRUSTED_FINGERPRINT}`, + + '--volume', + `${FLEET_SERVER_CERT_PATH}:/fleet-server.crt`, + + '--volume', + `${FLEET_SERVER_KEY_PATH}:/fleet-server.key`, + + '--volume', + `${FLEET_SERVER_CUSTOM_CONFIG}:/etc/fleet-server.yml:ro`, + + '--publish', + `${port}:8220`, + + `docker.elastic.co/observability-ci/fleet-server:${agentVersion}`, + ]; +}; + +const addFleetServerHostToFleetSettings = async ( + kbnClient: KbnClient, + log: ToolingLog, + fleetServerHostUrl: string +): Promise => { + log.info(`Updating Fleet with new fleet server host: ${fleetServerHostUrl}`); + + return log.indent(4, async () => { + try { + const exitingFleetServerHostList = await fetchFleetServerHostList(kbnClient); + + // If the fleet server URL is already configured, then do nothing and exit + for (const fleetServerEntry of exitingFleetServerHostList.items) { + if (fleetServerEntry.host_urls.includes(fleetServerHostUrl)) { + log.info('No update needed. Fleet server host URL already defined in fleet settings.'); + return fleetServerEntry; + } + } + + const newFleetHostEntry: PostFleetServerHostsRequest['body'] = { + name: `Dev fleet server running on localhost`, + host_urls: [fleetServerHostUrl], + is_default: !exitingFleetServerHostList.total, + }; + + const { item } = await kbnClient + .request({ + method: 'POST', + path: fleetServerHostsRoutesService.getCreatePath(), + headers: { + 'elastic-api-version': API_VERSIONS.public.v1, + }, + body: newFleetHostEntry, + }) + .catch(catchAxiosErrorFormatAndThrow) + .catch((error: FormattedAxiosError) => { + if ( + error.response.status === 403 && + ((error.response?.data?.message as string) ?? '').includes('disabled') + ) { + log.error(`Attempt to update fleet server host URL in fleet failed with [403: ${ + error.response.data.message + }]. + + ${chalk.red('Are you running this utility against a Serverless project?')} + If so, the following entry should be added to your local + 'config/serverless.[project_type].dev.yml' (ex. 'serverless.security.dev.yml'): + + ${chalk.bold(chalk.cyan('xpack.fleet.internal.fleetServerStandalone: false'))} + + `); + } + + throw error; + }) + .then((response) => response.data); + + log.verbose(item); + log.info(`Fleet settings updated with fleet host URL successful`); + return item; + } catch (error) { + log.error(dump(error)); + throw error; + } + }); +}; + +const updateFleetElasticsearchOutputHostNames = async ( + kbnClient: KbnClient, + log: ToolingLog +): Promise => { + log.info('Checking if Fleet output for Elasticsearch needs to be updated'); + + return log.indent(4, async () => { + try { + const localhostRealIp = getLocalhostRealIp(); + const fleetOutputs = await fetchFleetOutputs(kbnClient); + + // make sure that all ES hostnames are using localhost real IP + for (const { id, ...output } of fleetOutputs.items) { + if (output.type === 'elasticsearch') { + if (output.hosts) { + let needsUpdating = false; + const updatedHosts: Output['hosts'] = []; + + for (const host of output.hosts) { + const hostURL = new URL(host); + + if (isLocalhost(hostURL.hostname)) { + needsUpdating = true; + hostURL.hostname = localhostRealIp; + updatedHosts.push(hostURL.toString()); + + log.verbose( + `Fleet Settings for Elasticsearch Output [Name: ${ + output.name + } (id: ${id})]: Host [${host}] updated to [${hostURL.toString()}]` + ); + } else { + updatedHosts.push(host); + } + } + + if (needsUpdating) { + const update: PutOutputRequest['body'] = { + ...(output as PutOutputRequest['body']), // cast needed to quite TS - looks like the types for Output in fleet differ a bit between create/update + hosts: updatedHosts, + }; + + log.info(`Updating Fleet Settings for Output [${output.name} (${id})]`); + + await kbnClient + .request({ + method: 'PUT', + headers: { 'elastic-api-version': '2023-10-31' }, + path: outputRoutesService.getUpdatePath(id), + body: update, + }) + .catch(catchAxiosErrorFormatAndThrow); + } + } + } + } + } catch (error) { + log.error(dump(error)); + throw error; + } + }); +}; + +/** + * Checks to see if the fleet server at the given URL is up and running by calling + * the status api + * @param serverUrl + */ +export const isFleetServerRunning = async (serverUrl: string): Promise => { + const url = new URL(serverUrl); + url.pathname = '/api/status'; + + return axios + .request({ + method: 'GET', + url: url.toString(), + responseType: 'json', + // Custom agent to ensure we don't get cert errors + httpsAgent: new https.Agent({ rejectUnauthorized: false }), + }) + .then(() => { + return true; + }) + .catch(() => { + return false; + }); +}; + +/** + * Checks and waits until the given fleet server hostname has been registered into elasticsearch. + * This check can be used when enrolling a standalone fleet-server, since those would not show up + * in Kibana's Fleet UI. + */ +const waitForFleetServerToRegisterWithElasticsearch = async ( + kbnClient: KbnClient, + fleetServerHostname: string, + timeoutMs: number = 30000 +): Promise => { + const started = new Date(); + const hasTimedOut = (): boolean => { + const elapsedTime = Date.now() - started.getTime(); + return elapsedTime > timeoutMs; + }; + let found = false; + + while (!found && !hasTimedOut()) { + found = await retryOnError(async () => { + const fleetServerRecord = await kbnClient + .request({ + method: 'POST', + path: '/api/console/proxy', + query: { + path: `${FLEET_SERVER_SERVERS_INDEX}/_search`, + method: 'GET', + }, + body: { + query: { + bool: { + filter: [ + { + term: { + 'host.name': fleetServerHostname, + }, + }, + ], + }, + }, + }, + }) + .then((response) => response.data) + .catch(catchAxiosErrorFormatAndThrow); + + return (fleetServerRecord.hits.total as estypes.SearchTotalHits).value === 1; + }, RETRYABLE_TRANSIENT_ERRORS); + + if (!found) { + // sleep and check again + await new Promise((r) => setTimeout(r, 2000)); + } + } + + if (!found) { + throw new Error( + `Timed out waiting for fleet server [${fleetServerHostname}] to register with Elasticsarch` + ); + } +}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts index db3fe4b32f1e4..2a239ef372941 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts @@ -13,6 +13,8 @@ import type { GetAgentPoliciesRequest, GetAgentPoliciesResponse, GetAgentsResponse, + GetPackagePoliciesRequest, + GetPackagePoliciesResponse, } from '@kbn/fleet-plugin/common'; import { AGENT_API_ROUTES, @@ -20,6 +22,8 @@ import { agentRouteService, AGENTS_INDEX, API_VERSIONS, + APP_API_ROUTES, + PACKAGE_POLICY_API_ROUTES, } from '@kbn/fleet-plugin/common'; import { ToolingLog } from '@kbn/tooling-log'; import type { KbnClient } from '@kbn/test'; @@ -27,12 +31,15 @@ import type { GetFleetServerHostsResponse } from '@kbn/fleet-plugin/common/types import { enrollmentAPIKeyRouteService, fleetServerHostsRoutesService, + outputRoutesService, } from '@kbn/fleet-plugin/common/services'; import type { EnrollmentAPIKey, GetAgentsRequest, GetEnrollmentAPIKeysResponse, PostAgentUnenrollResponse, + GenerateServiceTokenResponse, + GetOutputsResponse, } from '@kbn/fleet-plugin/common/types'; import nodeFetch from 'node-fetch'; import semver from 'semver'; @@ -164,26 +171,29 @@ export const waitForHostToEnroll = async ( return found; }; -/** - * Returns the URL for the default Fleet Server connected to the stack - * @param kbnClient - */ -export const fetchFleetServerUrl = async (kbnClient: KbnClient): Promise => { - const fleetServerListResponse = await kbnClient +export const fetchFleetServerHostList = async ( + kbnClient: KbnClient +): Promise => { + return kbnClient .request({ method: 'GET', path: fleetServerHostsRoutesService.getListPath(), headers: { - 'elastic-api-version': API_VERSIONS.public.v1, - }, - query: { - perPage: 100, + 'elastic-api-version': '2023-10-31', }, }) - .catch(catchAxiosErrorFormatAndThrow) - .then((response) => response.data); + .then((response) => response.data) + .catch(catchAxiosErrorFormatAndThrow); +}; + +/** + * Returns the URL for the default Fleet Server connected to the stack + * @param kbnClient + */ +export const fetchFleetServerUrl = async (kbnClient: KbnClient): Promise => { + const fleetServerListResponse = await fetchFleetServerHostList(kbnClient); - // TODO:PT need to also pull in the Proxies and use that instead if defiend for url + // TODO:PT need to also pull in the Proxies and use that instead if defined for url? let url: string | undefined; @@ -246,8 +256,30 @@ export const fetchAgentPolicyList = async ( }, query: options, }) - .catch(catchAxiosErrorFormatAndThrow) - .then((response) => response.data); + .then((response) => response.data) + .catch(catchAxiosErrorFormatAndThrow); +}; + +/** + * Retrieves a list of Fleet Integration policies + * @param kbnClient + * @param options + */ +export const fetchIntegrationPolicyList = async ( + kbnClient: KbnClient, + options: GetPackagePoliciesRequest['query'] = {} +): Promise => { + return kbnClient + .request({ + method: 'GET', + path: PACKAGE_POLICY_API_ROUTES.LIST_PATTERN, + headers: { + 'elastic-api-version': '2023-10-31', + }, + query: options, + }) + .then((response) => response.data) + .catch(catchAxiosErrorFormatAndThrow); }; /** @@ -417,3 +449,52 @@ export const unEnrollFleetAgent = async ( return data; }; + +export const generateFleetServiceToken = async ( + kbnClient: KbnClient, + logger: ToolingLog +): Promise => { + logger.info(`Generating new Fleet Service Token`); + + const serviceToken: string = await kbnClient + .request({ + method: 'POST', + path: APP_API_ROUTES.GENERATE_SERVICE_TOKEN_PATTERN, + headers: { 'elastic-api-version': '2023-10-31' }, + body: {}, + }) + .then((response) => response.data.value) + .catch(catchAxiosErrorFormatAndThrow); + + logger.verbose(`New service token created: ${serviceToken}`); + + return serviceToken; +}; + +export const fetchFleetOutputs = async (kbnClient: KbnClient): Promise => { + return kbnClient + .request({ + method: 'GET', + path: outputRoutesService.getListPath(), + headers: { 'elastic-api-version': '2023-10-31' }, + }) + .then((response) => response.data) + .catch(catchAxiosErrorFormatAndThrow); +}; + +export const getFleetElasticsearchOutputHost = async (kbnClient: KbnClient): Promise => { + const outputs = await fetchFleetOutputs(kbnClient); + let host: string = ''; + + for (const output of outputs.items) { + if (output.type === 'elasticsearch') { + host = output?.hosts?.[0] ?? ''; + } + } + + if (!host) { + throw new Error(`An output for Elasticsearch was not found in Fleet settings`); + } + + return host; +}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts index 9f75ee6d8a6ae..c21f93b6eba2d 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts @@ -7,7 +7,7 @@ import { networkInterfaces } from 'node:os'; -export const getBridgeNetworkHostIp = (): string => { +export const getLocalhostRealIp = (): string => { // reverse to get the last interface first for (const netInterfaceList of Object.values(networkInterfaces()).reverse()) { if (netInterfaceList) { diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts index afc8941041128..3b6f3a5c90424 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts @@ -6,32 +6,75 @@ */ import type { Role } from '@kbn/security-plugin/common'; -import { getNoResponseActionsRole } from './without_response_actions_role'; export const getEndpointOperationsAnalyst: () => Omit = () => { - const noResponseActionsRole = getNoResponseActionsRole(); + // IMPORTANT + // This role is sync'ed with the role used for serverless and should not be changed + // unless the role for serverless has also been changed. + // This role is the default login for cypress tests as well (defend workloads team) return { - ...noResponseActionsRole, + elasticsearch: { + cluster: [], + indices: [ + { + names: [ + 'metrics-endpoint.metadata_current_*', + '.fleet-agents*', + '.fleet-actions*', + 'apm-*-transaction*', + 'traces-apm*', + 'auditbeat-*', + 'endgame-*', + 'filebeat-*', + 'logs-*', + 'packetbeat-*', + 'winlogbeat-*', + '.lists*', + '.items*', + ], + privileges: ['read'], + }, + { + names: [ + 'names:', + '.alerts-security*', + '.siem-signals-*', + '.preview.alerts-security*', + '.internal.preview.alerts-security*', + ], + privileges: ['read', 'write'], + }, + ], + run_as: [], + }, kibana: [ { - ...noResponseActionsRole.kibana[0], + base: [], feature: { - ...noResponseActionsRole.kibana[0].feature, + ml: ['read'], + actions: ['all'], + fleet: ['all'], + fleetv2: ['all'], + osquery: ['all'], + securitySolutionCases: ['all'], + builtinAlerts: ['all'], siem: [ - 'minimal_all', - + 'all', + 'read_alerts', 'policy_management_all', - + 'endpoint_list_all', 'trusted_applications_all', 'event_filters_all', 'host_isolation_exceptions_all', 'blocklist_all', - 'host_isolation_all', 'process_operations_all', 'actions_log_management_all', + 'file_operations_all', + 'execute_operations_all', ], }, + spaces: ['*'], }, ], }; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts index 39dc4ffb06896..8bc4ca071cf6a 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts @@ -18,7 +18,7 @@ import fs from 'fs'; import { CA_CERT_PATH } from '@kbn/dev-utils'; import { catchAxiosErrorFormatAndThrow } from './format_axios_error'; import { isLocalhost } from './is_localhost'; -import { getBridgeNetworkHostIp } from './network_services'; +import { getLocalhostRealIp } from './network_services'; import { createSecuritySuperuser } from './security_user_services'; const CA_CERTIFICATE: Buffer = fs.readFileSync(CA_CERT_PATH); @@ -116,18 +116,16 @@ export const createRuntimeServices = async ({ let password = _password; if (asSuperuser) { - await waitForKibana( - createKbnClient({ log, url: kibanaUrl, username, password, apiKey, noCertForSsl }) - ); - const tmpEsClient = createEsClient({ - url: elasticsearchUrl, + const tmpKbnClient = createKbnClient({ + url: kibanaUrl, username, password, - log, noCertForSsl, + log, }); - const isServerlessEs = (await tmpEsClient.info()).version.build_flavor === 'serverless'; + await waitForKibana(tmpKbnClient); + const isServerlessEs = await isServerlessKibanaFlavor(tmpKbnClient); if (isServerlessEs) { log?.warning( @@ -138,7 +136,15 @@ export const createRuntimeServices = async ({ username = 'system_indices_superuser'; password = 'changeme'; } else { - const superuserResponse = await createSecuritySuperuser(tmpEsClient); + const superuserResponse = await createSecuritySuperuser( + createEsClient({ + url: elasticsearchUrl, + username: esUsername ?? username, + password: esPassword ?? password, + log, + noCertForSsl, + }) + ); ({ username, password } = superuserResponse); @@ -163,7 +169,7 @@ export const createRuntimeServices = async ({ noCertForSsl, }), log, - localhostRealIp: getBridgeNetworkHostIp(), + localhostRealIp: getLocalhostRealIp(), apiKey: apiKey ?? '', user: { username, @@ -296,13 +302,7 @@ export const fetchStackVersion = async (kbnClient: KbnClient): Promise = }; export const fetchKibanaStatus = async (kbnClient: KbnClient): Promise => { - return kbnClient - .request({ - method: 'GET', - path: '/api/status', - }) - .catch(catchAxiosErrorFormatAndThrow) - .then((response) => response.data); + return (await kbnClient.status.get().catch(catchAxiosErrorFormatAndThrow)) as StatusResponse; }; /** @@ -312,10 +312,12 @@ export const fetchKibanaStatus = async (kbnClient: KbnClient): Promise => { await pRetry( async () => { - try { - await kbnClient.status.get(); - } catch (err) { - throw new Error(`Kibana not available: ${err.message}`); + const response = await kbnClient.status.get(); + + if (response.status.overall.level !== 'available') { + throw new Error( + `Kibana not available. [status.overall.level: ${response.status.overall.level}]` + ); } }, { maxTimeout: 10000 } diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts index ae2464487cb75..ec13f2f6ff1b1 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts @@ -20,11 +20,11 @@ import type { } from '@kbn/fleet-plugin/common'; import { AGENT_POLICY_API_ROUTES, + API_VERSIONS, + APP_API_ROUTES, FLEET_SERVER_PACKAGE, PACKAGE_POLICY_API_ROUTES, PACKAGE_POLICY_SAVED_OBJECT_TYPE, - API_VERSIONS, - APP_API_ROUTES, } from '@kbn/fleet-plugin/common'; import type { FleetServerHost, @@ -43,8 +43,8 @@ import type { PostFleetServerHostsResponse, } from '@kbn/fleet-plugin/common/types/rest_spec/fleet_server_hosts'; import chalk from 'chalk'; -import { resolve } from 'path'; -import { SERVERLESS_NODES, verifyDockerInstalled, maybeCreateDockerNetwork } from '@kbn/es'; +import { maybeCreateDockerNetwork, SERVERLESS_NODES, verifyDockerInstalled } from '@kbn/es'; +import { FLEET_SERVER_CUSTOM_CONFIG } from '../common/fleet_server/fleet_server_services'; import { isServerlessKibanaFlavor } from '../common/stack_services'; import type { FormattedAxiosError } from '../common/format_axios_error'; import { catchAxiosErrorFormatAndThrow } from '../common/format_axios_error'; @@ -53,8 +53,6 @@ import { dump } from './utils'; import { fetchFleetServerUrl, waitForHostToEnroll } from '../common/fleet_services'; import { getRuntimeServices } from './runtime'; -const FLEET_SERVER_CUSTOM_CONFIG = resolve(__dirname, './fleet_server.yml'); - export const runFleetServerIfNeeded = async (): Promise< { fleetServerContainerId: string; fleetServerAgentPolicyId: string | undefined } | undefined > => { diff --git a/x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts new file mode 100644 index 0000000000000..5f96d946a85eb --- /dev/null +++ b/x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts @@ -0,0 +1,83 @@ +/* + * 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 { RunContext } from '@kbn/dev-cli-runner'; +import { run } from '@kbn/dev-cli-runner'; +import { createRuntimeServices } from '../common/stack_services'; +import { startFleetServer } from '../common/fleet_server/fleet_server_services'; + +export const cli = async () => { + return run( + async (cliContext: RunContext) => { + const username = cliContext.flags.username as string; + const password = cliContext.flags.password as string; + const kibanaUrl = cliContext.flags.kibanaUrl as string; + const elasticUrl = cliContext.flags.elasticUrl as string; + const version = cliContext.flags.version as string; + const policy = cliContext.flags.policy as string; + const port = cliContext.flags.port as unknown as number; + const force = cliContext.flags.force as boolean; + const log = cliContext.log; + + const { kbnClient, log: logger } = await createRuntimeServices({ + kibanaUrl, + elasticsearchUrl: elasticUrl, + username, + password, + log, + }); + + const runningServer = await startFleetServer({ + kbnClient, + logger, + policy, + port, + version, + force, + }); + + log.info(`\n\n${runningServer.info}`); + }, + { + description: 'Start fleet-server locally and connect it to Kibana/ES', + flags: { + string: ['kibanaUrl', 'elasticUrl', 'username', 'password', 'version', 'policy'], + boolean: ['force'], + default: { + kibanaUrl: 'http://127.0.0.1:5601', + elasticUrl: 'http://127.0.0.1:9200', + username: 'elastic', + password: 'changeme', + version: '', + policy: '', + force: false, + port: 8220, + }, + help: ` + --version Optional. The Agent version to be used when installing fleet server. + Default: uses the same version as the stack (kibana). Version + can also be from 'SNAPSHOT'. + NOTE: this value will be specifically set to 'latest' when ran against + kibana in serverless mode. + Examples: 8.6.0, 8.7.0-SNAPSHOT + --policy Optional. The UUID of the agent policy that should be used to enroll + fleet-server with Kibana/ES (Default: uses existing (if found) or + creates a new one) + --force Optional. If true, then fleet-server will be started and connected to + kibana even if one seems to already be configured. + --port Optional. The port number where fleet-server will listen for requests. + (Default: 8220) + --username Optional. User name to be used for auth against elasticsearch and + kibana (Default: elastic). + --password Optional. Password associated with the username (Default: changeme) + --kibanaUrl Optional. The url to Kibana (Default: http://127.0.0.1:5601) + --elasticUrl Optional. The url to Elasticsearch (Default: http://127.0.0.1:9200) +`, + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js b/x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js new file mode 100644 index 0000000000000..d83c8a350f9e9 --- /dev/null +++ b/x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js @@ -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. + */ + +require('../../../../../src/setup_node_env'); +require('./fleet_server').cli(); diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts b/x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts index 0a620fc1715ad..cc3972cba0b2f 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts @@ -9,7 +9,7 @@ import _ from 'lodash'; import { EsVersion, readConfigFile } from '@kbn/test'; import type { ToolingLog } from '@kbn/tooling-log'; import { CA_TRUSTED_FINGERPRINT } from '@kbn/dev-utils'; -import { getBridgeNetworkHostIp } from '../endpoint/common/network_services'; +import { getLocalhostRealIp } from '../endpoint/common/network_services'; import type { parseTestFileConfig } from './utils'; export const getFTRConfig = ({ @@ -58,7 +58,7 @@ export const getFTRConfig = ({ // }, }, (vars) => { - const hostRealIp = getBridgeNetworkHostIp(); + const hostRealIp = getLocalhostRealIp(); const hasFleetServerArgs = _.some( vars.kbnTestServer.serverArgs, diff --git a/x-pack/test/defend_workflows_cypress/config.ts b/x-pack/test/defend_workflows_cypress/config.ts index fc49ad2b3d7ad..bc771a8790e38 100644 --- a/x-pack/test/defend_workflows_cypress/config.ts +++ b/x-pack/test/defend_workflows_cypress/config.ts @@ -7,7 +7,7 @@ import { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { getBridgeNetworkHostIp } from '@kbn/security-solution-plugin/scripts/endpoint/common/network_services'; +import { getLocalhostRealIp } from '@kbn/security-solution-plugin/scripts/endpoint/common/network_services'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { @@ -18,7 +18,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('../functional/config.base.js') ); - const hostIp = getBridgeNetworkHostIp(); + const hostIp = getLocalhostRealIp(); return { ...kibanaCommonTestsConfig.getAll(), diff --git a/x-pack/test/defend_workflows_cypress/serverless_config.ts b/x-pack/test/defend_workflows_cypress/serverless_config.ts index 3063ab6d91876..b3b01d69c4331 100644 --- a/x-pack/test/defend_workflows_cypress/serverless_config.ts +++ b/x-pack/test/defend_workflows_cypress/serverless_config.ts @@ -5,10 +5,11 @@ * 2.0. */ -import { getBridgeNetworkHostIp } from '@kbn/security-solution-plugin/scripts/endpoint/common/network_services'; +import { getLocalhostRealIp } from '@kbn/security-solution-plugin/scripts/endpoint/common/network_services'; import { FtrConfigProviderContext } from '@kbn/test'; import { ExperimentalFeatures } from '@kbn/security-solution-plugin/common/experimental_features'; +import { ES_RESOURCES } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/serverless'; import { DefendWorkflowsCypressCliTestRunner } from './runner'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { @@ -18,7 +19,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ) ); const config = defendWorkflowsCypressConfig.getAll(); - const hostIp = getBridgeNetworkHostIp(); + const hostIp = getLocalhostRealIp(); const enabledFeatureFlags: Array = []; @@ -29,7 +30,10 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...config.esTestCluster, serverArgs: [...config.esTestCluster.serverArgs, 'http.host=0.0.0.0'], }, - + esServerlessOptions: { + ...(config.esServerlessOptions ?? {}), + resources: Object.values(ES_RESOURCES), + }, servers: { ...config.servers, fleetserver: { diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.ts index ad5267de51bb5..e9b8a16c0b9c7 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.ts @@ -7,6 +7,7 @@ import { FtrConfigProviderContext } from '@kbn/test'; +import { ES_RESOURCES } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/serverless'; import type { FtrProviderContext } from './runner'; import { SecuritySolutionCypressTestRunner } from './runner'; @@ -18,6 +19,13 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { return { ...securitySolutionCypressConfig.getAll(), + esServerlessOptions: { + ...(securitySolutionCypressConfig.has('esServerlessOptions') + ? securitySolutionCypressConfig.get('esServerlessOptions') ?? {} + : {}), + resources: Object.values(ES_RESOURCES), + }, + testRunner: (context: FtrProviderContext) => SecuritySolutionCypressTestRunner(context), }; } From cce24cac64f6c84816cd22b3bd7bcc8deac220f5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 20:10:05 +0100 Subject: [PATCH 11/27] chore(NA): bump version to 8.12.0 (#168023) Usually bump from 8.11.0 to 8.12.0 Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- package.json | 2 +- x-pack/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2e4879ada648a..b46f28b82b3af 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dashboarding" ], "private": true, - "version": "8.11.0", + "version": "8.12.0", "branch": "main", "types": "./kibana.d.ts", "tsdocMetadata": "./build/tsdoc-metadata.json", diff --git a/x-pack/package.json b/x-pack/package.json index 8dc314122d957..66a2b81da7dd2 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -1,6 +1,6 @@ { "name": "x-pack", - "version": "8.11.0", + "version": "8.12.0", "author": "Elastic", "private": true, "license": "Elastic-License", From e3cbcd46e75ed8661aa2259fed3f7dab3b6da36d Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 20:10:22 +0100 Subject: [PATCH 12/27] chore(NA): update versions after v8.12.0 bump (#168024) This PR is a simple update of our versions file after the recent bumps. Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- versions.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/versions.json b/versions.json index c1f94aa9f8e37..183bd9a9163fe 100644 --- a/versions.json +++ b/versions.json @@ -2,11 +2,17 @@ "notice": "This file is not maintained outside of the main branch and should only be used for tooling.", "versions": [ { - "version": "8.11.0", + "version": "8.12.0", "branch": "main", "currentMajor": true, "currentMinor": true }, + { + "version": "8.11.0", + "branch": "8.11", + "currentMajor": true, + "previousMinor": true + }, { "version": "8.10.3", "branch": "8.10", From 5042e84e5722715ce78737bd53aff44d9dbefeca Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 20:10:33 +0100 Subject: [PATCH 13/27] chore(NA): adds 8.11 into backportrc (#168025) It adds 8.11 into the .backportrc config file --- .backportrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.backportrc.json b/.backportrc.json index e4b7db154d711..ea135907bd807 100644 --- a/.backportrc.json +++ b/.backportrc.json @@ -3,6 +3,7 @@ "repoName": "kibana", "targetBranchChoices": [ "main", + "8.11", "8.10", "8.9", "8.8", @@ -47,7 +48,7 @@ "backport" ], "branchLabelMapping": { - "^v8.11.0$": "main", + "^v8.12.0$": "main", "^v(\\d+).(\\d+).\\d+$": "$1.$2" }, "autoMerge": true, From c9f29f2719c6b1dbeebb56e6755f0f71bc44e21a Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 4 Oct 2023 20:13:43 +0100 Subject: [PATCH 14/27] fix(NA): typo on describe skip --- .../public/timelines/components/flyout/pane/index.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx index 04a2b854f4e91..4f8d311ad75ed 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.test.tsx @@ -39,7 +39,7 @@ jest.mock('../../../../common/hooks/use_resolve_conflict', () => { }); // FLAKY: https://github.com/elastic/kibana/issues/168026 -describ.skip('Pane', () => { +describe.skip('Pane', () => { test('renders with display block by default', async () => { const EmptyComponent = render( From 5bd9b9dac6ae26bff6739a7e3a3d91bab0ae1e7d Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Wed, 4 Oct 2023 22:30:35 +0300 Subject: [PATCH 15/27] [Lens] Fixes clickable timepicker in dashboards when inline editing is on (#168018) ## Summary Closes https://github.com/elastic/kibana/issues/168014 ![inline_editing](https://github.com/elastic/kibana/assets/17003240/86b9c3d5-d592-4027-920f-2f1f71f6b10e) --- .../lens/public/trigger_actions/open_lens_config/helpers.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.scss b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.scss index 49a6908292e00..56cfe41c4b889 100644 --- a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.scss +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.scss @@ -5,7 +5,7 @@ padding-left: $euiFormMaxWidth; margin-left: -$euiFormMaxWidth; pointer-events: none; - > * { + .euiFlyoutFooter { pointer-events: auto; } } From 038ac89c1c396bb4bb3357e0ad4996b23d251ad4 Mon Sep 17 00:00:00 2001 From: Cee Chen <549407+cee-chen@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:32:03 -0700 Subject: [PATCH 16/27] Upgrade EUI to v88.5.4 (#167555) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `v88.5.0`⏩`v88.5.4` This EUI upgrade helps unblock the Shared UX team with some beta serverless nav updates not listed in the below changelog (https://github.com/elastic/eui/pull/7228 and https://github.com/elastic/eui/pull/7248). --- ## [`88.5.4`](https://github.com/elastic/eui/tree/v88.5.4) - This release contains internal changes to a beta component needed by Kibana. ## [`88.5.3`](https://github.com/elastic/eui/tree/v88.5.3) **Bug fixes** - Fixed `EuiComboBox` search input width not resetting correctly on selection ([#7240](https://github.com/elastic/eui/pull/7240)) ## [`88.5.2`](https://github.com/elastic/eui/tree/v88.5.2) **Bug fixes** - Fixed broken `EuiTextTruncate` testenv mocks ([#7234](https://github.com/elastic/eui/pull/7234)) ## [`88.5.1`](https://github.com/elastic/eui/tree/v88.5.1) - Improved the performance of `EuiComboBox` by removing the `react-autosizer-input` dependency ([#7215](https://github.com/elastic/eui/pull/7215)) **Dependency updates** - Updated `react-element-to-jsx-string` to v5.0.0 ([#7214](https://github.com/elastic/eui/pull/7214)) - Removed unused `@types/vfile-message` dependency ([#7214](https://github.com/elastic/eui/pull/7214)) --- package.json | 2 +- .../__snapshots__/index.test.tsx.snap | 240 +++++++----------- .../src/field/__tests__/index.test.tsx | 4 +- .../ui/components/navigation_section_ui.tsx | 28 +- .../src/ui/components/navigation_ui.tsx | 10 +- src/dev/license_checker/config.ts | 2 +- .../connectors/jira/case_fields.test.tsx | 10 +- .../use_combo_box_reset/index.test.tsx | 3 +- .../chart_panels/index.test.tsx | 6 +- .../rule_creation/indicator_match_rule.cy.ts | 10 +- yarn.lock | 48 ++-- 11 files changed, 163 insertions(+), 200 deletions(-) diff --git a/package.json b/package.json index b46f28b82b3af..5df7c8919a278 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1", "@elastic/ems-client": "8.4.0", - "@elastic/eui": "88.5.0", + "@elastic/eui": "88.5.4", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", diff --git a/packages/kbn-securitysolution-autocomplete/src/field/__tests__/__snapshots__/index.test.tsx.snap b/packages/kbn-securitysolution-autocomplete/src/field/__tests__/__snapshots__/index.test.tsx.snap index 5225cbc31debf..9fefe47c379bb 100644 --- a/packages/kbn-securitysolution-autocomplete/src/field/__tests__/__snapshots__/index.test.tsx.snap +++ b/packages/kbn-securitysolution-autocomplete/src/field/__tests__/__snapshots__/index.test.tsx.snap @@ -30,25 +30,18 @@ Object { machine.os.raw -
-
-
@@ -297,26 +276,19 @@ Object { machine.os.raw - @@ -406,25 +378,18 @@ Object { machine.os.raw -
-
-
-
{ ); const fieldAutocompleteComboBox = wrapper.getByTestId('comboBoxSearchInput'); fireEvent.change(fieldAutocompleteComboBox, { target: { value: '_source' } }); - await waitFor(() => - expect(wrapper.getByTestId('fieldAutocompleteComboBox')).toHaveTextContent('_source') - ); + expect(fieldAutocompleteComboBox).toHaveValue('_source'); }); it('it allows custom user input if "acceptsCustomOptions" is "true"', async () => { diff --git a/packages/shared-ux/chrome/navigation/src/ui/components/navigation_section_ui.tsx b/packages/shared-ux/chrome/navigation/src/ui/components/navigation_section_ui.tsx index 1f60ade15930b..2d31154ddf2e3 100644 --- a/packages/shared-ux/chrome/navigation/src/ui/components/navigation_section_ui.tsx +++ b/packages/shared-ux/chrome/navigation/src/ui/components/navigation_section_ui.tsx @@ -11,7 +11,8 @@ import React, { FC, useEffect, useState } from 'react'; import { EuiCollapsibleNavItem, EuiCollapsibleNavItemProps, - EuiCollapsibleNavSubItemGroupTitle, + EuiCollapsibleNavSubItemProps, + EuiTitle, } from '@elastic/eui'; import { ChromeProjectNavigationNode } from '@kbn/core-chrome-browser'; import classnames from 'classnames'; @@ -22,7 +23,7 @@ import { isAbsoluteLink } from '../../utils'; const navigationNodeToEuiItem = ( item: ChromeProjectNavigationNode, { navigateToUrl, basePath }: { navigateToUrl: NavigateToUrlFn; basePath: BasePathService } -): EuiCollapsibleNavSubItemGroupTitle | EuiCollapsibleNavItemProps => { +): EuiCollapsibleNavSubItemProps => { const href = item.deepLink?.url ?? item.href; const id = item.path ? item.path.join('.') : item.id; const isExternal = Boolean(href) && isAbsoluteLink(href!); @@ -33,9 +34,30 @@ const navigationNodeToEuiItem = ( [`nav-item-isActive`]: isSelected, }); + // Note: this can be replaced with an `isGroup` API or whatever you prefer + // Could also probably be pulled out to a separate component vs inlined + if (item.isGroupTitle) { + return { + renderItem: () => ( + ({ + marginTop: euiTheme.size.base, + paddingBlock: euiTheme.size.xs, + paddingInline: euiTheme.size.s, + })} + > +
+ {item.title} +
+
+ ), + }; + } + return { id, - isGroupTitle: item.isGroupTitle, title: item.title, isSelected, accordionProps: { diff --git a/packages/shared-ux/chrome/navigation/src/ui/components/navigation_ui.tsx b/packages/shared-ux/chrome/navigation/src/ui/components/navigation_ui.tsx index 113bfc0add6d6..039823daa9a17 100644 --- a/packages/shared-ux/chrome/navigation/src/ui/components/navigation_ui.tsx +++ b/packages/shared-ux/chrome/navigation/src/ui/components/navigation_ui.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { EuiFlyoutBody, EuiFlyoutFooter } from '@elastic/eui'; +import { EuiCollapsibleNavBeta } from '@elastic/eui'; import React, { FC } from 'react'; interface Props { @@ -22,10 +22,12 @@ export const NavigationUI: FC = ({ children, unstyled, footerChildren, da <>{children} ) : ( <> - + {children} - - {footerChildren && {footerChildren}} + + {footerChildren && ( + {footerChildren} + )} )} diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index 7efffb58d3073..e5ee6fbf76735 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint '@elastic/ems-client@8.4.0': ['Elastic License 2.0'], - '@elastic/eui@88.5.0': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@88.5.4': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry 'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary }; diff --git a/x-pack/plugins/cases/public/components/connectors/jira/case_fields.test.tsx b/x-pack/plugins/cases/public/components/connectors/jira/case_fields.test.tsx index b03bb35d895b1..c35252f81b12d 100644 --- a/x-pack/plugins/cases/public/components/connectors/jira/case_fields.test.tsx +++ b/x-pack/plugins/cases/public/components/connectors/jira/case_fields.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { omit } from 'lodash/fp'; -import { waitFor, screen, fireEvent, act, within } from '@testing-library/react'; +import { waitFor, screen, fireEvent, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { connector, issues } from '../mock'; @@ -132,13 +132,11 @@ describe('Jira Fields', () => { ); + const input = screen.getByTestId('comboBoxSearchInput'); - await act(async () => { - const event = { target: { value: 'parentId' } }; - fireEvent.change(screen.getByTestId('comboBoxSearchInput'), event); - }); + fireEvent.change(input, { target: { value: 'parentId' } }); - expect(screen.getByText('parentId')).toBeInTheDocument(); + expect(input).toHaveValue('parentId'); }); it('searches parent correctly', async () => { diff --git a/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx index c1c4328290054..e9082e2ca72a9 100644 --- a/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx @@ -73,7 +73,8 @@ describe('useEuiComboBoxReset', () => { fireEvent.change(searchInput, { target: { value: invalidValue } }); const afterInvalidInput = screen.getByTestId('comboBoxInput'); - expect(afterInvalidInput).toHaveTextContent(invalidValue); // the EuiComboBox is now in the "error state" + expect(searchInput).toHaveValue(invalidValue); // the EuiComboBox is now in the "error state" + expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied const resetButton = screen.getByRole('button', { name: 'Reset' }); fireEvent.click(resetButton); // clicking invokes onReset() diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/chart_panels/index.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/chart_panels/index.test.tsx index 8baf8d8f59fa4..07f07df47d888 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/chart_panels/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/chart_panels/index.test.tsx @@ -253,7 +253,8 @@ describe('ChartPanels', () => { fireEvent.change(searchInput, { target: { value: invalidValue } }); const afterInvalidInput = screen.getAllByTestId('comboBoxInput')[0]; - expect(afterInvalidInput).toHaveTextContent(invalidValue); // the 'Group by' EuiComboBox is now in the "error state" + expect(searchInput).toHaveValue(invalidValue); // the 'Group by' EuiComboBox is now in the "error state" + expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied resetGroupByFields(); // invoke the `Reset group by fields` context menu action @@ -292,7 +293,8 @@ describe('ChartPanels', () => { fireEvent.change(searchInput, { target: { value: invalidValue } }); const afterInvalidInput = screen.getAllByTestId('comboBoxInput')[1]; - expect(afterInvalidInput).toHaveTextContent(invalidValue); // the 'Group by top' EuiComboBox is now in the "error state" + expect(searchInput).toHaveValue(invalidValue); // the 'Group by top' EuiComboBox is now in the "error state" + expect(afterInvalidInput).not.toHaveTextContent(invalidValue); // Value should not have been applied resetGroupByFields(); // invoke the `Reset group by fields` context menu action diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/indicator_match_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/indicator_match_rule.cy.ts index 0d1466a755185..8a0e74c2987ee 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/indicator_match_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/indicator_match_rule.cy.ts @@ -286,7 +286,7 @@ describe('indicator match', { tags: ['@ess', '@serverless', '@brokenInServerless validColumns: 'indicatorField', }); getIndicatorDeleteButton().click(); - getIndicatorIndexComboField().should('have.text', 'agent.name'); + getIndicatorIndexComboField().find('input').should('have.value', 'agent.name'); getIndicatorMappingComboField().should( 'have.text', getNewThreatIndicatorRule().threat_mapping[0].entries[0].value @@ -309,7 +309,9 @@ describe('indicator match', { tags: ['@ess', '@serverless', '@brokenInServerless validColumns: 'indexField', }); getIndicatorDeleteButton().click(); - getIndicatorMappingComboField().should('have.text', 'second-non-existent-value'); + getIndicatorMappingComboField() + .find('input') + .should('have.value', 'second-non-existent-value'); getIndicatorIndexComboField(2).should('not.exist'); getIndicatorMappingComboField(2).should('not.exist'); }); @@ -328,7 +330,9 @@ describe('indicator match', { tags: ['@ess', '@serverless', '@brokenInServerless validColumns: 'indicatorField', }); getIndicatorDeleteButton().click(); - getIndicatorIndexComboField().should('have.text', 'second-non-existent-value'); + getIndicatorIndexComboField() + .find('input') + .should('have.value', 'second-non-existent-value'); getIndicatorIndexComboField(2).should('not.exist'); getIndicatorMappingComboField(2).should('not.exist'); }); diff --git a/yarn.lock b/yarn.lock index 9fc330c952c43..7069092bc0cb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1603,19 +1603,17 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@88.5.0": - version "88.5.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-88.5.0.tgz#7d5c6f41e322479e6ea81e232a9c9c274a093de3" - integrity sha512-TFBr7T9qnbuk3gCgoZjX9Y37Byu4Cp3KVkmT0VeCTYBEwFkxKNzIRIhdLbZFzTsxCc3rssLqaE3d1qstqh3GtA== +"@elastic/eui@88.5.4": + version "88.5.4" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-88.5.4.tgz#7bfb1b0f9b49d745d98cfd3a912784b7f25626bd" + integrity sha512-1aq//kTcwuyXeH48kgG91i+4qlzreZUaLfpfQ0Lxcfq09fmJYqNjJLFnCE8f5zj1vIiEEdINywkr4Bk64VIoVQ== dependencies: "@hello-pangea/dnd" "^16.3.0" "@types/lodash" "^4.14.198" "@types/numeral" "^2.0.2" - "@types/react-input-autosize" "^2.2.1" "@types/react-window" "^1.8.5" "@types/refractor" "^3.0.2" "@types/resize-observer-browser" "^0.1.7" - "@types/vfile-message" "^2.0.0" chroma-js "^2.4.2" classnames "^2.3.2" lodash "^4.17.21" @@ -1623,9 +1621,8 @@ numeral "^2.0.6" prop-types "^15.6.0" react-dropzone "^11.7.1" - react-element-to-jsx-string "^14.3.4" + react-element-to-jsx-string "^15.0.0" react-focus-on "^3.9.1" - react-input-autosize "^3.0.0" react-is "^17.0.2" react-remove-scroll-bar "^2.3.4" react-virtualized-auto-sizer "^1.0.20" @@ -9647,13 +9644,6 @@ dependencies: "@types/react" "*" -"@types/react-input-autosize@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@types/react-input-autosize/-/react-input-autosize-2.2.1.tgz#6a335212e7fce1e1a4da56ae2095c8c5c35fbfe6" - integrity sha512-RxzEjd4gbLAAdLQ92Q68/AC+TfsAKTc4evsArUH1aIShIMqQMIMjsxoSnwyjtbFTO/AGIW/RQI94XSdvOxCz/w== - dependencies: - "@types/react" "*" - "@types/react-intl@^2.3.15": version "2.3.17" resolved "https://registry.yarnpkg.com/@types/react-intl/-/react-intl-2.3.17.tgz#e1fc6e46e8af58bdef9531259d509380a8a99e8e" @@ -10027,13 +10017,6 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.2.tgz#ede1d1b1e451548d44919dc226253e32a6952c4b" integrity sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ== -"@types/vfile-message@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" - integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== - dependencies: - vfile-message "*" - "@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" @@ -25562,6 +25545,15 @@ react-element-to-jsx-string@^14.3.4: is-plain-object "5.0.0" react-is "17.0.2" +react-element-to-jsx-string@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" + integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== + dependencies: + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "18.1.0" + react-error-boundary@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.1.tgz#932c5ca5cbab8ec4fe37fd7b415aa5c3a47597e7" @@ -25652,16 +25644,16 @@ react-is@17.0.2, react-is@^17.0.0, react-is@^17.0.1, react-is@^17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@18.1.0, "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== - react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -30576,7 +30568,7 @@ vfile-location@^3.0.0: resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ== -vfile-message@*, vfile-message@^2.0.0: +vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== From ffb60a1fee2c10fbb78b6c9be3301c475e9be1d8 Mon Sep 17 00:00:00 2001 From: Tomasz Ciecierski Date: Wed, 4 Oct 2023 21:52:46 +0200 Subject: [PATCH 17/27] [EDR Workflows] Use internal user to fetch automated actions and results (#167989) --- .../endpoint/response_actions/types.ts | 3 +- .../server/search_strategy/endpoint/index.ts | 36 +++++++++---------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts b/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts index b7b5ca63a0b75..ae9de843f4dac 100644 --- a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts +++ b/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts @@ -17,8 +17,7 @@ export enum SortOrder { } export interface RequestBasicOptions extends IEsSearchRequest { - factoryQueryType?: ResponseActionsQueries; - aggregations?: Record; + factoryQueryType: ResponseActionsQueries; } export type ResponseActionsSearchHit = estypes.SearchHit< diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts b/x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts index 9638c44ee1775..ef7f6e6ae0dfa 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts @@ -8,7 +8,6 @@ import { map, mergeMap } from 'rxjs/operators'; import type { ISearchStrategy, PluginStart } from '@kbn/data-plugin/server'; import { shimHitsTotal } from '@kbn/data-plugin/server'; -import { ENHANCED_ES_SEARCH_STRATEGY } from '@kbn/data-plugin/common'; import { from } from 'rxjs'; import type { EndpointStrategyParseResponseType, @@ -21,38 +20,35 @@ import type { EndpointFactory } from './factory/types'; import type { EndpointAppContext } from '../../endpoint/types'; import { endpointFactory } from './factory'; -function isObj(req: unknown): req is Record { - return typeof req === 'object' && req !== null; -} - -function assertValidRequestType( - req: unknown -): asserts req is EndpointStrategyRequestType & { factoryQueryType: EndpointFactoryQueryTypes } { - if (!isObj(req) || req.factoryQueryType == null) { - throw new Error('factoryQueryType is required'); - } -} - export const endpointSearchStrategyProvider = ( data: PluginStart, endpointContext: EndpointAppContext ): ISearchStrategy, EndpointStrategyResponseType> => { - const es = data.search.getSearchStrategy( - ENHANCED_ES_SEARCH_STRATEGY - ) as unknown as ISearchStrategy< + const es = data.search.searchAsInternalUser as unknown as ISearchStrategy< EndpointStrategyRequestType, EndpointStrategyParseResponseType >; return { search: (request, options, deps) => { - assertValidRequestType(request); - + if (request.factoryQueryType == null) { + throw new Error('factoryQueryType is required'); + } return from(endpointContext.service.getEndpointAuthz(deps.request)).pipe( mergeMap((authz) => { const queryFactory: EndpointFactory = endpointFactory[request.factoryQueryType]; - const dsl = queryFactory.buildDsl(request, { authz }); - return es.search({ ...request, params: dsl }, options, deps).pipe( + const strictRequest = { + factoryQueryType: request.factoryQueryType, + sort: request.sort, + ...('alertIds' in request ? { alertIds: request.alertIds } : {}), + ...('agentId' in request ? { agentId: request.agentId } : {}), + ...('expiration' in request ? { expiration: request.expiration } : {}), + ...('actionId' in request ? { actionId: request.actionId } : {}), + ...('agents' in request ? { agents: request.agents } : {}), + } as EndpointStrategyRequestType; + const dsl = queryFactory.buildDsl(strictRequest, { authz }); + + return es.search({ ...strictRequest, params: dsl }, options, deps).pipe( map((response) => { return { ...response, From 0f1a6e397ce5534ebef5be616ee41090a25cf115 Mon Sep 17 00:00:00 2001 From: Nick Partridge Date: Wed, 4 Oct 2023 13:33:03 -0700 Subject: [PATCH 18/27] [Lens] Add serverless functional tests (#164798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR copies, with limited modifications, functional test suites from `test/functional` and `x-pack/test/functional` ## Lens Smoke tests - [x] Smokescreen tests (x-pack/test/functional/apps/lens/group1/smokescreen.ts) - [x] Basic vega tests (test/functional/apps/visualize/group6/_vega_chart.ts) - [x] Sanity checks for TSDB functionality in Lens x-pack/test/functional/apps/lens/group4/tsdb.ts ## Convert to Lens These tests outside of serverless, assume the following vis types are accessible via the **Visualize editor**, however all the following types are designated **readonly** in serverless and thus the fn tests fail. In place of these tests I created the identical visualizations, added them to a dashboard and exported the SOs. These dashboard and dependent visualizations are loaded in each respective test, and the assertions are run on the `Convert to Lens` option from the dashboard. All assertions are mostly unchanged or achieve the same effect. - ✅ Agg based - `x-pack/test/functional/apps/lens/open_in_lens/agg_based` - ✅ TSVB - `x-pack/test/functional/apps/lens/open_in_lens/tsvb` - ❌ Dashboard - `x-pack/test/functional/apps/lens/open_in_lens/dashboard/config.ts` - Not applicable to serverless env and/or duplicate of other tests. Closes #162346 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Stratoula Kalafateli --- .buildkite/ftr_configs.yml | 3 + .github/CODEOWNERS | 2 + .../functional/page_objects/dashboard_page.ts | 2 +- .../functional/page_objects/visualize_page.ts | 2 +- .../services/common/test_subjects.ts | 2 +- .../services/dashboard/panel_actions.ts | 18 +- test/functional/services/listing_table.ts | 2 - .../apps/lens/open_in_lens/agg_based/gauge.ts | 6 +- .../apps/lens/open_in_lens/agg_based/goal.ts | 8 +- .../lens/open_in_lens/agg_based/heatmap.ts | 8 +- .../lens/open_in_lens/agg_based/metric.ts | 8 +- .../lens/open_in_lens/agg_based/navigation.ts | 6 +- .../apps/lens/open_in_lens/agg_based/pie.ts | 8 +- .../apps/lens/open_in_lens/agg_based/table.ts | 12 +- .../apps/lens/open_in_lens/agg_based/xy.ts | 24 +- .../apps/lens/open_in_lens/tsvb/dashboard.ts | 7 +- .../apps/lens/open_in_lens/tsvb/gauge.ts | 10 +- .../apps/lens/open_in_lens/tsvb/metric.ts | 12 +- .../apps/lens/open_in_lens/tsvb/table.ts | 12 +- .../apps/lens/open_in_lens/tsvb/timeseries.ts | 20 +- .../apps/lens/open_in_lens/tsvb/top_n.ts | 20 +- .../test/functional/page_objects/lens_page.ts | 9 + .../lens/open_in_lens/agg_based/gauge.json | 212 ++++ .../lens/open_in_lens/agg_based/goal.json | 250 +++++ .../lens/open_in_lens/agg_based/heatmap.json | 250 +++++ .../lens/open_in_lens/agg_based/metric.json | 253 +++++ .../open_in_lens/agg_based/navigation.json | 0 .../lens/open_in_lens/agg_based/pie.json | 294 ++++++ .../lens/open_in_lens/agg_based/table.json | 326 ++++++ .../lens/open_in_lens/agg_based/xy.json | 706 +++++++++++++ .../lens/open_in_lens/tsvb/dashboard.json | 80 ++ .../lens/open_in_lens/tsvb/gauge.json | 326 ++++++ .../lens/open_in_lens/tsvb/metric.json | 364 +++++++ .../lens/open_in_lens/tsvb/table.json | 554 ++++++++++ .../lens/open_in_lens/tsvb/timeseries.json | 521 ++++++++++ .../lens/open_in_lens/tsvb/top_n.json | 559 ++++++++++ .../services/deployment_agnostic_services.ts | 1 + .../common/visualizations/group1/index.ts | 78 ++ .../visualizations/group1/smokescreen.ts | 765 ++++++++++++++ .../common/visualizations/group1/tsdb.ts | 980 ++++++++++++++++++ .../visualizations/group1/vega_chart.ts | 280 +++++ .../common/visualizations/index.ts | 22 + .../open_in_lens/agg_based/gauge.ts | 104 ++ .../open_in_lens/agg_based/goal.ts | 201 ++++ .../open_in_lens/agg_based/heatmap.ts | 182 ++++ .../open_in_lens/agg_based/index.ts | 80 ++ .../open_in_lens/agg_based/metric.ts | 213 ++++ .../open_in_lens/agg_based/pie.ts | 107 ++ .../open_in_lens/agg_based/table.ts | 144 +++ .../open_in_lens/agg_based/xy.ts | 250 +++++ .../open_in_lens/tsvb/dashboard.ts | 123 +++ .../visualizations/open_in_lens/tsvb/gauge.ts | 122 +++ .../visualizations/open_in_lens/tsvb/index.ts | 79 ++ .../open_in_lens/tsvb/metric.ts | 134 +++ .../visualizations/open_in_lens/tsvb/table.ts | 178 ++++ .../open_in_lens/tsvb/timeseries.ts | 170 +++ .../visualizations/open_in_lens/tsvb/top_n.ts | 170 +++ .../common_configs/config.group2.ts | 20 + .../search/common_configs/config.group2.ts | 20 + .../security/common_configs/config.group2.ts | 20 + x-pack/test_serverless/tsconfig.json | 1 + 61 files changed, 9253 insertions(+), 87 deletions(-) create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/gauge.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/goal.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/heatmap.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/metric.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/navigation.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/pie.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/table.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/xy.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/dashboard.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/gauge.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/metric.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/table.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/timeseries.json create mode 100644 x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/top_n.json create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/group1/index.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/group1/smokescreen.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/group1/tsdb.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/group1/vega_chart.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/index.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/gauge.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/goal.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/heatmap.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/index.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/metric.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/pie.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/table.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/xy.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/dashboard.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/gauge.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/index.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/metric.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/table.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/timeseries.ts create mode 100644 x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/top_n.ts create mode 100644 x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts create mode 100644 x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts create mode 100644 x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 5222de5151738..1fc0967ffe712 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -412,13 +412,16 @@ enabled: - x-pack/test_serverless/functional/test_suites/observability/config.ts - x-pack/test_serverless/functional/test_suites/observability/config.examples.ts - x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group1.ts + - x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts - x-pack/test_serverless/functional/test_suites/search/config.ts - x-pack/test_serverless/functional/test_suites/search/config.examples.ts - x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts - x-pack/test_serverless/functional/test_suites/search/common_configs/config.group1.ts + - x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts - x-pack/test_serverless/functional/test_suites/security/config.ts - x-pack/test_serverless/functional/test_suites/security/config.examples.ts - x-pack/test_serverless/functional/test_suites/security/common_configs/config.group1.ts + - x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts - x-pack/performance/journeys/ecommerce_dashboard.ts - x-pack/performance/journeys/ecommerce_dashboard_map_only.ts - x-pack/performance/journeys/flight_dashboard.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ebe311c57f01e..8eec80f9cd5c9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -881,6 +881,8 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations /test/functional/apps/visualize/ @elastic/kibana-visualizations /x-pack/test/functional/apps/graph @elastic/kibana-visualizations /test/api_integration/apis/event_annotations @elastic/kibana-visualizations +/x-pack/test_serverless/functional/test_suites/common/visualizations/ @elastic/kibana-visualizations +/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/ @elastic/kibana-visualizations # Global Experience diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 75c77b8dbfc30..e41d1583341da 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -583,7 +583,7 @@ export class DashboardPageObject extends FtrService { await this.gotoDashboardLandingPage(); - await this.listingTable.searchForItemWithName(dashboardName); + await this.listingTable.searchForItemWithName(dashboardName, { escape: false }); await this.retry.try(async () => { await this.listingTable.clickItemLink('dashboard', dashboardName); await this.header.waitUntilLoadingHasFinished(); diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index a08b950ce9853..55abacfec4009 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -156,7 +156,7 @@ export class VisualizePageObject extends FtrService { await this.waitForVisualizationSelectPage(); } - public async navigateToLensFromAnotherVisulization() { + public async navigateToLensFromAnotherVisualization() { const button = await this.testSubjects.find('visualizeEditInLensButton'); await button.click(); } diff --git a/test/functional/services/common/test_subjects.ts b/test/functional/services/common/test_subjects.ts index 9cbce20b05068..666a16b1d4629 100644 --- a/test/functional/services/common/test_subjects.ts +++ b/test/functional/services/common/test_subjects.ts @@ -41,7 +41,7 @@ export class TestSubjects extends FtrService { * `retry.waitFor()` loops. * * When `options.timeout` is not passed the `timeouts.waitForExists` config is used as - * the timeout. The default value for that config is currently 2.5 seconds. + * the timeout. The default value for that config is currently 2.5 seconds (in ms). * * If the element is hidden it is not treated as "existing", unless `options.allowHidden` * is set to `true`. diff --git a/test/functional/services/dashboard/panel_actions.ts b/test/functional/services/dashboard/panel_actions.ts index 65e5904f14f80..f07b0bd87177f 100644 --- a/test/functional/services/dashboard/panel_actions.ts +++ b/test/functional/services/dashboard/panel_actions.ts @@ -382,13 +382,25 @@ export class DashboardPanelActionsService extends FtrService { throw new Error(`No action matching text "${text}"`); } - async convertToLens(parent?: WebElementWrapper) { - this.log.debug('convertToLens'); + async canConvertToLens(parent?: WebElementWrapper) { + this.log.debug('canConvertToLens'); await this.openContextMenu(parent); const isActionVisible = await this.testSubjects.exists(CONVERT_TO_LENS_TEST_SUBJ); if (!isActionVisible) await this.clickContextMenuMoreItem(); const isPanelActionVisible = await this.testSubjects.exists(CONVERT_TO_LENS_TEST_SUBJ); if (!isPanelActionVisible) await this.clickContextMenuMoreItem(); - await this.testSubjects.click(CONVERT_TO_LENS_TEST_SUBJ); + return await this.testSubjects.exists(CONVERT_TO_LENS_TEST_SUBJ, { timeout: 500 }); + } + + async convertToLens(parent?: WebElementWrapper) { + this.log.debug('convertToLens'); + + await this.retry.try(async () => { + if (!(await this.canConvertToLens(parent))) { + throw new Error('Convert to Lens option not found'); + } + + await this.testSubjects.click(CONVERT_TO_LENS_TEST_SUBJ); + }); } } diff --git a/test/functional/services/listing_table.ts b/test/functional/services/listing_table.ts index 486d49a3f7c75..f83de38fb468b 100644 --- a/test/functional/services/listing_table.ts +++ b/test/functional/services/listing_table.ts @@ -23,7 +23,6 @@ export class ListingTableService extends FtrService { private readonly log = this.ctx.getService('log'); private readonly retry = this.ctx.getService('retry'); private readonly common = this.ctx.getPageObject('common'); - private readonly header = this.ctx.getPageObject('header'); private readonly tagPopoverToggle = this.ctx.getService('menuToggle').create({ name: 'Tag Popover', @@ -89,7 +88,6 @@ export class ListingTableService extends FtrService { } else { throw new Error('Waiting'); } - await this.header.waitUntilLoadingHasFinished(); }); } diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/gauge.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/gauge.ts index 2ffaf120f175e..048f7584a86ab 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/gauge.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/gauge.ts @@ -39,7 +39,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert to Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('gaugeChart'); }); @@ -49,7 +49,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectField('machine.ram', 'metrics'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('gaugeChart'); expect(await lens.getLayerCount()).to.be(1); @@ -101,7 +101,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('gaugeChart'); expect(await lens.getLayerCount()).to.be(1); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/goal.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/goal.ts index a83dc421b4a09..78d0e220c61bd 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/goal.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/goal.ts @@ -38,7 +38,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert to Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); const data = await lens.getMetricVisualizationData(); expect(data.length).to.be.equal(1); @@ -61,7 +61,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectField('machine.ram', 'metrics'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); @@ -91,7 +91,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectAggregation('Max Bucket', 'metrics'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); @@ -134,7 +134,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/heatmap.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/heatmap.ts index 4f43bf466f892..ad4b1e123b554 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/heatmap.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/heatmap.ts @@ -52,7 +52,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectField('machine.os.raw'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('heatmapChart'); const debugState = await lens.getCurrentChartDebugState('heatmapChart'); @@ -90,7 +90,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectField('machine.os.raw'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('heatmapChart'); const debugState = await lens.getCurrentChartDebugState('heatmapChart'); @@ -114,7 +114,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await visChart.waitForVisualizationRenderingStabilized(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('heatmapChart'); const debugState = await lens.getCurrentChartDebugState('heatmapChart'); @@ -174,7 +174,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await visChart.waitForVisualizationRenderingStabilized(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('heatmapChart'); const debugState = await lens.getCurrentChartDebugState('heatmapChart'); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/metric.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/metric.ts index 62b4c1acd6e16..af22bc8408de3 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/metric.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/metric.ts @@ -39,7 +39,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert to Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); const data = await lens.getMetricVisualizationData(); expect(data.length).to.be.equal(1); @@ -62,7 +62,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectField('machine.ram', 'metrics'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); @@ -91,7 +91,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectAggregation('Max Bucket', 'metrics'); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); @@ -146,7 +146,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await backgroundButton.click(); await visEditor.clickGo(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await lens.getLayerCount()).to.be(1); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/navigation.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/navigation.ts index 791edb26888b2..884359a34901d 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/navigation.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/navigation.ts @@ -27,7 +27,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should let the user return back to Visualize if no changes were made', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -43,7 +43,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should let the user return back to Visualize but show a warning modal if changes happened in Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -72,7 +72,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should let the user return back to Visualize with no modal if changes have been saved in Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/pie.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/pie.ts index 6a5bc5e6ce40a..9fcdef35239fa 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/pie.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/pie.ts @@ -75,7 +75,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('partitionVisChart'); expect(await lens.getLayerCount()).to.be(1); @@ -97,7 +97,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('partitionVisChart'); const sliceByText = await lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel', 0); @@ -119,7 +119,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('partitionVisChart'); let chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); @@ -135,7 +135,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('partitionVisChart'); chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/table.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/table.ts index 1497eea84c851..99985787c53a0 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/table.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/table.ts @@ -55,7 +55,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); @@ -75,7 +75,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); @@ -95,7 +95,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); @@ -117,7 +117,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); @@ -140,7 +140,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); @@ -162,7 +162,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await lens.getLayerCount()).to.be(1); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/xy.ts b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/xy.ts index 7d912221e2b15..37e2580b776ff 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/agg_based/xy.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/agg_based/xy.ts @@ -118,7 +118,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.setSeriesType(1, 'histogram'); await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -145,7 +145,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.setSeriesType(1, 'histogram'); await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -167,7 +167,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.selectAggregation('Date histogram'); await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -185,7 +185,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await lens.getLayerCount()).to.be(1); @@ -209,7 +209,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(line?.length).to.be(1); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(2); @@ -232,7 +232,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -252,7 +252,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -271,7 +271,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -296,7 +296,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await lens.getLayerCount()).to.be(1); @@ -324,7 +324,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); const expectedData = await visChart.getLegendEntriesXYCharts('xyVisChart'); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); const data = await lens.getCurrentChartDebugState('xyVisChart'); await retry.try(async () => { @@ -346,7 +346,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.clickGo(isNewChartsLibraryEnabled); await header.waitUntilLoadingHasFinished(); const expectedData = await visChart.getLegendEntriesXYCharts('xyVisChart'); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); const data = await lens.getCurrentChartDebugState('xyVisChart'); await retry.try(async () => { @@ -365,7 +365,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visEditor.setPercentileValue('99.99', 6); await visEditor.clickGo(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await lens.getWorkspaceErrorCount()).to.eql(0); }); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/dashboard.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/dashboard.ts index 21e485ebe269c..0f850f601f3bf 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/dashboard.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/dashboard.ts @@ -51,7 +51,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await panelActions.openContextMenu(); await panelActions.clickEdit(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); @@ -70,6 +70,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert a by reference TSVB viz to a Lens viz', async () => { + await dashboard.navigateToApp(); + await dashboard.clickNewDashboard(); await dashboardAddPanel.clickEditorMenuButton(); await dashboardAddPanel.clickVisType('metrics'); await testSubjects.click('visualizesaveAndReturnButton'); @@ -89,7 +91,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await panelActions.openContextMenu(); await panelActions.clickEdit(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); + await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/gauge.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/gauge.ts index c3158240665b2..6caaf00cc4b62 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/gauge.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/gauge.ts @@ -38,7 +38,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should convert to Lens', async () => { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); const metricData = await lens.getMetricVisualizationData(); @@ -51,7 +51,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); @@ -98,7 +98,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { @@ -131,7 +131,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickSeriesOption(); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); @@ -140,7 +140,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickPanelOptions('gauge'); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/metric.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/metric.ts index 860c812ba2fd5..99cd075c0ce70 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/metric.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/metric.ts @@ -35,7 +35,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert to Lens', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); const metricData = await lens.getMetricVisualizationData(); @@ -48,7 +48,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -65,7 +65,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -101,7 +101,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { @@ -132,7 +132,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickSeriesOption(); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); @@ -141,7 +141,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickPanelOptions('metric'); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('mtrVis'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/table.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/table.ts index 0e6d270375d6e..d2f8b49c1ae92 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/table.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/table.ts @@ -110,7 +110,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickDataTab('table'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger'); await testSubjects.click('indexPattern-advanced-accordion'); @@ -131,7 +131,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -149,7 +149,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setFunctionForAggregateFunction('Sum'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -169,7 +169,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setColumnLabelValue('test'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -193,7 +193,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setColorPickerValue('#54A000', 1); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); await retry.try(async () => { @@ -222,7 +222,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickPanelOptions('table'); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('lnsDataTable'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/timeseries.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/timeseries.ts index c2adbeb99d7d7..ea658b39b318c 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/timeseries.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/timeseries.ts @@ -38,7 +38,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('visualizes field to Lens and loads fields to the dimesion editor', async () => { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); @@ -51,7 +51,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('navigates back to TSVB when the Back button is clicked', async () => { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); @@ -66,7 +66,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should preserve app filters in lens', async () => { await filterBar.addFilter({ field: 'extension', operation: 'is', value: 'css' }); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await filterBar.hasFilter('extension', 'css')).to.be(true); @@ -76,7 +76,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await queryBar.setQuery('machine.os : ios'); await queryBar.submitQuery(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); @@ -89,7 +89,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); @@ -114,7 +114,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -151,7 +151,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -174,7 +174,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -192,7 +192,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickSeriesOption(); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); @@ -201,7 +201,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickPanelOptions('timeSeries'); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); diff --git a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/top_n.ts index 4ca611c807b4a..10b8e2136deb1 100644 --- a/x-pack/test/functional/apps/lens/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/open_in_lens/tsvb/top_n.ts @@ -74,7 +74,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should convert to horizontal bar', async () => { await visualBuilder.selectAggType('Max'); await visualBuilder.setFieldForAggregation('memory', 0); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); const type = await chartSwitcher.getVisibleText(); @@ -91,7 +91,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should convert group by to vertical axis', async () => { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -111,7 +111,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickDataTab('topN'); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); await testSubjects.click('indexPattern-advanced-accordion'); @@ -132,7 +132,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -145,7 +145,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('visualizes field to Lens and loads fields to the dimesion editor', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); @@ -154,7 +154,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('navigates back to TSVB when the Back button is clicked', async () => { - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); await goBackBtn.click(); @@ -164,7 +164,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should preserve app filters in lens', async () => { await filterBar.addFilter({ field: 'extension', operation: 'is', value: 'css' }); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await filterBar.hasFilter('extension', 'css')).to.be(true); @@ -174,7 +174,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await queryBar.setQuery('machine.os : ios'); await queryBar.submitQuery(); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); @@ -184,7 +184,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickSeriesOption(); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); @@ -193,7 +193,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickPanelOptions('topN'); await visualBuilder.setIgnoreFilters(true); await header.waitUntilLoadingHasFinished(); - await visualize.navigateToLensFromAnotherVisulization(); + await visualize.navigateToLensFromAnotherVisualization(); await lens.waitForVisualization('xyVisChart'); expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); }); diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 6069ae838cea8..45b451721b2cd 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -32,6 +32,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont const comboBox = getService('comboBox'); const browser = getService('browser'); const dashboardAddPanel = getService('dashboardAddPanel'); + const queryBar = getService('queryBar'); const PageObjects = getPageObjects([ 'common', @@ -1877,6 +1878,14 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont } }, + /** + * Enables elastic charts debug state with *soft* refresh + */ + async enableEchDebugState() { + await elasticChart.setNewChartUiDebugFlag(true); + await queryBar.clickQuerySubmitButton(); + }, + async changeColorMappingPalette(selector: string, paletteId: string) { await retry.try(async () => { if (!(await testSubjects.exists('lns-indexPattern-dimensionContainerClose'))) { diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/gauge.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/gauge.json new file mode 100644 index 0000000000000..a454778f3c2a1 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/gauge.json @@ -0,0 +1,212 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:33:25.788Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-22T20:33:25.788Z", + "version": "WzUxNSwxXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:43:33.023Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-22T19:43:33.023Z", + "version": "WzEyNTAsMV0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Gauge - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Basic\",\"type\":\"gauge\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"alignment\":\"automatic\",\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":50},{\"from\":50,\"to\":75},{\"from\":75,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":true,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:38:08.408Z", + "id": "cd9cf980-412b-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T20:38:08.408Z", + "version": "WzUzOCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Gauge - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Agg with params\",\"type\":\"gauge\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"alignment\":\"automatic\",\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":50},{\"from\":50,\"to\":75},{\"from\":75,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":true,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:39:31.868Z", + "id": "ff5bceb0-412b-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T20:39:31.868Z", + "version": "WzU0MCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Gauge - Unsupported field type", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Unsupported field type\",\"type\":\"gauge\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"1-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"}],\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"alignment\":\"automatic\",\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":50},{\"from\":50,\"to\":75},{\"from\":75,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":true,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:40:16.540Z", + "id": "19fc5dc0-412c-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T20:40:16.540Z", + "version": "WzU0MywxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Gauge - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Color ranges\",\"type\":\"gauge\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"alignment\":\"automatic\",\"extendRange\":true,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":10000},{\"from\":10000,\"to\":20000},{\"from\":20000,\"to\":30000},{\"from\":30000,\"to\":15000000000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":true,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:43:18.067Z", + "id": "862f3030-412c-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T20:43:18.067Z", + "version": "WzU0NSwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"692fb021-dfc7-4842-96c6-20f225d3ce3c\"},\"panelIndex\":\"692fb021-dfc7-4842-96c6-20f225d3ce3c\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_692fb021-dfc7-4842-96c6-20f225d3ce3c\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"a403606a-9362-43c1-a840-3f01c74a6034\"},\"panelIndex\":\"a403606a-9362-43c1-a840-3f01c74a6034\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_a403606a-9362-43c1-a840-3f01c74a6034\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"1802d558-2a95-45d3-83a3-681a616e6518\"},\"panelIndex\":\"1802d558-2a95-45d3-83a3-681a616e6518\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_1802d558-2a95-45d3-83a3-681a616e6518\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"b79d643a-0d33-44f2-973c-356c9708707d\"},\"panelIndex\":\"b79d643a-0d33-44f2-973c-356c9708707d\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_b79d643a-0d33-44f2-973c-356c9708707d\"}]", + "timeRestore": false, + "title": "Convert to Lens - Gauge", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T20:44:08.628Z", + "id": "a2a20e40-412c-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "cd9cf980-412b-11ee-a5d9-53bce88b37d9", + "name": "692fb021-dfc7-4842-96c6-20f225d3ce3c:panel_692fb021-dfc7-4842-96c6-20f225d3ce3c", + "type": "visualization" + }, + { + "id": "ff5bceb0-412b-11ee-a5d9-53bce88b37d9", + "name": "a403606a-9362-43c1-a840-3f01c74a6034:panel_a403606a-9362-43c1-a840-3f01c74a6034", + "type": "visualization" + }, + { + "id": "19fc5dc0-412c-11ee-a5d9-53bce88b37d9", + "name": "1802d558-2a95-45d3-83a3-681a616e6518:panel_1802d558-2a95-45d3-83a3-681a616e6518", + "type": "visualization" + }, + { + "id": "862f3030-412c-11ee-a5d9-53bce88b37d9", + "name": "b79d643a-0d33-44f2-973c-356c9708707d:panel_b79d643a-0d33-44f2-973c-356c9708707d", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-22T20:44:08.628Z", + "version": "WzU0OCwxXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/goal.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/goal.json new file mode 100644 index 0000000000000..4e622ae968b48 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/goal.json @@ -0,0 +1,250 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:44:13.055Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-23T04:44:13.055Z", + "version": "WzE1LDFd" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-17T17:27:48.058Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-17T17:27:48.058Z", + "version": "WzMzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Goal - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Goal - Basic\",\"type\":\"goal\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"goal\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:47:21.815Z", + "id": "259b6e70-4170-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T04:51:12.185Z", + "version": "WzM0LDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Goal - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Goal - Agg with params\",\"type\":\"goal\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"goal\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:51:39.702Z", + "id": "bf51dd60-4170-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T04:51:39.702Z", + "version": "WzM2LDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Goal - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Goal - Sibling pipeline agg\",\"type\":\"goal\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"1-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"goal\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:52:35.067Z", + "id": "e051e4b0-4170-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T04:52:35.067Z", + "version": "WzM4LDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Goal - Unsupported field type", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Goal - Unsupported field type\",\"type\":\"goal\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_metrics\",\"params\":{\"field\":\"machine.ram\",\"size\":1,\"sortField\":\"@timestamp\",\"sortOrder\":\"desc\"},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"goal\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:53:44.174Z", + "id": "0982c8e0-4171-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T04:53:44.174Z", + "version": "WzQwLDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Goal - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Goal - Color ranges\",\"type\":\"goal\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"goal\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":13000000000},{\"from\":13000000000,\"to\":13100000000},{\"from\":13100000000,\"to\":13200000000},{\"from\":13200000000,\"to\":13300000000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"rgba(105,112,125,0.2)\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"rgba(105,112,125,0.2)\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:57:29.503Z", + "id": "8fd142f0-4171-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T04:57:29.503Z", + "version": "WzQyLDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c658b9f5-2196-4361-8bd2-2f068888bbe0\"},\"panelIndex\":\"c658b9f5-2196-4361-8bd2-2f068888bbe0\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_c658b9f5-2196-4361-8bd2-2f068888bbe0\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"cb0d0ba9-d367-4989-8c95-e88712d1506b\"},\"panelIndex\":\"cb0d0ba9-d367-4989-8c95-e88712d1506b\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_cb0d0ba9-d367-4989-8c95-e88712d1506b\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"1da866c1-5e2e-4077-af1c-9f60811c4cfb\"},\"panelIndex\":\"1da866c1-5e2e-4077-af1c-9f60811c4cfb\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_1da866c1-5e2e-4077-af1c-9f60811c4cfb\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4c6b5d81-7a69-4e09-9529-1989685cf47b\"},\"panelIndex\":\"4c6b5d81-7a69-4e09-9529-1989685cf47b\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_4c6b5d81-7a69-4e09-9529-1989685cf47b\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"a3987c58-d97d-43ab-8f2e-2829c2d19406\"},\"panelIndex\":\"a3987c58-d97d-43ab-8f2e-2829c2d19406\",\"embeddableConfig\":{\"enhancements\":{},\"vis\":null},\"panelRefName\":\"panel_a3987c58-d97d-43ab-8f2e-2829c2d19406\"}]", + "timeRestore": false, + "title": "Convert to Lens - Goal", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:58:40.184Z", + "id": "ab718ec0-4171-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "259b6e70-4170-11ee-8333-6f5dc14c92aa", + "name": "c658b9f5-2196-4361-8bd2-2f068888bbe0:panel_c658b9f5-2196-4361-8bd2-2f068888bbe0", + "type": "visualization" + }, + { + "id": "bf51dd60-4170-11ee-8333-6f5dc14c92aa", + "name": "cb0d0ba9-d367-4989-8c95-e88712d1506b:panel_cb0d0ba9-d367-4989-8c95-e88712d1506b", + "type": "visualization" + }, + { + "id": "e051e4b0-4170-11ee-8333-6f5dc14c92aa", + "name": "1da866c1-5e2e-4077-af1c-9f60811c4cfb:panel_1da866c1-5e2e-4077-af1c-9f60811c4cfb", + "type": "visualization" + }, + { + "id": "0982c8e0-4171-11ee-8333-6f5dc14c92aa", + "name": "4c6b5d81-7a69-4e09-9529-1989685cf47b:panel_4c6b5d81-7a69-4e09-9529-1989685cf47b", + "type": "visualization" + }, + { + "id": "8fd142f0-4171-11ee-8333-6f5dc14c92aa", + "name": "a3987c58-d97d-43ab-8f2e-2829c2d19406:panel_a3987c58-d97d-43ab-8f2e-2829c2d19406", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-23T04:58:40.184Z", + "version": "WzQ2LDFd" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/heatmap.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/heatmap.json new file mode 100644 index 0000000000000..2bc0ab5fed835 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/heatmap.json @@ -0,0 +1,250 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T18:40:52.430Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-23T18:40:52.430Z", + "version": "WzExMywxXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-17T17:27:48.058Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-17T17:27:48.058Z", + "version": "WzMzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Heatmap - Color number", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Heatmap - Color number\",\"type\":\"heatmap\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"colorsNumber\":6,\"colorSchema\":\"Green to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"black\"}}]}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:10:01.883Z", + "id": "0ac76eb0-41f1-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T20:10:01.883Z", + "version": "WzIyMCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Heatmap - No X-Axis", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Heatmap - No X-Axis\",\"type\":\"heatmap\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"colorsNumber\":4,\"colorSchema\":\"Green to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"black\"}}]}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:07:07.870Z", + "id": "a30f27e0-41f0-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T20:07:07.870Z", + "version": "WzIxNCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Heatmap - Custom Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Heatmap - Custom Color ranges\",\"type\":\"heatmap\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"colorsNumber\":4,\"colorSchema\":\"Green to Red\",\"setColorRange\":true,\"colorsRange\":[{\"from\":0,\"to\":100},{\"from\":100,\"to\":200},{\"from\":200,\"to\":300},{\"from\":300,\"to\":400},{\"from\":400,\"to\":500},{\"from\":500,\"to\":600}],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"black\"}}]}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:11:25.487Z", + "id": "3c9c63f0-41f1-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T20:11:25.487Z", + "version": "WzIyMSwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Heatmap - With Y-Axis only", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Heatmap - With Y-Axis only\",\"type\":\"heatmap\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"}],\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"colorsNumber\":4,\"colorSchema\":\"Green to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"black\"}}]}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:08:46.148Z", + "id": "dda33040-41f0-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T20:08:46.148Z", + "version": "WzIxNywxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Heatmap - With X-Axis only", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Heatmap - With X-Axis only\",\"type\":\"heatmap\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"colorsNumber\":4,\"colorSchema\":\"Green to Red\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"black\"}}]}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:07:44.572Z", + "id": "b8ef6fc0-41f0-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T20:09:08.987Z", + "version": "WzIxOSwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"6a86bfc7-b099-4620-a479-85c40a8bae1e\"},\"panelIndex\":\"6a86bfc7-b099-4620-a479-85c40a8bae1e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6a86bfc7-b099-4620-a479-85c40a8bae1e\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"9832ceb4-cbe4-4ff6-a0f9-971b987d69c0\"},\"panelIndex\":\"9832ceb4-cbe4-4ff6-a0f9-971b987d69c0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9832ceb4-cbe4-4ff6-a0f9-971b987d69c0\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"1d77d37c-4334-41e5-942f-390df7ed087b\"},\"panelIndex\":\"1d77d37c-4334-41e5-942f-390df7ed087b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1d77d37c-4334-41e5-942f-390df7ed087b\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"f6dcacfb-9a5b-49ad-aecd-91ba65c599cd\"},\"panelIndex\":\"f6dcacfb-9a5b-49ad-aecd-91ba65c599cd\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f6dcacfb-9a5b-49ad-aecd-91ba65c599cd\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"65b043a0-774b-49e6-b98e-b0cb3a50da56\"},\"panelIndex\":\"65b043a0-774b-49e6-b98e-b0cb3a50da56\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_65b043a0-774b-49e6-b98e-b0cb3a50da56\"}]", + "timeRestore": false, + "title": "Convert to Lens - Heatmap", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T20:11:54.695Z", + "id": "4e052d70-41f1-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "0ac76eb0-41f1-11ee-8333-6f5dc14c92aa", + "name": "6a86bfc7-b099-4620-a479-85c40a8bae1e:panel_6a86bfc7-b099-4620-a479-85c40a8bae1e", + "type": "visualization" + }, + { + "id": "a30f27e0-41f0-11ee-8333-6f5dc14c92aa", + "name": "9832ceb4-cbe4-4ff6-a0f9-971b987d69c0:panel_9832ceb4-cbe4-4ff6-a0f9-971b987d69c0", + "type": "visualization" + }, + { + "id": "3c9c63f0-41f1-11ee-8333-6f5dc14c92aa", + "name": "1d77d37c-4334-41e5-942f-390df7ed087b:panel_1d77d37c-4334-41e5-942f-390df7ed087b", + "type": "visualization" + }, + { + "id": "dda33040-41f0-11ee-8333-6f5dc14c92aa", + "name": "f6dcacfb-9a5b-49ad-aecd-91ba65c599cd:panel_f6dcacfb-9a5b-49ad-aecd-91ba65c599cd", + "type": "visualization" + }, + { + "id": "b8ef6fc0-41f0-11ee-8333-6f5dc14c92aa", + "name": "65b043a0-774b-49e6-b98e-b0cb3a50da56:panel_65b043a0-774b-49e6-b98e-b0cb3a50da56", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-23T20:11:54.695Z", + "version": "WzIyMywxXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/metric.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/metric.json new file mode 100644 index 0000000000000..30361d886295b --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/metric.json @@ -0,0 +1,253 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:24:14.969Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-22T19:24:14.969Z", + "version": "WzMxNSwxXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-17T17:27:48.058Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-17T17:27:48.058Z", + "version": "WzMzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Metric - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Color ranges\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"Background\",\"colorsRange\":[{\"from\":12000000000,\"to\":13000000000},{\"from\":13000000000,\"to\":13100000000},{\"from\":13100000000,\"to\":13200000000},{\"from\":13200000000,\"to\":13300000000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:29:13.823Z", + "id": "2d355ef0-4122-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T19:33:56.204Z", + "version": "WzM1MCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Metric - Unsupported field type", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Unsupported field type\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_metrics\",\"params\":{\"field\":\"extension.raw\",\"size\":1,\"sortField\":\"@timestamp\",\"sortOrder\":\"desc\"},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:28:11.014Z", + "id": "07c57a60-4122-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T19:28:11.014Z", + "version": "WzM0NCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Metric - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Sibling pipeline agg\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"1-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:26:42.717Z", + "id": "d3246cd0-4121-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T19:26:42.717Z", + "version": "WzM0MCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Metric - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Agg with params\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:25:51.053Z", + "id": "b4591fd0-4121-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T19:25:51.053Z", + "version": "WzMzNiwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Metric - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Basic\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-22T19:24:59.786Z", + "id": "95ca66a0-4121-11ee-a5d9-53bce88b37d9", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-22T19:24:59.786Z", + "version": "WzMzMiwxXQ==" +} + +{ + "id": "8957af70-4123-11ee-a5d9-53bce88b37d9", + "type": "dashboard", + "namespaces": [ + "default" + ], + "updated_at": "2023-08-22T19:38:57.895Z", + "created_at": "2023-08-22T19:38:57.895Z", + "version": "WzM4OCwxXQ==", + "attributes": { + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "description": "", + "timeRestore": false, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"4dd05f14-a94b-4de7-af13-0b78fd8b5ca7\"},\"panelIndex\":\"4dd05f14-a94b-4de7-af13-0b78fd8b5ca7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4dd05f14-a94b-4de7-af13-0b78fd8b5ca7\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2bcda8fb-0b9b-4eb9-9509-389f5e52336f\"},\"panelIndex\":\"2bcda8fb-0b9b-4eb9-9509-389f5e52336f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2bcda8fb-0b9b-4eb9-9509-389f5e52336f\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"18c560a4-1da0-4859-a69f-f508e83e3e9c\"},\"panelIndex\":\"18c560a4-1da0-4859-a69f-f508e83e3e9c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18c560a4-1da0-4859-a69f-f508e83e3e9c\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a4066623-1adb-43cd-a83d-78d5911329b3\"},\"panelIndex\":\"a4066623-1adb-43cd-a83d-78d5911329b3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a4066623-1adb-43cd-a83d-78d5911329b3\"},{\"version\":\"8.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"983c3147-62e9-44cf-865d-bc33aa5a5f1e\"},\"panelIndex\":\"983c3147-62e9-44cf-865d-bc33aa5a5f1e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_983c3147-62e9-44cf-865d-bc33aa5a5f1e\"}]", + "title": "Convert to Lens - Metric", + "version": 1 + }, + "references": [ + { + "name": "4dd05f14-a94b-4de7-af13-0b78fd8b5ca7:panel_4dd05f14-a94b-4de7-af13-0b78fd8b5ca7", + "type": "visualization", + "id": "95ca66a0-4121-11ee-a5d9-53bce88b37d9" + }, + { + "name": "2bcda8fb-0b9b-4eb9-9509-389f5e52336f:panel_2bcda8fb-0b9b-4eb9-9509-389f5e52336f", + "type": "visualization", + "id": "b4591fd0-4121-11ee-a5d9-53bce88b37d9" + }, + { + "name": "18c560a4-1da0-4859-a69f-f508e83e3e9c:panel_18c560a4-1da0-4859-a69f-f508e83e3e9c", + "type": "visualization", + "id": "d3246cd0-4121-11ee-a5d9-53bce88b37d9" + }, + { + "name": "a4066623-1adb-43cd-a83d-78d5911329b3:panel_a4066623-1adb-43cd-a83d-78d5911329b3", + "type": "visualization", + "id": "07c57a60-4122-11ee-a5d9-53bce88b37d9" + }, + { + "name": "983c3147-62e9-44cf-865d-bc33aa5a5f1e:panel_983c3147-62e9-44cf-865d-bc33aa5a5f1e", + "type": "visualization", + "id": "2d355ef0-4122-11ee-a5d9-53bce88b37d9" + } + ], + "managed": false, + "coreMigrationVersion": "8.8.0", + "typeMigrationVersion": "8.9.0" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/navigation.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/navigation.json new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/pie.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/pie.json new file mode 100644 index 0000000000000..d721865fed405 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/pie.json @@ -0,0 +1,294 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T04:44:13.055Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-23T04:44:13.055Z", + "version": "WzE1LDFd" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-17T17:27:48.058Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-17T17:27:48.058Z", + "version": "WzMzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Pie - No split slices", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Pie - No split slices\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":true,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T05:03:48.121Z", + "id": "717dc890-4172-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T05:08:25.812Z", + "version": "WzYzLDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Pie - 1 Split slice", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Pie - 1 Split slice\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":true,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T05:08:59.502Z", + "id": "2b16c0e0-4173-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T05:08:59.502Z", + "version": "WzY1LDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Pie - 4 layers", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Pie - 4 layers\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"bytes\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"bytes\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"},{\"id\":\"5\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"bytes\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":true,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T05:07:20.912Z", + "id": "f0531d00-4172-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T05:07:20.912Z", + "version": "WzYxLDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Pie - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Pie - Agg with params\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"machine.ram\",\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":true,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T05:10:09.671Z", + "id": "54e9b170-4173-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T05:10:09.671Z", + "version": "WzY3LDFd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Pie - Basic count", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Pie - Basic count\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":true,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T05:12:19.962Z", + "id": "a29285a0-4173-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T05:12:19.962Z", + "version": "WzY4LDFd" +} + +{ + "id": "e7b6c220-4238-11ee-8b96-35b00ddf1245", + "type": "visualization", + "namespaces": [ + "default" + ], + "updated_at": "2023-08-24T04:44:26.818Z", + "created_at": "2023-08-24T04:44:26.818Z", + "version": "WzE0NCwyXQ==", + "attributes": { + "visState": "{\"title\":\"Pie - Non Donut\",\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"legendDisplay\":\"hide\",\"legendPosition\":\"right\",\"nestedLegend\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"distinctColors\":false,\"isDonut\":false,\"emptySizeRatio\":0.3,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"labels\":{\"show\":true,\"last_level\":false,\"values\":true,\"valuesFormat\":\"percent\",\"percentDecimals\":2,\"truncate\":100,\"position\":\"default\"}}}", + "title": "Pie - Non Donut", + "uiStateJSON": "{}", + "description": "", + "version": 1, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + } + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "managed": false, + "coreMigrationVersion": "8.8.0", + "typeMigrationVersion": "8.5.0" +} + +{ + "id": "d72e14f0-4173-11ee-8333-6f5dc14c92aa", + "type": "dashboard", + "namespaces": [ + "default" + ], + "updated_at": "2023-08-24T04:46:29.235Z", + "created_at": "2023-08-24T04:46:29.235Z", + "version": "WzE0NiwyXQ==", + "attributes": { + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "description": "", + "timeRestore": false, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"cab94c6c-7d7e-4891-8767-52860984355a\"},\"panelIndex\":\"cab94c6c-7d7e-4891-8767-52860984355a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_cab94c6c-7d7e-4891-8767-52860984355a\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"fd298fe8-2dd8-489a-9305-321ace73e096\"},\"panelIndex\":\"fd298fe8-2dd8-489a-9305-321ace73e096\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_fd298fe8-2dd8-489a-9305-321ace73e096\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"66adc205-f14b-4b32-b812-0182d824db74\"},\"panelIndex\":\"66adc205-f14b-4b32-b812-0182d824db74\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_66adc205-f14b-4b32-b812-0182d824db74\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"36c55349-66d7-4f3d-9e16-654e827256b0\"},\"panelIndex\":\"36c55349-66d7-4f3d-9e16-654e827256b0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_36c55349-66d7-4f3d-9e16-654e827256b0\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"a088582a-4c86-4e5c-bfb3-96196dac7514\"},\"panelIndex\":\"a088582a-4c86-4e5c-bfb3-96196dac7514\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a088582a-4c86-4e5c-bfb3-96196dac7514\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"32e26f1f-9fd4-4395-b827-5a7ed956eb06\"},\"panelIndex\":\"32e26f1f-9fd4-4395-b827-5a7ed956eb06\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_32e26f1f-9fd4-4395-b827-5a7ed956eb06\"}]", + "title": "Convert to Lens - Pie", + "version": 1 + }, + "references": [ + { + "name": "cab94c6c-7d7e-4891-8767-52860984355a:panel_cab94c6c-7d7e-4891-8767-52860984355a", + "type": "visualization", + "id": "717dc890-4172-11ee-8333-6f5dc14c92aa" + }, + { + "name": "fd298fe8-2dd8-489a-9305-321ace73e096:panel_fd298fe8-2dd8-489a-9305-321ace73e096", + "type": "visualization", + "id": "2b16c0e0-4173-11ee-8333-6f5dc14c92aa" + }, + { + "name": "66adc205-f14b-4b32-b812-0182d824db74:panel_66adc205-f14b-4b32-b812-0182d824db74", + "type": "visualization", + "id": "f0531d00-4172-11ee-8333-6f5dc14c92aa" + }, + { + "name": "36c55349-66d7-4f3d-9e16-654e827256b0:panel_36c55349-66d7-4f3d-9e16-654e827256b0", + "type": "visualization", + "id": "54e9b170-4173-11ee-8333-6f5dc14c92aa" + }, + { + "name": "a088582a-4c86-4e5c-bfb3-96196dac7514:panel_a088582a-4c86-4e5c-bfb3-96196dac7514", + "type": "visualization", + "id": "a29285a0-4173-11ee-8333-6f5dc14c92aa" + }, + { + "name": "32e26f1f-9fd4-4395-b827-5a7ed956eb06:panel_32e26f1f-9fd4-4395-b827-5a7ed956eb06", + "type": "visualization", + "id": "e7b6c220-4238-11ee-8b96-35b00ddf1245" + } + ], + "managed": false, + "coreMigrationVersion": "8.8.0", + "typeMigrationVersion": "8.9.0" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/table.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/table.json new file mode 100644 index 0000000000000..9f82aa39db66d --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/table.json @@ -0,0 +1,326 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T18:40:52.430Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-23T18:40:52.430Z", + "version": "WzExMywxXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-17T17:27:48.058Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-17T17:27:48.058Z", + "version": "WzMzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Split rows and tables", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Split rows and tables\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":0,\"extended_bounds\":{}},\"schema\":\"bucket\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"bytes\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"split\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false,\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:28:40.900Z", + "id": "43ff7840-41eb-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:28:40.900Z", + "version": "WzE5OCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Unsupported Agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Unsupported Agg\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"serial_diff\",\"params\":{\"metricAgg\":\"custom\",\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":0,\"extended_bounds\":{}},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:23:07.265Z", + "id": "7d22cf10-41ea-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:23:07.265Z", + "version": "WzE4MywxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Summary row", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Summary row\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":true,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:26:08.201Z", + "id": "e8fb7390-41ea-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:26:32.231Z", + "version": "WzE5MiwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Percentage Column", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Percentage Column\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"Count\",\"autoFitRowToContent\":false,\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:29:34.934Z", + "id": "64346760-41eb-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:29:34.934Z", + "version": "WzE5OSwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Agg with params\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:23:51.116Z", + "id": "9745f0c0-41ea-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:23:51.116Z", + "version": "WzE4NiwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Sibling pipeline agg\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"1-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:27:00.610Z", + "id": "08386e20-41eb-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:27:00.610Z", + "version": "WzE5NCwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Table - Parent pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Parent pipeline agg\",\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cumulative_sum\",\"params\":{\"metricAgg\":\"custom\",\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":0,\"extended_bounds\":{}},\"schema\":\"bucket\"}],\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"showTotal\":false,\"showToolbar\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"autoFitRowToContent\":false}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:27:37.844Z", + "id": "1e69e340-41eb-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-23T19:27:37.844Z", + "version": "WzE5NiwxXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1be63154-8a05-4d47-8af3-7e004625eeb5\"},\"panelIndex\":\"1be63154-8a05-4d47-8af3-7e004625eeb5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1be63154-8a05-4d47-8af3-7e004625eeb5\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"5977ba91-5267-45da-8a57-970092149f02\"},\"panelIndex\":\"5977ba91-5267-45da-8a57-970092149f02\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5977ba91-5267-45da-8a57-970092149f02\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"70ca061c-eaaf-41ad-a846-1d2e3544e6ac\"},\"panelIndex\":\"70ca061c-eaaf-41ad-a846-1d2e3544e6ac\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_70ca061c-eaaf-41ad-a846-1d2e3544e6ac\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"323e78fa-df6d-49d1-af0f-de08ed1cc23b\"},\"panelIndex\":\"323e78fa-df6d-49d1-af0f-de08ed1cc23b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_323e78fa-df6d-49d1-af0f-de08ed1cc23b\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"7acae79b-dcb1-49e3-91c8-2a271e854e69\"},\"panelIndex\":\"7acae79b-dcb1-49e3-91c8-2a271e854e69\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7acae79b-dcb1-49e3-91c8-2a271e854e69\"},{\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"8ac3c332-7011-4e94-b0d0-67ec3418998a\"},\"panelIndex\":\"8ac3c332-7011-4e94-b0d0-67ec3418998a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8ac3c332-7011-4e94-b0d0-67ec3418998a\"},{\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"c655233d-77e2-4758-9783-017afceaaf6d\"},\"panelIndex\":\"c655233d-77e2-4758-9783-017afceaaf6d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c655233d-77e2-4758-9783-017afceaaf6d\"}]", + "timeRestore": false, + "title": "Convert to Lens - Table", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-23T19:30:09.029Z", + "id": "7886e350-41eb-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "43ff7840-41eb-11ee-8333-6f5dc14c92aa", + "name": "1be63154-8a05-4d47-8af3-7e004625eeb5:panel_1be63154-8a05-4d47-8af3-7e004625eeb5", + "type": "visualization" + }, + { + "id": "7d22cf10-41ea-11ee-8333-6f5dc14c92aa", + "name": "5977ba91-5267-45da-8a57-970092149f02:panel_5977ba91-5267-45da-8a57-970092149f02", + "type": "visualization" + }, + { + "id": "e8fb7390-41ea-11ee-8333-6f5dc14c92aa", + "name": "70ca061c-eaaf-41ad-a846-1d2e3544e6ac:panel_70ca061c-eaaf-41ad-a846-1d2e3544e6ac", + "type": "visualization" + }, + { + "id": "64346760-41eb-11ee-8333-6f5dc14c92aa", + "name": "323e78fa-df6d-49d1-af0f-de08ed1cc23b:panel_323e78fa-df6d-49d1-af0f-de08ed1cc23b", + "type": "visualization" + }, + { + "id": "9745f0c0-41ea-11ee-8333-6f5dc14c92aa", + "name": "7acae79b-dcb1-49e3-91c8-2a271e854e69:panel_7acae79b-dcb1-49e3-91c8-2a271e854e69", + "type": "visualization" + }, + { + "id": "08386e20-41eb-11ee-8333-6f5dc14c92aa", + "name": "8ac3c332-7011-4e94-b0d0-67ec3418998a:panel_8ac3c332-7011-4e94-b0d0-67ec3418998a", + "type": "visualization" + }, + { + "id": "1e69e340-41eb-11ee-8333-6f5dc14c92aa", + "name": "c655233d-77e2-4758-9783-017afceaaf6d:panel_c655233d-77e2-4758-9783-017afceaaf6d", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-23T19:30:09.029Z", + "version": "WzIwMiwxXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/xy.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/xy.json new file mode 100644 index 0000000000000..e6453872fac41 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/xy.json @@ -0,0 +1,706 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Unsupported Agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Unsupported Agg\",\"type\":\"line\",\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"serial_diff\",\"params\":{\"metricAgg\":\"custom\",\"customMetric\":{\"id\":\"2-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":0,\"extended_bounds\":{}},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Max memory\"},\"style\":{}},{\"id\":\"ValueAxis-2\",\"name\":\"LeftAxis-2\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Serial Diff of Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-2\",\"data\":{\"id\":\"2\",\"label\":\"Serial Diff of Count\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "90f1e700-41e6-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Differing Layers", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Differing Layers\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"params\":{\"field\":\"memory\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1},{\"show\":true,\"mode\":\"normal\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-1\",\"data\":{\"id\":\"2\",\"label\":\"Max memory\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "55fe6ea0-41e8-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Similar Layers", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Similar Layers\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"params\":{\"field\":\"memory\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1},{\"show\":true,\"mode\":\"normal\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-1\",\"data\":{\"id\":\"2\",\"label\":\"Max memory\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "7c71b970-41e8-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Split chart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Split chart\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"split\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "df013010-41e4-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Percentage chart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Percentage chart\",\"type\":\"area\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"percentage\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "422f3700-41e9-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Stacked lines", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Stacked lines\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "efa74900-41e8-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Horizontal Bar", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Horizontal Bar\",\"type\":\"horizontal_bar\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"horizontal_bar\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{},\"position\":\"top\"}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "71089f80-41e9-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Axis positions", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Axis positions\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"params\":{\"field\":\"memory\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Count\"},\"style\":{}},{\"id\":\"ValueAxis-2\",\"name\":\"RightAxis-1\",\"type\":\"value\",\"position\":\"right\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Max memory\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-2\",\"data\":{\"id\":\"2\",\"label\":\"Max memory\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "daf615d0-41e9-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Split Series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Split Series\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "0e345f10-41ea-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Dot size metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Dot size metric\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"params\":{\"field\":\"memory\"},\"schema\":\"radius\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "c8d81f60-41e4-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Multiple Split Series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Multiple Split Series\",\"type\":\"line\",\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"2\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"},{\"id\":\"4\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Max memory\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-1\",\"data\":{\"id\":\"2\",\"label\":\"Count\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "0d86ddd0-41e6-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Parent pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Parent pipeline agg\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cumulative_sum\",\"params\":{\"metricAgg\":\"custom\",\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-10y\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30d\",\"drop_partials\":false,\"min_doc_count\":0,\"extended_bounds\":{}},\"schema\":\"group\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Cumulative Sum of Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Cumulative Sum of Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "9d27e680-41e8-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Multiple Y Axes", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Multiple Y Axes\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"params\":{\"field\":\"memory\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"machine.ram\"},\"schema\":\"metric\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Max memory\"},\"style\":{}},{\"id\":\"ValueAxis-2\",\"name\":\"LeftAxis-2\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Average machine.ram\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Max memory\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-2\",\"data\":{\"id\":\"2\",\"label\":\"Average machine.ram\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "e1696100-41e5-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Sibling pipeline agg\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"1-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"1-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Overall Max of Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Overall Max of Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "cfa306d0-41e8-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Sibling pipeline agg w/ split", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Sibling pipeline agg w/ split\",\"type\":\"line\",\"aggs\":[{\"id\":\"2\",\"enabled\":true,\"type\":\"max_bucket\",\"params\":{\"customBucket\":{\"id\":\"2-bucket\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"useNormalizedEsInterval\":true,\"extendToTimeRange\":false,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"0ms\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},\"customMetric\":{\"id\":\"2-metric\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false}}},\"schema\":\"metric\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"_key\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Max memory\"},\"style\":{}},{\"id\":\"ValueAxis-2\",\"name\":\"LeftAxis-2\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Overall Max of Count\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"circlesRadius\":1,\"interpolate\":\"linear\",\"lineWidth\":2,\"valueAxis\":\"ValueAxis-2\",\"data\":{\"id\":\"2\",\"label\":\"Overall Max of Count\"}}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "6ea22e30-41e6-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE2OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - X Axis", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - X Axis\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"machine.os.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"includeIsRegex\":true,\"excludeIsRegex\":true},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:21:51.973Z", + "id": "7aabe950-42b3-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:26:31.892Z", + "version": "WzE3NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "XY - Reference line", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"XY - Reference line\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"emptyAsNull\":false},\"schema\":\"metric\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{},\"style\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"\"},\"style\":{}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"detailedTooltip\":true,\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"addLegend\":true,\"legendPosition\":\"right\",\"fittingFunction\":\"linear\",\"times\":[],\"addTimeMarker\":false,\"truncateLegend\":true,\"maxLegendLines\":1,\"labels\":{},\"radiusRatio\":9,\"thresholdLine\":{\"show\":true,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:27:50.096Z", + "id": "50212500-42b4-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-24T19:27:50.096Z", + "version": "WzE4MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"251e281d-84d7-4e5b-bbf0-d5a2c0f6d7ae\"},\"panelIndex\":\"251e281d-84d7-4e5b-bbf0-d5a2c0f6d7ae\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_251e281d-84d7-4e5b-bbf0-d5a2c0f6d7ae\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"b4502dff-fa27-4100-ae01-f3fcdddc6797\"},\"panelIndex\":\"b4502dff-fa27-4100-ae01-f3fcdddc6797\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b4502dff-fa27-4100-ae01-f3fcdddc6797\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"40a6f9b8-fd47-4729-856a-768d6acc0d96\"},\"panelIndex\":\"40a6f9b8-fd47-4729-856a-768d6acc0d96\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_40a6f9b8-fd47-4729-856a-768d6acc0d96\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"8a2e6339-ef4d-4009-9ff1-6120fc29ae4c\"},\"panelIndex\":\"8a2e6339-ef4d-4009-9ff1-6120fc29ae4c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8a2e6339-ef4d-4009-9ff1-6120fc29ae4c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"3923bd12-592d-4b7f-8c0b-4d9f5c73734e\"},\"panelIndex\":\"3923bd12-592d-4b7f-8c0b-4d9f5c73734e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3923bd12-592d-4b7f-8c0b-4d9f5c73734e\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"a29cfa6c-d526-4431-b625-f8f5a95f4599\"},\"panelIndex\":\"a29cfa6c-d526-4431-b625-f8f5a95f4599\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a29cfa6c-d526-4431-b625-f8f5a95f4599\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"1d4377e5-2cf0-4c06-a45e-2aa3d372a249\"},\"panelIndex\":\"1d4377e5-2cf0-4c06-a45e-2aa3d372a249\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1d4377e5-2cf0-4c06-a45e-2aa3d372a249\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"700d8c44-234a-40d5-9328-c23bf2681ca5\"},\"panelIndex\":\"700d8c44-234a-40d5-9328-c23bf2681ca5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_700d8c44-234a-40d5-9328-c23bf2681ca5\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"7d92182b-9fe5-49e6-bbe7-02422965aaad\"},\"panelIndex\":\"7d92182b-9fe5-49e6-bbe7-02422965aaad\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7d92182b-9fe5-49e6-bbe7-02422965aaad\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"6e1bc8d0-7f0d-4c31-8118-884c654dc919\"},\"panelIndex\":\"6e1bc8d0-7f0d-4c31-8118-884c654dc919\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6e1bc8d0-7f0d-4c31-8118-884c654dc919\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"44277177-a0be-4e30-8faa-64b13d73a5c3\"},\"panelIndex\":\"44277177-a0be-4e30-8faa-64b13d73a5c3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_44277177-a0be-4e30-8faa-64b13d73a5c3\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"0ccbcac7-c6cd-4ece-b14c-05b8b5e51877\"},\"panelIndex\":\"0ccbcac7-c6cd-4ece-b14c-05b8b5e51877\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0ccbcac7-c6cd-4ece-b14c-05b8b5e51877\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"89ee9cfe-43b4-404e-b684-69b8e7041567\"},\"panelIndex\":\"89ee9cfe-43b4-404e-b684-69b8e7041567\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_89ee9cfe-43b4-404e-b684-69b8e7041567\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"adf4ad44-0319-4555-b20e-e40e3066c37c\"},\"panelIndex\":\"adf4ad44-0319-4555-b20e-e40e3066c37c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_adf4ad44-0319-4555-b20e-e40e3066c37c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"00941edd-c2f0-4fe0-bea6-24a970a62b5e\"},\"panelIndex\":\"00941edd-c2f0-4fe0-bea6-24a970a62b5e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_00941edd-c2f0-4fe0-bea6-24a970a62b5e\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"f83db75d-a9b2-4781-b025-596446774bd7\"},\"panelIndex\":\"f83db75d-a9b2-4781-b025-596446774bd7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f83db75d-a9b2-4781-b025-596446774bd7\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"4c47b32b-b9ca-4458-98ab-3971e113884b\"},\"panelIndex\":\"4c47b32b-b9ca-4458-98ab-3971e113884b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4c47b32b-b9ca-4458-98ab-3971e113884b\"}]", + "timeRestore": false, + "title": "Convert to Lens - XY", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:28:19.290Z", + "id": "2849ec30-41ea-11ee-8333-6f5dc14c92aa", + "managed": false, + "references": [ + { + "id": "90f1e700-41e6-11ee-8333-6f5dc14c92aa", + "name": "251e281d-84d7-4e5b-bbf0-d5a2c0f6d7ae:panel_251e281d-84d7-4e5b-bbf0-d5a2c0f6d7ae", + "type": "visualization" + }, + { + "id": "55fe6ea0-41e8-11ee-8333-6f5dc14c92aa", + "name": "b4502dff-fa27-4100-ae01-f3fcdddc6797:panel_b4502dff-fa27-4100-ae01-f3fcdddc6797", + "type": "visualization" + }, + { + "id": "7c71b970-41e8-11ee-8333-6f5dc14c92aa", + "name": "40a6f9b8-fd47-4729-856a-768d6acc0d96:panel_40a6f9b8-fd47-4729-856a-768d6acc0d96", + "type": "visualization" + }, + { + "id": "df013010-41e4-11ee-8333-6f5dc14c92aa", + "name": "8a2e6339-ef4d-4009-9ff1-6120fc29ae4c:panel_8a2e6339-ef4d-4009-9ff1-6120fc29ae4c", + "type": "visualization" + }, + { + "id": "422f3700-41e9-11ee-8333-6f5dc14c92aa", + "name": "3923bd12-592d-4b7f-8c0b-4d9f5c73734e:panel_3923bd12-592d-4b7f-8c0b-4d9f5c73734e", + "type": "visualization" + }, + { + "id": "efa74900-41e8-11ee-8333-6f5dc14c92aa", + "name": "a29cfa6c-d526-4431-b625-f8f5a95f4599:panel_a29cfa6c-d526-4431-b625-f8f5a95f4599", + "type": "visualization" + }, + { + "id": "71089f80-41e9-11ee-8333-6f5dc14c92aa", + "name": "1d4377e5-2cf0-4c06-a45e-2aa3d372a249:panel_1d4377e5-2cf0-4c06-a45e-2aa3d372a249", + "type": "visualization" + }, + { + "id": "daf615d0-41e9-11ee-8333-6f5dc14c92aa", + "name": "700d8c44-234a-40d5-9328-c23bf2681ca5:panel_700d8c44-234a-40d5-9328-c23bf2681ca5", + "type": "visualization" + }, + { + "id": "0e345f10-41ea-11ee-8333-6f5dc14c92aa", + "name": "7d92182b-9fe5-49e6-bbe7-02422965aaad:panel_7d92182b-9fe5-49e6-bbe7-02422965aaad", + "type": "visualization" + }, + { + "id": "c8d81f60-41e4-11ee-8333-6f5dc14c92aa", + "name": "6e1bc8d0-7f0d-4c31-8118-884c654dc919:panel_6e1bc8d0-7f0d-4c31-8118-884c654dc919", + "type": "visualization" + }, + { + "id": "0d86ddd0-41e6-11ee-8333-6f5dc14c92aa", + "name": "44277177-a0be-4e30-8faa-64b13d73a5c3:panel_44277177-a0be-4e30-8faa-64b13d73a5c3", + "type": "visualization" + }, + { + "id": "9d27e680-41e8-11ee-8333-6f5dc14c92aa", + "name": "0ccbcac7-c6cd-4ece-b14c-05b8b5e51877:panel_0ccbcac7-c6cd-4ece-b14c-05b8b5e51877", + "type": "visualization" + }, + { + "id": "e1696100-41e5-11ee-8333-6f5dc14c92aa", + "name": "89ee9cfe-43b4-404e-b684-69b8e7041567:panel_89ee9cfe-43b4-404e-b684-69b8e7041567", + "type": "visualization" + }, + { + "id": "cfa306d0-41e8-11ee-8333-6f5dc14c92aa", + "name": "adf4ad44-0319-4555-b20e-e40e3066c37c:panel_adf4ad44-0319-4555-b20e-e40e3066c37c", + "type": "visualization" + }, + { + "id": "6ea22e30-41e6-11ee-8333-6f5dc14c92aa", + "name": "00941edd-c2f0-4fe0-bea6-24a970a62b5e:panel_00941edd-c2f0-4fe0-bea6-24a970a62b5e", + "type": "visualization" + }, + { + "id": "7aabe950-42b3-11ee-8b96-35b00ddf1245", + "name": "f83db75d-a9b2-4781-b025-596446774bd7:panel_f83db75d-a9b2-4781-b025-596446774bd7", + "type": "visualization" + }, + { + "id": "50212500-42b4-11ee-8b96-35b00ddf1245", + "name": "4c47b32b-b9ca-4458-98ab-3971e113884b:panel_4c47b32b-b9ca-4458-98ab-3971e113884b", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-24T19:28:19.290Z", + "version": "WzE4NywyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/dashboard.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/dashboard.json new file mode 100644 index 0000000000000..6bd0425a656bc --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/dashboard.json @@ -0,0 +1,80 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"3c82904a-abe8-4fa2-902d-b6e59bfbcc9f\"},\"panelIndex\":\"3c82904a-abe8-4fa2-902d-b6e59bfbcc9f\",\"embeddableConfig\":{\"savedVis\":{\"id\":\"\",\"title\":\"My TSVB to Lens viz 1\",\"description\":\"\",\"type\":\"metrics\",\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3c3fee3d-c847-4434-8ce2-778a477468d6\",\"type\":\"timeseries\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"59ed28f6-f82d-443b-8d93-4c11cfab248c\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"84730d82-78fa-485a-8ba4-259ef0de812b\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_3c82904a-abe8-4fa2-902d-b6e59bfbcc9f_0_index_pattern\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}}]", + "timeRestore": false, + "title": "Convert to Lens - Dashboard - TSVB - 1", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-30T01:45:13.001Z", + "id": "34441700-46d5-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "3c82904a-abe8-4fa2-902d-b6e59bfbcc9f:metrics_3c82904a-abe8-4fa2-902d-b6e59bfbcc9f_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-30T01:45:13.001Z", + "version": "Wzc0NCwyXQ==" +} + +{ + "id": "b5bda8a0-4752-11ee-8b96-35b00ddf1245", + "type": "dashboard", + "namespaces": [ + "default" + ], + "updated_at": "2023-08-30T16:32:11.497Z", + "created_at": "2023-08-30T16:32:11.497Z", + "version": "Wzc2NSwyXQ==", + "attributes": { + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "description": "", + "timeRestore": false, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"e73a1405-0795-4848-8afa-6ff1c1b22a9f\"},\"panelIndex\":\"e73a1405-0795-4848-8afa-6ff1c1b22a9f\",\"embeddableConfig\":{\"savedVis\":{\"id\":\"\",\"title\":\"\",\"description\":\"\",\"type\":\"metrics\",\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"92cf26ab-9131-41d1-985c-92b1b530bf19\",\"type\":\"timeseries\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c8a720bb-1c4e-40ff-951e-faeca9ef6bfd\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"24f8081c-0c17-44ed-9e6a-d64051a3afcd\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_e73a1405-0795-4848-8afa-6ff1c1b22a9f_0_index_pattern\"},\"uiState\":{},\"data\":{\"aggs\":[],\"searchSource\":{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}}},\"enhancements\":{}}}]", + "title": "Convert to Lens - Dashboard - TSVB - 2", + "version": 1 + }, + "references": [ + { + "id": "logstash-*", + "name": "3c82904a-abe8-4fa2-902d-b6e59bfbcc9f:metrics_3c82904a-abe8-4fa2-902d-b6e59bfbcc9f_0_index_pattern", + "type": "index-pattern" + } + ], + "managed": false, + "coreMigrationVersion": "8.8.0", + "typeMigrationVersion": "8.9.0" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/gauge.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/gauge.json new file mode 100644 index 0000000000000..e8737715bde28 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/gauge.json @@ -0,0 +1,326 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Ignore global filters series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Ignore global filters series\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"26818aef-f3b3-4586-9431-5efd43ffe726\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"78d9d18b-08fa-4982-a08d-3ff5784128d8\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"ab3ff036-8a95-465e-956f-fce647677d4c\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"ignore_global_filter\":1}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"36f7e3e0-45fa-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:27:13.844Z", + "id": "6b3e2740-45fa-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:30:08.539Z", + "version": "WzMyMiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Ignore global filters panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Ignore global filters panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"81650dfd-5dc4-4d68-a6fc-ace6963b86c1\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"3904f377-028a-4926-a01a-d602716a19fe\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"37b14ab1-1a74-4862-8131-318680d85790\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"a24622b0-45fa-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"ignore_global_filter\":1,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:29:42.277Z", + "id": "c3b73b50-45fa-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:29:42.277Z", + "version": "WzMxOSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Basic\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"49b0e452-7e0c-4a89-b2fc-26fee1d0468f\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"ae2570cc-2c38-4157-b934-ec708da87138\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"d47fcac1-2a7d-4ec2-bda7-e78f278f5035\",\"type\":\"count\",\"field\":\"bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"81b874f0-45e9-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T21:26:53.961Z", + "id": "9bdb6f90-45e9-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T21:36:12.105Z", + "version": "WzI2NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Value count", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Value count\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"49b0e452-7e0c-4a89-b2fc-26fee1d0468f\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"ae2570cc-2c38-4157-b934-ec708da87138\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"d47fcac1-2a7d-4ec2-bda7-e78f278f5035\",\"type\":\"value_count\",\"field\":\"bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"81b874f0-45e9-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T21:36:28.791Z", + "id": "f27b8870-45ea-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T21:36:28.791Z", + "version": "WzI2OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Unsupported metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Unsupported metric\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"49b0e452-7e0c-4a89-b2fc-26fee1d0468f\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"ae2570cc-2c38-4157-b934-ec708da87138\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"unit\":\"\",\"id\":\"d47fcac1-2a7d-4ec2-bda7-e78f278f5035\",\"type\":\"positive_rate\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"81b874f0-45e9-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T21:40:30.674Z", + "id": "82a7cc10-45eb-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T21:40:30.674Z", + "version": "WzI3MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Invalid panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Invalid panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"49b0e452-7e0c-4a89-b2fc-26fee1d0468f\",\"type\":\"gauge\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"ae2570cc-2c38-4157-b934-ec708da87138\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"unit\":\"\",\"id\":\"d47fcac1-2a7d-4ec2-bda7-e78f278f5035\",\"type\":\"value_count\",\"field\":null}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"id\":\"81b874f0-45e9-11ee-9592-75fbc2f21d6e\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T21:42:08.615Z", + "id": "bd088f70-45eb-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T21:42:08.615Z", + "version": "WzI3NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Gauge - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Gauge - Color ranges\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"gauge_color_rules\":[{\"value\":10,\"id\":\"40734a80-45ec-11ee-9592-75fbc2f21d6e\",\"operator\":\"gte\",\"gauge\":\"rgba(84,179,153,1)\"},{\"value\":100,\"id\":\"78d35be0-45ec-11ee-9592-75fbc2f21d6e\",\"operator\":\"gte\",\"gauge\":\"rgba(84,160,0,1)\"}],\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"gauge_width\":10,\"id\":\"70eaf139-d0b0-449d-b523-513e1ed61dd4\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"02b8483a-98c8-4ce4-9890-32f88677fb63\",\"line_width\":1,\"metrics\":[{\"id\":\"d90891e0-7d10-4902-b131-4a789dc72304\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"extension.raw\",\"time_range_mode\":\"entire_time_range\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"entire_time_range\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"gauge\",\"use_kibana_indexes\":true,\"gauge_max\":\"\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T21:50:20.695Z", + "id": "e255db60-45ec-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T21:50:20.695Z", + "version": "WzMwMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"632858a2-560d-4975-b34b-a20152962616\"},\"panelIndex\":\"632858a2-560d-4975-b34b-a20152962616\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_632858a2-560d-4975-b34b-a20152962616\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"e4553b8f-08ed-4877-93e9-bd45ef05a6c1\"},\"panelIndex\":\"e4553b8f-08ed-4877-93e9-bd45ef05a6c1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e4553b8f-08ed-4877-93e9-bd45ef05a6c1\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"18a9d8d6-06d3-4cab-be55-44e023b53875\"},\"panelIndex\":\"18a9d8d6-06d3-4cab-be55-44e023b53875\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18a9d8d6-06d3-4cab-be55-44e023b53875\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"e2bbe60e-4f37-4ba4-8f36-37321e77db26\"},\"panelIndex\":\"e2bbe60e-4f37-4ba4-8f36-37321e77db26\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e2bbe60e-4f37-4ba4-8f36-37321e77db26\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"523a3a59-0d74-4960-aabd-0e38a483471f\"},\"panelIndex\":\"523a3a59-0d74-4960-aabd-0e38a483471f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_523a3a59-0d74-4960-aabd-0e38a483471f\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"198e2fbe-1b5f-49ea-bed5-4ed3b6901dfa\"},\"panelIndex\":\"198e2fbe-1b5f-49ea-bed5-4ed3b6901dfa\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_198e2fbe-1b5f-49ea-bed5-4ed3b6901dfa\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"b50b52c9-dd2e-412d-b795-4762197297ab\"},\"panelIndex\":\"b50b52c9-dd2e-412d-b795-4762197297ab\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b50b52c9-dd2e-412d-b795-4762197297ab\"}]", + "timeRestore": false, + "title": "Convert to Lens - TSVB - Gauge", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:36:33.316Z", + "id": "25d52c70-45ec-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "9bdb6f90-45e9-11ee-8b96-35b00ddf1245", + "name": "632858a2-560d-4975-b34b-a20152962616:panel_632858a2-560d-4975-b34b-a20152962616", + "type": "visualization" + }, + { + "id": "f27b8870-45ea-11ee-8b96-35b00ddf1245", + "name": "e4553b8f-08ed-4877-93e9-bd45ef05a6c1:panel_e4553b8f-08ed-4877-93e9-bd45ef05a6c1", + "type": "visualization" + }, + { + "id": "82a7cc10-45eb-11ee-8b96-35b00ddf1245", + "name": "18a9d8d6-06d3-4cab-be55-44e023b53875:panel_18a9d8d6-06d3-4cab-be55-44e023b53875", + "type": "visualization" + }, + { + "id": "bd088f70-45eb-11ee-8b96-35b00ddf1245", + "name": "e2bbe60e-4f37-4ba4-8f36-37321e77db26:panel_e2bbe60e-4f37-4ba4-8f36-37321e77db26", + "type": "visualization" + }, + { + "id": "e255db60-45ec-11ee-8b96-35b00ddf1245", + "name": "523a3a59-0d74-4960-aabd-0e38a483471f:panel_523a3a59-0d74-4960-aabd-0e38a483471f", + "type": "visualization" + }, + { + "id": "6b3e2740-45fa-11ee-8b96-35b00ddf1245", + "name": "198e2fbe-1b5f-49ea-bed5-4ed3b6901dfa:panel_198e2fbe-1b5f-49ea-bed5-4ed3b6901dfa", + "type": "visualization" + }, + { + "id": "c3b73b50-45fa-11ee-8b96-35b00ddf1245", + "name": "b50b52c9-dd2e-412d-b795-4762197297ab:panel_b50b52c9-dd2e-412d-b795-4762197297ab", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-28T23:36:33.316Z", + "version": "WzMyNSwyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/metric.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/metric.json new file mode 100644 index 0000000000000..883662daa1ead --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/metric.json @@ -0,0 +1,364 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Basic\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:42:21.477Z", + "id": "883bf550-45fc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:42:21.477Z", + "version": "WzMzMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Static value", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Static value\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"static\",\"value\":\"10\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:44:58.684Z", + "id": "e5efd7c0-45fc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:44:58.684Z", + "version": "WzMzNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Agg with params\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"value_count\",\"value\":\"10\",\"field\":\"bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:46:09.400Z", + "id": "10163f80-45fd-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:46:09.400Z", + "version": "WzM0MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Unsupported metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Unsupported metric\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"unit\":\"\",\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"positive_rate\",\"value\":\"10\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:47:43.258Z", + "id": "4807d7a0-45fd-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:47:43.258Z", + "version": "WzM0NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Invalid panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Invalid panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"unit\":\"\",\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"value_count\",\"value\":\"10\",\"field\":null}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:48:54.844Z", + "id": "72b2ffc0-45fd-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:48:54.844Z", + "version": "WzM1MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Color ranges\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"721de4f6-2ced-4a1f-8715-705a843719f2\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f04ed2eb-83b3-4f96-acfc-a1e5282b17a3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"unit\":\"\",\"id\":\"267a6290-0612-4f77-9c96-2526416e31ce\",\"type\":\"count\",\"value\":\"10\",\"field\":null}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"value\":10,\"id\":\"70140760-45fc-11ee-a985-93d7c1e8c7ef\",\"operator\":\"gte\",\"background_color\":\"rgba(84,179,153,1)\"}],\"isModelInvalid\":false,\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:52:33.868Z", + "id": "f53f68c0-45fd-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:52:33.868Z", + "version": "WzM2MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Ignore global filters series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Ignore global filters series\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"4e1162b5-c876-4218-a32b-714a5fc43dd5\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"a75a6df2-fa31-4fe5-a56f-4659ac07b13b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"78332407-dedf-4425-a12f-50ac8edaf205\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"ignore_global_filter\":1}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"123c3750-45fe-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:54:57.449Z", + "id": "4ad42190-45fe-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:54:57.449Z", + "version": "WzM2OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Metric - Ignore global filters panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Metric - Ignore global filters panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"4e1162b5-c876-4218-a32b-714a5fc43dd5\",\"type\":\"metric\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"a75a6df2-fa31-4fe5-a56f-4659ac07b13b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"78332407-dedf-4425-a12f-50ac8edaf205\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"ignore_global_filter\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"background_color_rules\":[{\"id\":\"123c3750-45fe-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"ignore_global_filter\":1,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:55:29.897Z", + "id": "5e2b4d90-45fe-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-28T23:55:29.897Z", + "version": "WzM3NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2928f619-bab0-4d03-98f5-dcd7aa4ce34c\"},\"panelIndex\":\"2928f619-bab0-4d03-98f5-dcd7aa4ce34c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2928f619-bab0-4d03-98f5-dcd7aa4ce34c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"659fdd1b-e353-4b37-89d7-863717c471cf\"},\"panelIndex\":\"659fdd1b-e353-4b37-89d7-863717c471cf\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_659fdd1b-e353-4b37-89d7-863717c471cf\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4674432d-4109-4997-80d7-6612cba5c93b\"},\"panelIndex\":\"4674432d-4109-4997-80d7-6612cba5c93b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4674432d-4109-4997-80d7-6612cba5c93b\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"c361b821-7c75-4f29-b57c-c75d0c209ffa\"},\"panelIndex\":\"c361b821-7c75-4f29-b57c-c75d0c209ffa\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c361b821-7c75-4f29-b57c-c75d0c209ffa\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"dce0771c-9f30-4d13-8b57-093ca9a032f1\"},\"panelIndex\":\"dce0771c-9f30-4d13-8b57-093ca9a032f1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dce0771c-9f30-4d13-8b57-093ca9a032f1\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"22338925-373b-48dd-902a-52f946e663a2\"},\"panelIndex\":\"22338925-373b-48dd-902a-52f946e663a2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_22338925-373b-48dd-902a-52f946e663a2\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"97fe35c8-2e6a-4ec4-b1e3-9070fc3d96cb\"},\"panelIndex\":\"97fe35c8-2e6a-4ec4-b1e3-9070fc3d96cb\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_97fe35c8-2e6a-4ec4-b1e3-9070fc3d96cb\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"0f0adf4e-d5a0-47cc-bfa7-4f5000ec8d5d\"},\"panelIndex\":\"0f0adf4e-d5a0-47cc-bfa7-4f5000ec8d5d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0f0adf4e-d5a0-47cc-bfa7-4f5000ec8d5d\"}]", + "timeRestore": false, + "title": "Convert to Lens - TSVB - Metric", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-28T23:55:34.411Z", + "id": "9cbc3800-45fc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "883bf550-45fc-11ee-8b96-35b00ddf1245", + "name": "2928f619-bab0-4d03-98f5-dcd7aa4ce34c:panel_2928f619-bab0-4d03-98f5-dcd7aa4ce34c", + "type": "visualization" + }, + { + "id": "e5efd7c0-45fc-11ee-8b96-35b00ddf1245", + "name": "659fdd1b-e353-4b37-89d7-863717c471cf:panel_659fdd1b-e353-4b37-89d7-863717c471cf", + "type": "visualization" + }, + { + "id": "10163f80-45fd-11ee-8b96-35b00ddf1245", + "name": "4674432d-4109-4997-80d7-6612cba5c93b:panel_4674432d-4109-4997-80d7-6612cba5c93b", + "type": "visualization" + }, + { + "id": "4807d7a0-45fd-11ee-8b96-35b00ddf1245", + "name": "c361b821-7c75-4f29-b57c-c75d0c209ffa:panel_c361b821-7c75-4f29-b57c-c75d0c209ffa", + "type": "visualization" + }, + { + "id": "72b2ffc0-45fd-11ee-8b96-35b00ddf1245", + "name": "dce0771c-9f30-4d13-8b57-093ca9a032f1:panel_dce0771c-9f30-4d13-8b57-093ca9a032f1", + "type": "visualization" + }, + { + "id": "f53f68c0-45fd-11ee-8b96-35b00ddf1245", + "name": "22338925-373b-48dd-902a-52f946e663a2:panel_22338925-373b-48dd-902a-52f946e663a2", + "type": "visualization" + }, + { + "id": "4ad42190-45fe-11ee-8b96-35b00ddf1245", + "name": "97fe35c8-2e6a-4ec4-b1e3-9070fc3d96cb:panel_97fe35c8-2e6a-4ec4-b1e3-9070fc3d96cb", + "type": "visualization" + }, + { + "id": "5e2b4d90-45fe-11ee-8b96-35b00ddf1245", + "name": "0f0adf4e-d5a0-47cc-bfa7-4f5000ec8d5d:panel_0f0adf4e-d5a0-47cc-bfa7-4f5000ec8d5d", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-28T23:55:34.411Z", + "version": "WzM3NSwyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/table.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/table.json new file mode 100644 index 0000000000000..d7b1b77021506 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/table.json @@ -0,0 +1,554 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Basic\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T15:15:22.473Z", + "id": "df820d90-467e-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T15:15:22.473Z", + "version": "WzU5NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Invalid panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Invalid panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"max\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T15:18:18.035Z", + "id": "4826b030-467f-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T15:18:18.035Z", + "version": "WzYwMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Unsupported agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Unsupported agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"sum_of_squares\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T15:20:16.506Z", + "id": "8ec3eda0-467f-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T15:20:16.506Z", + "version": "WzYwNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Sibling pipeline agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\",\"field\":\"machine.ram\"},{\"sigma\":\"\",\"id\":\"8735df70-468a-11ee-a68b-87922c3aebc1\",\"type\":\"avg_bucket\",\"field\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T16:39:06.245Z", + "id": "91e8d350-468a-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T16:39:06.245Z", + "version": "WzYxMiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Parent pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Parent pipeline agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"last_value\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\",\"field\":\"machine.ram\"},{\"sigma\":\"\",\"id\":\"8735df70-468a-11ee-a68b-87922c3aebc1\",\"type\":\"cumulative_sum\",\"field\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"a7ca7ac0-468a-11ee-a68b-87922c3aebc1\"}]}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T16:40:24.195Z", + "id": "c05f0d30-468a-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T16:40:24.195Z", + "version": "WzYyMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Invalid agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Invalid agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"a7ca7ac0-468a-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":\"clientip\",\"aggregate_function\":\"cumulative_sum\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:17:04.129Z", + "id": "c8783800-46b9-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:30:02.278Z", + "version": "WzY1NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Different agg function", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Different agg function\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"a7ca7ac0-468a-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":\"bytes\",\"aggregate_function\":\"sum\"},{\"time_range_mode\":\"entire_time_range\",\"id\":\"2bd67380-46ba-11ee-a68b-87922c3aebc1\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bd67381-46ba-11ee-a68b-87922c3aebc1\",\"type\":\"static\",\"value\":\"10\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"b37c6740-46ba-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":\"bytes\",\"aggregate_function\":\"min\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:25:11.576Z", + "id": "eb02e180-46ba-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:29:46.655Z", + "version": "WzY1MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Last value mode", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Last value mode\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"last_value\",\"id\":\"3a79b060-f939-49b1-adec-ca15a197a5fa\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c894474a-6350-4344-bc4c-13ae0510890b\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2bb39ab6-1208-4fdf-92ec-110d038aa088\",\"type\":\"count\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"a7ca7ac0-468a-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":null,\"aggregate_function\":null}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"1m\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"b6360040-467e-11ee-9ec1-951cd4204d17\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.ram\",\"pivot_type\":\"number\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:29:06.397Z", + "id": "76f9b8d0-46bb-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:30:45.571Z", + "version": "WzY1NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Static value", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Static value\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"6f7004ad-fdbe-4098-a692-70371a8270fc\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"32fda392-c769-4045-b272-2ef8b25c66bb\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1e0915c6-a89e-4049-93ed-f4780a7eee38\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0},{\"id\":\"fd19a8d0-46bb-11ee-a68b-87922c3aebc1\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"fd19a8d1-46bb-11ee-a68b-87922c3aebc1\",\"type\":\"static\",\"value\":\"10\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"e62a13d0-46bb-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.os.raw\",\"pivot_type\":\"string\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:33:22.363Z", + "id": "0f8b08b0-46bc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:33:22.363Z", + "version": "WzY2NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Agg by", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Agg by\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"6f7004ad-fdbe-4098-a692-70371a8270fc\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"32fda392-c769-4045-b272-2ef8b25c66bb\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1e0915c6-a89e-4049-93ed-f4780a7eee38\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"2ab7ab20-46bc-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":\"clientip\",\"aggregate_function\":\"sum\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"e62a13d0-46bb-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.os.raw\",\"pivot_type\":\"string\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:35:11.832Z", + "id": "50caad80-46bc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:35:11.832Z", + "version": "WzY3MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - GroupBy label", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - GroupBy label\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"6f7004ad-fdbe-4098-a692-70371a8270fc\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"32fda392-c769-4045-b272-2ef8b25c66bb\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1e0915c6-a89e-4049-93ed-f4780a7eee38\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"2ab7ab20-46bc-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":null,\"aggregate_function\":null}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"e62a13d0-46bb-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.os.raw\",\"pivot_type\":\"string\",\"pivot_label\":\"test\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:36:56.525Z", + "id": "8f318fd0-46bc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:37:27.071Z", + "version": "WzY4MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Color ranges", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Color ranges\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"6f7004ad-fdbe-4098-a692-70371a8270fc\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"32fda392-c769-4045-b272-2ef8b25c66bb\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1e0915c6-a89e-4049-93ed-f4780a7eee38\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"value\":10,\"id\":\"2ab7ab20-46bc-11ee-a68b-87922c3aebc1\",\"operator\":\"gte\",\"text\":\"rgba(84,179,153,1)\"},{\"value\":100,\"id\":\"d64cd6e0-46bc-11ee-a68b-87922c3aebc1\",\"operator\":\"gte\",\"text\":\"rgba(84,160,0,1)\"}],\"aggregate_by\":null,\"aggregate_function\":null,\"offset_time\":\"\",\"value_template\":\"{{value}}\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"e62a13d0-46bb-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.os.raw\",\"pivot_type\":\"string\",\"pivot_label\":\"\",\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:39:46.833Z", + "id": "f4b48010-46bc-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:39:46.833Z", + "version": "WzY5MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Table - Ignore global filters panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Table - Ignore global filters panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"6f7004ad-fdbe-4098-a692-70371a8270fc\",\"type\":\"table\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"32fda392-c769-4045-b272-2ef8b25c66bb\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1e0915c6-a89e-4049-93ed-f4780a7eee38\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"color_rules\":[{\"id\":\"06e3cde0-46bd-11ee-a68b-87922c3aebc1\"}],\"aggregate_by\":null,\"aggregate_function\":null,\"offset_time\":\"\",\"value_template\":\"{{value}}\"}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"e62a13d0-46bb-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"pivot_id\":\"machine.os.raw\",\"pivot_type\":\"string\",\"pivot_label\":\"\",\"ignore_global_filter\":1,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:42:01.286Z", + "id": "44d86660-46bd-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T22:42:01.286Z", + "version": "WzY5OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"dcd38e55-16f4-41fd-8304-cc3cc27d5f5f\"},\"panelIndex\":\"dcd38e55-16f4-41fd-8304-cc3cc27d5f5f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dcd38e55-16f4-41fd-8304-cc3cc27d5f5f\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c6588b33-3920-4319-ab76-e44198538188\"},\"panelIndex\":\"c6588b33-3920-4319-ab76-e44198538188\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c6588b33-3920-4319-ab76-e44198538188\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a47724a4-aa59-4184-bc97-187a48e42d7d\"},\"panelIndex\":\"a47724a4-aa59-4184-bc97-187a48e42d7d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a47724a4-aa59-4184-bc97-187a48e42d7d\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"0e8fc6ec-c83b-4f95-b3d1-90c3b05b781a\"},\"panelIndex\":\"0e8fc6ec-c83b-4f95-b3d1-90c3b05b781a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0e8fc6ec-c83b-4f95-b3d1-90c3b05b781a\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"d9a2db0d-801f-434a-965f-7262b81978f6\"},\"panelIndex\":\"d9a2db0d-801f-434a-965f-7262b81978f6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d9a2db0d-801f-434a-965f-7262b81978f6\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"716d1b0a-dcc0-43df-a65f-e4cf4262b65b\"},\"panelIndex\":\"716d1b0a-dcc0-43df-a65f-e4cf4262b65b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_716d1b0a-dcc0-43df-a65f-e4cf4262b65b\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"47916b5e-daa4-4797-90ab-63c279bfa33e\"},\"panelIndex\":\"47916b5e-daa4-4797-90ab-63c279bfa33e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_47916b5e-daa4-4797-90ab-63c279bfa33e\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"5cd56fe8-c4f9-4456-8f04-dae6908b9447\"},\"panelIndex\":\"5cd56fe8-c4f9-4456-8f04-dae6908b9447\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5cd56fe8-c4f9-4456-8f04-dae6908b9447\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"95f2ad93-84ed-4368-8dd0-b4123841ff09\"},\"panelIndex\":\"95f2ad93-84ed-4368-8dd0-b4123841ff09\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_95f2ad93-84ed-4368-8dd0-b4123841ff09\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"f99a4c9d-b63f-4035-a9fd-dac453365186\"},\"panelIndex\":\"f99a4c9d-b63f-4035-a9fd-dac453365186\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f99a4c9d-b63f-4035-a9fd-dac453365186\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"e72880a5-fcc9-4cb0-977f-71068271d02d\"},\"panelIndex\":\"e72880a5-fcc9-4cb0-977f-71068271d02d\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e72880a5-fcc9-4cb0-977f-71068271d02d\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"d4afd8d0-b901-44d6-8c2a-9a53d22599dd\"},\"panelIndex\":\"d4afd8d0-b901-44d6-8c2a-9a53d22599dd\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d4afd8d0-b901-44d6-8c2a-9a53d22599dd\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"b0d5cd74-5b12-4856-9ee9-82a666a4ea05\"},\"panelIndex\":\"b0d5cd74-5b12-4856-9ee9-82a666a4ea05\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b0d5cd74-5b12-4856-9ee9-82a666a4ea05\"}]", + "timeRestore": false, + "title": "Convert to Lens - TSVB - Table", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T22:42:06.219Z", + "id": "eacf45a0-467e-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "df820d90-467e-11ee-8b96-35b00ddf1245", + "name": "dcd38e55-16f4-41fd-8304-cc3cc27d5f5f:panel_dcd38e55-16f4-41fd-8304-cc3cc27d5f5f", + "type": "visualization" + }, + { + "id": "4826b030-467f-11ee-8b96-35b00ddf1245", + "name": "c6588b33-3920-4319-ab76-e44198538188:panel_c6588b33-3920-4319-ab76-e44198538188", + "type": "visualization" + }, + { + "id": "8ec3eda0-467f-11ee-8b96-35b00ddf1245", + "name": "a47724a4-aa59-4184-bc97-187a48e42d7d:panel_a47724a4-aa59-4184-bc97-187a48e42d7d", + "type": "visualization" + }, + { + "id": "91e8d350-468a-11ee-8b96-35b00ddf1245", + "name": "0e8fc6ec-c83b-4f95-b3d1-90c3b05b781a:panel_0e8fc6ec-c83b-4f95-b3d1-90c3b05b781a", + "type": "visualization" + }, + { + "id": "c05f0d30-468a-11ee-8b96-35b00ddf1245", + "name": "d9a2db0d-801f-434a-965f-7262b81978f6:panel_d9a2db0d-801f-434a-965f-7262b81978f6", + "type": "visualization" + }, + { + "id": "c8783800-46b9-11ee-8b96-35b00ddf1245", + "name": "716d1b0a-dcc0-43df-a65f-e4cf4262b65b:panel_716d1b0a-dcc0-43df-a65f-e4cf4262b65b", + "type": "visualization" + }, + { + "id": "eb02e180-46ba-11ee-8b96-35b00ddf1245", + "name": "47916b5e-daa4-4797-90ab-63c279bfa33e:panel_47916b5e-daa4-4797-90ab-63c279bfa33e", + "type": "visualization" + }, + { + "id": "76f9b8d0-46bb-11ee-8b96-35b00ddf1245", + "name": "5cd56fe8-c4f9-4456-8f04-dae6908b9447:panel_5cd56fe8-c4f9-4456-8f04-dae6908b9447", + "type": "visualization" + }, + { + "id": "0f8b08b0-46bc-11ee-8b96-35b00ddf1245", + "name": "95f2ad93-84ed-4368-8dd0-b4123841ff09:panel_95f2ad93-84ed-4368-8dd0-b4123841ff09", + "type": "visualization" + }, + { + "id": "50caad80-46bc-11ee-8b96-35b00ddf1245", + "name": "f99a4c9d-b63f-4035-a9fd-dac453365186:panel_f99a4c9d-b63f-4035-a9fd-dac453365186", + "type": "visualization" + }, + { + "id": "8f318fd0-46bc-11ee-8b96-35b00ddf1245", + "name": "e72880a5-fcc9-4cb0-977f-71068271d02d:panel_e72880a5-fcc9-4cb0-977f-71068271d02d", + "type": "visualization" + }, + { + "id": "f4b48010-46bc-11ee-8b96-35b00ddf1245", + "name": "d4afd8d0-b901-44d6-8c2a-9a53d22599dd:panel_d4afd8d0-b901-44d6-8c2a-9a53d22599dd", + "type": "visualization" + }, + { + "id": "44d86660-46bd-11ee-8b96-35b00ddf1245", + "name": "b0d5cd74-5b12-4856-9ee9-82a666a4ea05:panel_b0d5cd74-5b12-4856-9ee9-82a666a4ea05", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-29T22:42:06.219Z", + "version": "WzcwMCwyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/timeseries.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/timeseries.json new file mode 100644 index 0000000000000..706d1e9fe1747 --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/timeseries.json @@ -0,0 +1,521 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Timeseries - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Basic\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"type\":\"timeseries\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:29:19.635Z", + "id": "17fcbe30-4603-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:29:53.582Z", + "version": "WzM4NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "title": "Timeseries - Reference line", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Reference line\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"line_width\":1,\"metrics\":[{\"id\":\"7f8229a0-460d-11ee-9837-135820940af5\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"label\":\"\"},{\"id\":\"f2a2aa90-460d-11ee-9837-135820940af5\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"f2a2aa91-460d-11ee-9837-135820940af5\",\"type\":\"static\",\"value\":\"10\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0,\"label\":\"\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:33:33.217Z", + "id": "af224910-4603-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T01:47:50.568Z", + "version": "WzQ3NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "title": "Timeseries - Agg with params", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Agg with params\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"line_width\":1,\"metrics\":[{\"unit\":\"\",\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"positive_rate\",\"value\":\"10\",\"field\":\"machine.ram\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"label\":\"\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:34:55.310Z", + "id": "e010aee0-4603-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:34:55.310Z", + "version": "WzM5OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "title": "Timeseries - Invalid panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Invalid panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"line_width\":1,\"metrics\":[{\"unit\":\"\",\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"positive_rate\",\"value\":\"10\",\"field\":null}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"label\":\"\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:36:12.342Z", + "id": "0dfad560-4604-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:36:12.342Z", + "version": "WzQwMywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "title": "Timeseries - Unsupported aggregations", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Unsupported aggregations\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"line_width\":1,\"metrics\":[{\"unit\":\"\",\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"sum_of_squares\",\"value\":\"10\",\"field\":\"machine.ram\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"label\":\"\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:36:50.362Z", + "id": "24a439a0-4604-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:36:50.362Z", + "version": "WzQwNywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "title": "Timeseries - Parent pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"label\":\"\",\"line_width\":1,\"metrics\":[{\"id\":\"629a7fd0-4604-11ee-a985-93d7c1e8c7ef\",\"type\":\"count\"},{\"field\":\"629a7fd0-4604-11ee-a985-93d7c1e8c7ef\",\"id\":\"de58f750-4604-11ee-a985-93d7c1e8c7ef\",\"type\":\"cumulative_sum\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"extension.raw\",\"time_range_mode\":\"entire_time_range\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"entire_time_range\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"},\"title\":\"Timeseries - Parent pipeline agg\",\"type\":\"metrics\"}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:44:22.549Z", + "id": "322a7c50-4605-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:44:22.549Z", + "version": "WzQxOCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Timeseries - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"39e9d894-19a4-4b79-9326-e06eed8b5e25\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"38652a6e-49e1-486a-b283-cf84f1ae0441\",\"label\":\"\",\"line_width\":1,\"metrics\":[{\"id\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"type\":\"count\"},{\"field\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"id\":\"3edd10c0-4605-11ee-a985-93d7c1e8c7ef\",\"sigma\":\"\",\"type\":\"avg_bucket\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"extension.raw\",\"time_range_mode\":\"entire_time_range\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"entire_time_range\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"},\"title\":\"Timeseries - Sibling pipeline agg\",\"type\":\"metrics\"}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:45:48.375Z", + "id": "65527e70-4605-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:45:48.375Z", + "version": "WzQyNywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Timeseries - Ignore global filters series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Ignore global filters series\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"39e9d894-19a4-4b79-9326-e06eed8b5e25\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"38652a6e-49e1-486a-b283-cf84f1ae0441\",\"label\":\"\",\"line_width\":1,\"metrics\":[{\"id\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"time_range_mode\":\"entire_time_range\",\"ignore_global_filter\":1}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"entire_time_range\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:46:44.783Z", + "id": "86f1abf0-4605-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:46:44.783Z", + "version": "WzQzMywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Timeseries - Ignore global filters panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Ignore global filters panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"39e9d894-19a4-4b79-9326-e06eed8b5e25\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"38652a6e-49e1-486a-b283-cf84f1ae0441\",\"label\":\"\",\"line_width\":1,\"metrics\":[{\"id\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"ignore_global_filter\":0}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"ignore_global_filter\":1,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T00:47:25.582Z", + "id": "9f431ae0-4605-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T00:47:25.582Z", + "version": "WzQzOCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"field\":\"extension\",\"key\":\"extension\",\"negate\":false,\"params\":{\"query\":\"css\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"extension\":\"css\"}}}]}" + }, + "title": "Timeseries - Test", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - Test\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"drop_last_bucket\":0,\"id\":\"39e9d894-19a4-4b79-9326-e06eed8b5e25\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"38652a6e-49e1-486a-b283-cf84f1ae0441\",\"label\":\"\",\"line_width\":1,\"metrics\":[{\"id\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"type\":\"count\"},{\"field\":\"049c454d-5a6c-4daf-96b7-8de0a40a23cc\",\"id\":\"3edd10c0-4605-11ee-a985-93d7c1e8c7ef\",\"sigma\":\"\",\"type\":\"avg_bucket\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"extension.raw\",\"time_range_mode\":\"entire_time_range\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"entire_time_range\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"timeseries\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T01:08:39.409Z", + "id": "9685ae10-4608-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T01:08:39.409Z", + "version": "WzQ0NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"machine.os : ios\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Timeseries - With query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - With query\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"type\":\"timeseries\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T01:12:16.100Z", + "id": "17ae1a40-4609-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T01:12:16.100Z", + "version": "WzQ2MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"field\":\"extension\",\"key\":\"extension\",\"negate\":false,\"params\":{\"query\":\"css\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"extension\":\"css\"}}}]}" + }, + "title": "Timeseries - With filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Timeseries - With filter\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54a209d-8bb9-45ca-90e5-92ee93498f4d\",\"type\":\"timeseries\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"3735cb41-cc73-423a-91b7-1dbf91e76899\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"73f6d087-b8cb-45b4-b768-b1ce67451530\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T01:10:41.622Z", + "id": "df5de760-4608-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T01:11:14.372Z", + "version": "WzQ1NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"8bd35619-2857-479e-b2ad-c42177db8f4c\"},\"panelIndex\":\"8bd35619-2857-479e-b2ad-c42177db8f4c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8bd35619-2857-479e-b2ad-c42177db8f4c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"08411e04-5232-472e-be83-553586e84255\"},\"panelIndex\":\"08411e04-5232-472e-be83-553586e84255\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_08411e04-5232-472e-be83-553586e84255\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"59afa58a-fa67-4af3-b422-a63eb4a250fe\"},\"panelIndex\":\"59afa58a-fa67-4af3-b422-a63eb4a250fe\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_59afa58a-fa67-4af3-b422-a63eb4a250fe\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"fc8df122-75b6-42de-9a08-348f45f027c4\"},\"panelIndex\":\"fc8df122-75b6-42de-9a08-348f45f027c4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_fc8df122-75b6-42de-9a08-348f45f027c4\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"afd9e964-9afa-402d-bc32-795a3ecec4ff\"},\"panelIndex\":\"afd9e964-9afa-402d-bc32-795a3ecec4ff\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_afd9e964-9afa-402d-bc32-795a3ecec4ff\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"b6571ff0-693d-4dbd-8dbd-8a57d4b75a36\"},\"panelIndex\":\"b6571ff0-693d-4dbd-8dbd-8a57d4b75a36\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b6571ff0-693d-4dbd-8dbd-8a57d4b75a36\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"e00255dc-a4ae-4d0f-bb71-546623bdd4c0\"},\"panelIndex\":\"e00255dc-a4ae-4d0f-bb71-546623bdd4c0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e00255dc-a4ae-4d0f-bb71-546623bdd4c0\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"68a688a4-b0fa-49a2-8b35-a20c70500d8a\"},\"panelIndex\":\"68a688a4-b0fa-49a2-8b35-a20c70500d8a\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_68a688a4-b0fa-49a2-8b35-a20c70500d8a\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"6680ba9b-b669-4bed-87b1-67a9453244e5\"},\"panelIndex\":\"6680ba9b-b669-4bed-87b1-67a9453244e5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6680ba9b-b669-4bed-87b1-67a9453244e5\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"cdcb3397-5a51-4627-9f5c-caa6c26ef203\"},\"panelIndex\":\"cdcb3397-5a51-4627-9f5c-caa6c26ef203\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_cdcb3397-5a51-4627-9f5c-caa6c26ef203\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"5e0f79cd-690a-4d64-97d3-b6c9a6a8080b\"},\"panelIndex\":\"5e0f79cd-690a-4d64-97d3-b6c9a6a8080b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5e0f79cd-690a-4d64-97d3-b6c9a6a8080b\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"41045521-aa6e-41cb-92af-a951bb033acc\"},\"panelIndex\":\"41045521-aa6e-41cb-92af-a951bb033acc\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_41045521-aa6e-41cb-92af-a951bb033acc\"}]", + "timeRestore": false, + "title": "Convert to Lens - TSVB - Timeseries", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T01:12:25.942Z", + "id": "203c4110-4603-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "17fcbe30-4603-11ee-8b96-35b00ddf1245", + "name": "8bd35619-2857-479e-b2ad-c42177db8f4c:panel_8bd35619-2857-479e-b2ad-c42177db8f4c", + "type": "visualization" + }, + { + "id": "af224910-4603-11ee-8b96-35b00ddf1245", + "name": "08411e04-5232-472e-be83-553586e84255:panel_08411e04-5232-472e-be83-553586e84255", + "type": "visualization" + }, + { + "id": "e010aee0-4603-11ee-8b96-35b00ddf1245", + "name": "59afa58a-fa67-4af3-b422-a63eb4a250fe:panel_59afa58a-fa67-4af3-b422-a63eb4a250fe", + "type": "visualization" + }, + { + "id": "0dfad560-4604-11ee-8b96-35b00ddf1245", + "name": "fc8df122-75b6-42de-9a08-348f45f027c4:panel_fc8df122-75b6-42de-9a08-348f45f027c4", + "type": "visualization" + }, + { + "id": "24a439a0-4604-11ee-8b96-35b00ddf1245", + "name": "afd9e964-9afa-402d-bc32-795a3ecec4ff:panel_afd9e964-9afa-402d-bc32-795a3ecec4ff", + "type": "visualization" + }, + { + "id": "322a7c50-4605-11ee-8b96-35b00ddf1245", + "name": "b6571ff0-693d-4dbd-8dbd-8a57d4b75a36:panel_b6571ff0-693d-4dbd-8dbd-8a57d4b75a36", + "type": "visualization" + }, + { + "id": "65527e70-4605-11ee-8b96-35b00ddf1245", + "name": "e00255dc-a4ae-4d0f-bb71-546623bdd4c0:panel_e00255dc-a4ae-4d0f-bb71-546623bdd4c0", + "type": "visualization" + }, + { + "id": "86f1abf0-4605-11ee-8b96-35b00ddf1245", + "name": "68a688a4-b0fa-49a2-8b35-a20c70500d8a:panel_68a688a4-b0fa-49a2-8b35-a20c70500d8a", + "type": "visualization" + }, + { + "id": "9f431ae0-4605-11ee-8b96-35b00ddf1245", + "name": "6680ba9b-b669-4bed-87b1-67a9453244e5:panel_6680ba9b-b669-4bed-87b1-67a9453244e5", + "type": "visualization" + }, + { + "id": "9685ae10-4608-11ee-8b96-35b00ddf1245", + "name": "cdcb3397-5a51-4627-9f5c-caa6c26ef203:panel_cdcb3397-5a51-4627-9f5c-caa6c26ef203", + "type": "visualization" + }, + { + "id": "17ae1a40-4609-11ee-8b96-35b00ddf1245", + "name": "5e0f79cd-690a-4d64-97d3-b6c9a6a8080b:panel_5e0f79cd-690a-4d64-97d3-b6c9a6a8080b", + "type": "visualization" + }, + { + "id": "df5de760-4608-11ee-8b96-35b00ddf1245", + "name": "41045521-aa6e-41cb-92af-a951bb033acc:panel_41045521-aa6e-41cb-92af-a951bb033acc", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-29T01:12:25.942Z", + "version": "WzQ2NCwyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/top_n.json b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/top_n.json new file mode 100644 index 0000000000000..818fe14b662cc --- /dev/null +++ b/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/top_n.json @@ -0,0 +1,559 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "runtimeFieldMap": "{\"hello_world_runtime_field\":{\"type\":\"keyword\",\"script\":{\"source\":\"emit('hello world')\"}}}", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "logstash-*", + "managed": false, + "references": [], + "type": "index-pattern", + "typeMigrationVersion": "7.11.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "color": "#965783", + "description": "", + "name": "serverless" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-24T19:23:41.590Z", + "id": "serverless-tag", + "managed": false, + "references": [], + "type": "tag", + "typeMigrationVersion": "8.0.0", + "updated_at": "2023-08-24T19:23:41.590Z", + "version": "WzcyMzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Unsupported agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Unsupported agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"d600e2d8-f55b-4eb2-902a-7f143d07cbef\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"7fc549f8-f59c-41c6-ab9e-102f141080c3\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"2d835cdc-7e72-451a-a9f5-fb3802bdab83\",\"type\":\"sum_of_squares\",\"field\":\"machine.ram\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"8e696f00-4626-11ee-a985-93d7c1e8c7ef\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:44:40.578Z", + "id": "c3fb1e20-4626-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:44:40.578Z", + "version": "WzQ5NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Invalid panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Invalid panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"fd7e1a1e-d957-4b5e-8da4-ee9a04243fe1\",\"type\":\"max\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:42:10.825Z", + "id": "6ab89f90-4626-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:45:06.989Z", + "version": "WzUwMSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Basic", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Basic\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1cb8bfd0-4628-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:55:00.512Z", + "id": "357d62f0-4628-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:55:00.512Z", + "version": "WzUyNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Parent pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Parent pipeline agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"last_value\",\"id\":\"8083ead8-49d6-4e9b-bdec-ea98b8b27bfc\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f51e24e6-a0db-467b-83ae-6958c7954b8f\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"ad461389-3856-4924-810c-08104674352a\",\"type\":\"count\"},{\"id\":\"e1971d70-4627-11ee-a68b-87922c3aebc1\",\"type\":\"cumulative_sum\",\"field\":\"ad461389-3856-4924-810c-08104674352a\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"dc62fb40-4626-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:53:21.411Z", + "id": "fa6bc620-4627-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:53:21.411Z", + "version": "WzUxOCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Sibling pipeline agg", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Sibling pipeline agg\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"8083ead8-49d6-4e9b-bdec-ea98b8b27bfc\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"f51e24e6-a0db-467b-83ae-6958c7954b8f\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"ad461389-3856-4924-810c-08104674352a\",\"type\":\"count\"},{\"sigma\":\"\",\"id\":\"0c833ba0-4627-11ee-a68b-87922c3aebc1\",\"type\":\"avg_bucket\",\"field\":\"ad461389-3856-4924-810c-08104674352a\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"dc62fb40-4626-11ee-a68b-87922c3aebc1\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:47:56.522Z", + "id": "38c5cca0-4627-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:47:56.522Z", + "version": "WzUwOCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Horizontal bar", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Horizontal bar\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"type\":\"top_n\",\"series\":[{\"time_range_mode\":\"entire_time_range\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"1cb8bfd0-4628-11ee-a68b-87922c3aebc1\",\"type\":\"max\",\"field\":\"memory\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"time_field\":\"\",\"use_kibana_indexes\":true,\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"truncate_legend\":1,\"max_lines_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"drop_last_bucket\":0,\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"isModelInvalid\":false,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T04:59:51.097Z", + "id": "e2b14a90-4628-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T04:59:51.097Z", + "version": "WzUzMywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Group by", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Group by\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"field\":\"memory\",\"id\":\"1cb8bfd0-4628-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"extension.raw\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:03:08.276Z", + "id": "58386b40-4629-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:40:43.742Z", + "version": "WzU4OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Last value", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Last value\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"1m\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"time_range_mode\":\"entire_time_range\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"time_range_mode\":\"last_value\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:12:52.996Z", + "id": "b4bd9c40-462a-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:12:52.996Z", + "version": "WzU0NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Static value", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Static value\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\"},{\"id\":\"e2aad000-462a-11ee-a68b-87922c3aebc1\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"palette\":{\"type\":\"palette\",\"name\":\"default\"},\"metrics\":[{\"id\":\"e2aad001-462a-11ee-a68b-87922c3aebc1\",\"type\":\"static\",\"value\":\"10\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"default\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"override_index_pattern\":0,\"series_drop_last_bucket\":0}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:14:44.259Z", + "id": "f70eff30-462a-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:14:44.259Z", + "version": "WzU1NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"field\":\"extension\",\"key\":\"extension\",\"negate\":false,\"params\":{\"query\":\"css\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"extension\":\"css\"}}}]}" + }, + "title": "Top N - With filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - With filter\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:19:10.655Z", + "id": "95d7ccf0-462b-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:19:10.655Z", + "version": "WzU2NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"machine.os : ios\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - With query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - With query\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:20:31.413Z", + "id": "c5fa7e50-462b-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:20:31.413Z", + "version": "WzU2OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Ignore global filters series", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Ignore global filters series\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"ignore_global_filter\":1}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:22:31.574Z", + "id": "0d999b60-462c-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:22:31.574Z", + "version": "WzU3NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "Top N - Ignore global filters panel", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Top N - Ignore global filters panel\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"time_range_mode\":\"entire_time_range\",\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"bar_color_rules\":[{\"id\":\"ec1a1290-4625-11ee-8c8f-e5a0db7dbd7b\"}],\"drop_last_bucket\":0,\"id\":\"e6068273-0069-4301-af1a-d1d07f43a27f\",\"interval\":\"\",\"isModelInvalid\":false,\"max_lines_legend\":1,\"series\":[{\"time_range_mode\":\"entire_time_range\",\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"default\",\"id\":\"c54e25d0-a83a-40b4-9ced-51fbbd0e6b7f\",\"line_width\":1,\"metrics\":[{\"id\":\"7c6ce9a0-4629-11ee-a68b-87922c3aebc1\",\"type\":\"count\"}],\"override_index_pattern\":0,\"palette\":{\"name\":\"default\",\"type\":\"palette\"},\"point_size\":1,\"separate_axis\":0,\"series_drop_last_bucket\":0,\"split_mode\":\"everything\",\"stacked\":\"none\",\"ignore_global_filter\":0}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"\",\"tooltip_mode\":\"show_all\",\"truncate_legend\":1,\"type\":\"top_n\",\"use_kibana_indexes\":true,\"ignore_global_filter\":1,\"index_pattern_ref_name\":\"metrics_0_index_pattern\"}}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:23:15.380Z", + "id": "27b5df40-462c-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "serverless-tag", + "name": "tag-ref-serverless-tag", + "type": "tag" + }, + { + "id": "logstash-*", + "name": "metrics_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "typeMigrationVersion": "8.5.0", + "updated_at": "2023-08-29T05:23:15.380Z", + "version": "WzU4MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"670a4ae2-de49-4a96-838c-ba616a3ce1d8\"},\"panelIndex\":\"670a4ae2-de49-4a96-838c-ba616a3ce1d8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_670a4ae2-de49-4a96-838c-ba616a3ce1d8\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"a709376d-07bd-4610-b153-cac5b071681c\"},\"panelIndex\":\"a709376d-07bd-4610-b153-cac5b071681c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_a709376d-07bd-4610-b153-cac5b071681c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"25cc76c0-f96c-46d8-9c61-4730f1d56d3c\"},\"panelIndex\":\"25cc76c0-f96c-46d8-9c61-4730f1d56d3c\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_25cc76c0-f96c-46d8-9c61-4730f1d56d3c\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"d451c8b5-9fad-4f81-80ad-012c8c8df174\"},\"panelIndex\":\"d451c8b5-9fad-4f81-80ad-012c8c8df174\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d451c8b5-9fad-4f81-80ad-012c8c8df174\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"ab93a906-e9b9-4583-aa8e-1e8d3e07cf52\"},\"panelIndex\":\"ab93a906-e9b9-4583-aa8e-1e8d3e07cf52\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ab93a906-e9b9-4583-aa8e-1e8d3e07cf52\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"cc4c448f-2b95-4f4a-8960-1603cc1ecac4\"},\"panelIndex\":\"cc4c448f-2b95-4f4a-8960-1603cc1ecac4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_cc4c448f-2b95-4f4a-8960-1603cc1ecac4\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"7361825d-37a9-4bc0-b894-edacbb34a34b\"},\"panelIndex\":\"7361825d-37a9-4bc0-b894-edacbb34a34b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7361825d-37a9-4bc0-b894-edacbb34a34b\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"4fd3f555-a85f-4049-bab2-6030ce896893\"},\"panelIndex\":\"4fd3f555-a85f-4049-bab2-6030ce896893\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4fd3f555-a85f-4049-bab2-6030ce896893\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"5156df6a-a033-472c-950c-d1efe2db7760\"},\"panelIndex\":\"5156df6a-a033-472c-950c-d1efe2db7760\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5156df6a-a033-472c-950c-d1efe2db7760\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"91297d18-6929-437f-80e6-d8ae87226c9b\"},\"panelIndex\":\"91297d18-6929-437f-80e6-d8ae87226c9b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_91297d18-6929-437f-80e6-d8ae87226c9b\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"5e07d577-dcd4-48f7-98ae-61a5d3393205\"},\"panelIndex\":\"5e07d577-dcd4-48f7-98ae-61a5d3393205\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5e07d577-dcd4-48f7-98ae-61a5d3393205\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"9343f6f2-6f67-4a8e-8571-ed90871be7cb\"},\"panelIndex\":\"9343f6f2-6f67-4a8e-8571-ed90871be7cb\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9343f6f2-6f67-4a8e-8571-ed90871be7cb\"},{\"version\":\"8.9.1\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"63ba5316-bceb-4eca-b10b-778db6a1ac42\"},\"panelIndex\":\"63ba5316-bceb-4eca-b10b-778db6a1ac42\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_63ba5316-bceb-4eca-b10b-778db6a1ac42\"}]", + "timeRestore": false, + "title": "Convert to Lens - TSVB - Top N", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2023-08-29T05:23:18.503Z", + "id": "7e148680-4626-11ee-8b96-35b00ddf1245", + "managed": false, + "references": [ + { + "id": "c3fb1e20-4626-11ee-8b96-35b00ddf1245", + "name": "670a4ae2-de49-4a96-838c-ba616a3ce1d8:panel_670a4ae2-de49-4a96-838c-ba616a3ce1d8", + "type": "visualization" + }, + { + "id": "6ab89f90-4626-11ee-8b96-35b00ddf1245", + "name": "a709376d-07bd-4610-b153-cac5b071681c:panel_a709376d-07bd-4610-b153-cac5b071681c", + "type": "visualization" + }, + { + "id": "357d62f0-4628-11ee-8b96-35b00ddf1245", + "name": "25cc76c0-f96c-46d8-9c61-4730f1d56d3c:panel_25cc76c0-f96c-46d8-9c61-4730f1d56d3c", + "type": "visualization" + }, + { + "id": "fa6bc620-4627-11ee-8b96-35b00ddf1245", + "name": "d451c8b5-9fad-4f81-80ad-012c8c8df174:panel_d451c8b5-9fad-4f81-80ad-012c8c8df174", + "type": "visualization" + }, + { + "id": "38c5cca0-4627-11ee-8b96-35b00ddf1245", + "name": "ab93a906-e9b9-4583-aa8e-1e8d3e07cf52:panel_ab93a906-e9b9-4583-aa8e-1e8d3e07cf52", + "type": "visualization" + }, + { + "id": "e2b14a90-4628-11ee-8b96-35b00ddf1245", + "name": "cc4c448f-2b95-4f4a-8960-1603cc1ecac4:panel_cc4c448f-2b95-4f4a-8960-1603cc1ecac4", + "type": "visualization" + }, + { + "id": "58386b40-4629-11ee-8b96-35b00ddf1245", + "name": "7361825d-37a9-4bc0-b894-edacbb34a34b:panel_7361825d-37a9-4bc0-b894-edacbb34a34b", + "type": "visualization" + }, + { + "id": "b4bd9c40-462a-11ee-8b96-35b00ddf1245", + "name": "4fd3f555-a85f-4049-bab2-6030ce896893:panel_4fd3f555-a85f-4049-bab2-6030ce896893", + "type": "visualization" + }, + { + "id": "f70eff30-462a-11ee-8b96-35b00ddf1245", + "name": "5156df6a-a033-472c-950c-d1efe2db7760:panel_5156df6a-a033-472c-950c-d1efe2db7760", + "type": "visualization" + }, + { + "id": "95d7ccf0-462b-11ee-8b96-35b00ddf1245", + "name": "91297d18-6929-437f-80e6-d8ae87226c9b:panel_91297d18-6929-437f-80e6-d8ae87226c9b", + "type": "visualization" + }, + { + "id": "c5fa7e50-462b-11ee-8b96-35b00ddf1245", + "name": "5e07d577-dcd4-48f7-98ae-61a5d3393205:panel_5e07d577-dcd4-48f7-98ae-61a5d3393205", + "type": "visualization" + }, + { + "id": "0d999b60-462c-11ee-8b96-35b00ddf1245", + "name": "9343f6f2-6f67-4a8e-8571-ed90871be7cb:panel_9343f6f2-6f67-4a8e-8571-ed90871be7cb", + "type": "visualization" + }, + { + "id": "27b5df40-462c-11ee-8b96-35b00ddf1245", + "name": "63ba5316-bceb-4eca-b10b-778db6a1ac42:panel_63ba5316-bceb-4eca-b10b-778db6a1ac42", + "type": "visualization" + } + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2023-08-29T05:23:18.503Z", + "version": "WzU4MywyXQ==" +} \ No newline at end of file diff --git a/x-pack/test_serverless/functional/services/deployment_agnostic_services.ts b/x-pack/test_serverless/functional/services/deployment_agnostic_services.ts index 112c898eea358..f27d3493e0951 100644 --- a/x-pack/test_serverless/functional/services/deployment_agnostic_services.ts +++ b/x-pack/test_serverless/functional/services/deployment_agnostic_services.ts @@ -34,6 +34,7 @@ const deploymentAgnosticFunctionalServices = _.pick(functionalServices, [ 'dashboardSettings', 'dashboardVisualizations', 'dataGrid', + 'dataStreams', 'docTable', 'elasticChart', 'embedding', diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/index.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/index.ts new file mode 100644 index 0000000000000..161fb2f265ab0 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/index.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EsArchiver } from '@kbn/es-archiver'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext) => { + const browser = getService('browser'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['timePicker']); + const config = getService('config'); + let remoteEsArchiver; + + describe('lens serverless - group 1', () => { + const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; + const localIndexPatternString = 'logstash-*'; + const remoteIndexPatternString = 'ftr-remote:logstash-*'; + const localFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/default', + }; + + const remoteFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/default', + }; + let esNode: EsArchiver; + let fixtureDirs: { + lensBasic: string; + lensDefault: string; + }; + let indexPatternString: string; + before(async () => { + log.debug('Starting lens before method'); + await browser.setWindowSize(1280, 1200); + await kibanaServer.savedObjects.cleanStandardList(); + try { + config.get('esTestCluster.ccs'); + remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); + esNode = remoteEsArchiver; + fixtureDirs = remoteFixtures; + indexPatternString = remoteIndexPatternString; + } catch (error) { + esNode = esArchiver; + fixtureDirs = localFixtures; + indexPatternString = localIndexPatternString; + } + + await esNode.load(esArchive); + // changing the timepicker default here saves us from having to set it in Discover (~8s) + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update({ + defaultIndex: indexPatternString, + 'dateFormat:tz': 'UTC', + }); + await kibanaServer.importExport.load(fixtureDirs.lensBasic); + await kibanaServer.importExport.load(fixtureDirs.lensDefault); + }); + + after(async () => { + await esArchiver.unload(esArchive); + await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.importExport.unload(fixtureDirs.lensBasic); + await kibanaServer.importExport.unload(fixtureDirs.lensDefault); + await kibanaServer.savedObjects.cleanStandardList(); + }); + + loadTestFile(require.resolve('./smokescreen.ts')); + loadTestFile(require.resolve('./tsdb.ts')); + loadTestFile(require.resolve('./vega_chart.ts')); + }); +}; diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/smokescreen.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/smokescreen.ts new file mode 100644 index 0000000000000..5015b4be2250c --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/smokescreen.ts @@ -0,0 +1,765 @@ +/* + * 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 { range } from 'lodash'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); + const find = getService('find'); + const listingTable = getService('listingTable'); + const testSubjects = getService('testSubjects'); + const elasticChart = getService('elasticChart'); + const filterBar = getService('filterBar'); + const retry = getService('retry'); + const config = getService('config'); + + describe('lens smokescreen tests', () => { + it('should allow creation of lens xy chart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: '@message.raw', + }); + + await PageObjects.lens.switchToVisualization('lnsDatatable'); + await PageObjects.lens.removeDimension('lnsDatatable_rows'); + await PageObjects.lens.switchToVisualization('bar_stacked'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'ip', + }); + + await PageObjects.lens.save('Afancilenstest'); + + // Ensure the visualization shows up in the visualize list, and takes + // us back to the visualization as we configured it. + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('Afancilenstest'); + await PageObjects.lens.clickVisualizeListItemTitle('Afancilenstest'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.waitForVisualization('xyVisChart'); + + expect(await PageObjects.lens.getTitle()).to.eql('Afancilenstest'); + + // .echLegendItem__title is the only viable way of getting the xy chart's + // legend item(s), so we're using a class selector here. + // 4th item is the other bucket + expect(await find.allByCssSelector('.echLegendItem')).to.have.length(4); + }); + + it('should create an xy visualization with filters aggregation', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + // Change the IP field to filters + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-dimensionTrigger', + operation: 'filters', + keepOpen: true, + }); + await PageObjects.lens.addFilterToAgg(`geo.src : CN`); + await PageObjects.lens.waitForVisualization('xyVisChart'); + + // Verify that the field was persisted from the transition + expect(await PageObjects.lens.getFiltersAggLabels()).to.eql([`"ip" : *`, `geo.src : CN`]); + expect(await find.allByCssSelector('.echLegendItem')).to.have.length(2); + }); + + it('should transition from metric to table to metric', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('Artistpreviouslyknownaslens'); + await PageObjects.lens.clickVisualizeListItemTitle('Artistpreviouslyknownaslens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.assertLegacyMetric('Maximum of bytes', '19,986'); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + expect(await PageObjects.lens.getDatatableHeaderText()).to.eql('Maximum of bytes'); + expect(await PageObjects.lens.getDatatableCellText(0, 0)).to.eql('19,986'); + await PageObjects.lens.switchToVisualization('lnsLegacyMetric'); + await PageObjects.lens.assertLegacyMetric('Maximum of bytes', '19,986'); + }); + + it('should transition from a multi-layer stacked bar to a multi-layer line chart and correctly remove all layers', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.createLayer(); + + expect(await PageObjects.lens.hasChartSwitchWarning('line')).to.eql(false); + + await PageObjects.lens.switchToVisualization('line'); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.src', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'median', + field: 'bytes', + }); + + expect(await PageObjects.lens.getLayerCount()).to.eql(2); + await PageObjects.lens.removeLayer(); + await PageObjects.lens.removeLayer(); + await testSubjects.existOrFail('workspace-drag-drop-prompt'); + }); + + it('should edit settings of xy line chart', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.removeDimension('lnsXY_splitDimensionPanel'); + await PageObjects.lens.switchToVisualization('line'); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'max', + field: 'memory', + keepOpen: true, + }); + await PageObjects.lens.editDimensionLabel('Test of label'); + await PageObjects.lens.editDimensionFormat('Percent'); + await PageObjects.lens.editDimensionColor('#ff0000'); + await PageObjects.lens.openVisualOptions(); + + await PageObjects.lens.setCurvedLines('CURVE_MONOTONE_X'); + await PageObjects.lens.editMissingValues('Linear'); + + await PageObjects.lens.assertMissingValues('Linear'); + + await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + await PageObjects.lens.assertColor('#ff0000'); + + await testSubjects.existOrFail('indexPattern-dimension-formatDecimals'); + + await PageObjects.lens.closeDimensionEditor(); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Test of label' + ); + }); + + it('should not show static value tab for data layers', async () => { + await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + // Quick functions and Formula tabs should be visible + expect(await testSubjects.exists('lens-dimensionTabs-quickFunctions')).to.eql(true); + expect(await testSubjects.exists('lens-dimensionTabs-formula')).to.eql(true); + // Static value tab should not be visible + expect(await testSubjects.exists('lens-dimensionTabs-static_value')).to.eql(false); + + await PageObjects.lens.closeDimensionEditor(); + }); + + it('should be able to add very long labels and still be able to remove a dimension', async () => { + await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + const longLabel = + 'Veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryvery long label wrapping multiple lines'; + await PageObjects.lens.editDimensionLabel(longLabel); + await PageObjects.lens.waitForVisualization('xyVisChart'); + await PageObjects.lens.closeDimensionEditor(); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + longLabel + ); + expect(await PageObjects.lens.canRemoveDimension('lnsXY_yDimensionPanel')).to.equal(true); + await PageObjects.lens.removeDimension('lnsXY_yDimensionPanel'); + await testSubjects.missingOrFail('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + }); + + it('should allow creation of a multi-axis chart and switching multiple times', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await elasticChart.setNewChartUiDebugFlag(true); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('bar'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.dest', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'unique_count', + field: 'bytes', + keepOpen: true, + }); + + await PageObjects.lens.changeAxisSide('right'); + let data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.axes?.y.length).to.eql(2); + expect(data?.axes?.y.some(({ position }) => position === 'right')).to.eql(true); + + await PageObjects.lens.changeAxisSide('left'); + data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.axes?.y.length).to.eql(1); + expect(data?.axes?.y.some(({ position }) => position === 'right')).to.eql(false); + + await PageObjects.lens.changeAxisSide('right'); + await PageObjects.lens.waitForVisualization('xyVisChart'); + + await PageObjects.lens.closeDimensionEditor(); + }); + + it('should show value labels on bar charts when enabled', async () => { + // enable value labels + await PageObjects.lens.openVisualOptions(); + await testSubjects.click('lns_valueLabels_inside'); + + // check for value labels + let data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.bars?.[0].labels).not.to.eql(0); + + // switch to stacked bar chart + await PageObjects.lens.switchToVisualization('bar_stacked'); + + // check for value labels + data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.bars?.[0].labels).not.to.eql(0); + }); + + it('should override axis title', async () => { + const axisTitle = 'overridden axis'; + await PageObjects.lens.toggleToolbarPopover('lnsLeftAxisButton'); + await testSubjects.setValue('lnsyLeftAxisTitle', axisTitle, { + clearWithKeyboard: true, + }); + + let data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.axes?.y?.[1].title).to.eql(axisTitle); + + // hide the gridlines + await testSubjects.click('lnsshowyLeftAxisGridlines'); + + data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data?.axes?.y?.[1].gridlines.length).to.eql(0); + }); + + it('should transition from a multi-layer stacked bar to donut chart using suggestions', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.dest', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.createLayer(); + + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.src', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.save('twolayerchart'); + await testSubjects.click('lnsSuggestion-donut > lnsSuggestion'); + + expect(await PageObjects.lens.getLayerCount()).to.eql(1); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel')).to.eql( + 'Top 5 values of geo.dest' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should transition from line chart to donut chart and to bar chart', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + expect(await PageObjects.lens.hasChartSwitchWarning('donut')).to.eql(true); + await PageObjects.lens.switchToVisualization('donut'); + + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel')).to.eql( + 'Top 3 values of ip' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel')).to.eql( + 'Average of bytes' + ); + + expect(await PageObjects.lens.hasChartSwitchWarning('bar')).to.eql(false); + await PageObjects.lens.switchToVisualization('bar'); + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_xDimensionPanel')).to.eql( + 'Top 3 values of ip' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should transition from bar chart to line chart using layer chart switch', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchLayerSeriesType('line'); + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_xDimensionPanel')).to.eql( + '@timestamp' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_splitDimensionPanel')).to.eql( + 'Top 3 values of ip' + ); + }); + + it('should transition from pie chart to treemap chart', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsPieVis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsPieVis'); + await PageObjects.lens.goToTimeRange(); + expect(await PageObjects.lens.hasChartSwitchWarning('treemap')).to.eql(false); + await PageObjects.lens.switchToVisualization('treemap'); + expect( + await PageObjects.lens.getDimensionTriggersTexts('lnsPie_groupByDimensionPanel') + ).to.eql(['Top 7 values of geo.dest', 'Top 3 values of geo.src']); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should create a pie chart and switch to datatable', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('pie'); + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sliceByDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + disableEmptyRows: true, + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sizeByDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + expect(await PageObjects.lens.hasChartSwitchWarning('lnsDatatable')).to.eql(false); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + + expect(await PageObjects.lens.getDatatableHeaderText()).to.eql('@timestamp per 3 hours'); + expect(await PageObjects.lens.getDatatableCellText(0, 0)).to.eql('2015-09-20 00:00'); + expect(await PageObjects.lens.getDatatableHeaderText(1)).to.eql('Average of bytes'); + expect(await PageObjects.lens.getDatatableCellText(0, 1)).to.eql('6,011.351'); + }); + + it('should create a heatmap chart and transition to barchart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('heatmap', 'heat'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsHeatmap_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsHeatmap_yDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.dest', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsHeatmap_cellPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + expect(await PageObjects.lens.hasChartSwitchWarning('bar')).to.eql(false); + await PageObjects.lens.switchToVisualization('bar'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_xDimensionPanel')).to.eql( + '@timestamp' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should create a valid XY chart with references', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'moving_average', + keepOpen: true, + }); + await PageObjects.lens.configureReference({ + operation: 'sum', + field: 'bytes', + }); + await PageObjects.lens.closeDimensionEditor(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'cumulative_sum', + keepOpen: true, + }); + await PageObjects.lens.configureReference({ + field: 'Records', + }); + await PageObjects.lens.closeDimensionEditor(); + + // Two Y axes that are both valid + expect(await find.allByCssSelector('.echLegendItem')).to.have.length(2); + }); + + it('should allow formatting on references', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsDatatable_rows > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + disableEmptyRows: true, + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsDatatable_metrics > lns-empty-dimension', + operation: 'moving_average', + keepOpen: true, + }); + await PageObjects.lens.configureReference({ + operation: 'sum', + field: 'bytes', + }); + await PageObjects.lens.editDimensionFormat('Number'); + await PageObjects.lens.closeDimensionEditor(); + + await PageObjects.lens.waitForVisualization(); + + const values = await Promise.all( + range(0, 6).map((index) => PageObjects.lens.getDatatableCellText(index, 1)) + ); + expect(values).to.eql([ + '-', + '222,420.00', + '702,050.00', + '1,879,613.33', + '3,482,256.25', + '4,359,953.00', + ]); + }); + + /** + * The edge cases are: + * + * 1. Showing errors when creating a partial configuration + * 2. Being able to drag in a new field while in partial config + * 3. Being able to switch charts while in partial config + */ + it('should handle edge cases in reference-based operations', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'cumulative_sum', + }); + expect(await PageObjects.lens.getWorkspaceErrorCount()).to.eql(1); + + await PageObjects.lens.removeDimension('lnsXY_xDimensionPanel'); + expect(await PageObjects.lens.getWorkspaceErrorCount()).to.eql(2); + + await PageObjects.lens.dragFieldToDimensionTrigger( + '@timestamp', + 'lnsXY_xDimensionPanel > lns-empty-dimension' + ); + expect(await PageObjects.lens.getWorkspaceErrorCount()).to.eql(1); + + expect(await PageObjects.lens.hasChartSwitchWarning('lnsDatatable')).to.eql(false); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsDatatable_metrics')).to.eql( + 'Cumulative sum of (incomplete)' + ); + }); + + it('should keep the field selection while transitioning to every reference-based operation', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'counter_rate', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'cumulative_sum', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'differences', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'moving_average', + }); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Moving average of Sum of bytes' + ); + }); + + it('should not leave an incomplete column in the visualization config with field-based operation', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + }); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + undefined + ); + }); + + it('should revert to previous configuration and not leave an incomplete column in the visualization config with reference-based operations', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'moving_average', + field: 'Records', + }); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Moving average of Count of records' + ); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'median', + isPreviousIncompatible: true, + keepOpen: true, + }); + + expect(await PageObjects.lens.isDimensionEditorOpen()).to.eql(true); + + await PageObjects.lens.closeDimensionEditor(); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Moving average of Count of records' + ); + }); + + it('should transition from unique count to last value', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'unique_count', + field: 'ip', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'last_value', + field: 'bytes', + isPreviousIncompatible: true, + }); + + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Last value of bytes' + ); + }); + + it('should allow to change index pattern', async () => { + let indexPatternString; + if (config.get('esTestCluster.ccs')) { + indexPatternString = 'ftr-remote:log*'; + } else { + indexPatternString = 'log*'; + } + await PageObjects.lens.switchFirstLayerIndexPattern(indexPatternString); + expect(await PageObjects.lens.getFirstLayerIndexPattern()).to.equal(indexPatternString); + }); + + it('should allow filtering by legend on an xy chart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'extension.raw', + }); + + await PageObjects.lens.filterLegend('jpg'); + const hasExtensionFilter = await filterBar.hasFilter('extension.raw', 'jpg'); + expect(hasExtensionFilter).to.be(true); + + await filterBar.removeFilter('extension.raw'); + }); + + it('should allow filtering by legend on a pie chart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('pie'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sliceByDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'extension.raw', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sliceByDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'agent.raw', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sizeByDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); + + await PageObjects.lens.filterLegend('jpg'); + const hasExtensionFilter = await filterBar.hasFilter('extension.raw', 'jpg'); + expect(hasExtensionFilter).to.be(true); + + await filterBar.removeFilter('extension.raw'); + }); + + it('should show visual options button group for a donut chart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.switchToVisualization('donut'); + + const hasVisualOptionsButton = await PageObjects.lens.hasVisualOptionsButton(); + expect(hasVisualOptionsButton).to.be(true); + + await PageObjects.lens.openVisualOptions(); + await retry.try(async () => { + expect(await PageObjects.lens.hasEmptySizeRatioButtonGroup()).to.be(true); + }); + }); + + it('should not show visual options button group for a pie chart', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.switchToVisualization('pie'); + + const hasVisualOptionsButton = await PageObjects.lens.hasVisualOptionsButton(); + expect(hasVisualOptionsButton).to.be(false); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/tsdb.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/tsdb.ts new file mode 100644 index 0000000000000..96b1d0125c955 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/tsdb.ts @@ -0,0 +1,980 @@ +/* + * 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 { partition } from 'lodash'; +import moment from 'moment'; +import { MappingProperty } from '@elastic/elasticsearch/lib/api/types'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +const TEST_DOC_COUNT = 100; +const TIME_PICKER_FORMAT = 'MMM D, YYYY [@] HH:mm:ss.SSS'; +const timeSeriesMetrics: Record = { + bytes_gauge: 'gauge', + bytes_counter: 'counter', +}; +const timeSeriesDimensions = ['request', 'url']; + +type TestDoc = Record>; + +const testDocTemplate: TestDoc = { + agent: 'Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1', + bytes: 6219, + clientip: '223.87.60.27', + extension: 'deb', + geo: { + srcdest: 'US:US', + src: 'US', + dest: 'US', + coordinates: { lat: 39.41042861, lon: -88.8454325 }, + }, + host: 'artifacts.elastic.co', + index: 'kibana_sample_data_logs', + ip: '223.87.60.27', + machine: { ram: 8589934592, os: 'win 8' }, + memory: null, + message: + '223.87.60.27 - - [2018-07-22T00:39:02.912Z] "GET /elasticsearch/elasticsearch-6.3.2.deb_1 HTTP/1.1" 200 6219 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:6.0a1) Gecko/20110421 Firefox/6.0a1"', + phpmemory: null, + referer: 'http://twitter.com/success/wendy-lawrence', + request: '/elasticsearch/elasticsearch-6.3.2.deb', + response: 200, + tags: ['success', 'info'], + '@timestamp': '2018-07-22T00:39:02.912Z', + url: 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.deb_1', + utc_time: '2018-07-22T00:39:02.912Z', + event: { dataset: 'sample_web_logs' }, + bytes_gauge: 0, + bytes_counter: 0, +}; + +function getDataMapping( + { tsdb, removeTSDBFields }: { tsdb: boolean; removeTSDBFields?: boolean } = { + tsdb: false, + } +): Record { + const dataStreamMapping: Record = { + '@timestamp': { + type: 'date', + }, + agent: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + bytes: { + type: 'long', + }, + bytes_counter: { + type: 'long', + }, + bytes_gauge: { + type: 'long', + }, + clientip: { + type: 'ip', + }, + event: { + properties: { + dataset: { + type: 'keyword', + }, + }, + }, + extension: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + geo: { + properties: { + coordinates: { + type: 'geo_point', + }, + dest: { + type: 'keyword', + }, + src: { + type: 'keyword', + }, + srcdest: { + type: 'keyword', + }, + }, + }, + host: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + index: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + ip: { + type: 'ip', + }, + machine: { + properties: { + os: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + ram: { + type: 'long', + }, + }, + }, + memory: { + type: 'double', + }, + message: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + phpmemory: { + type: 'long', + }, + referer: { + type: 'keyword', + }, + request: { + type: 'keyword', + }, + response: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + tags: { + fields: { + keyword: { + ignore_above: 256, + type: 'keyword', + }, + }, + type: 'text', + }, + timestamp: { + path: '@timestamp', + type: 'alias', + }, + url: { + type: 'keyword', + }, + utc_time: { + type: 'date', + }, + }; + + if (tsdb) { + // augment the current mapping + for (const [fieldName, fieldMapping] of Object.entries(dataStreamMapping || {})) { + if ( + timeSeriesMetrics[fieldName] && + (fieldMapping.type === 'double' || fieldMapping.type === 'long') + ) { + fieldMapping.time_series_metric = timeSeriesMetrics[fieldName]; + } + + if (timeSeriesDimensions.includes(fieldName) && fieldMapping.type === 'keyword') { + fieldMapping.time_series_dimension = true; + } + } + } else if (removeTSDBFields) { + for (const fieldName of Object.keys(timeSeriesMetrics)) { + delete dataStreamMapping[fieldName]; + } + } + return dataStreamMapping; +} + +function sumFirstNValues(n: number, bars: Array<{ y: number }>): number { + const indexes = Array(n) + .fill(1) + .map((_, i) => i); + let countSum = 0; + for (const index of indexes) { + if (bars[index]) { + countSum += bars[index].y; + } + } + return countSum; +} + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['common', 'timePicker', 'lens', 'dashboard']); + const testSubjects = getService('testSubjects'); + const find = getService('find'); + const kibanaServer = getService('kibanaServer'); + const es = getService('es'); + const log = getService('log'); + const dataStreams = getService('dataStreams'); + const elasticChart = getService('elasticChart'); + const indexPatterns = getService('indexPatterns'); + const esArchiver = getService('esArchiver'); + const comboBox = getService('comboBox'); + + const createDocs = async ( + esIndex: string, + { isStream, removeTSDBFields }: { isStream: boolean; removeTSDBFields?: boolean }, + startTime: string + ) => { + log.info( + `Adding ${TEST_DOC_COUNT} to ${esIndex} with starting time from ${moment + .utc(startTime, TIME_PICKER_FORMAT) + .format(TIME_PICKER_FORMAT)} to ${moment + .utc(startTime, TIME_PICKER_FORMAT) + .add(2 * TEST_DOC_COUNT, 'seconds') + .format(TIME_PICKER_FORMAT)}` + ); + const docs = Array(TEST_DOC_COUNT) + .fill(testDocTemplate) + .map((templateDoc, i) => { + const timestamp = moment + .utc(startTime, TIME_PICKER_FORMAT) + .add(TEST_DOC_COUNT + i, 'seconds') + .format(); + const doc: TestDoc = { + ...templateDoc, + '@timestamp': timestamp, + utc_time: timestamp, + bytes_gauge: Math.floor(Math.random() * 10000 * i), + bytes_counter: 5000, + }; + if (removeTSDBFields) { + for (const field of Object.keys(timeSeriesMetrics)) { + delete doc[field]; + } + } + return doc; + }); + + const result = await es.bulk( + { + index: esIndex, + body: docs.map((d) => `{"${isStream ? 'create' : 'index'}": {}}\n${JSON.stringify(d)}\n`), + }, + { meta: true } + ); + + const res = result.body; + + if (res.errors) { + const resultsWithErrors = res.items + .filter(({ index }) => index?.error) + .map(({ index }) => index?.error); + for (const error of resultsWithErrors) { + log.error(`Error: ${JSON.stringify(error)}`); + } + const [indexExists, dataStreamExists] = await Promise.all([ + es.indices.exists({ index: esIndex }), + es.indices.getDataStream({ name: esIndex }), + ]); + log.debug(`Index exists: ${indexExists} - Data stream exists: ${dataStreamExists}`); + } + log.info(`Indexed ${res.items.length} test data docs.`); + }; + + describe('lens tsdb', function () { + const tsdbIndex = 'kibana_sample_data_logstsdb'; + const tsdbDataView = tsdbIndex; + const tsdbEsArchive = 'test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb'; + const fromTime = 'Apr 16, 2023 @ 00:00:00.000'; + const toTime = 'Jun 16, 2023 @ 00:00:00.000'; + + before(async () => { + log.info(`loading ${tsdbIndex} index...`); + await esArchiver.loadIfNeeded(tsdbEsArchive); + log.info(`creating a data view for "${tsdbDataView}"...`); + await indexPatterns.create( + { + title: tsdbDataView, + timeFieldName: '@timestamp', + }, + { override: true } + ); + log.info(`updating settings to use the "${tsdbDataView}" dataView...`); + await kibanaServer.uiSettings.update({ + 'dateFormat:tz': 'UTC', + defaultIndex: '0ae0bc7a-e4ca-405c-ab67-f2b5913f2a51', + 'timepicker:timeDefaults': `{ "from": "${fromTime}", "to": "${toTime}" }`, + }); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.uiSettings.replace({}); + await es.indices.delete({ index: [tsdbIndex] }); + }); + + describe('downsampling', () => { + const downsampleDataView: { index: string; dataView: string } = { index: '', dataView: '' }; + before(async () => { + const downsampledTargetIndex = await dataStreams.downsampleTSDBIndex(tsdbIndex, { + isStream: false, + }); + downsampleDataView.index = downsampledTargetIndex; + downsampleDataView.dataView = `${tsdbIndex},${downsampledTargetIndex}`; + + log.info(`creating a data view for "${downsampleDataView.dataView}"...`); + await indexPatterns.create( + { + title: downsampleDataView.dataView, + timeFieldName: '@timestamp', + }, + { override: true } + ); + }); + + after(async () => { + await es.indices.delete({ index: [downsampleDataView.index] }); + }); + + describe('for regular metric', () => { + it('defaults to median for non-rolled up metric', async () => { + await PageObjects.common.navigateToApp('lens'); + await PageObjects.lens.switchDataPanelIndexPattern(tsdbDataView); + await PageObjects.lens.waitForField('bytes_gauge'); + await PageObjects.lens.dragFieldToWorkspace('bytes_gauge', 'xyVisChart'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Median of bytes_gauge' + ); + }); + + it('does not show a warning', async () => { + await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel'); + await testSubjects.missingOrFail('median-partial-warning'); + await PageObjects.lens.assertNoEditorWarning(); + await PageObjects.lens.closeDimensionEditor(); + }); + }); + + describe('for rolled up metric (downsampled)', () => { + it('defaults to average for rolled up metric', async () => { + await PageObjects.lens.switchDataPanelIndexPattern(downsampleDataView.dataView); + await PageObjects.lens.removeLayer(); + await PageObjects.lens.waitForField('bytes_gauge'); + await PageObjects.lens.dragFieldToWorkspace('bytes_gauge', 'xyVisChart'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes_gauge' + ); + }); + it('shows warnings in editor when using median', async () => { + await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel'); + await testSubjects.existOrFail('median-partial-warning'); + await testSubjects.click('lns-indexPatternDimension-median'); + await PageObjects.lens.waitForVisualization('xyVisChart'); + await PageObjects.lens.assertMessageListContains( + 'Median of bytes_gauge uses a function that is unsupported by rolled up data. Select a different function or change the time range.', + 'warning' + ); + }); + it('shows warnings in dashboards as well', async () => { + await PageObjects.lens.save('New', false, false, false, 'new'); + + await PageObjects.dashboard.waitForRenderComplete(); + await PageObjects.lens.assertMessageListContains( + 'Median of bytes_gauge uses a function that is unsupported by rolled up data. Select a different function or change the time range.', + 'warning' + ); + }); + }); + }); + + describe('time series special field types support', () => { + before(async () => { + await PageObjects.common.navigateToApp('lens'); + await PageObjects.lens.switchDataPanelIndexPattern(tsdbDataView); + await PageObjects.lens.goToTimeRange(); + }); + + afterEach(async () => { + await PageObjects.lens.removeLayer(); + }); + + // skip count for now as it's a special function and will + // change automatically the unsupported field to Records when detected + const allOperations = [ + 'average', + 'max', + 'last_value', + 'median', + 'percentile', + 'percentile_rank', + 'standard_deviation', + 'sum', + 'unique_count', + ]; + const counterFieldsSupportedOps = ['min', 'max', 'counter_rate', 'last_value']; + const gaugeFieldsSupportedOps = allOperations; + + const operationsByFieldSupport = allOperations.map((name) => ({ + name, + // Quick way to make it match the UI name + label: `${name[0].toUpperCase()}${name.slice(1).replace('_', ' ')}`, + counter: counterFieldsSupportedOps.includes(name), + gauge: gaugeFieldsSupportedOps.includes(name), + })); + + for (const fieldType of ['counter', 'gauge'] as const) { + const [supportedOperations, unsupportedOperatons] = partition( + operationsByFieldSupport, + (op) => op[fieldType] + ); + if (supportedOperations.length) { + it(`should allow operations when supported by ${fieldType} field type`, async () => { + // Counter rate requires a date histogram dimension configured to work + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + // minimum supports all tsdb field types + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: `bytes_${fieldType}`, + keepOpen: true, + }); + + // now check if the provided function has no incompatibility tooltip + for (const supportedOp of supportedOperations) { + expect( + testSubjects.exists(`lns-indexPatternDimension-${supportedOp.name} incompatible`, { + timeout: 500, + }) + ).to.eql(supportedOp[fieldType]); + } + + for (const supportedOp of supportedOperations) { + // try to change to the provided function and check all is ok + await PageObjects.lens.selectOperation(supportedOp.name); + + expect( + await find.existsByCssSelector( + '[data-test-subj="indexPattern-field-selection-row"] .euiFormErrorText' + ) + ).to.be(false); + + // return in a clean state before checking the next operation + await PageObjects.lens.selectOperation('min'); + } + await PageObjects.lens.closeDimensionEditor(); + }); + } + if (unsupportedOperatons.length) { + it(`should notify the incompatibility of unsupported operations for the ${fieldType} field type`, async () => { + // Counter rate requires a date histogram dimension configured to work + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + // minimum supports all tsdb field types + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: `bytes_${fieldType}`, + keepOpen: true, + }); + + // now check if the provided function has the incompatibility tooltip + for (const unsupportedOp of unsupportedOperatons) { + expect( + testSubjects.exists( + `lns-indexPatternDimension-${unsupportedOp.name} incompatible`, + { + timeout: 500, + } + ) + ).to.eql(!unsupportedOp[fieldType]); + } + + for (const unsupportedOp of unsupportedOperatons) { + // try to change to the provided function and check if it's in an incompatibility state + await PageObjects.lens.selectOperation(unsupportedOp.name, true); + + const fieldSelectErrorEl = await find.byCssSelector( + '[data-test-subj="indexPattern-field-selection-row"] .euiFormErrorText' + ); + + expect(await fieldSelectErrorEl.getVisibleText()).to.be( + 'This field does not work with the selected function.' + ); + + // return in a clean state before checking the next operation + await PageObjects.lens.selectOperation('min'); + } + await PageObjects.lens.closeDimensionEditor(); + }); + } + } + + describe('show time series dimension groups within breakdown', () => { + it('should show the time series dimension group on field picker when configuring a breakdown', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: 'bytes_counter', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + keepOpen: true, + }); + + const list = await comboBox.getOptionsList('indexPattern-dimension-field'); + expect(list).to.contain('Time series dimensions'); + await PageObjects.lens.closeDimensionEditor(); + }); + + it("should not show the time series dimension group on field picker if it's not a breakdown", async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: 'bytes_counter', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + keepOpen: true, + }); + const list = await comboBox.getOptionsList('indexPattern-dimension-field'); + expect(list).to.not.contain('Time series dimensions'); + await PageObjects.lens.closeDimensionEditor(); + }); + }); + }); + + describe('Scenarios with changing stream type', () => { + const now = moment().utc(); + const fromMoment = now.clone().subtract(1, 'hour'); + const toMoment = now.clone(); + const fromTimeForScenarios = fromMoment.format(TIME_PICKER_FORMAT); + const toTimeForScenarios = toMoment.format(TIME_PICKER_FORMAT); + + const getScenarios = ( + initialIndex: string + ): Array<{ + name: string; + indexes: Array<{ + index: string; + create?: boolean; + downsample?: boolean; + tsdb?: boolean; + removeTSDBFields?: boolean; + }>; + }> => [ + { + name: 'Dataview with no additional stream/index', + indexes: [{ index: initialIndex }], + }, + { + name: 'Dataview with an additional regular index', + indexes: [ + { index: initialIndex }, + { index: 'regular_index', create: true, removeTSDBFields: true }, + ], + }, + { + name: 'Dataview with an additional downsampled TSDB stream', + indexes: [ + { index: initialIndex }, + { index: 'tsdb_index_2', create: true, tsdb: true, downsample: true }, + ], + }, + { + name: 'Dataview with additional regular index and a downsampled TSDB stream', + indexes: [ + { index: initialIndex }, + { index: 'regular_index', create: true, removeTSDBFields: true }, + { index: 'tsdb_index_2', create: true, tsdb: true, downsample: true }, + ], + }, + { + name: 'Dataview with an additional TSDB stream', + indexes: [{ index: initialIndex }, { index: 'tsdb_index_2', create: true, tsdb: true }], + }, + ]; + + function runTestsForEachScenario( + initialIndex: string, + testingFn: ( + indexes: Array<{ + index: string; + create?: boolean; + downsample?: boolean; + tsdb?: boolean; + removeTSDBFields?: boolean; + }> + ) => void + ): void { + for (const { name, indexes } of getScenarios(initialIndex)) { + describe(name, () => { + let dataViewName: string; + let downsampledTargetIndex: string = ''; + + before(async () => { + for (const { index, create, downsample, tsdb, removeTSDBFields } of indexes) { + if (create) { + if (tsdb) { + await dataStreams.createDataStream( + index, + getDataMapping({ tsdb, removeTSDBFields }), + tsdb + ); + } else { + log.info(`creating a index "${index}" with mapping...`); + await es.indices.create({ + index, + mappings: { + properties: getDataMapping({ tsdb: Boolean(tsdb), removeTSDBFields }), + }, + }); + } + // add data to the newly created index + await createDocs( + index, + { isStream: Boolean(tsdb), removeTSDBFields }, + fromTimeForScenarios + ); + } + if (downsample) { + downsampledTargetIndex = await dataStreams.downsampleTSDBIndex(index, { + isStream: Boolean(tsdb), + }); + } + } + dataViewName = `${indexes.map(({ index }) => index).join(',')}${ + downsampledTargetIndex ? `,${downsampledTargetIndex}` : '' + }`; + log.info(`creating a data view for "${dataViewName}"...`); + await indexPatterns.create( + { + title: dataViewName, + timeFieldName: '@timestamp', + }, + { override: true } + ); + await PageObjects.common.navigateToApp('lens'); + await elasticChart.setNewChartUiDebugFlag(true); + // go to the + await PageObjects.lens.goToTimeRange( + fromTimeForScenarios, + moment + .utc(toTimeForScenarios, TIME_PICKER_FORMAT) + .add(2, 'hour') + .format(TIME_PICKER_FORMAT) // consider also new documents + ); + }); + + after(async () => { + for (const { index, create, tsdb } of indexes) { + if (create) { + if (tsdb) { + await dataStreams.deleteDataStream(index); + } else { + log.info(`deleting the index "${index}"...`); + await es.indices.delete({ + index, + }); + } + } + // no need to cleant he specific downsample index as everything linked to the stream + // is cleaned up automatically + } + }); + + beforeEach(async () => { + await PageObjects.lens.switchDataPanelIndexPattern(dataViewName); + await PageObjects.lens.removeLayer(); + }); + + testingFn(indexes); + }); + } + } + + describe('Data-stream upgraded to TSDB scenarios', () => { + const streamIndex = 'data_stream'; + // rollover does not allow to change name, it will just change backing index underneath + const streamConvertedToTsdbIndex = streamIndex; + + before(async () => { + log.info(`Creating "${streamIndex}" data stream...`); + await dataStreams.createDataStream(streamIndex, getDataMapping(), false); + + // add some data to the stream + await createDocs(streamIndex, { isStream: true }, fromTimeForScenarios); + + log.info(`Update settings for "${streamIndex}" dataView...`); + await kibanaServer.uiSettings.update({ + 'dateFormat:tz': 'UTC', + 'timepicker:timeDefaults': '{ "from": "now-1y", "to": "now" }', + }); + log.info(`Upgrade "${streamIndex}" stream to TSDB...`); + + const tsdbMapping = getDataMapping({ tsdb: true }); + await dataStreams.upgradeStreamToTSDB(streamIndex, tsdbMapping); + log.info( + `Add more data to new "${streamConvertedToTsdbIndex}" dataView (now with TSDB backing index)...` + ); + // add some more data when upgraded + await createDocs(streamConvertedToTsdbIndex, { isStream: true }, toTimeForScenarios); + }); + + after(async () => { + await dataStreams.deleteDataStream(streamIndex); + }); + + runTestsForEachScenario(streamConvertedToTsdbIndex, (indexes) => { + it('should detect the data stream has now been upgraded to TSDB', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: `bytes_counter`, + keepOpen: true, + }); + + expect( + testSubjects.exists(`lns-indexPatternDimension-average incompatible`, { + timeout: 500, + }) + ).to.eql(false); + await PageObjects.lens.closeDimensionEditor(); + }); + + it(`should visualize a date histogram chart for counter field`, async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + // check the counter field works + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: `bytes_counter`, + }); + // and also that the count of documents should be "indexes.length" times overall + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'count', + }); + + await PageObjects.lens.waitForVisualization('xyVisChart'); + const data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + const counterBars = data.bars![0].bars; + const countBars = data.bars![1].bars; + + log.info('Check counter data before the upgrade'); + // check there's some data before the upgrade + expect(counterBars[0].y).to.eql(5000); + log.info('Check counter data after the upgrade'); + // check there's some data after the upgrade + expect(counterBars[counterBars.length - 1].y).to.eql(5000); + + // due to the flaky nature of exact check here, we're going to relax it + // as long as there's data before and after it is ok + log.info('Check count before the upgrade'); + const columnsToCheck = countBars.length / 2; + // Before the upgrade the count is N times the indexes + expect(sumFirstNValues(columnsToCheck, countBars)).to.be.greaterThan( + indexes.length * TEST_DOC_COUNT - 1 + ); + log.info('Check count after the upgrade'); + // later there are only documents for the upgraded stream + expect(sumFirstNValues(columnsToCheck, [...countBars].reverse())).to.be.greaterThan( + TEST_DOC_COUNT - 1 + ); + }); + }); + }); + + describe('TSDB downgraded to regular data stream scenarios', () => { + const tsdbStream = 'tsdb_stream_dowgradable'; + // rollover does not allow to change name, it will just change backing index underneath + const tsdbConvertedToStream = tsdbStream; + + before(async () => { + log.info(`Creating "${tsdbStream}" data stream...`); + await dataStreams.createDataStream(tsdbStream, getDataMapping({ tsdb: true }), true); + + // add some data to the stream + await createDocs(tsdbStream, { isStream: true }, fromTimeForScenarios); + + log.info(`Update settings for "${tsdbStream}" dataView...`); + await kibanaServer.uiSettings.update({ + 'dateFormat:tz': 'UTC', + 'timepicker:timeDefaults': '{ "from": "now-1y", "to": "now" }', + }); + log.info( + `Dowgrade "${tsdbStream}" stream into regular stream "${tsdbConvertedToStream}"...` + ); + + await dataStreams.downgradeTSDBtoStream(tsdbStream, getDataMapping({ tsdb: true })); + log.info(`Add more data to new "${tsdbConvertedToStream}" dataView (no longer TSDB)...`); + // add some more data when upgraded + await createDocs(tsdbConvertedToStream, { isStream: true }, toTimeForScenarios); + }); + + after(async () => { + await dataStreams.deleteDataStream(tsdbConvertedToStream); + }); + + runTestsForEachScenario(tsdbConvertedToStream, (indexes) => { + it('should keep TSDB restrictions only if a tsdb stream is in the dataView mix', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: `bytes_counter`, + keepOpen: true, + }); + + expect( + testSubjects.exists(`lns-indexPatternDimension-average incompatible`, { + timeout: 500, + }) + ).to.eql(indexes.some(({ tsdb }) => tsdb)); + await PageObjects.lens.closeDimensionEditor(); + }); + + it(`should visualize a date histogram chart for counter field`, async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + // just check the data is shown + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'count', + }); + + // due to the flaky nature of exact check here, we're going to relax it + // as long as there's data before and after it is ok + await PageObjects.lens.waitForVisualization('xyVisChart'); + const data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + const bars = data.bars![0].bars; + const columnsToCheck = bars.length / 2; + log.info('Check count before the downgrade'); + // Before the upgrade the count is N times the indexes + expect(sumFirstNValues(columnsToCheck, bars)).to.be.greaterThan( + indexes.length * TEST_DOC_COUNT - 1 + ); + log.info('Check count after the downgrade'); + // later there are only documents for the upgraded stream + expect(sumFirstNValues(columnsToCheck, [...bars].reverse())).to.be.greaterThan( + TEST_DOC_COUNT - 1 + ); + }); + + it('should visualize data when moving the time window around the downgrade moment', async () => { + // check after the downgrade + await PageObjects.lens.goToTimeRange( + moment + .utc(fromTimeForScenarios, TIME_PICKER_FORMAT) + .subtract(1, 'hour') + .format(TIME_PICKER_FORMAT), + moment + .utc(fromTimeForScenarios, TIME_PICKER_FORMAT) + .add(1, 'hour') + .format(TIME_PICKER_FORMAT) // consider only new documents + ); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'count', + }); + + await PageObjects.lens.waitForVisualization('xyVisChart'); + const dataBefore = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + const barsBefore = dataBefore.bars![0].bars; + expect(barsBefore.some(({ y }) => y)).to.eql(true); + + // check after the downgrade + await PageObjects.lens.goToTimeRange( + moment + .utc(toTimeForScenarios, TIME_PICKER_FORMAT) + .add(1, 'second') + .format(TIME_PICKER_FORMAT), + moment + .utc(toTimeForScenarios, TIME_PICKER_FORMAT) + .add(2, 'hour') + .format(TIME_PICKER_FORMAT) // consider also new documents + ); + + await PageObjects.lens.waitForVisualization('xyVisChart'); + const dataAfter = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + const barsAfter = dataAfter.bars![0].bars; + expect(barsAfter.some(({ y }) => y)).to.eql(true); + }); + }); + }); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/vega_chart.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/vega_chart.ts new file mode 100644 index 0000000000000..e38c188a73096 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/group1/vega_chart.ts @@ -0,0 +1,280 @@ +/* + * 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 { unzip } from 'lodash'; +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +const getTestSpec = (expression: string) => ` +{ +config: { "kibana": {"renderer": "svg"} } +$schema: https://vega.github.io/schema/vega/v5.json +marks: [{ + type: text + encode: { update: { text: { value: "Test" } } } +}] +signals: [ { + on: [{ + events: click + update: ${expression} + }] +}]}`; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const PageObjects = getPageObjects([ + 'timePicker', + 'visualize', + 'visChart', + 'visEditor', + 'vegaChart', + ]); + const filterBar = getService('filterBar'); + const inspector = getService('inspector'); + const vegaDebugInspectorView = getService('vegaDebugInspector'); + const log = getService('log'); + const retry = getService('retry'); + const browser = getService('browser'); + + describe('vega chart in visualize app', () => { + before(async () => { + await PageObjects.visualize.initTests(); + log.debug('navigateToApp visualize'); + await PageObjects.visualize.navigateToNewVisualization(); + log.debug('clickVega'); + await PageObjects.visualize.clickVega(); + await PageObjects.visChart.waitForVisualizationRenderingStabilized(); + }); + + describe('vega chart', () => { + describe('initial render', () => { + it('should have some initial vega spec text', async function () { + const vegaSpec = await PageObjects.vegaChart.getSpec(); + expect(vegaSpec).to.contain('{'); + expect(vegaSpec).to.contain('data'); + expect(vegaSpec.length).to.be.above(500); + }); + + it('should have view and control containers', async function () { + const view = await PageObjects.vegaChart.getViewContainer(); + expect(view).to.be.ok(); + const size = await view.getSize(); + expect(size).to.have.property('width'); + expect(size).to.have.property('height'); + expect(size.width).to.be.above(0); + expect(size.height).to.be.above(0); + + const controls = await PageObjects.vegaChart.getControlContainer(); + expect(controls).to.be.ok(); + }); + }); + + describe('with filters', () => { + before(async () => { + log.debug('setAbsoluteRange'); + await PageObjects.timePicker.setDefaultAbsoluteRange(); + }); + + afterEach(async () => { + await filterBar.removeAllFilters(); + }); + + it('should render different data in response to filter change', async function () { + await PageObjects.vegaChart.typeInSpec('"config": { "kibana": {"renderer": "svg"} },'); + await PageObjects.visEditor.clickGo(); + await PageObjects.visChart.waitForVisualizationRenderingStabilized(); + const fullDataLabels = await PageObjects.vegaChart.getYAxisLabels(); + expect(fullDataLabels[0]).to.eql('0'); + expect(fullDataLabels[fullDataLabels.length - 1]).to.eql('1,600'); + await filterBar.addFilter({ field: '@tags.raw', operation: 'is', value: 'error' }); + await PageObjects.visChart.waitForVisualizationRenderingStabilized(); + const filteredDataLabels = await PageObjects.vegaChart.getYAxisLabels(); + expect(filteredDataLabels[0]).to.eql('0'); + expect(filteredDataLabels[filteredDataLabels.length - 1]).to.eql('90'); + }); + }); + }); + + describe('Inspector Panel', () => { + it('should have inspector enabled', async () => { + await inspector.expectIsEnabled(); + }); + + describe('Request Tab', () => { + beforeEach(async () => { + await inspector.open(); + }); + + afterEach(async () => { + await inspector.close(); + }); + + it('should contain "Statistics", "Request", "Response" tabs', async () => { + await inspector.openInspectorRequestsView(); + + for (const getFn of [ + 'getOpenRequestDetailRequestButton', + 'getOpenRequestDetailResponseButton', + 'getOpenRequestStatisticButton', + ] as const) { + await retry.try(async () => { + const requestStatisticTab = await inspector[getFn](); + + expect(await requestStatisticTab.isEnabled()).to.be(true); + }); + } + }); + + it('should set the default query name if not given in the schema', async () => { + const singleExampleRequest = await inspector.hasSingleRequest(); + const selectedExampleRequest = await inspector.getSelectedOption(); + + expect(singleExampleRequest).to.be(true); + expect(selectedExampleRequest).to.equal('Unnamed request #0'); + }); + + it('should log the request statistic', async () => { + await inspector.openInspectorRequestsView(); + const rawTableData = await inspector.getTableData(); + + expect(unzip(rawTableData)[0].join(', ')).to.be( + 'Hits, Hits (total), Query time, Request timestamp' + ); + }); + }); + + describe('Debug Tab', () => { + beforeEach(async () => { + await inspector.open(); + }); + + afterEach(async () => { + await inspector.close(); + }); + + it('should contain "Data Sets", "Signal Values", "Spec" tabs', async () => { + await vegaDebugInspectorView.openVegaDebugInspectorView(); + + for (const getFn of [ + 'getOpenDataViewerButton', + 'getOpenSignalViewerButton', + 'getOpenSpecViewerButton', + ] as const) { + await retry.try(async () => { + const requestStatisticTab = await vegaDebugInspectorView[getFn](); + + expect(await requestStatisticTab.isEnabled()).to.be(true); + }); + } + }); + + it('should contain data on "Signal Values" tab', async () => { + await vegaDebugInspectorView.openVegaDebugInspectorView(); + await vegaDebugInspectorView.navigateToSignalViewerTab(); + + const { rows, columns } = await vegaDebugInspectorView.getGridTableData(); + + expect(columns.join(', ')).to.be('Signal, Value'); + expect(rows.length).to.be.greaterThan(0); + expect(rows[0].length).to.be(2); + }); + + it('should contain data on "Signal Values" tab', async () => { + await vegaDebugInspectorView.openVegaDebugInspectorView(); + await vegaDebugInspectorView.navigateToDataViewerTab(); + + const { rows, columns } = await vegaDebugInspectorView.getGridTableData(); + + expect(columns.length).to.be.greaterThan(0); + expect(rows.length).to.be.greaterThan(0); + }); + + it('should be able to copy vega spec to clipboard', async () => { + await vegaDebugInspectorView.openVegaDebugInspectorView(); + await vegaDebugInspectorView.navigateToSpecViewerTab(); + + const copyCopyToClipboardButton = await vegaDebugInspectorView.getCopyClipboardButton(); + + expect(await copyCopyToClipboardButton.isEnabled()).to.be(true); + + // The "clipboard-read" permission of the Permissions API must be granted + if (!(await browser.checkBrowserPermission('clipboard-read'))) { + return; + } + + await copyCopyToClipboardButton.click(); + + expect( + (await browser.getClipboardValue()).includes( + '"$schema": "https://vega.github.io/schema/vega-lite/' + ) + ).to.be(true); + }); + }); + }); + + describe('Vega extension functions', () => { + beforeEach(async () => { + const filtersCount = await filterBar.getFilterCount(); + if (filtersCount > 0) { + await filterBar.removeAllFilters(); + } + await PageObjects.visChart.waitForVisualizationRenderingStabilized(); + }); + + const fillSpecAndGo = async (newSpec: string) => { + await PageObjects.vegaChart.fillSpec(newSpec); + await PageObjects.visEditor.clickGo(); + + const viewContainer = await PageObjects.vegaChart.getViewContainer(); + const textElement = await viewContainer.findByTagName('text'); + + await textElement.click(); + }; + + it('should update global time range by calling "kibanaSetTimeFilter" expression', async () => { + await fillSpecAndGo(getTestSpec('kibanaSetTimeFilter("2019", "2020")')); + + const currentTimeRange = await PageObjects.timePicker.getTimeConfig(); + + expect(currentTimeRange.start).to.be('Jan 1, 2019 @ 00:00:00.000'); + expect(currentTimeRange.end).to.be('Jan 1, 2020 @ 00:00:00.000'); + }); + + it('should set filter by calling "kibanaAddFilter" expression', async () => { + await fillSpecAndGo( + getTestSpec('kibanaAddFilter({ query_string: { query: "response:200" }})') + ); + + expect(await filterBar.getFilterCount()).to.be(1); + }); + + it('should remove filter by calling "kibanaRemoveFilter" expression', async () => { + await filterBar.addFilter({ field: 'response', operation: 'is', value: '200' }); + + expect(await filterBar.getFilterCount()).to.be(1); + + await fillSpecAndGo( + getTestSpec('kibanaRemoveFilter({ match_phrase: { response: "200" }})') + ); + + expect(await filterBar.getFilterCount()).to.be(0); + }); + + it('should remove all filters by calling "kibanaRemoveAllFilters" expression', async () => { + await filterBar.addFilter({ field: 'response', operation: 'is', value: '200' }); + await filterBar.addFilter({ field: 'response', operation: 'is', value: '500' }); + + expect(await filterBar.getFilterCount()).to.be(2); + + await fillSpecAndGo(getTestSpec('kibanaRemoveAllFilters()')); + + expect(await filterBar.getFilterCount()).to.be(0); + }); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/index.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/index.ts new file mode 100644 index 0000000000000..40cbafbf62c30 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/index.ts @@ -0,0 +1,22 @@ +/* + * 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 ({ loadTestFile, getPageObject }: FtrProviderContext) => { + const svlCommonPage = getPageObject('svlCommonPage'); + + describe('Visualizations', function () { + before(async () => { + await svlCommonPage.login(); + }); + + loadTestFile(require.resolve('./group1')); + loadTestFile(require.resolve('./open_in_lens/agg_based')); + loadTestFile(require.resolve('./open_in_lens/tsvb')); + }); +}; diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/gauge.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/gauge.ts new file mode 100644 index 0000000000000..83228021d0bac --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/gauge.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 { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const find = getService('find'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Gauge', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/gauge.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Gauge'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert aggregation with params', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('gaugeChart'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + expect(await dimensions[1].getVisibleText()).to.be('Static value: 0'); + expect(await dimensions[2].getVisibleText()).to.be('Static value: 100'); + + const elementWithInfo = await find.byCssSelector('.echScreenReaderOnly'); + const textContent = await elementWithInfo.getAttribute('textContent'); + expect(textContent).to.contain('Average machine.ram'); + expect(textContent).to.contain('horizontalBullet chart'); + expect(textContent).to.contain('Minimum:0'); + expect(textContent).to.contain('Maximum:100'); + expect(textContent).to.contain('Value:100'); + }); + + it('should not convert aggregation with not supported field type', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Unsupported field type'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('gaugeChart'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + expect(await dimensions[1].getVisibleText()).to.be('Static value: 0'); + expect(await dimensions[2].getVisibleText()).to.be('Static value: 15000000000'); + + const elementWithInfo = await find.byCssSelector('.echScreenReaderOnly'); + const textContent = await elementWithInfo.getAttribute('textContent'); + expect(textContent).to.contain('Average machine.ram'); + expect(textContent).to.contain('horizontalBullet chart'); + expect(textContent).to.contain('Minimum:0'); + expect(textContent).to.contain('Maximum:15000000000'); + expect(textContent).to.contain('Value:13104036080.615'); + + await dimensions[0].click(); + + await lens.openPalettePanel('lnsGauge'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { stop: '0', color: 'rgba(0, 104, 55, 1)' }, + { stop: '10000', color: 'rgba(183, 224, 117, 1)' }, + { stop: '20000', color: 'rgba(253, 191, 111, 1)' }, + { stop: '30000', color: 'rgba(165, 0, 38, 1)' }, + { stop: '15000000000', color: undefined }, + ]); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/goal.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/goal.ts new file mode 100644 index 0000000000000..e42d2c56662e3 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/goal.ts @@ -0,0 +1,201 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Goal', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/goal.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Goal'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Goal - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert to Lens', async () => { + const visPanel = await panelActions.getPanelHeading('Goal - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Count', + subtitle: undefined, + extraText: '', + value: '140.05%', + color: 'rgba(245, 247, 250, 1)', + showingBar: true, + showingTrendline: false, + }, + ]); + }); + + it('should convert aggregation with params', async () => { + const visPanel = await panelActions.getPanelHeading('Goal - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + expect(await dimensions[1].getVisibleText()).to.be('Static value: 1'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Average machine.ram', + subtitle: undefined, + extraText: '', + value: '131,040,360.81%', + color: 'rgba(245, 247, 250, 1)', + showingBar: true, + showingTrendline: false, + }, + ]); + }); + + it('should convert sibling pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Goal - Sibling pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('Overall Max of Count'); + expect(await dimensions[1].getVisibleText()).to.be('Static value: 1'); + expect(await dimensions[2].getVisibleText()).to.be('@timestamp'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Overall Max of Count', + subtitle: undefined, + extraText: '', + value: '14.37%', + color: 'rgba(245, 247, 250, 1)', + showingBar: true, + showingTrendline: false, + }, + ]); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Goal - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + expect(await dimensions[1].getVisibleText()).to.be('Static value: 13300000000'); + expect(await dimensions[2].getVisibleText()).to.be('machine.os.raw: Descending'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(6); + expect(data).to.eql([ + { + title: 'osx', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,228,964,670.613', + color: 'rgba(245, 247, 250, 1)', + showingTrendline: false, + showingBar: true, + }, + { + title: 'win 7', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,186,695,551.251', + color: 'rgba(245, 247, 250, 1)', + showingTrendline: false, + showingBar: true, + }, + { + title: 'win xp', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,073,190,186.423', + color: 'rgba(245, 247, 250, 1)', + showingTrendline: false, + showingBar: true, + }, + { + title: 'win 8', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,031,579,645.108', + color: 'rgba(245, 247, 250, 1)', + showingTrendline: false, + showingBar: true, + }, + { + title: 'ios', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,009,497,206.823', + color: 'rgba(245, 247, 250, 1)', + showingTrendline: false, + showingBar: true, + }, + { + title: undefined, + subtitle: undefined, + extraText: undefined, + value: undefined, + color: 'rgba(0, 0, 0, 0)', + showingTrendline: false, + showingBar: true, + }, + ]); + + await dimensions[0].click(); + + await lens.openPalettePanel('lnsMetric'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { stop: '0', color: 'rgba(0, 104, 55, 1)' }, + { stop: '13000000000', color: 'rgba(183, 224, 117, 1)' }, + { stop: '13100000000', color: 'rgba(253, 191, 111, 1)' }, + { stop: '13200000000', color: 'rgba(165, 0, 38, 1)' }, + { stop: '13300000000', color: undefined }, + ]); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/heatmap.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/heatmap.ts new file mode 100644 index 0000000000000..0e400f11443b2 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/heatmap.ts @@ -0,0 +1,182 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Heatmap', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/heatmap.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Heatmap'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item if no X-axis was specified', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - With Y-Axis only'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - With X-Axis only'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert to Lens', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - With X-Axis only'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('heatmapChart'); + await lens.enableEchDebugState(); + const debugState = await lens.getCurrentChartDebugState('heatmapChart'); + + // Must have Debug state + expect(debugState).to.not.be.eql(null); + + // assert axes + expect(debugState.axes!.x[0].labels).to.eql(['win 8', 'win xp', 'win 7', 'ios', 'osx']); + expect(debugState.axes!.y[0].labels).to.eql(['']); + expect(debugState.heatmap!.cells.length).to.eql(5); + expect(debugState.legend!.items).to.eql([ + { + color: '#006837', + key: '1,322 - 1,717.5', + name: '1,322 - 1,717.5', + }, + { color: '#86CB66', key: '1,717.5 - 2,113', name: '1,717.5 - 2,113' }, + { + color: '#FEFEBD', + key: '2,113 - 2,508.5', + name: '2,113 - 2,508.5', + }, + { + color: '#F88D52', + key: '2,508.5 - 2,904', + name: '2,508.5 - 2,904', + }, + ]); + }); + + it('should convert to Lens if Y-axis is defined, but X-axis is not', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - With Y-Axis only'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('heatmapChart'); + await lens.enableEchDebugState(); + const debugState = await lens.getCurrentChartDebugState('heatmapChart'); + + // Must have Debug state + expect(debugState).to.not.be.eql(null); + + expect(debugState.axes!.x[0].labels).to.eql(['*']); + expect(debugState.axes!.y[0].labels).to.eql(['win 8', 'win xp', 'win 7', 'ios', 'osx']); + expect(debugState.heatmap!.cells.length).to.eql(5); + }); + + it('should respect heatmap colors number', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - Color number'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('heatmapChart'); + await lens.enableEchDebugState(); + const debugState = await lens.getCurrentChartDebugState('heatmapChart'); + + // Must have Debug state + expect(debugState).to.not.be.eql(null); + + expect(debugState.legend!.items).to.eql([ + { + color: '#006837', + key: '1,322 - 1,585.67', + name: '1,322 - 1,585.67', + }, + { + color: '#4CB15D', + key: '1,585.67 - 1,849.33', + name: '1,585.67 - 1,849.33', + }, + { + color: '#B7E075', + key: '1,849.33 - 2,113', + name: '1,849.33 - 2,113', + }, + { + color: '#FEFEBD', + key: '2,113 - 2,376.67', + name: '2,113 - 2,376.67', + }, + { + color: '#FDBF6F', + key: '2,376.67 - 2,640.33', + name: '2,376.67 - 2,640.33', + }, + { + color: '#EA5839', + key: '2,640.33 - 2,904', + name: '2,640.33 - 2,904', + }, + ]); + }); + + it('should show respect heatmap custom color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Heatmap - Custom Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('heatmapChart'); + await lens.enableEchDebugState(); + const debugState = await lens.getCurrentChartDebugState('heatmapChart'); + + // Must have Debug state + expect(debugState).to.not.be.eql(null); + + expect(debugState.legend!.items).to.eql([ + { + color: '#006837', + key: '0 - 100', + name: '0 - 100', + }, + { + color: '#65BC62', + key: '100 - 200', + name: '100 - 200', + }, + { + color: '#D8EF8C', + key: '200 - 300', + name: '200 - 300', + }, + { + color: '#FEDF8B', + key: '300 - 400', + name: '300 - 400', + }, + { + color: '#F36D43', + key: '400 - 500', + name: '400 - 500', + }, + { + color: '#A50026', + key: '500 - 600', + name: '500 - 600', + }, + ]); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/index.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/index.ts new file mode 100644 index 0000000000000..0dcbf2584a21e --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/index.ts @@ -0,0 +1,80 @@ +/* + * 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 { EsArchiver } from '@kbn/es-archiver'; +import { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ loadTestFile, getService, getPageObjects }: FtrProviderContext) { + const browser = getService('browser'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['timePicker']); + const config = getService('config'); + let remoteEsArchiver; + + describe('lens app - Agg based Vis Open in Lens', () => { + const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; + const localIndexPatternString = 'logstash-*'; + const remoteIndexPatternString = 'ftr-remote:logstash-*'; + const localFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/default', + }; + + const remoteFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/default', + }; + let esNode: EsArchiver; + let fixtureDirs: { + lensBasic: string; + lensDefault: string; + }; + let indexPatternString: string; + before(async () => { + log.debug('Starting lens before method'); + await browser.setWindowSize(1280, 1200); + try { + config.get('esTestCluster.ccs'); + remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); + esNode = remoteEsArchiver; + fixtureDirs = remoteFixtures; + indexPatternString = remoteIndexPatternString; + } catch (error) { + esNode = esArchiver; + fixtureDirs = localFixtures; + indexPatternString = localIndexPatternString; + } + + await esNode.load(esArchive); + // changing the timepicker default here saves us from having to set it in Discover (~8s) + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update({ + defaultIndex: indexPatternString, + 'dateFormat:tz': 'UTC', + }); + await kibanaServer.importExport.load(fixtureDirs.lensBasic); + await kibanaServer.importExport.load(fixtureDirs.lensDefault); + }); + + after(async () => { + await esArchiver.unload(esArchive); + await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.importExport.unload(fixtureDirs.lensBasic); + await kibanaServer.importExport.unload(fixtureDirs.lensDefault); + }); + + loadTestFile(require.resolve('./pie')); + loadTestFile(require.resolve('./metric')); + loadTestFile(require.resolve('./xy')); + loadTestFile(require.resolve('./gauge')); + loadTestFile(require.resolve('./goal')); + loadTestFile(require.resolve('./table')); + loadTestFile(require.resolve('./heatmap')); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/metric.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/metric.ts new file mode 100644 index 0000000000000..e78775241faaa --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/metric.ts @@ -0,0 +1,213 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Metric', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/metric.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Metric'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should convert to Lens', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Count', + subtitle: undefined, + extraText: '', + value: '14,005', + color: 'rgba(245, 247, 250, 1)', + showingBar: false, + showingTrendline: false, + }, + ]); + }); + + it('should convert aggregation with params', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Average machine.ram', + subtitle: undefined, + extraText: '', + value: '13,104,036,080.615', + color: 'rgba(245, 247, 250, 1)', + showingBar: false, + showingTrendline: false, + }, + ]); + }); + + it('should convert sibling pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Sibling pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('Overall Max of Count'); + expect(await dimensions[1].getVisibleText()).to.be('@timestamp'); + + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(1); + expect(data).to.eql([ + { + title: 'Overall Max of Count', + subtitle: undefined, + extraText: '', + value: '1,437', + color: 'rgba(245, 247, 250, 1)', + showingBar: false, + showingTrendline: false, + }, + ]); + }); + + it('should not convert aggregation with not supported field type', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Unsupported field type'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + expect(await dimensions[1].getVisibleText()).to.be('machine.os.raw: Descending'); + const data = await lens.getMetricVisualizationData(); + expect(data.length).to.be.equal(6); + expect(data).to.eql([ + { + title: 'osx', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,228,964,670.613', + color: 'rgba(165, 0, 38, 1)', + showingBar: false, + showingTrendline: false, + }, + { + title: 'win 7', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,186,695,551.251', + color: 'rgba(253, 191, 111, 1)', + showingBar: false, + showingTrendline: false, + }, + { + title: 'win xp', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,073,190,186.423', + color: 'rgba(183, 224, 117, 1)', + showingBar: false, + showingTrendline: false, + }, + { + title: 'win 8', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,031,579,645.108', + color: 'rgba(183, 224, 117, 1)', + showingBar: false, + showingTrendline: false, + }, + { + title: 'ios', + subtitle: 'Average machine.ram', + extraText: '', + value: '13,009,497,206.823', + color: 'rgba(183, 224, 117, 1)', + showingBar: false, + showingTrendline: false, + }, + { + title: undefined, + subtitle: undefined, + extraText: undefined, + value: undefined, + color: 'rgba(0, 0, 0, 0)', + showingBar: false, + showingTrendline: false, + }, + ]); + + await dimensions[0].click(); + + await lens.openPalettePanel('lnsMetric'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { + color: 'rgba(0, 104, 55, 1)', + stop: '12000000000', + }, + { + color: 'rgba(183, 224, 117, 1)', + stop: '13000000000', + }, + { + color: 'rgba(253, 191, 111, 1)', + stop: '13100000000', + }, + { + color: 'rgba(165, 0, 38, 1)', + stop: '13200000000', + }, + { + color: undefined, + stop: '13300000000', + }, + ]); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/pie.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/pie.ts new file mode 100644 index 0000000000000..550f2e6286c08 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/pie.ts @@ -0,0 +1,107 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const pieChart = getService('pieChart'); + const testSubjects = getService('testSubjects'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Pie', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/pie.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Pie'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should hide the "Convert to Lens" menu item if no split slices were defined', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - No split slices'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should hide the "Convert to Lens" menu item if more than 3 split slices were defined', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - 4 layers'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - 1 Split slice'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert aggregation with params', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('partitionVisChart'); + + expect(await lens.getLayerCount()).to.be(1); + + const sliceByText = await lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel', 0); + const sizeByText = await lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel', 0); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(sliceByText).to.be('machine.os.raw: Descending'); + expect(sizeByText).to.be('Sum of machine.ram'); + }); + + it('should convert terms to slice by', async () => { + const expectedTableData = ['ios', 'osx', 'win 7', 'win 8', 'win xp']; + + const visPanel = await panelActions.getPanelHeading('Pie - Basic count'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('partitionVisChart'); + await lens.enableEchDebugState(); + + const sliceByText = await lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel', 0); + const sizeByText = await lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel', 0); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(sliceByText).to.be('machine.os.raw: Descending'); + expect(sizeByText).to.be('Count'); + + await pieChart.expectPieChartLabels(expectedTableData); + }); + + it('should convert Donut type correctly', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - Basic count'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('partitionVisChart'); + + const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); + const type = await chartSwitcher.getVisibleText(); + expect(type).to.be('Donut'); + }); + + it('should convert Pie types correctly', async () => { + const visPanel = await panelActions.getPanelHeading('Pie - Non Donut'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('partitionVisChart'); + + const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); + const type = await chartSwitcher.getVisibleText(); + expect(type).to.be('Pie'); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/table.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/table.ts new file mode 100644 index 0000000000000..66c7538670b6e --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/table.ts @@ -0,0 +1,144 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Table', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/table.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - Table'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should not allow converting of unsupported aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Unsupported Agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Agg with params'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert aggregation with params', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + }); + + it('should convert total function to summary row', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Summary row'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); + + await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger'); + const summaryRowFunction = await testSubjects.find('lnsDatatable_summaryrow_function'); + expect(await summaryRowFunction.getVisibleText()).to.be('Sum'); + }); + + it('should convert sibling pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Sibling pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + const splitRowText = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(metricText).to.be('Overall Max of Count'); + expect(splitRowText).to.be('@timestamp'); + }); + + it('should convert parent pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Parent pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + const splitRowText = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(metricText).to.be('Cumulative Sum of Count'); + expect(splitRowText).to.be('@timestamp'); + }); + + it('should convert split rows and split table to split table rows', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Split rows and tables'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + const splitRowText1 = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); + const splitRowText2 = await lens.getDimensionTriggerText('lnsDatatable_rows', 1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(metricText).to.be('Count'); + expect(splitRowText1).to.be('@timestamp'); + expect(splitRowText2).to.be('bytes: Descending'); + }); + + it('should convert percentage column', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Percentage Column'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await lens.getLayerCount()).to.be(1); + + const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + const percentageColumnText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 1); + + await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger', 0, 1); + const format = await testSubjects.find('indexPattern-dimension-format'); + expect(await format.getVisibleText()).to.be('Percent'); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(metricText).to.be('Count'); + expect(percentageColumnText).to.be('Count percentages'); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/xy.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/xy.ts new file mode 100644 index 0000000000000..4833dc3aaba37 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/agg_based/xy.ts @@ -0,0 +1,250 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('XY', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/agg_based/xy.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - XY'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should not allow converting if dot size aggregation is defined', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Dot size metric'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting if split chart is defined', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Split chart'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting if more than one axis left/right/top/bottom are defined', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Multiple Y Axes'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting if several split series are defined', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Multiple Split Series'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting if sibling pipeline agg and split series are defined', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Sibling pipeline agg w/ split'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of unsupported aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Unsupported Agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert in different layers if metrics have different chart types', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Differing Layers'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(2); + const layersSettings = await testSubjects.findAll('lns_layer_settings'); + expect(layersSettings.length).to.be(2); + expect(await layersSettings[0].getVisibleText()).to.be('Area'); + expect(await layersSettings[1].getVisibleText()).to.be('Bar vertical'); + const yDimensionText1 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const yDimensionText2 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 1); + expect(yDimensionText1).to.be('Count'); + expect(yDimensionText2).to.be('Max memory'); + }); + }); + + it('should convert in one layer if metrics have the same chart type', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Similar Layers'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + const layersSettings = await testSubjects.findAll('lns_layer_settings'); + expect(layersSettings.length).to.be(1); + expect(await layersSettings[0].getVisibleText()).to.be('Bar vertical'); + const yDimensionText1 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const yDimensionText2 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 1); + expect(yDimensionText1).to.be('Count'); + expect(yDimensionText2).to.be('Max memory'); + }); + }); + + it('should convert parent pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Parent pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const splitText = await lens.getDimensionTriggerText('lnsXY_splitDimensionPanel', 0); + expect(yDimensionText).to.be('Cumulative Sum of Count'); + expect(splitText).to.be('@timestamp'); + }); + }); + + it('should convert sibling pipeline aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Sibling pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await lens.getLayerCount()).to.be(1); + + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const splitText = await lens.getDimensionTriggerText('lnsXY_splitDimensionPanel', 0); + + expect(yDimensionText).to.be('Overall Max of Count'); + expect(splitText).to.be('@timestamp'); + + await lens.openDimensionEditor('lnsXY_splitDimensionPanel > lns-dimensionTrigger'); + const collapseBy = await testSubjects.find('indexPattern-collapse-by'); + expect(await collapseBy.getAttribute('value')).to.be('max'); + }); + + it('should draw a reference line', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Reference line'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(2); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count'); + const referenceLineDimensionText = await lens.getDimensionTriggerText( + 'lnsXY_yReferenceLineLeftPanel', + 0 + ); + + expect(referenceLineDimensionText).to.be('Static value: 10'); + }); + }); + + it('should convert line stacked to area stacked chart', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Stacked lines'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + const layersSettings = await testSubjects.findAll('lns_layer_settings'); + expect(layersSettings.length).to.be(1); + expect(await layersSettings[0].getVisibleText()).to.be('Area stacked'); + }); + }); + + it('should convert percentage charts', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Percentage chart'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + const layersSettings = await testSubjects.findAll('lns_layer_settings'); + expect(layersSettings.length).to.be(1); + expect(await layersSettings[0].getVisibleText()).to.be('Area percentage'); + }); + }); + + it('should convert horizontal bar', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Horizontal Bar'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + const layersSettings = await testSubjects.findAll('lns_layer_settings'); + expect(layersSettings.length).to.be(1); + expect(await layersSettings[0].getVisibleText()).to.be('Bar horizontal'); + }); + }); + + it('should convert y-axis positions', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Axis positions'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await lens.getLayerCount()).to.be(1); + + const yDimensionText1 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const yDimensionText2 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 1); + expect(yDimensionText1).to.be('Count'); + expect(yDimensionText2).to.be('Max memory'); + + await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + let axisPosition = await lens.getSelectedAxisSide(); + expect(axisPosition).to.be('Left'); + await lens.closeDimensionEditor(); + + await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger', 0, 1); + axisPosition = await lens.getSelectedAxisSide(); + expect(axisPosition).to.be('Right'); + }); + + it('should convert split series', async () => { + const visPanel = await panelActions.getPanelHeading('XY - Split Series'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + const expectedData = ['win 8', 'win xp', 'win 7', 'ios', 'osx']; + await lens.enableEchDebugState(); + const data = await lens.getCurrentChartDebugState('xyVisChart'); + await retry.try(async () => { + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count'); + const splitDimensionText = await lens.getDimensionTriggerText( + 'lnsXY_splitDimensionPanel', + 0 + ); + expect(splitDimensionText).to.be('machine.os.raw: Descending'); + }); + expect(data?.legend?.items.map((item) => item.name)).to.eql(expectedData); + }); + + it('should convert x-axis', async () => { + const visPanel = await panelActions.getPanelHeading('XY - X Axis'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + const expectedData = ['Count']; + await lens.enableEchDebugState(); + const data = await lens.getCurrentChartDebugState('xyVisChart'); + await retry.try(async () => { + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count'); + const xDimensionText = await lens.getDimensionTriggerText('lnsXY_xDimensionPanel', 0); + expect(xDimensionText).to.be('machine.os.raw: Descending'); + }); + expect(data?.legend?.items.map((item) => item.name)).to.eql(expectedData); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/dashboard.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/dashboard.ts new file mode 100644 index 0000000000000..ea05c3453dc7b --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/dashboard.ts @@ -0,0 +1,123 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard, canvas } = getPageObjects([ + 'visualize', + 'lens', + 'timePicker', + 'dashboard', + 'canvas', + ]); + const dashboardCustomizePanel = getService('dashboardCustomizePanel'); + const dashboardBadgeActions = getService('dashboardBadgeActions'); + const dashboardPanelActions = getService('dashboardPanelActions'); + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Dashboard to TSVB to Lens', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/dashboard.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + }); + + it('should convert a by value TSVB viz to a Lens viz', async () => { + await dashboard.gotoDashboardEditMode('Convert to Lens - Dashboard - TSVB - 1'); + await timePicker.setDefaultAbsoluteRange(); + + await dashboard.waitForRenderComplete(); + const originalEmbeddableCount = await canvas.getEmbeddableCount(); + await dashboardPanelActions.customizePanel(); + await dashboardCustomizePanel.enableCustomTimeRange(); + await dashboardCustomizePanel.openDatePickerQuickMenu(); + await dashboardCustomizePanel.clickCommonlyUsedTimeRange('Last_30 days'); + await dashboardCustomizePanel.clickSaveButton(); + await dashboard.waitForRenderComplete(); + await dashboardBadgeActions.expectExistsTimeRangeBadgeAction(); + + const visPanel = await panelActions.getPanelHeading('My TSVB to Lens viz 1'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(await dimensions[1].getVisibleText()).to.be('Count of records'); + }); + + await lens.replaceInDashboard(); + await retry.try(async () => { + const embeddableCount = await canvas.getEmbeddableCount(); + expect(embeddableCount).to.eql(originalEmbeddableCount); + }); + const titles = await dashboard.getPanelTitles(); + expect(titles[0]).to.be('My TSVB to Lens viz 1 (converted)'); + await dashboardBadgeActions.expectExistsTimeRangeBadgeAction(); + await panelActions.removePanel(); + }); + + it('should convert a by reference TSVB viz to a Lens viz', async () => { + await dashboard.gotoDashboardEditMode('Convert to Lens - Dashboard - TSVB - 2'); + // await dashboard.gotoDashboardEditMode('Convert to Lens - Dashboard - Metric'); + await timePicker.setDefaultAbsoluteRange(); + + // save it to library + const originalPanel = await testSubjects.find('embeddablePanelHeading-'); + await panelActions.saveToLibrary('My TSVB to Lens viz 2', originalPanel); + + await dashboard.waitForRenderComplete(); + const originalEmbeddableCount = await canvas.getEmbeddableCount(); + await dashboardPanelActions.customizePanel(); + await dashboardCustomizePanel.enableCustomTimeRange(); + await dashboardCustomizePanel.openDatePickerQuickMenu(); + await dashboardCustomizePanel.clickCommonlyUsedTimeRange('Last_30 days'); + await dashboardCustomizePanel.clickSaveButton(); + await dashboard.waitForRenderComplete(); + await dashboardBadgeActions.expectExistsTimeRangeBadgeAction(); + + const visPanel = await panelActions.getPanelHeading('My TSVB to Lens viz 2'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(await dimensions[1].getVisibleText()).to.be('Count of records'); + }); + + await lens.replaceInDashboard(); + await retry.try(async () => { + const embeddableCount = await canvas.getEmbeddableCount(); + expect(embeddableCount).to.eql(originalEmbeddableCount); + }); + + const panel = await testSubjects.find(`embeddablePanelHeading-MyTSVBtoLensviz2(converted)`); + const descendants = await testSubjects.findAllDescendant( + 'embeddablePanelNotification-ACTION_LIBRARY_NOTIFICATION', + panel + ); + expect(descendants.length).to.equal(0); + const titles = await dashboard.getPanelTitles(); + expect(titles[0]).to.be('My TSVB to Lens viz 2 (converted)'); + await dashboardBadgeActions.expectExistsTimeRangeBadgeAction(); + await panelActions.removePanel(); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/gauge.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/gauge.ts new file mode 100644 index 0000000000000..7839328869123 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/gauge.ts @@ -0,0 +1,122 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const find = getService('find'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Gauge', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/gauge.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - TSVB - Gauge'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert to Lens', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + const metricData = await lens.getMetricVisualizationData(); + expect(metricData[0].title).to.eql('Count of records'); + }); + + it('should convert metric with params', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Value count'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + await retry.try(async () => { + const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); + expect(layers).to.have.length(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('Count of bytes'); + expect(await dimensions[1].getVisibleText()).to.be('overall_max(count(bytes))'); + }); + }); + + it('should not allow converting of unsupported metric', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Unsupported metric'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of invalid panel', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Invalid panel'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + await retry.try(async () => { + const closePalettePanels = await testSubjects.findAll( + 'lns-indexPattern-PalettePanelContainerBack' + ); + if (closePalettePanels.length) { + await lens.closePalettePanel(); + await lens.closeDimensionEditor(); + } + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + + await dimensions[0].click(); + + await lens.openPalettePanel('lnsMetric'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { stop: '', color: 'rgba(104, 188, 0, 1)' }, + { stop: '10', color: 'rgba(84, 179, 153, 1)' }, + { stop: '100', color: 'rgba(84, 160, 0, 1)' }, + { stop: '', color: undefined }, + ]); + }); + }); + + it('should bring the ignore global filters configured at series level over', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Ignore global filters series'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + + it('should bring the ignore global filters configured at panel level over', async () => { + const visPanel = await panelActions.getPanelHeading('Gauge - Ignore global filters panel'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/index.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/index.ts new file mode 100644 index 0000000000000..26a2f8cfe55fe --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/index.ts @@ -0,0 +1,79 @@ +/* + * 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 { EsArchiver } from '@kbn/es-archiver'; +import { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ loadTestFile, getService, getPageObjects }: FtrProviderContext) { + const browser = getService('browser'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['timePicker']); + const config = getService('config'); + let remoteEsArchiver; + + describe('lens app - TSVB Open in Lens', () => { + const esArchive = 'x-pack/test/functional/es_archives/logstash_functional'; + const localIndexPatternString = 'logstash-*'; + const remoteIndexPatternString = 'ftr-remote:logstash-*'; + const localFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/default', + }; + + const remoteFixtures = { + lensBasic: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/lens_basic.json', + lensDefault: 'x-pack/test/functional/fixtures/kbn_archiver/lens/ccs/default', + }; + let esNode: EsArchiver; + let fixtureDirs: { + lensBasic: string; + lensDefault: string; + }; + let indexPatternString: string; + before(async () => { + log.debug('Starting lens before method'); + await browser.setWindowSize(1280, 1200); + try { + config.get('esTestCluster.ccs'); + remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); + esNode = remoteEsArchiver; + fixtureDirs = remoteFixtures; + indexPatternString = remoteIndexPatternString; + } catch (error) { + esNode = esArchiver; + fixtureDirs = localFixtures; + indexPatternString = localIndexPatternString; + } + + await esNode.load(esArchive); + // changing the timepicker default here saves us from having to set it in Discover (~8s) + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update({ + defaultIndex: indexPatternString, + 'dateFormat:tz': 'UTC', + }); + await kibanaServer.importExport.load(fixtureDirs.lensBasic); + await kibanaServer.importExport.load(fixtureDirs.lensDefault); + }); + + after(async () => { + await esArchiver.unload(esArchive); + await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.importExport.unload(fixtureDirs.lensBasic); + await kibanaServer.importExport.unload(fixtureDirs.lensDefault); + }); + + loadTestFile(require.resolve('./metric')); + loadTestFile(require.resolve('./gauge')); + loadTestFile(require.resolve('./timeseries')); + loadTestFile(require.resolve('./dashboard')); + loadTestFile(require.resolve('./top_n')); + loadTestFile(require.resolve('./table')); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/metric.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/metric.ts new file mode 100644 index 0000000000000..cfd8ecb23c238 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/metric.ts @@ -0,0 +1,134 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Metric', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/metric.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - TSVB - Metric'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should convert to Lens', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + const metricData = await lens.getMetricVisualizationData(); + expect(metricData[0].title).to.eql('Count of records'); + }); + + it('should draw static value', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Static value'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + expect(await dimensions[0].getVisibleText()).to.be('10'); + }); + }); + + it('should convert metric agg with params', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + expect(await dimensions[0].getVisibleText()).to.be('Count of bytes'); + }); + }); + + it('should not allow converting of unsupported metric', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Unsupported metric'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of invalid panel', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Invalid panel'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + await retry.try(async () => { + const closePalettePanels = await testSubjects.findAll( + 'lns-indexPattern-PalettePanelContainerBack' + ); + if (closePalettePanels.length) { + await lens.closePalettePanel(); + await lens.closeDimensionEditor(); + } + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(1); + + await dimensions[0].click(); + + await lens.openPalettePanel('lnsMetric'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { stop: '10', color: 'rgba(84, 179, 153, 1)' }, + { stop: '', color: undefined }, + ]); + }); + }); + + it('should bring the ignore global filters configured at series level over', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Ignore global filters series'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + + it('should bring the ignore global filters configured at panel level over', async () => { + const visPanel = await panelActions.getPanelHeading('Metric - Ignore global filters panel'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('mtrVis'); + + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/table.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/table.ts new file mode 100644 index 0000000000000..6e03af2667a12 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/table.ts @@ -0,0 +1,178 @@ +/* + * 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. + */ + +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Table', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/table.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - TSVB - Table'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should allow converting a count aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should not allow converting of not valid panel', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Invalid panel'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of unsupported aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Unsupported agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting sibling pipeline aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Sibling pipeline agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting parent pipeline aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Parent pipeline agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting invalid aggregation function', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Invalid agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting series with different aggregation function or aggregation by', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Different agg function'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert last value mode to reduced time range', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Last value mode'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger'); + await testSubjects.click('indexPattern-advanced-accordion'); + const reducedTimeRange = await testSubjects.find('indexPattern-dimension-reducedTimeRange'); + expect(await reducedTimeRange.getVisibleText()).to.be('1 minute (1m)'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const metricDimensionText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + expect(metricDimensionText).to.be('Count of records last 1m'); + }); + }); + + it('should convert static value to the metric dimension', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Static value'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const metricDimensionText1 = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); + const metricDimensionText2 = await lens.getDimensionTriggerText('lnsDatatable_metrics', 1); + expect(metricDimensionText1).to.be('Count of records'); + expect(metricDimensionText2).to.be('10'); + }); + }); + + it('should convert aggregate by to split row dimension', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Agg by'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const splitRowsText1 = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); + const splitRowsText2 = await lens.getDimensionTriggerText('lnsDatatable_rows', 1); + expect(splitRowsText1).to.be('Top 10 values of machine.os.raw'); + expect(splitRowsText2).to.be('Top 10 values of clientip'); + }); + + await lens.openDimensionEditor('lnsDatatable_rows > lns-dimensionTrigger', 0, 1); + const collapseBy = await testSubjects.find('indexPattern-collapse-by'); + expect(await collapseBy.getAttribute('value')).to.be('sum'); + }); + + it('should convert group by field with custom label', async () => { + const visPanel = await panelActions.getPanelHeading('Table - GroupBy label'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const splitRowsText = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); + expect(splitRowsText).to.be('test'); + }); + }); + + it('should convert color ranges', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Color ranges'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + await retry.try(async () => { + const closePalettePanels = await testSubjects.findAll( + 'lns-indexPattern-PalettePanelContainerBack' + ); + if (closePalettePanels.length) { + await lens.closePalettePanel(); + await lens.closeDimensionEditor(); + } + + await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger'); + + await lens.openPalettePanel('lnsDatatable'); + const colorStops = await lens.getPaletteColorStops(); + + expect(colorStops).to.eql([ + { stop: '10', color: 'rgba(84, 179, 153, 1)' }, + { stop: '100', color: 'rgba(84, 160, 0, 1)' }, + { stop: '', color: undefined }, + ]); + }); + }); + + it('should bring the ignore global filters configured at panel level over', async () => { + const visPanel = await panelActions.getPanelHeading('Table - Ignore global filters panel'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('lnsDataTable'); + + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/timeseries.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/timeseries.ts new file mode 100644 index 0000000000000..f2552326019fc --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/timeseries.ts @@ -0,0 +1,170 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const find = getService('find'); + const filterBar = getService('filterBar'); + const queryBar = getService('queryBar'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Time Series', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/timeseries.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - TSVB - Timeseries'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item for a count aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('visualizes field to Lens and loads fields to the dimesion editor', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('@timestamp'); + expect(await dimensions[1].getVisibleText()).to.be('Count of records'); + }); + }); + + it('should preserve app filters in lens', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - With filter'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await filterBar.hasFilter('extension', 'css')).to.be(true); + }); + + it('should preserve query in lens', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - With query'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); + }); + + it('should draw a reference line', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Reference line'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); + + const referenceLineDimensions = await testSubjects.findAllDescendant( + 'lns-dimensionTrigger', + layers[1] + ); + expect(referenceLineDimensions).to.have.length(1); + expect(await referenceLineDimensions[0].getVisibleText()).to.be('Static value: 10'); + + const dimensions = await testSubjects.findAllDescendant('lns-dimensionTrigger', layers[0]); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('@timestamp'); + expect(await dimensions[1].getVisibleText()).to.be('Count of records'); + }); + }); + + it('should convert metric agg with params', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Agg with params'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(2); + expect(await dimensions[0].getVisibleText()).to.be('@timestamp'); + expect(await dimensions[1].getVisibleText()).to.eql( + 'Counter rate of machine.ram per second' + ); + }); + }); + + it('should not allow converting of invalid panel', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Invalid panel'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of unsupported aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Unsupported aggregations'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert parent pipeline aggregation with terms', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Parent pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('@timestamp'); + expect(await dimensions[1].getVisibleText()).to.eql('Cumulative sum of Records'); + expect(await dimensions[2].getVisibleText()).to.eql('Top 10 values of extension.raw'); + }); + }); + + it('should convert sibling pipeline aggregation with terms', async () => { + const visPanel = await panelActions.getPanelHeading('Timeseries - Sibling pipeline agg'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + expect(await lens.getLayerCount()).to.be(1); + + const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); + expect(dimensions).to.have.length(3); + expect(await dimensions[0].getVisibleText()).to.be('@timestamp'); + expect(await dimensions[1].getVisibleText()).to.eql('overall_average(count())'); + expect(await dimensions[2].getVisibleText()).to.eql('Top 10 values of extension.raw'); + }); + }); + + it('should bring the ignore global filters configured at series level over', async () => { + const visPanel = await panelActions.getPanelHeading( + 'Timeseries - Ignore global filters series' + ); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + + it('should bring the ignore global filters configured at panel level over', async () => { + const visPanel = await panelActions.getPanelHeading( + 'Timeseries - Ignore global filters panel' + ); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/top_n.ts b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/top_n.ts new file mode 100644 index 0000000000000..247133e14ded4 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/visualizations/open_in_lens/tsvb/top_n.ts @@ -0,0 +1,170 @@ +/* + * 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 ({ getPageObjects, getService }: FtrProviderContext) { + const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const filterBar = getService('filterBar'); + const queryBar = getService('queryBar'); + const panelActions = getService('dashboardPanelActions'); + const kibanaServer = getService('kibanaServer'); + + describe('Top N', function describeIndexTests() { + const fixture = + 'x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/open_in_lens/tsvb/top_n.json'; + + before(async () => { + await kibanaServer.importExport.load(fixture); + }); + + after(async () => { + await kibanaServer.importExport.unload(fixture); + }); + + beforeEach(async () => { + await dashboard.navigateToApp(); // required for svl until dashboard PO navigation is fixed + await dashboard.gotoDashboardEditMode('Convert to Lens - TSVB - Top N'); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Convert to Lens" menu item for a count aggregation', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Basic'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(true); + }); + + it('should not allow converting of invalid panel', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Invalid panel'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should not allow converting of unsupported aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Unsupported agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should hide the "Convert to Lens" menu item for a sibling pipeline aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Sibling pipeline agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should hide the "Convert to Lens" menu item for a parent pipeline aggregations', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Parent pipeline agg'); + expect(await panelActions.canConvertToLens(visPanel)).to.eql(false); + }); + + it('should convert to horizontal bar', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Horizontal bar'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); + const type = await chartSwitcher.getVisibleText(); + expect(type).to.be('Bar horizontal'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Maximum of memory'); + }); + }); + + it('should convert group by to vertical axis', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Group by'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + + const xDimensionText = await lens.getDimensionTriggerText('lnsXY_xDimensionPanel', 0); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(xDimensionText).to.be('Top 10 values of extension.raw'); + expect(yDimensionText).to.be('Count of records'); + }); + }); + + it('should convert last value mode to reduced time range', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Last value'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + await testSubjects.click('indexPattern-advanced-accordion'); + const reducedTimeRange = await testSubjects.find('indexPattern-dimension-reducedTimeRange'); + expect(await reducedTimeRange.getVisibleText()).to.be('1 minute (1m)'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count of records last 1m'); + }); + }); + + it('should convert static value to the separate layer with y dimension', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Static value'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(2); + const yDimensionText1 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const yDimensionText2 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 1); + expect(yDimensionText1).to.be('Count of records'); + expect(yDimensionText2).to.be('10'); + }); + }); + + it('visualizes field to Lens and loads fields to the dimesion editor', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Basic'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + await retry.try(async () => { + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count of records'); + }); + }); + + it('should preserve app filters in lens', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - With filter'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await filterBar.hasFilter('extension', 'css')).to.be(true); + }); + + it('should preserve query in lens', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - With query'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + + expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); + }); + + it('should bring the ignore global filters configured at series level over', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Ignore global filters series'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + + it('should bring the ignore global filters configured at panel level over', async () => { + const visPanel = await panelActions.getPanelHeading('Top N - Ignore global filters panel'); + await panelActions.convertToLens(visPanel); + await lens.waitForVisualization('xyVisChart'); + expect(await testSubjects.exists('lnsChangeIndexPatternIgnoringFilters')).to.be(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts b/x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts new file mode 100644 index 0000000000000..191c99643642c --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts @@ -0,0 +1,20 @@ +/* + * 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 baseTestConfig = await readConfigFile(require.resolve('../config.ts')); + + return { + ...baseTestConfig.getAll(), + testFiles: [require.resolve('../../common/visualizations')], + junit: { + reportName: 'Serverless Observability Functional Tests - Common Group 2', + }, + }; +} diff --git a/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts new file mode 100644 index 0000000000000..19fbe190fc4c2 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts @@ -0,0 +1,20 @@ +/* + * 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 baseTestConfig = await readConfigFile(require.resolve('../config.ts')); + + return { + ...baseTestConfig.getAll(), + testFiles: [require.resolve('../../common/visualizations')], + junit: { + reportName: 'Serverless Search Functional Tests - Common Group 2', + }, + }; +} diff --git a/x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts b/x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts new file mode 100644 index 0000000000000..ec66a5a5f4f2b --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts @@ -0,0 +1,20 @@ +/* + * 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 baseTestConfig = await readConfigFile(require.resolve('../config.ts')); + + return { + ...baseTestConfig.getAll(), + testFiles: [require.resolve('../../common/visualizations')], + junit: { + reportName: 'Serverless Security Functional Tests - Common Group 2', + }, + }; +} diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index 66bef3ea9911c..6b00c6c4c8bf6 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -50,6 +50,7 @@ "@kbn/data-plugin", "@kbn/dev-utils", "@kbn/bfetch-plugin", + "@kbn/es-archiver", "@kbn/rule-data-utils", "@kbn/rison", "@kbn/std", From 88b85eb874e8313f4c4e90863959f38b67ce3f98 Mon Sep 17 00:00:00 2001 From: Jason Rhodes Date: Wed, 4 Oct 2023 17:02:08 -0400 Subject: [PATCH 19/27] Get the assetClient ready for building inventory prototype (#167692) --- .buildkite/ftr_configs.yml | 3 +- x-pack/plugins/asset_manager/common/config.ts | 8 - .../asset_manager/common/constants_routes.ts | 1 + .../plugins/asset_manager/common/types_api.ts | 23 +- .../asset_manager/common/types_client.ts | 10 +- x-pack/plugins/asset_manager/docs/api.md | 24 +- .../public/lib/public_assets_client.test.ts | 35 +- .../public/lib/public_assets_client.ts | 16 +- .../{get_hosts_by_signals.ts => get_hosts.ts} | 15 +- .../accessors/hosts/get_hosts_by_assets.ts | 27 -- .../server/lib/accessors/hosts/index.ts | 19 -- .../server/lib/accessors/index.ts | 19 -- .../lib/accessors/services/get_services.ts | 59 ++++ .../services/get_services_by_assets.ts | 46 --- .../services/get_services_by_signals.ts | 41 --- .../server/lib/accessors/services/index.ts | 20 -- .../server/lib/asset_client.test.ts | 306 ++++++++++++++++++ .../asset_manager/server/lib/asset_client.ts | 44 +-- .../server/lib/asset_client_types.ts | 28 ++ .../server/lib/collectors/services.ts | 3 + .../asset_manager/server/lib/parse_ean.ts | 16 + .../lib/validators/validate_date_range.ts | 59 ++++ .../server/lib/validators/validation_error.ts | 20 ++ x-pack/plugins/asset_manager/server/plugin.ts | 14 +- .../server/routes/assets/hosts.ts | 16 +- .../server/routes/assets/services.ts | 46 ++- x-pack/plugins/asset_manager/server/types.ts | 7 +- x-pack/plugins/asset_manager/tsconfig.json | 5 +- .../metrics_data_access/server/client_mock.ts | 23 ++ .../metrics_data_access/server/index.ts | 1 + ...ssets_source.ts => config_when_enabled.ts} | 3 +- .../config_with_signals_source.ts | 98 ------ .../tests/{with_assets_source => }/assets.ts | 6 +- .../{with_assets_source => }/assets_diff.ts | 6 +- .../assets_related.ts | 6 +- .../tests/{with_signals_source => }/basics.ts | 6 +- .../tests/{with_signals_source => }/hosts.ts | 4 +- .../tests/{with_assets_source => }/index.ts | 6 +- .../{with_assets_source => }/sample_assets.ts | 4 +- .../{with_signals_source => }/services.ts | 6 +- .../tests/with_assets_source/basics.ts | 29 -- .../tests/with_signals_source/index.ts | 15 - .../apis/asset_manager/types.ts | 2 +- 43 files changed, 700 insertions(+), 445 deletions(-) rename x-pack/plugins/asset_manager/server/lib/accessors/hosts/{get_hosts_by_signals.ts => get_hosts.ts} (60%) delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_assets.ts delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/hosts/index.ts delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/index.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/services/get_services.ts delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_assets.ts delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_signals.ts delete mode 100644 x-pack/plugins/asset_manager/server/lib/accessors/services/index.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/asset_client.test.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/asset_client_types.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/parse_ean.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/validators/validate_date_range.ts create mode 100644 x-pack/plugins/asset_manager/server/lib/validators/validation_error.ts create mode 100644 x-pack/plugins/metrics_data_access/server/client_mock.ts rename x-pack/test/api_integration/apis/asset_manager/{config_with_assets_source.ts => config_when_enabled.ts} (96%) delete mode 100644 x-pack/test/api_integration/apis/asset_manager/config_with_signals_source.ts rename x-pack/test/api_integration/apis/asset_manager/tests/{with_assets_source => }/assets.ts (98%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_assets_source => }/assets_diff.ts (98%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_assets_source => }/assets_related.ts (98%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_signals_source => }/basics.ts (87%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_signals_source => }/hosts.ts (94%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_assets_source => }/index.ts (73%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_assets_source => }/sample_assets.ts (98%) rename x-pack/test/api_integration/apis/asset_manager/tests/{with_signals_source => }/services.ts (95%) delete mode 100644 x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/basics.ts delete mode 100644 x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/index.ts diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 1fc0967ffe712..409d3f7927544 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -69,7 +69,6 @@ disabled: - x-pack/test/plugin_api_perf/config.js - x-pack/test/screenshot_creation/config.ts - x-pack/test/fleet_packages/config.ts - - x-pack/test/api_integration/apis/asset_manager/config_with_assets_source.ts # Scalability testing config that we run in its own pipeline - x-pack/test/scalability/config.ts @@ -174,7 +173,7 @@ enabled: - x-pack/test/api_integration/config_security_trial.ts - x-pack/test/api_integration/apis/aiops/config.ts - x-pack/test/api_integration/apis/asset_manager/config_when_disabled.ts - - x-pack/test/api_integration/apis/asset_manager/config_with_signals_source.ts + - x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts - x-pack/test/api_integration/apis/cases/config.ts - x-pack/test/api_integration/apis/cloud_security_posture/config.ts - x-pack/test/api_integration/apis/console/config.ts diff --git a/x-pack/plugins/asset_manager/common/config.ts b/x-pack/plugins/asset_manager/common/config.ts index 0a57e37d497bb..22d1c2ace4578 100644 --- a/x-pack/plugins/asset_manager/common/config.ts +++ b/x-pack/plugins/asset_manager/common/config.ts @@ -23,14 +23,6 @@ export const configSchema = schema.object({ }, { defaultValue: INDEX_DEFAULTS } ), - // Choose an explicit source for asset queries. - // NOTE: This will eventually need to be able to cleverly switch - // between these values based on the availability of data in the - // indices, and possibly for each asset kind/type value. - // For now, we set this explicitly. - lockedSource: schema.oneOf([schema.literal('assets'), schema.literal('signals')], { - defaultValue: 'signals', - }), }); export type AssetManagerConfig = TypeOf; diff --git a/x-pack/plugins/asset_manager/common/constants_routes.ts b/x-pack/plugins/asset_manager/common/constants_routes.ts index 1aef43f7383bd..d256e4264a035 100644 --- a/x-pack/plugins/asset_manager/common/constants_routes.ts +++ b/x-pack/plugins/asset_manager/common/constants_routes.ts @@ -16,3 +16,4 @@ export const GET_RELATED_ASSETS = base('/assets/related'); export const GET_ASSETS_DIFF = base('/assets/diff'); export const GET_HOSTS = base('/assets/hosts'); +export const GET_SERVICES = base('/assets/services'); diff --git a/x-pack/plugins/asset_manager/common/types_api.ts b/x-pack/plugins/asset_manager/common/types_api.ts index 11b5ea4bda3a4..3b63f26819202 100644 --- a/x-pack/plugins/asset_manager/common/types_api.ts +++ b/x-pack/plugins/asset_manager/common/types_api.ts @@ -196,6 +196,10 @@ export const sizeRT = rt.union([ createLiteralValueFromUndefinedRT(10), ]); export const assetDateRT = rt.union([dateRt, datemathStringRt]); + +/** + * Hosts + */ export const getHostAssetsQueryOptionsRT = rt.exact( rt.partial({ from: assetDateRT, @@ -204,8 +208,25 @@ export const getHostAssetsQueryOptionsRT = rt.exact( }) ); export type GetHostAssetsQueryOptions = rt.TypeOf; - export const getHostAssetsResponseRT = rt.type({ hosts: rt.array(assetRT), }); export type GetHostAssetsResponse = rt.TypeOf; + +/** + * Services + */ +export const getServiceAssetsQueryOptionsRT = rt.exact( + rt.partial({ + from: assetDateRT, + to: assetDateRT, + size: sizeRT, + parent: rt.string, + }) +); + +export type GetServiceAssetsQueryOptions = rt.TypeOf; +export const getServiceAssetsResponseRT = rt.type({ + services: rt.array(assetRT), +}); +export type GetServiceAssetsResponse = rt.TypeOf; diff --git a/x-pack/plugins/asset_manager/common/types_client.ts b/x-pack/plugins/asset_manager/common/types_client.ts index 350a168da8965..79d2c11e42abf 100644 --- a/x-pack/plugins/asset_manager/common/types_client.ts +++ b/x-pack/plugins/asset_manager/common/types_client.ts @@ -5,13 +5,13 @@ * 2.0. */ -export interface GetHostsOptionsPublic { +export interface SharedAssetsOptionsPublic { from: string; - to: string; + to?: string; } -export interface GetServicesOptionsPublic { - from: string; - to: string; +export type GetHostsOptionsPublic = SharedAssetsOptionsPublic; + +export interface GetServicesOptionsPublic extends SharedAssetsOptionsPublic { parent?: string; } diff --git a/x-pack/plugins/asset_manager/docs/api.md b/x-pack/plugins/asset_manager/docs/api.md index 755abfe4be373..66a1984297c16 100644 --- a/x-pack/plugins/asset_manager/docs/api.md +++ b/x-pack/plugins/asset_manager/docs/api.md @@ -165,9 +165,11 @@ it will be able to pull the properly-scoped client dependencies off of that requ ### Client methods +TODO: Link to a centralized asset document example that each response can reference? + #### getHosts -Get a group of host assets found within a specified time range. +Get a list of host assets found within a specified time range. | Parameter | Type | Required? | Description | | :-------- | :-------------- | :-------- | :--------------------------------------------------------------------- | @@ -184,4 +186,22 @@ Get a group of host assets found within a specified time range. } ``` -TODO: Link to a centralized asset document example that each response can reference? +#### getServices + +Get a list of service assets found within a specified time range. + +| Parameter | Type | Required? | Description | +| :-------- | :-------------- | :-------- | :--------------------------------------------------------------------- | +| from | datetime string | yes | ISO date string representing the START of the time range being queried | +| to | datetime string | yes | ISO date string representing the END of the time range being queried | +| parent | string | no | EAN value for a given parent service to filter services by | + +**Response** + +```json +{ + "services": [ + ...found service assets + ] +} +``` diff --git a/x-pack/plugins/asset_manager/public/lib/public_assets_client.test.ts b/x-pack/plugins/asset_manager/public/lib/public_assets_client.test.ts index 93cc541a34af4..5eca030e832db 100644 --- a/x-pack/plugins/asset_manager/public/lib/public_assets_client.test.ts +++ b/x-pack/plugins/asset_manager/public/lib/public_assets_client.test.ts @@ -40,9 +40,40 @@ describe('Public assets client', () => { it('should return the direct results of http.get', async () => { const client = new PublicAssetsClient(http); - http.get.mockResolvedValueOnce('my result'); + http.get.mockResolvedValueOnce('my hosts'); const result = await client.getHosts({ from: 'x', to: 'y' }); - expect(result).toBe('my result'); + expect(result).toBe('my hosts'); + }); + }); + + describe('getServices', () => { + it('should call the REST API', async () => { + const client = new PublicAssetsClient(http); + await client.getServices({ from: 'x', to: 'y' }); + expect(http.get).toBeCalledTimes(1); + }); + + it('should include specified "from" and "to" parameters in http.get query', async () => { + const client = new PublicAssetsClient(http); + await client.getServices({ from: 'x', to: 'y' }); + expect(http.get).toBeCalledWith(routePaths.GET_SERVICES, { + query: { from: 'x', to: 'y' }, + }); + }); + + it('should include specified "parent" parameter in http.get query', async () => { + const client = new PublicAssetsClient(http); + await client.getServices({ from: 'x', to: 'y', parent: 'container:123' }); + expect(http.get).toBeCalledWith(routePaths.GET_SERVICES, { + query: { from: 'x', to: 'y', parent: 'container:123' }, + }); + }); + + it('should return the direct results of http.get', async () => { + const client = new PublicAssetsClient(http); + http.get.mockResolvedValueOnce('my services'); + const result = await client.getServices({ from: 'x', to: 'y' }); + expect(result).toBe('my services'); }); }); }); diff --git a/x-pack/plugins/asset_manager/public/lib/public_assets_client.ts b/x-pack/plugins/asset_manager/public/lib/public_assets_client.ts index dd18386868f94..9509e61e073a6 100644 --- a/x-pack/plugins/asset_manager/public/lib/public_assets_client.ts +++ b/x-pack/plugins/asset_manager/public/lib/public_assets_client.ts @@ -6,9 +6,9 @@ */ import { HttpStart } from '@kbn/core/public'; -import { GetHostsOptionsPublic } from '../../common/types_client'; -import { GetHostAssetsResponse } from '../../common/types_api'; -import { GET_HOSTS } from '../../common/constants_routes'; +import { GetHostsOptionsPublic, GetServicesOptionsPublic } from '../../common/types_client'; +import { GetHostAssetsResponse, GetServiceAssetsResponse } from '../../common/types_api'; +import { GET_HOSTS, GET_SERVICES } from '../../common/constants_routes'; import { IPublicAssetsClient } from '../types'; export class PublicAssetsClient implements IPublicAssetsClient { @@ -23,4 +23,14 @@ export class PublicAssetsClient implements IPublicAssetsClient { return results; } + + async getServices(options: GetServicesOptionsPublic) { + const results = await this.http.get(GET_SERVICES, { + query: { + ...options, + }, + }); + + return results; + } } diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_signals.ts b/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts.ts similarity index 60% rename from x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_signals.ts rename to x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts.ts index 93e601ae00f9c..632b234b5512f 100644 --- a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_signals.ts +++ b/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts.ts @@ -6,12 +6,17 @@ */ import { Asset } from '../../../../common/types_api'; -import { GetHostsOptionsInjected } from '.'; import { collectHosts } from '../../collectors/hosts'; +import { GetHostsOptionsPublic } from '../../../../common/types_client'; +import { + AssetClientDependencies, + AssetClientOptionsWithInjectedValues, +} from '../../asset_client_types'; -export async function getHostsBySignals( - options: GetHostsOptionsInjected -): Promise<{ hosts: Asset[] }> { +export type GetHostsOptions = GetHostsOptionsPublic & AssetClientDependencies; +export type GetHostsOptionsInjected = AssetClientOptionsWithInjectedValues; + +export async function getHosts(options: GetHostsOptionsInjected): Promise<{ hosts: Asset[] }> { const metricsIndices = await options.metricsClient.getMetricIndices({ savedObjectsClient: options.savedObjectsClient, }); @@ -19,7 +24,7 @@ export async function getHostsBySignals( const { assets } = await collectHosts({ client: options.elasticsearchClient, from: options.from, - to: options.to, + to: options.to || 'now', sourceIndices: { metrics: metricsIndices, logs: options.sourceIndices.logs, diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_assets.ts b/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_assets.ts deleted file mode 100644 index f975df1cd82f4..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/get_hosts_by_assets.ts +++ /dev/null @@ -1,27 +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 { Asset } from '../../../../common/types_api'; -import { GetHostsOptionsInjected } from '.'; -import { getAssets } from '../../get_assets'; - -export async function getHostsByAssets( - options: GetHostsOptionsInjected -): Promise<{ hosts: Asset[] }> { - const hosts = await getAssets({ - elasticsearchClient: options.elasticsearchClient, - filters: { - kind: 'host', - from: options.from, - to: options.to, - }, - }); - - return { - hosts, - }; -} diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/index.ts b/x-pack/plugins/asset_manager/server/lib/accessors/hosts/index.ts deleted file mode 100644 index 1b60268d85389..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/hosts/index.ts +++ /dev/null @@ -1,19 +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 type { AssetClientDependencies } from '../../../types'; -import type { GetHostsOptionsPublic } from '../../../../common/types_client'; -import type { OptionsWithInjectedValues } from '..'; - -export type GetHostsOptions = GetHostsOptionsPublic & AssetClientDependencies; -export type GetHostsOptionsInjected = OptionsWithInjectedValues; - -export interface HostIdentifier { - 'asset.ean': string; - 'asset.id': string; - 'asset.name'?: string; -} diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/index.ts b/x-pack/plugins/asset_manager/server/lib/accessors/index.ts deleted file mode 100644 index 6fd9254a2182e..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/index.ts +++ /dev/null @@ -1,19 +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 { APMDataAccessConfig } from '@kbn/apm-data-access-plugin/server'; -import { MetricsDataClient } from '@kbn/metrics-data-access-plugin/server'; -import { SavedObjectsClientContract } from '@kbn/core/server'; -import { AssetManagerConfig } from '../../../common/config'; - -export interface InjectedValues { - sourceIndices: AssetManagerConfig['sourceIndices']; - getApmIndices: (soClient: SavedObjectsClientContract) => Promise; - metricsClient: MetricsDataClient; -} - -export type OptionsWithInjectedValues = T & InjectedValues; diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services.ts b/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services.ts new file mode 100644 index 0000000000000..2df13930e2ed7 --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services.ts @@ -0,0 +1,59 @@ +/* + * 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 { Asset } from '../../../../common/types_api'; +import { collectServices } from '../../collectors/services'; +import { parseEan } from '../../parse_ean'; +import { GetServicesOptionsPublic } from '../../../../common/types_client'; +import { + AssetClientDependencies, + AssetClientOptionsWithInjectedValues, +} from '../../asset_client_types'; + +export type GetServicesOptions = GetServicesOptionsPublic & AssetClientDependencies; +export type GetServicesOptionsInjected = AssetClientOptionsWithInjectedValues; + +export async function getServices( + options: GetServicesOptionsInjected +): Promise<{ services: Asset[] }> { + const filters = []; + + if (options.parent) { + const { kind, id } = parseEan(options.parent); + + if (kind === 'host') { + filters.push({ + bool: { + should: [{ term: { 'host.name': id } }, { term: { 'host.hostname': id } }], + minimum_should_match: 1, + }, + }); + } + + if (kind === 'container') { + filters.push({ + bool: { + should: [{ term: { 'container.id': id } }], + minimum_should_match: 1, + }, + }); + } + } + + const apmIndices = await options.getApmIndices(options.savedObjectsClient); + const { assets } = await collectServices({ + client: options.elasticsearchClient, + from: options.from, + to: options.to || 'now', + sourceIndices: { + apm: apmIndices, + }, + filters, + }); + + return { services: assets }; +} diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_assets.ts b/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_assets.ts deleted file mode 100644 index 8e69bcbff4625..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_assets.ts +++ /dev/null @@ -1,46 +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 { Asset } from '../../../../common/types_api'; -import { GetServicesOptionsInjected } from '.'; -import { getAssets } from '../../get_assets'; -import { getAllRelatedAssets } from '../../get_all_related_assets'; - -export async function getServicesByAssets( - options: GetServicesOptionsInjected -): Promise<{ services: Asset[] }> { - if (options.parent) { - return getServicesByParent(options); - } - - const services = await getAssets({ - elasticsearchClient: options.elasticsearchClient, - filters: { - kind: 'service', - from: options.from, - to: options.to, - }, - }); - - return { services }; -} - -async function getServicesByParent( - options: GetServicesOptionsInjected -): Promise<{ services: Asset[] }> { - const { descendants } = await getAllRelatedAssets(options.elasticsearchClient, { - from: options.from, - to: options.to, - maxDistance: 5, - kind: ['service'], - size: 100, - relation: 'descendants', - ean: options.parent!, - }); - - return { services: descendants as Asset[] }; -} diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_signals.ts b/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_signals.ts deleted file mode 100644 index 720d6b3e30531..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/services/get_services_by_signals.ts +++ /dev/null @@ -1,41 +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 { Asset } from '../../../../common/types_api'; -import { GetServicesOptionsInjected } from '.'; -import { collectServices } from '../../collectors/services'; - -export async function getServicesBySignals( - options: GetServicesOptionsInjected -): Promise<{ services: Asset[] }> { - const filters = []; - - if (options.parent) { - filters.push({ - bool: { - should: [ - { term: { 'host.name': options.parent } }, - { term: { 'host.hostname': options.parent } }, - ], - minimum_should_match: 1, - }, - }); - } - - const apmIndices = await options.getApmIndices(options.savedObjectsClient); - const { assets } = await collectServices({ - client: options.elasticsearchClient, - from: options.from, - to: options.to, - sourceIndices: { - apm: apmIndices, - }, - filters, - }); - - return { services: assets }; -} diff --git a/x-pack/plugins/asset_manager/server/lib/accessors/services/index.ts b/x-pack/plugins/asset_manager/server/lib/accessors/services/index.ts deleted file mode 100644 index e8b52e4924c4d..0000000000000 --- a/x-pack/plugins/asset_manager/server/lib/accessors/services/index.ts +++ /dev/null @@ -1,20 +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 { AssetClientDependencies } from '../../../types'; -import { GetServicesOptionsPublic } from '../../../../common/types_client'; -import { OptionsWithInjectedValues } from '..'; - -export type GetServicesOptions = GetServicesOptionsPublic & AssetClientDependencies; -export type GetServicesOptionsInjected = OptionsWithInjectedValues; - -export interface ServiceIdentifier { - 'asset.ean': string; - 'asset.id': string; - 'asset.name'?: string; - 'service.environment'?: string; -} diff --git a/x-pack/plugins/asset_manager/server/lib/asset_client.test.ts b/x-pack/plugins/asset_manager/server/lib/asset_client.test.ts new file mode 100644 index 0000000000000..a9bd5791bc51a --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/asset_client.test.ts @@ -0,0 +1,306 @@ +/* + * 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 { + ElasticsearchClientMock, + elasticsearchClientMock, +} from '@kbn/core-elasticsearch-client-server-mocks'; +import { AssetClient } from './asset_client'; +import { MetricsDataClient, MetricsDataClientMock } from '@kbn/metrics-data-access-plugin/server'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; +import { SearchRequest } from '@elastic/elasticsearch/lib/api/types'; +import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { AssetsValidationError } from './validators/validation_error'; +import { GetApmIndicesMethod } from './asset_client_types'; + +// Helper function allows test to verify error was thrown, +// verify error is of the right class type, and error has +// the expected metadata such as statusCode on it +function expectToThrowValidationErrorWithStatusCode( + testFn: () => Promise, + expectedError: Partial = {} +) { + return expect(async () => { + try { + return await testFn(); + } catch (error: any) { + if (error instanceof AssetsValidationError) { + if (expectedError.statusCode) { + expect(error.statusCode).toEqual(expectedError.statusCode); + } + if (expectedError.message) { + expect(error.message).toEqual(expect.stringContaining(expectedError.message)); + } + } + throw error; + } + }).rejects.toThrow(AssetsValidationError); +} + +function createGetApmIndicesMock(): jest.Mocked { + return jest.fn(async (client: SavedObjectsClientContract) => ({ + transaction: 'apm-mock-transaction-indices', + span: 'apm-mock-span-indices', + error: 'apm-mock-error-indices', + metric: 'apm-mock-metric-indices', + onboarding: 'apm-mock-onboarding-indices', + sourcemap: 'apm-mock-sourcemap-indices', + })); +} + +function createAssetClient( + metricsDataClient: MetricsDataClient, + getApmIndicesMock: jest.Mocked +) { + return new AssetClient({ + sourceIndices: { + logs: 'my-logs*', + }, + getApmIndices: getApmIndicesMock, + metricsClient: metricsDataClient, + }); +} + +describe('Server assets client', () => { + let metricsDataClientMock: MetricsDataClient = MetricsDataClientMock.create(); + let getApmIndicesMock: jest.Mocked = createGetApmIndicesMock(); + let esClientMock: ElasticsearchClientMock = + elasticsearchClientMock.createScopedClusterClient().asCurrentUser; + let soClientMock: jest.Mocked; + + beforeEach(() => { + // Reset mocks + esClientMock = elasticsearchClientMock.createScopedClusterClient().asCurrentUser; + soClientMock = savedObjectsClientMock.create(); + metricsDataClientMock = MetricsDataClientMock.create(); + getApmIndicesMock = createGetApmIndicesMock(); + + // ES returns no results, just enough structure to not blow up + esClientMock.search.mockResolvedValueOnce({ + took: 1, + timed_out: false, + _shards: { + failed: 0, + successful: 1, + total: 1, + }, + hits: { + hits: [], + }, + }); + }); + + describe('class instantiation', () => { + it('should successfully instantiate', () => { + createAssetClient(metricsDataClientMock, getApmIndicesMock); + }); + }); + + describe('getHosts', () => { + it('should query Elasticsearch correctly', async () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + await client.getHosts({ + from: 'now-5d', + to: 'now-3d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }); + + expect(metricsDataClientMock.getMetricIndices).toHaveBeenCalledTimes(1); + expect(metricsDataClientMock.getMetricIndices).toHaveBeenCalledWith({ + savedObjectsClient: soClientMock, + }); + + const dsl = esClientMock.search.mock.lastCall?.[0] as SearchRequest | undefined; + const { bool } = dsl?.query || {}; + expect(bool).toBeDefined(); + + expect(bool?.filter).toEqual([ + { + range: { + '@timestamp': { + gte: 'now-5d', + lte: 'now-3d', + }, + }, + }, + ]); + + expect(bool?.must).toEqual([ + { + exists: { + field: 'host.hostname', + }, + }, + ]); + + expect(bool?.should).toEqual([ + { exists: { field: 'kubernetes.node.name' } }, + { exists: { field: 'kubernetes.pod.uid' } }, + { exists: { field: 'container.id' } }, + ]); + }); + + it('should reject with 400 for invalid "from" date', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getHosts({ + from: 'now-1zz', + to: 'now-3d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + + it('should reject with 400 for invalid "to" date', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getHosts({ + from: 'now-5d', + to: 'now-3fe', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + + it('should reject with 400 when "from" is a date that is after "to"', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getHosts({ + from: 'now', + to: 'now-5d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + + it('should reject with 400 when "from" is in the future', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getHosts({ + from: 'now+1d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + }); + + describe('getServices', () => { + it('should query Elasticsearch correctly', async () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + await client.getServices({ + from: 'now-5d', + to: 'now-3d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }); + + expect(getApmIndicesMock).toHaveBeenCalledTimes(1); + expect(getApmIndicesMock).toHaveBeenCalledWith(soClientMock); + + const dsl = esClientMock.search.mock.lastCall?.[0] as SearchRequest | undefined; + const { bool } = dsl?.query || {}; + expect(bool).toBeDefined(); + + expect(bool?.filter).toEqual([ + { + range: { + '@timestamp': { + gte: 'now-5d', + lte: 'now-3d', + }, + }, + }, + ]); + + expect(bool?.must).toEqual([ + { + exists: { + field: 'service.name', + }, + }, + ]); + + expect(bool?.should).toBeUndefined(); + }); + + it('should reject with 400 for invalid "from" date', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expect(() => + client.getServices({ + from: 'now-1zz', + to: 'now-3d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }) + ).rejects.toThrow(AssetsValidationError); + }); + + it('should reject with 400 for invalid "to" date', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getServices({ + from: 'now-5d', + to: 'now-3fe', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + + it('should reject with 400 when "from" is a date that is after "to"', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getServices({ + from: 'now', + to: 'now-5d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + + it('should reject with 400 when "from" is in the future', () => { + const client = createAssetClient(metricsDataClientMock, getApmIndicesMock); + + return expectToThrowValidationErrorWithStatusCode( + () => + client.getServices({ + from: 'now+1d', + elasticsearchClient: esClientMock, + savedObjectsClient: soClientMock, + }), + { statusCode: 400 } + ); + }); + }); +}); diff --git a/x-pack/plugins/asset_manager/server/lib/asset_client.ts b/x-pack/plugins/asset_manager/server/lib/asset_client.ts index 8bf23313c663e..0349d50b7fd21 100644 --- a/x-pack/plugins/asset_manager/server/lib/asset_client.ts +++ b/x-pack/plugins/asset_manager/server/lib/asset_client.ts @@ -5,53 +5,31 @@ * 2.0. */ -import { APMDataAccessConfig } from '@kbn/apm-data-access-plugin/server'; -import { MetricsDataClient } from '@kbn/metrics-data-access-plugin/server'; -import { SavedObjectsClientContract } from '@kbn/core/server'; -import { AssetManagerConfig } from '../../common/config'; import { Asset } from '../../common/types_api'; -import { OptionsWithInjectedValues } from './accessors'; -import { GetHostsOptions } from './accessors/hosts'; -import { GetServicesOptions } from './accessors/services'; -import { getHostsByAssets } from './accessors/hosts/get_hosts_by_assets'; -import { getHostsBySignals } from './accessors/hosts/get_hosts_by_signals'; -import { getServicesByAssets } from './accessors/services/get_services_by_assets'; -import { getServicesBySignals } from './accessors/services/get_services_by_signals'; - -interface AssetClientClassOptions { - sourceIndices: AssetManagerConfig['sourceIndices']; - source: AssetManagerConfig['lockedSource']; - getApmIndices: (soClient: SavedObjectsClientContract) => Promise; - metricsClient: MetricsDataClient; -} +import { getHosts, GetHostsOptions } from './accessors/hosts/get_hosts'; +import { getServices, GetServicesOptions } from './accessors/services/get_services'; +import { AssetClientBaseOptions, AssetClientOptionsWithInjectedValues } from './asset_client_types'; +import { validateStringDateRange } from './validators/validate_date_range'; export class AssetClient { - constructor(private baseOptions: AssetClientClassOptions) {} + constructor(private baseOptions: AssetClientBaseOptions) {} - injectOptions(options: T): OptionsWithInjectedValues { + injectOptions(options: T): AssetClientOptionsWithInjectedValues { return { ...options, - sourceIndices: this.baseOptions.sourceIndices, - getApmIndices: this.baseOptions.getApmIndices, - metricsClient: this.baseOptions.metricsClient, + ...this.baseOptions, }; } async getHosts(options: GetHostsOptions): Promise<{ hosts: Asset[] }> { + validateStringDateRange(options.from, options.to); const withInjected = this.injectOptions(options); - if (this.baseOptions.source === 'assets') { - return await getHostsByAssets(withInjected); - } else { - return await getHostsBySignals(withInjected); - } + return await getHosts(withInjected); } async getServices(options: GetServicesOptions): Promise<{ services: Asset[] }> { + validateStringDateRange(options.from, options.to); const withInjected = this.injectOptions(options); - if (this.baseOptions.source === 'assets') { - return await getServicesByAssets(withInjected); - } else { - return await getServicesBySignals(withInjected); - } + return await getServices(withInjected); } } diff --git a/x-pack/plugins/asset_manager/server/lib/asset_client_types.ts b/x-pack/plugins/asset_manager/server/lib/asset_client_types.ts new file mode 100644 index 0000000000000..a15886ce3a00a --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/asset_client_types.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { APMDataAccessConfig } from '@kbn/apm-data-access-plugin/server'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { MetricsDataClient } from '@kbn/metrics-data-access-plugin/server'; +import { AssetManagerConfig } from '../../common/config'; + +export type GetApmIndicesMethod = ( + soClient: SavedObjectsClientContract +) => Promise; +export interface AssetClientDependencies { + elasticsearchClient: ElasticsearchClient; + savedObjectsClient: SavedObjectsClientContract; +} + +export interface AssetClientBaseOptions { + sourceIndices: AssetManagerConfig['sourceIndices']; + getApmIndices: GetApmIndicesMethod; + metricsClient: MetricsDataClient; +} + +export type AssetClientOptionsWithInjectedValues = T & AssetClientBaseOptions; diff --git a/x-pack/plugins/asset_manager/server/lib/collectors/services.ts b/x-pack/plugins/asset_manager/server/lib/collectors/services.ts index cf41dc96cd3f7..e000860c9f4c5 100644 --- a/x-pack/plugins/asset_manager/server/lib/collectors/services.ts +++ b/x-pack/plugins/asset_manager/server/lib/collectors/services.ts @@ -6,6 +6,7 @@ */ import { estypes } from '@elastic/elasticsearch'; +import { debug } from '../../../common/debug_log'; import { Asset } from '../../../common/types_api'; import { CollectorOptions, QUERY_MAX_SIZE } from '.'; @@ -94,6 +95,8 @@ export async function collectServices({ dsl.aggs!.services!.composite!.after = afterKey; } + debug(dsl); + const esResponse = await client.search(dsl); const { after_key: nextKey, buckets = [] } = (esResponse.aggregations?.services || {}) as any; diff --git a/x-pack/plugins/asset_manager/server/lib/parse_ean.ts b/x-pack/plugins/asset_manager/server/lib/parse_ean.ts new file mode 100644 index 0000000000000..e466549a1830f --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/parse_ean.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function parseEan(ean: string) { + const [kind, id, ...rest] = ean.split(':'); + + if (!kind || !id || rest.length > 0) { + throw new Error(`${ean} is not a valid EAN`); + } + + return { kind, id }; +} diff --git a/x-pack/plugins/asset_manager/server/lib/validators/validate_date_range.ts b/x-pack/plugins/asset_manager/server/lib/validators/validate_date_range.ts new file mode 100644 index 0000000000000..144e9c4eabccb --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/validators/validate_date_range.ts @@ -0,0 +1,59 @@ +/* + * 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 datemath from '@kbn/datemath'; +import { Moment } from 'moment'; +import { AssetsValidationError } from './validation_error'; + +export function validateStringDateRange(from: string, to?: string) { + const parsedFrom = validateESDate(from); + validateDateInPast(parsedFrom); + if (to) { + const parsedTo = validateESDate(to); + validateDateRangeOrder(parsedFrom, parsedTo); + } +} + +export function validateDateInPast(date: Moment) { + const now = datemath.parse('now')!; + if (date.isAfter(now)) { + throw new AssetsValidationError(`Date cannot be in the future ${date.toISOString()}`, { + statusCode: 400, + }); + } +} + +export function validateDateRangeOrder(from: Moment, to: Moment) { + if (from.isAfter(to)) { + throw new AssetsValidationError( + `Invalid date range - given "from" value (${from.toISOString()}) is after given "to" value (${to.toISOString()})`, + { + statusCode: 400, + } + ); + } +} + +export function validateESDate(dateString: string) { + try { + const parsed = datemath.parse(dateString); + if (typeof parsed === 'undefined') { + throw new Error('Date string was parsed as undefined'); + } + if (parsed.toString() === 'Invalid date') { + throw new Error('Date string produced an invalid date'); + } + return parsed; + } catch (error: any) { + throw new AssetsValidationError( + `"${dateString}" is not a valid Elasticsearch date value - ${error}`, + { + statusCode: 400, + } + ); + } +} diff --git a/x-pack/plugins/asset_manager/server/lib/validators/validation_error.ts b/x-pack/plugins/asset_manager/server/lib/validators/validation_error.ts new file mode 100644 index 0000000000000..0f094971fc528 --- /dev/null +++ b/x-pack/plugins/asset_manager/server/lib/validators/validation_error.ts @@ -0,0 +1,20 @@ +/* + * 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. + */ + +interface ErrorOptions { + statusCode?: number; +} + +export class AssetsValidationError extends Error { + public statusCode: number; + + constructor(message: string, { statusCode = 400 }: ErrorOptions = {}) { + super(message); + this.name = 'AssetsValidationError'; + this.statusCode = statusCode; + } +} diff --git a/x-pack/plugins/asset_manager/server/plugin.ts b/x-pack/plugins/asset_manager/server/plugin.ts index 24563b5e0fbc1..6ea93a4302f49 100644 --- a/x-pack/plugins/asset_manager/server/plugin.ts +++ b/x-pack/plugins/asset_manager/server/plugin.ts @@ -57,7 +57,6 @@ export class AssetManagerServerPlugin this.logger.info('Server is enabled'); const assetClient = new AssetClient({ - source: this.config.lockedSource, sourceIndices: this.config.sourceIndices, getApmIndices: plugins.apmDataAccess.getApmIndices, metricsClient: plugins.metricsDataAccess.client, @@ -77,14 +76,11 @@ export class AssetManagerServerPlugin return; } - // create/update assets-* index template - if (this.config.lockedSource === 'assets') { - upsertTemplate({ - esClient: core.elasticsearch.client.asInternalUser, - template: assetsIndexTemplateConfig, - logger: this.logger, - }); - } + upsertTemplate({ + esClient: core.elasticsearch.client.asInternalUser, + template: assetsIndexTemplateConfig, + logger: this.logger, + }); return {}; } diff --git a/x-pack/plugins/asset_manager/server/routes/assets/hosts.ts b/x-pack/plugins/asset_manager/server/routes/assets/hosts.ts index f7780f2ef4a6c..b260193647b4f 100644 --- a/x-pack/plugins/asset_manager/server/routes/assets/hosts.ts +++ b/x-pack/plugins/asset_manager/server/routes/assets/hosts.ts @@ -5,7 +5,6 @@ * 2.0. */ -import datemath from '@kbn/datemath'; import { createRouteValidationFunction } from '@kbn/io-ts-utils'; import { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; import { GetHostAssetsQueryOptions, getHostAssetsQueryOptionsRT } from '../../../common/types_api'; @@ -13,6 +12,7 @@ import { debug } from '../../../common/debug_log'; import { SetupRouteOptions } from '../types'; import * as routePaths from '../../../common/constants_routes'; import { getClientsFromContext } from '../utils'; +import { AssetsValidationError } from '../../lib/validators/validation_error'; export function hostsRoutes({ router, @@ -27,13 +27,12 @@ export function hostsRoutes({ }, async (context, req, res) => { const { from = 'now-24h', to = 'now' } = req.query || {}; - const { elasticsearchClient, savedObjectsClient } = await getClientsFromContext(context); try { const response = await assetClient.getHosts({ - from: datemath.parse(from)!.toISOString(), - to: datemath.parse(to)!.toISOString(), + from, + to, elasticsearchClient, savedObjectsClient, }); @@ -41,6 +40,15 @@ export function hostsRoutes({ return res.ok({ body: response }); } catch (error: unknown) { debug('Error while looking up HOST asset records', error); + + if (error instanceof AssetsValidationError) { + return res.customError({ + statusCode: error.statusCode, + body: { + message: `Error while looking up host asset records - ${error.message}`, + }, + }); + } return res.customError({ statusCode: 500, body: { message: 'Error while looking up host asset records - ' + `${error}` }, diff --git a/x-pack/plugins/asset_manager/server/routes/assets/services.ts b/x-pack/plugins/asset_manager/server/routes/assets/services.ts index 3852a0bb60d11..0e7103512ebf9 100644 --- a/x-pack/plugins/asset_manager/server/routes/assets/services.ts +++ b/x-pack/plugins/asset_manager/server/routes/assets/services.ts @@ -5,33 +5,17 @@ * 2.0. */ -import * as rt from 'io-ts'; -import datemath from '@kbn/datemath'; -import { - dateRt, - inRangeFromStringRt, - datemathStringRt, - createRouteValidationFunction, - createLiteralValueFromUndefinedRT, -} from '@kbn/io-ts-utils'; +import { createRouteValidationFunction } from '@kbn/io-ts-utils'; import { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; +import { + GetServiceAssetsQueryOptions, + getServiceAssetsQueryOptionsRT, +} from '../../../common/types_api'; import { debug } from '../../../common/debug_log'; import { SetupRouteOptions } from '../types'; -import { ASSET_MANAGER_API_BASE } from '../../../common/constants_routes'; +import * as routePaths from '../../../common/constants_routes'; import { getClientsFromContext } from '../utils'; - -const sizeRT = rt.union([inRangeFromStringRt(1, 100), createLiteralValueFromUndefinedRT(10)]); -const assetDateRT = rt.union([dateRt, datemathStringRt]); -const getServiceAssetsQueryOptionsRT = rt.exact( - rt.partial({ - from: assetDateRT, - to: assetDateRT, - size: sizeRT, - parent: rt.string, - }) -); - -export type GetServiceAssetsQueryOptions = rt.TypeOf; +import { AssetsValidationError } from '../../lib/validators/validation_error'; export function servicesRoutes({ router, @@ -40,7 +24,7 @@ export function servicesRoutes({ // GET /assets/services router.get( { - path: `${ASSET_MANAGER_API_BASE}/assets/services`, + path: routePaths.GET_SERVICES, validate: { query: createRouteValidationFunction(getServiceAssetsQueryOptionsRT), }, @@ -50,8 +34,8 @@ export function servicesRoutes({ const { elasticsearchClient, savedObjectsClient } = await getClientsFromContext(context); try { const response = await assetClient.getServices({ - from: datemath.parse(from)!.toISOString(), - to: datemath.parse(to)!.toISOString(), + from, + to, parent, elasticsearchClient, savedObjectsClient, @@ -60,6 +44,16 @@ export function servicesRoutes({ return res.ok({ body: response }); } catch (error: unknown) { debug('Error while looking up SERVICE asset records', error); + + if (error instanceof AssetsValidationError) { + return res.customError({ + statusCode: error.statusCode, + body: { + message: `Error while looking up service asset records - ${error.message}`, + }, + }); + } + return res.customError({ statusCode: 500, body: { message: 'Error while looking up service asset records - ' + `${error}` }, diff --git a/x-pack/plugins/asset_manager/server/types.ts b/x-pack/plugins/asset_manager/server/types.ts index 431378c7c9a9f..a3e2b2346e383 100644 --- a/x-pack/plugins/asset_manager/server/types.ts +++ b/x-pack/plugins/asset_manager/server/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/server'; +import { ElasticsearchClient } from '@kbn/core/server'; import { ApmDataAccessPluginSetup, ApmDataAccessPluginStart, @@ -23,8 +23,3 @@ export interface AssetManagerPluginSetupDependencies { export interface AssetManagerPluginStartDependencies { apmDataAccess: ApmDataAccessPluginStart; } - -export interface AssetClientDependencies { - elasticsearchClient: ElasticsearchClient; - savedObjectsClient: SavedObjectsClientContract; -} diff --git a/x-pack/plugins/asset_manager/tsconfig.json b/x-pack/plugins/asset_manager/tsconfig.json index 35972189e5287..231cdfb4648e1 100644 --- a/x-pack/plugins/asset_manager/tsconfig.json +++ b/x-pack/plugins/asset_manager/tsconfig.json @@ -23,6 +23,9 @@ "@kbn/apm-data-access-plugin", "@kbn/core-http-browser-mocks", "@kbn/logging", - "@kbn/metrics-data-access-plugin" + "@kbn/metrics-data-access-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/core-saved-objects-api-server-mocks" ] } diff --git a/x-pack/plugins/metrics_data_access/server/client_mock.ts b/x-pack/plugins/metrics_data_access/server/client_mock.ts new file mode 100644 index 0000000000000..327c2890dd264 --- /dev/null +++ b/x-pack/plugins/metrics_data_access/server/client_mock.ts @@ -0,0 +1,23 @@ +/* + * 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 { MetricsDataClient } from './client/client'; + +export const MetricsDataClientMock = { + create: () => + ({ + getDefaultMetricIndices: jest.fn(async () => 'default-metrics-indices'), + getMetricIndices: jest.fn(async () => 'metric-indices'), + updateMetricIndices: jest.fn(async () => ({ + id: 'id', + type: 'mock-type', + attributes: { metricIndices: 'updated-indices' }, + references: [], + })), + setDefaultMetricIndicesHandler: jest.fn(), + } as unknown as MetricsDataClient), +}; diff --git a/x-pack/plugins/metrics_data_access/server/index.ts b/x-pack/plugins/metrics_data_access/server/index.ts index 919f5f357856e..e76f2201b340a 100644 --- a/x-pack/plugins/metrics_data_access/server/index.ts +++ b/x-pack/plugins/metrics_data_access/server/index.ts @@ -18,6 +18,7 @@ export type { export { metricsDataSourceSavedObjectName } from './saved_objects/metrics_data_source'; export { MetricsDataClient } from './client'; +export { MetricsDataClientMock } from './client_mock'; export function plugin(context: PluginInitializerContext) { return new MetricsDataPlugin(context); diff --git a/x-pack/test/api_integration/apis/asset_manager/config_with_assets_source.ts b/x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts similarity index 96% rename from x-pack/test/api_integration/apis/asset_manager/config_with_assets_source.ts rename to x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts index 8d499ea3b82a2..71f73f9acb1f3 100644 --- a/x-pack/test/api_integration/apis/asset_manager/config_with_assets_source.ts +++ b/x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts @@ -38,7 +38,7 @@ export default async function createTestConfig({ return { ...baseIntegrationTestsConfig.getAll(), - testFiles: [require.resolve('./tests/with_assets_source')], + testFiles: [require.resolve('./tests')], services: { ...services, assetsSynthtraceEsClient: (context: InheritedFtrProviderContext) => { @@ -87,7 +87,6 @@ export default async function createTestConfig({ serverArgs: [ ...baseIntegrationTestsConfig.get('kbnTestServer.serverArgs'), '--xpack.assetManager.alphaEnabled=true', - `--xpack.assetManager.lockedSource=assets`, ], }, }; diff --git a/x-pack/test/api_integration/apis/asset_manager/config_with_signals_source.ts b/x-pack/test/api_integration/apis/asset_manager/config_with_signals_source.ts deleted file mode 100644 index 1d1c94673e0db..0000000000000 --- a/x-pack/test/api_integration/apis/asset_manager/config_with_signals_source.ts +++ /dev/null @@ -1,98 +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 { - ApmSynthtraceEsClient, - ApmSynthtraceKibanaClient, - AssetsSynthtraceEsClient, - createLogger, - InfraSynthtraceEsClient, - LogLevel, -} from '@kbn/apm-synthtrace'; -import { FtrConfigProviderContext, kbnTestConfig } from '@kbn/test'; -import url from 'url'; -import { FtrProviderContext as InheritedFtrProviderContext } from '../../ftr_provider_context'; -import { InheritedServices } from './types'; - -interface AssetManagerConfig { - services: InheritedServices & { - assetsSynthtraceEsClient: ( - context: InheritedFtrProviderContext - ) => Promise; - infraSynthtraceEsClient: ( - context: InheritedFtrProviderContext - ) => Promise; - apmSynthtraceEsClient: (context: InheritedFtrProviderContext) => Promise; - }; -} - -export default async function createTestConfig({ - readConfigFile, -}: FtrConfigProviderContext): Promise { - const baseIntegrationTestsConfig = await readConfigFile(require.resolve('../../config.ts')); - const services = baseIntegrationTestsConfig.get('services'); - - return { - ...baseIntegrationTestsConfig.getAll(), - testFiles: [require.resolve('./tests/with_signals_source')], - services: { - ...services, - assetsSynthtraceEsClient: (context: InheritedFtrProviderContext) => { - return new AssetsSynthtraceEsClient({ - client: context.getService('es'), - logger: createLogger(LogLevel.info), - refreshAfterIndex: true, - }); - }, - infraSynthtraceEsClient: (context: InheritedFtrProviderContext) => { - return new InfraSynthtraceEsClient({ - client: context.getService('es'), - logger: createLogger(LogLevel.info), - refreshAfterIndex: true, - }); - }, - apmSynthtraceEsClient: async (context: InheritedFtrProviderContext) => { - const servers = baseIntegrationTestsConfig.get('servers'); - - const kibanaServer = servers.kibana as url.UrlObject; - const kibanaServerUrl = url.format(kibanaServer); - const kibanaServerUrlWithAuth = url - .format({ - ...url.parse(kibanaServerUrl), - auth: `elastic:${kbnTestConfig.getUrlParts().password}`, - }) - .slice(0, -1); - - const kibanaClient = new ApmSynthtraceKibanaClient({ - target: kibanaServerUrlWithAuth, - logger: createLogger(LogLevel.debug), - }); - const kibanaVersion = await kibanaClient.fetchLatestApmPackageVersion(); - await kibanaClient.installApmPackage(kibanaVersion); - - return new ApmSynthtraceEsClient({ - client: context.getService('es'), - logger: createLogger(LogLevel.info), - version: kibanaVersion, - refreshAfterIndex: true, - }); - }, - }, - kbnTestServer: { - ...baseIntegrationTestsConfig.get('kbnTestServer'), - serverArgs: [ - ...baseIntegrationTestsConfig.get('kbnTestServer.serverArgs'), - '--xpack.assetManager.alphaEnabled=true', - `--xpack.assetManager.lockedSource=signals`, - ], - }, - }; -} - -export type CreateTestConfig = Awaited>; - -export type AssetManagerServices = CreateTestConfig['services']; diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets.ts b/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts similarity index 98% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/assets.ts index f5069a274ebb3..7514513971688 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts @@ -7,9 +7,9 @@ import { AssetWithoutTimestamp } from '@kbn/assetManager-plugin/common/types_api'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from '../helpers'; -import { ASSETS_ENDPOINT } from '../constants'; +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from './helpers'; +import { ASSETS_ENDPOINT } from './constants'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_diff.ts b/x-pack/test/api_integration/apis/asset_manager/tests/assets_diff.ts similarity index 98% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_diff.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/assets_diff.ts index 15cf1a64dafaa..79c2db74d3f95 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_diff.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/assets_diff.ts @@ -9,9 +9,9 @@ import { sortBy } from 'lodash'; import { AssetWithoutTimestamp } from '@kbn/assetManager-plugin/common/types_api'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from '../helpers'; -import { ASSETS_ENDPOINT } from '../constants'; +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from './helpers'; +import { ASSETS_ENDPOINT } from './constants'; const DIFF_ENDPOINT = `${ASSETS_ENDPOINT}/diff`; diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_related.ts b/x-pack/test/api_integration/apis/asset_manager/tests/assets_related.ts similarity index 98% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_related.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/assets_related.ts index 2cb05d89ed618..58d4988fd7ab4 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/assets_related.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/assets_related.ts @@ -9,9 +9,9 @@ import { pick } from 'lodash'; import { Asset, AssetWithoutTimestamp } from '@kbn/assetManager-plugin/common/types_api'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from '../helpers'; -import { ASSETS_ENDPOINT } from '../constants'; +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from './helpers'; +import { ASSETS_ENDPOINT } from './constants'; const RELATED_ASSETS_ENDPOINT = `${ASSETS_ENDPOINT}/related`; diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/basics.ts b/x-pack/test/api_integration/apis/asset_manager/tests/basics.ts similarity index 87% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/basics.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/basics.ts index ea64d5898b265..d0d44b88f68c1 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/basics.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/basics.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); @@ -21,8 +21,8 @@ export default function ({ getService }: FtrProviderContext) { }); describe('assets index templates', () => { - it('should not be installed', async () => { - await esSupertest.get('/_index_template/assets').expect(404); + it('should always be installed', async () => { + await esSupertest.get('/_index_template/assets').expect(200); }); }); }); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/hosts.ts b/x-pack/test/api_integration/apis/asset_manager/tests/hosts.ts similarity index 94% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/hosts.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/hosts.ts index 87b9a96944b56..1dab6373ddc9b 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/hosts.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/hosts.ts @@ -7,8 +7,8 @@ import { timerange, infra } from '@kbn/apm-synthtrace-client'; import expect from '@kbn/expect'; -import { ASSETS_ENDPOINT } from '../constants'; -import { FtrProviderContext } from '../../types'; +import { ASSETS_ENDPOINT } from './constants'; +import { FtrProviderContext } from '../types'; const HOSTS_ASSETS_ENDPOINT = `${ASSETS_ENDPOINT}/hosts`; diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/index.ts b/x-pack/test/api_integration/apis/asset_manager/tests/index.ts similarity index 73% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/index.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/index.ts index d92db4cff9958..f64733fa2e062 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/index.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/index.ts @@ -4,11 +4,13 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { - describe('Asset Manager API Endpoints - with assets source', () => { + describe('Asset Manager API Endpoints', () => { loadTestFile(require.resolve('./basics')); + loadTestFile(require.resolve('./hosts')); + loadTestFile(require.resolve('./services')); loadTestFile(require.resolve('./sample_assets')); loadTestFile(require.resolve('./assets')); loadTestFile(require.resolve('./assets_diff')); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/sample_assets.ts b/x-pack/test/api_integration/apis/asset_manager/tests/sample_assets.ts similarity index 98% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/sample_assets.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/sample_assets.ts index 618f5f49f8892..a9e7ebab188e8 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/sample_assets.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/sample_assets.ts @@ -7,8 +7,8 @@ import { Asset } from '@kbn/assetManager-plugin/common/types_api'; import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from '../helpers'; +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { createSampleAssets, deleteSampleAssets, viewSampleAssetDocs } from './helpers'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/services.ts b/x-pack/test/api_integration/apis/asset_manager/tests/services.ts similarity index 95% rename from x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/services.ts rename to x-pack/test/api_integration/apis/asset_manager/tests/services.ts index 1dea627a2a918..dc00a025021c0 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/services.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/services.ts @@ -8,8 +8,8 @@ import { omit } from 'lodash'; import { apm, timerange } from '@kbn/apm-synthtrace-client'; import expect from '@kbn/expect'; -import { ASSETS_ENDPOINT } from '../constants'; -import { FtrProviderContext } from '../../types'; +import { ASSETS_ENDPOINT } from './constants'; +import { FtrProviderContext } from '../types'; const SERVICES_ASSETS_ENDPOINT = `${ASSETS_ENDPOINT}/services`; @@ -49,7 +49,7 @@ export default function ({ getService }: FtrProviderContext) { .query({ from, to, - parent: 'my-host-1', + parent: 'host:my-host-1', }) .expect(200); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/basics.ts b/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/basics.ts deleted file mode 100644 index 451d49605a213..0000000000000 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_assets_source/basics.ts +++ /dev/null @@ -1,29 +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 expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const esSupertest = getService('esSupertest'); - - describe('during basic startup', () => { - describe('ping endpoint', () => { - it('returns a successful response', async () => { - const response = await supertest.get('/api/asset-manager/ping').expect(200); - expect(response.body).to.eql({ message: 'Asset Manager OK' }); - }); - }); - - describe('assets index template', () => { - it('should be installed', async () => { - await esSupertest.get('/_index_template/assets').expect(200); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/index.ts b/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/index.ts deleted file mode 100644 index 7c9c5fb4ae626..0000000000000 --- a/x-pack/test/api_integration/apis/asset_manager/tests/with_signals_source/index.ts +++ /dev/null @@ -1,15 +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 { FtrProviderContext } from '../../../../ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('Asset Manager API Endpoints - with signals source', () => { - loadTestFile(require.resolve('./basics')); - loadTestFile(require.resolve('./hosts')); - loadTestFile(require.resolve('./services')); - }); -} diff --git a/x-pack/test/api_integration/apis/asset_manager/types.ts b/x-pack/test/api_integration/apis/asset_manager/types.ts index ba52dcb88a5b6..3a2b1656928fc 100644 --- a/x-pack/test/api_integration/apis/asset_manager/types.ts +++ b/x-pack/test/api_integration/apis/asset_manager/types.ts @@ -7,7 +7,7 @@ import { GenericFtrProviderContext } from '@kbn/test'; import { FtrProviderContext as InheritedFtrProviderContext } from '../../ftr_provider_context'; -import { AssetManagerServices } from './config_with_signals_source'; +import { AssetManagerServices } from './config_when_enabled'; export type InheritedServices = InheritedFtrProviderContext extends GenericFtrProviderContext< infer TServices, From 620ee8d185a7e95d5b2a1c51e4297698ff49529a Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Wed, 4 Oct 2023 18:17:13 -0400 Subject: [PATCH 20/27] Fix EuiBottomBar in serverless (#166840) --- .../src/ui/project/navigation.tsx | 1 + src/core/public/styles/_base.scss | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/navigation.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/navigation.tsx index ae5c8c773e449..adc6b3f28c2e5 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/navigation.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/navigation.tsx @@ -20,6 +20,7 @@ export const ProjectNavigation: React.FC = ({ children }) => { return ( Date: Wed, 4 Oct 2023 18:26:49 -0400 Subject: [PATCH 21/27] [Cloud Security][Telemetry] Create a unified cloud accounts collector (#167203) ## Summary Summarize your PR. If it involves visual changes include a screenshot or gif. Adds Cloud Security Telemetry to track all cloud accounts from products `CSPM`,`KSPM`, and`CNVM` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../get_identifier_runtime_mapping.ts | 1 - .../get_package_policy_id_mapping.ts | 23 + ...et_safe_kspm_cluster_id_runtime_mapping.ts | 2 +- .../cloud_accounts_stats_collector.ts | 411 ++++++++++++++++++ .../installation_stats_collector.ts | 59 ++- .../lib/telemetry/collectors/register.ts | 4 + .../server/lib/telemetry/collectors/schema.ts | 26 ++ .../server/lib/telemetry/collectors/types.ts | 112 ++++- .../schema/xpack_plugins.json | 66 +++ 9 files changed, 699 insertions(+), 5 deletions(-) create mode 100644 x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts create mode 100644 x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts index 7a732b9ae62e6..e077574d449ec 100644 --- a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts +++ b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts @@ -20,7 +20,6 @@ export const getIdentifierRuntimeMapping = (): MappingRuntimeFields => ({ !doc["rule.benchmark.posture_type"].empty; def orchestratorIdAvailable = doc.containsKey("orchestrator.cluster.id") && !doc["orchestrator.cluster.id"].empty; - if (!postureTypeAvailable) { def identifier = orchestratorIdAvailable ? doc["orchestrator.cluster.id"].value : doc["cluster_id"].value; diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts new file mode 100644 index 0000000000000..5d76176758af6 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts @@ -0,0 +1,23 @@ +/* + * 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 { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +export const getPackagePolicyIdRuntimeMapping = (): MappingRuntimeFields => ({ + package_policy_identifier: { + type: 'keyword', + script: { + source: ` + def packagePolicyIdAvailable = doc.containsKey("cloud_security_posture.package_policy.id") && + !doc["cloud_security_posture.package_policy.id"].empty; + if (packagePolicyIdAvailable) { + emit(doc["cloud_security_posture.package_policy.id"].value); + } + `, + }, + }, +}); diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_kspm_cluster_id_runtime_mapping.ts b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_kspm_cluster_id_runtime_mapping.ts index 4baa297781472..eed3eba2f7220 100644 --- a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_kspm_cluster_id_runtime_mapping.ts +++ b/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_kspm_cluster_id_runtime_mapping.ts @@ -20,7 +20,7 @@ export const getSafeKspmClusterIdRuntimeMapping = (): MappingRuntimeFields => ({ !doc["orchestrator.cluster.id"].empty; def clusterIdAvailable = doc.containsKey("cluster_id") && !doc["cluster_id"].empty; - + if (orchestratorIdAvailable) { emit(doc["orchestrator.cluster.id"].value); } else if (clusterIdAvailable) { diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts new file mode 100644 index 0000000000000..82de2d010a35e --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts @@ -0,0 +1,411 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import type { Logger } from '@kbn/core/server'; +import type { SearchRequest } from '@elastic/elasticsearch/lib/api/types'; +import { getPackagePolicyIdRuntimeMapping } from '../../../../common/runtime_mappings/get_package_policy_id_mapping'; +import { getIdentifierRuntimeMapping } from '../../../../common/runtime_mappings/get_identifier_runtime_mapping'; +import { calculatePostureScore } from '../../../../common/utils/helpers'; +import type { + AccountEntity, + AccountsStats, + CloudProviderKey, + CloudSecurityAccountsStats, +} from './types'; +import { + CSPM_POLICY_TEMPLATE, + KSPM_POLICY_TEMPLATE, + LATEST_FINDINGS_INDEX_DEFAULT_NS, + LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, + VULN_MGMT_POLICY_TEMPLATE, +} from '../../../../common/constants'; + +export const getPostureAccountsStatsQuery = (index: string): SearchRequest => ({ + index, + runtime_mappings: { ...getIdentifierRuntimeMapping(), ...getPackagePolicyIdRuntimeMapping() }, + query: { + match_all: {}, + }, + aggs: { + accounts: { + terms: { + field: 'asset_identifier', + order: { + _count: 'desc', + }, + size: 100, + }, + aggs: { + cloud_provider: { + top_metrics: { + metrics: { + field: 'cloud.provider', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + latest_doc_updated_timestamp: { + top_metrics: { + metrics: { + field: '@timestamp', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + benchmark_id: { + top_metrics: { + metrics: { + field: 'rule.benchmark.id', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + benchmark_version: { + top_metrics: { + metrics: { + field: 'rule.benchmark.version', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + benchmark_name: { + top_metrics: { + metrics: { + field: 'rule.benchmark.name', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + passed_findings_count: { + filter: { + bool: { + filter: [ + { + bool: { + should: [ + { + term: { + 'result.evaluation': 'passed', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + }, + failed_findings_count: { + filter: { + bool: { + filter: [ + { + bool: { + should: [ + { + term: { + 'result.evaluation': 'failed', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + }, + // KSPM QUERY FIELDS + kubernetes_version: { + top_metrics: { + metrics: { + field: 'cloudbeat.kubernetes.version', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + resources: { + filter: { + bool: { + filter: [ + { + bool: { + should: [ + { + term: { + 'resource.sub_type': 'Pod', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + aggs: { + pods_count: { + cardinality: { + field: 'resource.id', + }, + }, + }, + }, + nodes_count: { + cardinality: { + field: 'host.name', + }, + }, + agents_count: { + cardinality: { + field: 'agent.id', + }, + }, + package_policy_id: { + terms: { + field: 'package_policy_identifier', + order: { + _count: 'desc', + }, + size: 100, + }, + }, + }, + }, + }, + + size: 0, + _source: false, +}); + +export const getVulnMgmtAccountsStatsQuery = (index: string): SearchRequest => ({ + index, + runtime_mappings: getPackagePolicyIdRuntimeMapping(), + query: { + match_all: {}, + }, + aggs: { + accounts: { + terms: { + field: 'cloud.account.id', + order: { + _count: 'desc', + }, + size: 100, + }, + aggs: { + latest_doc_updated_timestamp: { + top_metrics: { + metrics: { + field: '@timestamp', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + cloud_provider: { + top_metrics: { + metrics: { + field: 'cloud.provider', + }, + size: 1, + sort: { + '@timestamp': 'desc', + }, + }, + }, + package_policy_id: { + terms: { + field: 'package_policy_identifier', + order: { + _count: 'desc', + }, + size: 100, + }, + }, + }, + }, + }, + size: 0, + _source: false, +}); + +const cloudBaseStats = (account: AccountEntity) => ({ + account_id: account.key, + latest_doc_count: account.doc_count, + latest_doc_updated_timestamp: account.latest_doc_updated_timestamp.top[0].metrics['@timestamp'], + cloud_provider: account.cloud_provider.top[0].metrics['cloud.provider'], + package_policy_id: account.package_policy_id?.buckets[0]?.key ?? null, +}); + +const getPostureManagementStats = (account: AccountEntity) => ({ + posture_management_stats: { + posture_score: calculatePostureScore( + account.passed_findings_count.doc_count, + account.failed_findings_count.doc_count + ), + passed_findings_count: account.passed_findings_count.doc_count, + failed_findings_count: account.failed_findings_count.doc_count, + benchmark_name: account.benchmark_name.top[0].metrics['rule.benchmark.name'], + benchmark_version: account.benchmark_version.top[0].metrics['rule.benchmark.version'], + }, +}); + +const getKspmStats = (account: AccountEntity) => ({ + kspm_stats: { + kubernetes_version: account.kubernetes_version.top[0].metrics['cloudbeat.kubernetes.version'], + agents_count: account.agents_count.value, + nodes_count: account.nodes_count.value, + pods_count: account.resources.pods_count.value, + }, +}); + +const kspmCloudProviders: Record = { + cis_eks: 'aws', + cis_gke: 'gcp', + cis_k8s: null, + cis_ake: 'azure', +}; +const cspmBenchmarkIds = ['cis_aws', 'cis_azure', 'cis_gcp']; +const kspmBenchmarkIds = ['cis_eks', 'cis_ake', 'cis_gke', 'cis_k8s']; + +const getCloudProvider = (ruleBenchmarkId: CloudProviderKey) => { + return kspmCloudProviders[ruleBenchmarkId]; +}; + +const getPostureType = (ruleBenchmarkId: string) => { + if (cspmBenchmarkIds.includes(ruleBenchmarkId)) { + return CSPM_POLICY_TEMPLATE; + } else if (kspmBenchmarkIds.includes(ruleBenchmarkId)) { + return KSPM_POLICY_TEMPLATE; + } + return undefined; +}; + +export const getCloudAccountsStats = ( + aggregatedResourcesStats: AccountsStats, + logger: Logger +): CloudSecurityAccountsStats[] => { + const accounts = aggregatedResourcesStats.accounts.buckets; + + const cloudAccountsStats = accounts.map((account) => { + const cloudAccount = cloudBaseStats(account); + const postureType = getPostureType( + account.benchmark_id?.top?.[0]?.metrics['rule.benchmark.id'] + ); + + if (!postureType) { + return { + ...cloudAccount, + product: VULN_MGMT_POLICY_TEMPLATE, + }; + } + + if (postureType === CSPM_POLICY_TEMPLATE) { + return { + ...cloudAccount, + product: CSPM_POLICY_TEMPLATE, + ...getPostureManagementStats(account), + }; + } + + return { + ...cloudAccount, + product: KSPM_POLICY_TEMPLATE, + ...getPostureManagementStats(account), + ...getKspmStats(account), + cloud_provider: getCloudProvider( + account.benchmark_id.top[0].metrics['rule.benchmark.id'] as CloudProviderKey + ), + }; + }); + + logger.info('Cloud Account Stats telemetry: accounts stats was sent'); + + return cloudAccountsStats; +}; + +export const getIndexAccountStats = async ( + esClient: ElasticsearchClient, + logger: Logger, + index: string, + getAccountQuery: (index: string) => SearchRequest +) => { + const accountsStatsResponse = await esClient.search( + getAccountQuery(index) + ); + + return accountsStatsResponse.aggregations + ? getCloudAccountsStats(accountsStatsResponse.aggregations, logger) + : []; +}; + +export const getAllCloudAccountsStats = async ( + esClient: ElasticsearchClient, + logger: Logger +): Promise => { + try { + const indices = [LATEST_FINDINGS_INDEX_DEFAULT_NS, LATEST_VULNERABILITIES_INDEX_DEFAULT_NS]; + const [findingIndex, vulnerabilitiesIndex] = await Promise.all( + indices.map(async (index) => ({ + exists: await esClient.indices.exists({ + index, + }), + name: index, + })) + ); + + let postureIndexAccountStats: CloudSecurityAccountsStats[] = []; + let vulnerabilityIndexAccountStats: CloudSecurityAccountsStats[] = []; + + if (!findingIndex.exists && !vulnerabilitiesIndex.exists) return []; + if (findingIndex.exists) { + postureIndexAccountStats = await getIndexAccountStats( + esClient, + logger, + findingIndex.name, + getPostureAccountsStatsQuery + ); + } + + if (vulnerabilitiesIndex.exists) { + vulnerabilityIndexAccountStats = await getIndexAccountStats( + esClient, + logger, + vulnerabilitiesIndex.name, + getVulnMgmtAccountsStatsQuery + ); + } + + return [...postureIndexAccountStats, ...vulnerabilityIndexAccountStats]; + } catch (e) { + logger.error(`Failed to get cloud account stats v2 ${e}`); + logger.error(`Failed to get cloud account stats v2 ${e.stack}`); + return []; + } +}; diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts index 038ed35abac97..25211172d7c89 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts @@ -13,15 +13,69 @@ import { SO_SEARCH_LIMIT, } from '@kbn/fleet-plugin/common'; import { agentPolicyService } from '@kbn/fleet-plugin/server/services'; -import type { CloudSecurityInstallationStats } from './types'; +import type { + CloudbeatConfigKeyType, + CloudSecurityInstallationStats, + SetupAccessOption, +} from './types'; import type { CspServerPluginStart, CspServerPluginStartDeps } from '../../../types'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../../common/constants'; +interface CredentialMappings { + 'gcp.credentials.file': 'credentials file'; + 'gcp.credentials.json': 'credentials json'; + shared_credential_file: 'credentials file'; + role_arn: 'role'; +} + const getEnabledInputStreamVars = (packagePolicy: PackagePolicy) => { const enabledInput = packagePolicy.inputs.find((input) => input.enabled); return enabledInput?.streams[0].vars; }; +const getEnabledIsSetupAutomatic = (packagePolicy: PackagePolicy) => { + const cloudbeatConfig: Record = { + 'cloudbeat/cis_aws': 'cloud_formation_template_url', + 'cloudbeat/vuln_mgmt_aws': 'cloud_formation_template_url', + 'cloudbeat/cis_gcp': 'cloud_shell_url', + 'cloudbeat/cis_azure': 'arm_template_url', + }; + + const enabledInput = packagePolicy.inputs.find((input) => input.enabled); + + if (!enabledInput) return false; + + const configKey = cloudbeatConfig[enabledInput.type as CloudbeatConfigKeyType]; + + return !!configKey && !!enabledInput.config?.[configKey]?.value; +}; + +const getSetupAccessOption = ( + packagePolicy: PackagePolicy +): CloudSecurityInstallationStats['setup_access_option'] => { + const inputStreamVars = getEnabledInputStreamVars(packagePolicy); + + if (!inputStreamVars) return null; + + const credentialMappings: Record = { + 'gcp.credentials.file': 'credentials file', + 'gcp.credentials.json': 'credentials json', + shared_credential_file: 'credentials file', + role_arn: 'role', + }; + + for (const [key, config] of Object.entries(inputStreamVars)) { + if (config?.value && credentialMappings[key as keyof CredentialMappings]) { + return credentialMappings[key as keyof CredentialMappings]; + } + } + + if (inputStreamVars.session_token) return 'temporary access'; + if (inputStreamVars.access_key && inputStreamVars.secret_access_key) return 'direct access'; + + return null; +}; + const getAccountTypeField = ( packagePolicy: PackagePolicy ): CloudSecurityInstallationStats['account_type'] => { @@ -47,6 +101,7 @@ const getInstalledPackagePolicies = ( const agentCounts = agentPolicies?.find((agentPolicy) => agentPolicy?.id === packagePolicy.policy_id)?.agents ?? 0; + const isSetupAutomatic = getEnabledIsSetupAutomatic(packagePolicy); return { package_policy_id: packagePolicy.id, @@ -57,6 +112,8 @@ const getInstalledPackagePolicies = ( agent_policy_id: packagePolicy.policy_id, agent_count: agentCounts, account_type: getAccountTypeField(packagePolicy), + is_setup_automatic: isSetupAutomatic, + setup_access_option: isSetupAutomatic ? null : getSetupAccessOption(packagePolicy), }; } ); diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts index f41497cd80bb4..919adae18446c 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts @@ -16,6 +16,7 @@ import { getAccountsStats } from './accounts_stats_collector'; import { getRulesStats } from './rules_stats_collector'; import { getInstallationStats } from './installation_stats_collector'; import { getAlertsStats } from './alert_stats_collector'; +import { getAllCloudAccountsStats } from './cloud_accounts_stats_collector'; export function registerCspmUsageCollector( logger: Logger, @@ -58,6 +59,7 @@ export function registerCspmUsageCollector( rulesStats, installationStats, alertsStats, + cloudAccountStats, ] = await Promise.all([ awaitPromiseSafe('Indices', getIndicesStats(esClient, soClient, coreServices, logger)), awaitPromiseSafe('Accounts', getAccountsStats(esClient, logger)), @@ -68,6 +70,7 @@ export function registerCspmUsageCollector( getInstallationStats(esClient, soClient, coreServices, logger) ), awaitPromiseSafe('Alerts', getAlertsStats(esClient, logger)), + awaitPromiseSafe('Cloud Accounts', getAllCloudAccountsStats(esClient, logger)), ]); return { indices: indicesStats, @@ -76,6 +79,7 @@ export function registerCspmUsageCollector( rules_stats: rulesStats, installation_stats: installationStats, alerts_stats: alertsStats, + cloud_account_stats: cloudAccountStats, }; }, schema: cspmUsageSchema, diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts index 5441992618192..498566b7cb082 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts @@ -154,6 +154,8 @@ export const cspmUsageSchema: MakeSchemaFrom = { created_at: { type: 'date' }, agent_count: { type: 'long' }, account_type: { type: 'keyword' }, + is_setup_automatic: { type: 'boolean' }, + setup_access_option: { type: 'keyword' }, }, }, alerts_stats: { @@ -167,4 +169,28 @@ export const cspmUsageSchema: MakeSchemaFrom = { alerts_acknowledged_count: { type: 'long' }, }, }, + cloud_account_stats: { + type: 'array', + items: { + account_id: { type: 'keyword' }, + cloud_provider: { type: 'keyword' }, + product: { type: 'keyword' }, + package_policy_id: { type: 'keyword' }, + latest_doc_count: { type: 'long' }, + latest_doc_updated_timestamp: { type: 'date' }, + posture_management_stats: { + posture_score: { type: 'long' }, + benchmark_name: { type: 'keyword' }, + benchmark_version: { type: 'keyword' }, + passed_findings_count: { type: 'long' }, + failed_findings_count: { type: 'long' }, + }, + kspm_stats: { + kubernetes_version: { type: 'keyword' }, + agents_count: { type: 'short' }, + nodes_count: { type: 'short' }, + pods_count: { type: 'short' }, + }, + }, + }, }; diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts index f1162e24d3168..cb8d6eec64dcb 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { AggregationsMultiBucketBase } from '@elastic/elasticsearch/lib/api/types'; import { CspStatusCode } from '../../../../common/types'; export type CloudSecurityUsageCollectorType = @@ -13,7 +14,15 @@ export type CloudSecurityUsageCollectorType = | 'Resources' | 'Rules' | 'Installation' - | 'Alerts'; + | 'Alerts' + | 'Cloud Accounts'; + +export type CloudProviderKey = 'cis_eks' | 'cis_gke' | 'cis_k8s' | 'cis_ake'; +export type CloudbeatConfigKeyType = + | 'cloudbeat/cis_aws' + | 'cloudbeat/vuln_mgmt_aws' + | 'cloudbeat/cis_gcp' + | 'cloudbeat/cis_azure'; export interface CspmUsage { indices: CspmIndicesStats; @@ -22,6 +31,7 @@ export interface CspmUsage { rules_stats: CspmRulesStats[]; installation_stats: CloudSecurityInstallationStats[]; alerts_stats: CloudSecurityAlertsStats[]; + cloud_account_stats: CloudSecurityAccountsStats[]; } export interface PackageSetupStatus { @@ -58,6 +68,32 @@ export interface CspmResourcesStats { passed_findings_count: number; failed_findings_count: number; } + +export interface CloudSecurityAccountsStats { + account_id: string; + product: string; + cloud_provider: string | null; + package_policy_id: string | null; + posture_management_stats?: CloudPostureAccountsStats; + kspm_stats?: KSPMAccountsStats; + latest_doc_count: number; + latest_doc_updated_timestamp: string; +} +export interface CloudPostureAccountsStats { + posture_score: number; + benchmark_name: string; + benchmark_version: string; + passed_findings_count: number; + failed_findings_count: number; +} + +export interface KSPMAccountsStats { + kubernetes_version: string | null; + agents_count: number; + nodes_count: number; + pods_count: number; +} + export interface CspmAccountsStats { account_id: string; posture_score: number; @@ -65,9 +101,9 @@ export interface CspmAccountsStats { benchmark_id: string; benchmark_name: string; benchmark_version: string; - kubernetes_version: string | null; passed_findings_count: number; failed_findings_count: number; + kubernetes_version: string | null; agents_count: number; nodes_count: number; pods_count: number; @@ -87,6 +123,13 @@ export interface CspmRulesStats { failed_findings_count: number; } +export type SetupAccessOption = + | 'temporary access' + | 'direct access' + | 'role' + | 'credentials file' + | 'credentials json' + | null; export interface CloudSecurityInstallationStats { package_policy_id: string; feature: string; @@ -95,7 +138,9 @@ export interface CloudSecurityInstallationStats { deployment_mode: string; created_at: string; agent_count: number; + is_setup_automatic: boolean; account_type?: 'single-account' | 'organization-account'; + setup_access_option: SetupAccessOption; } export interface CloudSecurityAlertsStats { @@ -106,3 +151,66 @@ export interface CloudSecurityAlertsStats { alerts_closed_count: number; alerts_acknowledged_count: number; } + +export interface Value { + value: number; +} +export interface BenchmarkName { + metrics: { 'rule.benchmark.name': string }; +} + +export interface BenchmarkVersion { + metrics: { 'rule.benchmark.version': string }; +} + +export interface BenchmarkId { + metrics: { 'rule.benchmark.id': string }; +} + +export interface CloudProvider { + metrics: { 'cloud.provider': string }; +} + +export interface KubernetesVersion { + metrics: { 'cloudbeat.kubernetes.version': string }; +} + +export interface PackagePolicyId { + metrics: { 'cloud_security_posture.package_policy.id': string }; +} + +export interface LatestDocTimestamp { + metrics: { '@timestamp': string }; +} + +export interface AccountsStats { + accounts: { + buckets: AccountEntity[]; + }; +} +export interface AccountEntity { + key: string; // account_id + doc_count: number; // latest findings doc count + passed_findings_count: AggregationsMultiBucketBase; + failed_findings_count: AggregationsMultiBucketBase; + package_policy_id: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: Array<{ + key: string; // package_policy_id + doc_count: number; + }>; + }; + cloud_provider: { top: CloudProvider[] }; + latest_doc_updated_timestamp: { top: LatestDocTimestamp[] }; + benchmark_id: { top: BenchmarkId[] }; + benchmark_name: { top: BenchmarkName[] }; + benchmark_version: { top: BenchmarkVersion[] }; + kubernetes_version: { top: KubernetesVersion[] }; + agents_count: Value; + nodes_count: Value; + pods_count: Value; + resources: { + pods_count: Value; + }; +} diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index be6ceb1dab3b7..69002ce27c593 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -7604,6 +7604,12 @@ }, "account_type": { "type": "keyword" + }, + "is_setup_automatic": { + "type": "boolean" + }, + "setup_access_option": { + "type": "keyword" } } } @@ -7632,6 +7638,66 @@ } } } + }, + "cloud_account_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "cloud_provider": { + "type": "keyword" + }, + "product": { + "type": "keyword" + }, + "package_policy_id": { + "type": "keyword" + }, + "latest_doc_count": { + "type": "long" + }, + "latest_doc_updated_timestamp": { + "type": "date" + }, + "posture_management_stats": { + "properties": { + "posture_score": { + "type": "long" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + } + } + }, + "kspm_stats": { + "properties": { + "kubernetes_version": { + "type": "keyword" + }, + "agents_count": { + "type": "short" + }, + "nodes_count": { + "type": "short" + }, + "pods_count": { + "type": "short" + } + } + } + } + } } } }, From 99266280ff5af8e4bf1cb0728cf061b79e9e797c Mon Sep 17 00:00:00 2001 From: Garrett Spong Date: Wed, 4 Oct 2023 17:03:04 -0600 Subject: [PATCH 22/27] [Security Solution][Elastic AI Assistant] Fixes get Knowledge Base status not using the default model (#168040) ## Summary After the introduction of https://github.com/elastic/kibana/pull/167522 which fetches the default ELSER model, we weren't instantiating the `esStore` within the get Knowledge Base status route with the default model, so it was falling back to `.elser_model_1` and failing to report the correct status in the UI (even though all documents were loaded). Also updated the evaluation endpoint to use the `getElser` default model when instantiating agents to evaluate. --- .../elasticsearch_store/elasticsearch_store.test.ts | 10 +++++----- .../elasticsearch_store/elasticsearch_store.ts | 2 +- .../langchain/embeddings/elasticsearch_embeddings.ts | 2 +- .../langchain/executors/openai_functions_executor.ts | 3 ++- x-pack/plugins/elastic_assistant/server/plugin.ts | 2 +- .../server/routes/evaluate/post_evaluate.ts | 11 +++++++++-- .../knowledge_base/get_knowledge_base_status.ts | 10 +++++++--- 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.test.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.test.ts index d645aaa7b2656..94ac161d7abb1 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.test.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.test.ts @@ -104,7 +104,7 @@ describe('ElasticsearchStore', () => { inference: { field_map: { text: 'text_field' }, inference_config: { text_expansion: { results_field: 'tokens' } }, - model_id: '.elser_model_1', + model_id: '.elser_model_2', target_field: 'vector', }, }, @@ -130,12 +130,12 @@ describe('ElasticsearchStore', () => { trained_model_configs: [{ fully_defined: true }], } as MlGetTrainedModelsResponse); - const isInstalled = await esStore.isModelInstalled('.elser_model_1'); + const isInstalled = await esStore.isModelInstalled('.elser_model_2'); expect(isInstalled).toBe(true); expect(mockEsClient.ml.getTrainedModels).toHaveBeenCalledWith({ include: 'definition_status', - model_id: '.elser_model_1', + model_id: '.elser_model_2', }); }); }); @@ -217,7 +217,7 @@ describe('ElasticsearchStore', () => { }, vector: { tokens: {}, - model_id: '.elser_model_1', + model_id: '.elser_model_2', }, text: 'documents', }, @@ -242,7 +242,7 @@ describe('ElasticsearchStore', () => { { text_expansion: { 'vector.tokens': { - model_id: '.elser_model_1', + model_id: '.elser_model_2', model_text: query, }, }, diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.ts index fc8b686552c73..99ce5fd39439d 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/elasticsearch_store/elasticsearch_store.ts @@ -54,7 +54,7 @@ export class ElasticsearchStore extends VectorStore { this.esClient = esClient; this.index = index ?? KNOWLEDGE_BASE_INDEX_PATTERN; this.logger = logger; - this.model = model ?? '.elser_model_1'; + this.model = model ?? '.elser_model_2'; } /** diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/embeddings/elasticsearch_embeddings.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/embeddings/elasticsearch_embeddings.ts index b95d665b503fe..be7babb36ab89 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/embeddings/elasticsearch_embeddings.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/embeddings/elasticsearch_embeddings.ts @@ -22,7 +22,7 @@ export class ElasticsearchEmbeddings extends Embeddings { /** * TODO: Use inference API if not re-indexing to create embedding vectors, e.g. * - * POST _ml/trained_models/.elser_model_1/_infer + * POST _ml/trained_models/.elser_model_2/_infer * { * "docs":[{"text_field": "The fool doth think he is wise, but the wise man knows himself to be a fool."}] * } diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts index f1c85211975b6..608b15eed384f 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts @@ -25,6 +25,7 @@ export const callOpenAIFunctionsExecutor = async ({ actions, connectorId, esClient, + elserId, langChainMessages, llmType, logger, @@ -44,7 +45,7 @@ export const callOpenAIFunctionsExecutor = async ({ }); // ELSER backed ElasticsearchStore for Knowledge Base - const esStore = new ElasticsearchStore(esClient, KNOWLEDGE_BASE_INDEX_PATTERN, logger); + const esStore = new ElasticsearchStore(esClient, KNOWLEDGE_BASE_INDEX_PATTERN, logger, elserId); const chain = RetrievalQAChain.fromLLM(llm, esStore.asRetriever()); const tools: Tool[] = [ diff --git a/x-pack/plugins/elastic_assistant/server/plugin.ts b/x-pack/plugins/elastic_assistant/server/plugin.ts index dbe32ebe16efc..827b428c97803 100755 --- a/x-pack/plugins/elastic_assistant/server/plugin.ts +++ b/x-pack/plugins/elastic_assistant/server/plugin.ts @@ -91,7 +91,7 @@ export class ElasticAssistantPlugin // Actions Connector Execute (LLM Wrapper) postActionsConnectorExecuteRoute(router, getElserId); // Evaluate - postEvaluateRoute(router); + postEvaluateRoute(router, getElserId); return { actions: plugins.actions, }; diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts index 8a4305dfb43db..ed3ff729b623e 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts @@ -12,7 +12,7 @@ import { v4 as uuidv4 } from 'uuid'; import { buildResponse } from '../../lib/build_response'; import { buildRouteValidation } from '../../schemas/common'; -import { ElasticAssistantRequestHandlerContext } from '../../types'; +import { ElasticAssistantRequestHandlerContext, GetElser } from '../../types'; import { EVALUATE } from '../../../common/constants'; import { PostEvaluateBody, PostEvaluatePathQuery } from '../../schemas/evaluate/post_evaluate'; import { performEvaluation } from '../../lib/model_evaluator/evaluation'; @@ -36,7 +36,10 @@ const AGENT_EXECUTOR_MAP: Record = { OpenAIFunctionsExecutor: callOpenAIFunctionsExecutor, }; -export const postEvaluateRoute = (router: IRouter) => { +export const postEvaluateRoute = ( + router: IRouter, + getElser: GetElser +) => { router.post( { path: EVALUATE, @@ -89,6 +92,9 @@ export const postEvaluateRoute = (router: IRouter = { ...request, @@ -115,6 +121,7 @@ export const postEvaluateRoute = (router: IRouter Date: Wed, 4 Oct 2023 19:30:45 -0700 Subject: [PATCH 23/27] [Reporting] Improve language for error when CSV row total was indeterminable (#167843) ## Summary Closes https://github.com/elastic/kibana/issues/153250 --- .../__snapshots__/generate_csv.test.ts.snap | 28 +- .../kbn-generate-csv/src/generate_csv.test.ts | 1557 +++++++++-------- packages/kbn-generate-csv/src/generate_csv.ts | 10 +- packages/kbn-generate-csv/src/i18n_texts.ts | 6 + 4 files changed, 810 insertions(+), 791 deletions(-) diff --git a/packages/kbn-generate-csv/src/__snapshots__/generate_csv.test.ts.snap b/packages/kbn-generate-csv/src/__snapshots__/generate_csv.test.ts.snap index c10911d7687d3..da0f6a4560640 100644 --- a/packages/kbn-generate-csv/src/__snapshots__/generate_csv.test.ts.snap +++ b/packages/kbn-generate-csv/src/__snapshots__/generate_csv.test.ts.snap @@ -1,71 +1,71 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`fields from job.columns (7.13+ generated) cells can be multi-value 1`] = ` +exports[`CsvGenerator fields from job.columns (7.13+ generated) cells can be multi-value 1`] = ` "product,category coconut,\\"cool, rad\\" " `; -exports[`fields from job.columns (7.13+ generated) columns can be top-level fields such as _id and _index 1`] = ` +exports[`CsvGenerator fields from job.columns (7.13+ generated) columns can be top-level fields such as _id and _index 1`] = ` "\\"_id\\",\\"_index\\",product,category \\"my-cool-id\\",\\"my-cool-index\\",coconut,\\"cool, rad\\" " `; -exports[`fields from job.columns (7.13+ generated) default column names come from tabify 1`] = ` +exports[`CsvGenerator fields from job.columns (7.13+ generated) default column names come from tabify 1`] = ` "\\"_id\\",\\"_index\\",\\"_score\\",category,product \\"my-cool-id\\",\\"my-cool-index\\",\\"'-\\",\\"cool, rad\\",coconut " `; -exports[`fields from job.searchSource.getFields() (7.12 generated) cells can be multi-value 1`] = ` +exports[`CsvGenerator fields from job.searchSource.getFields() (7.12 generated) cells can be multi-value 1`] = ` "\\"_id\\",sku \\"my-cool-id\\",\\"This is a cool SKU., This is also a cool SKU.\\" " `; -exports[`fields from job.searchSource.getFields() (7.12 generated) provides top-level underscored fields as columns 1`] = ` +exports[`CsvGenerator fields from job.searchSource.getFields() (7.12 generated) provides top-level underscored fields as columns 1`] = ` "\\"_id\\",\\"_index\\",date,message \\"my-cool-id\\",\\"my-cool-index\\",\\"2020-12-31T00:14:28.000Z\\",\\"it's nice to see you\\" " `; -exports[`fields from job.searchSource.getFields() (7.12 generated) sorts the fields when they are to be used as table column names 1`] = ` +exports[`CsvGenerator fields from job.searchSource.getFields() (7.12 generated) sorts the fields when they are to be used as table column names 1`] = ` "\\"_id\\",\\"_index\\",\\"_score\\",date,\\"message_t\\",\\"message_u\\",\\"message_v\\",\\"message_w\\",\\"message_x\\",\\"message_y\\",\\"message_z\\" \\"my-cool-id\\",\\"my-cool-index\\",\\"'-\\",\\"2020-12-31T00:14:28.000Z\\",\\"test field T\\",\\"test field U\\",\\"test field V\\",\\"test field W\\",\\"test field X\\",\\"test field Y\\",\\"test field Z\\" " `; -exports[`formats a search result to CSV content 1`] = ` +exports[`CsvGenerator formats a search result to CSV content 1`] = ` "date,ip,message \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"This is a great message!\\" " `; -exports[`formats an empty search result to CSV content 1`] = ` +exports[`CsvGenerator formats an empty search result to CSV content 1`] = ` "date,ip,message " `; -exports[`formulas can check for formulas, without escaping them 1`] = ` +exports[`CsvGenerator formulas can check for formulas, without escaping them 1`] = ` "date,ip,message \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"=SUM(A1:A2)\\" " `; -exports[`formulas escapes formula values in a cell, doesn't warn the csv contains formulas 1`] = ` +exports[`CsvGenerator formulas escapes formula values in a cell, doesn't warn the csv contains formulas 1`] = ` "date,ip,message \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"'=SUM(A1:A2)\\" " `; -exports[`formulas escapes formula values in a header, doesn't warn the csv contains formulas 1`] = ` +exports[`CsvGenerator formulas escapes formula values in a header, doesn't warn the csv contains formulas 1`] = ` "date,ip,\\"'=SUM(A1:A2)\\" \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"This is great data\\" " `; -exports[`keeps order of the columns during the scroll 1`] = ` +exports[`CsvGenerator keeps order of the columns during the scroll 1`] = ` "\\"_id\\",\\"_index\\",\\"_score\\",a,b \\"'-\\",\\"'-\\",\\"'-\\",a1,b1 \\"'-\\",\\"'-\\",\\"'-\\",\\"'-\\",b2 @@ -73,7 +73,7 @@ exports[`keeps order of the columns during the scroll 1`] = ` " `; -exports[`uses the pit ID to page all the data 1`] = ` +exports[`CsvGenerator uses the pit ID to page all the data 1`] = ` "date,ip,message \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"hit from the initial search\\" \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"hit from the initial search\\" @@ -178,7 +178,7 @@ exports[`uses the pit ID to page all the data 1`] = ` " `; -exports[`warns if max size was reached 1`] = ` +exports[`CsvGenerator warns if max size was reached 1`] = ` "date,ip,message \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"super cali fragile istic XPLA docious\\" \\"2020-12-31T00:14:28.000Z\\",\\"110.135.176.89\\",\\"super cali fragile istic XPLA docious\\" diff --git a/packages/kbn-generate-csv/src/generate_csv.test.ts b/packages/kbn-generate-csv/src/generate_csv.test.ts index 874c58aeb8469..52f15d6a82c49 100644 --- a/packages/kbn-generate-csv/src/generate_csv.test.ts +++ b/packages/kbn-generate-csv/src/generate_csv.test.ts @@ -32,394 +32,110 @@ const createMockJob = (baseObj: any = {}): JobParams => ({ ...baseObj, }); -let mockEsClient: IScopedClusterClient; -let mockDataClient: IScopedSearchClient; -let mockConfig: CsvConfig; -let mockLogger: jest.Mocked; -let uiSettingsClient: IUiSettingsClient; -let stream: jest.Mocked; -let content: string; - -const searchSourceMock = { - ...searchSourceInstanceMock, - getSearchRequestBody: jest.fn(() => ({})), -}; - -const mockSearchSourceService: jest.Mocked = { - create: jest.fn().mockReturnValue(searchSourceMock), - createEmpty: jest.fn().mockReturnValue(searchSourceMock), - telemetry: jest.fn(), - inject: jest.fn(), - extract: jest.fn(), - getAllMigrations: jest.fn(), -}; - -const mockPitId = 'oju9fs3698s3902f02-8qg3-u9w36oiewiuyew6'; - -const getMockRawResponse = (hits: Array> = [], total = hits.length) => ({ - took: 1, - timed_out: false, - pit_id: mockPitId, - _shards: { total: 1, successful: 1, failed: 0, skipped: 0 }, - hits: { hits, total, max_score: 0 }, -}); - -const mockDataClientSearchDefault = jest.fn().mockImplementation( - (): Rx.Observable<{ rawResponse: SearchResponse }> => - Rx.of({ - rawResponse: getMockRawResponse(), - }) -); - -const mockFieldFormatsRegistry = { - deserialize: jest - .fn() - .mockImplementation(() => ({ id: 'string', convert: jest.fn().mockImplementation(identity) })), -} as unknown as FieldFormatsRegistry; - -beforeEach(async () => { - content = ''; - stream = { write: jest.fn((chunk) => (content += chunk)) } as unknown as typeof stream; - mockEsClient = elasticsearchServiceMock.createScopedClusterClient(); - mockDataClient = dataPluginMock.createStartContract().search.asScoped({} as any); - mockDataClient.search = mockDataClientSearchDefault; - - mockEsClient.asCurrentUser.openPointInTime = jest.fn().mockResolvedValueOnce({ id: mockPitId }); - - uiSettingsClient = uiSettingsServiceMock - .createStartContract() - .asScopedToClient(savedObjectsClientMock.create()); - uiSettingsClient.get = jest.fn().mockImplementation((key): any => { - switch (key) { - case UI_SETTINGS_CSV_QUOTE_VALUES: - return true; - case UI_SETTINGS_CSV_SEPARATOR: - return ','; - case UI_SETTINGS_DATEFORMAT_TZ: - return 'Browser'; - } - }); - - mockConfig = { - checkForFormulas: true, - escapeFormulaValues: true, - maxSizeBytes: 180000, - useByteOrderMarkEncoding: false, - scroll: { size: 500, duration: '30s' }, +describe('CsvGenerator', () => { + let mockEsClient: IScopedClusterClient; + let mockDataClient: IScopedSearchClient; + let mockConfig: CsvConfig; + let mockLogger: jest.Mocked; + let uiSettingsClient: IUiSettingsClient; + let stream: jest.Mocked; + let content: string; + + const searchSourceMock = { + ...searchSourceInstanceMock, + getSearchRequestBody: jest.fn(() => ({})), }; - searchSourceMock.getField = jest.fn((key: string) => { - switch (key) { - case 'pit': - return { id: mockPitId }; - case 'index': - return { - fields: { - getByName: jest.fn(() => []), - getByType: jest.fn(() => []), - }, - metaFields: ['_id', '_index', '_type', '_score'], - getFormatterForField: jest.fn(), - getIndexPattern: () => 'logstash-*', - }; - } - }); - - mockLogger = loggingSystemMock.createLogger(); -}); - -it('formats an empty search result to CSV content', async () => { - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - const csvResult = await generateCsv.generateData(); - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(false); -}); - -it('formats a search result to CSV content', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - fields: { - date: `["2020-12-31T00:14:28.000Z"]`, - ip: `["110.135.176.89"]`, - message: `["This is a great message!"]`, - }, - } as unknown as estypes.SearchHit, - ]), - }) - ); - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - const csvResult = await generateCsv.generateData(); - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(false); -}); - -const HITS_TOTAL = 100; - -it('calculates the bytes of the content', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse( - range(0, HITS_TOTAL).map( - () => - ({ - fields: { - message: ['this is a great message'], - }, - } as unknown as estypes.SearchHit) - ) - ), - }) - ); - - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - const csvResult = await generateCsv.generateData(); - expect(csvResult.max_size_reached).toBe(false); - expect(csvResult.warnings).toEqual([]); -}); - -it('warns if max size was reached', async () => { - const TEST_MAX_SIZE = 500; - mockConfig = { - checkForFormulas: true, - escapeFormulaValues: true, - maxSizeBytes: TEST_MAX_SIZE, - useByteOrderMarkEncoding: false, - scroll: { size: 500, duration: '30s' }, + const mockSearchSourceService: jest.Mocked = { + create: jest.fn().mockReturnValue(searchSourceMock), + createEmpty: jest.fn().mockReturnValue(searchSourceMock), + telemetry: jest.fn(), + inject: jest.fn(), + extract: jest.fn(), + getAllMigrations: jest.fn(), }; - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse( - range(0, HITS_TOTAL).map( - () => - ({ - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: ['super cali fragile istic XPLA docious'], - }, - } as unknown as estypes.SearchHit) - ) - ), - }) - ); - - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - const csvResult = await generateCsv.generateData(); - expect(csvResult.max_size_reached).toBe(true); - expect(csvResult.warnings).toEqual([]); - expect(content).toMatchSnapshot(); -}); - -it('uses the pit ID to page all the data', async () => { - mockDataClient.search = jest - .fn() - .mockImplementationOnce(() => - Rx.of({ - rawResponse: getMockRawResponse( - range(0, HITS_TOTAL / 10).map( - () => - ({ - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: ['hit from the initial search'], - }, - } as unknown as estypes.SearchHit) - ), - HITS_TOTAL - ), - }) - ) - .mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse( - range(0, HITS_TOTAL / 10).map( - () => - ({ - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: ['hit from a subsequent scroll'], - }, - } as unknown as estypes.SearchHit) - ) - ), - }) - ); - - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - const csvResult = await generateCsv.generateData(); - expect(csvResult.warnings).toEqual([]); - expect(content).toMatchSnapshot(); - - expect(mockDataClient.search).toHaveBeenCalledTimes(10); - expect(mockDataClient.search).toBeCalledWith( - { params: { body: {}, ignore_throttled: undefined } }, - { strategy: 'es', transport: { maxRetries: 0, requestTimeout: '30s' } } - ); - - expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledTimes(1); - expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( - { - ignore_unavailable: true, - index: 'logstash-*', - keep_alive: '30s', - }, - { maxRetries: 0, requestTimeout: '30s' } - ); - - expect(mockEsClient.asCurrentUser.closePointInTime).toHaveBeenCalledTimes(1); - expect(mockEsClient.asCurrentUser.closePointInTime).toHaveBeenCalledWith({ - body: { id: mockPitId }, + const mockPitId = 'oju9fs3698s3902f02-8qg3-u9w36oiewiuyew6'; + + const getMockRawResponse = ( + hits: Array> = [], + total = hits.length + ) => ({ + took: 1, + timed_out: false, + pit_id: mockPitId, + _shards: { total: 1, successful: 1, failed: 0, skipped: 0 }, + hits: { hits, total, max_score: 0 }, }); -}); -it('keeps order of the columns during the scroll', async () => { - mockDataClient.search = jest - .fn() - .mockImplementationOnce(() => - Rx.of({ - rawResponse: getMockRawResponse( - [{ fields: { a: ['a1'], b: ['b1'] } } as unknown as estypes.SearchHit], - 3 - ), - }) - ) - .mockImplementationOnce(() => - Rx.of({ - rawResponse: getMockRawResponse( - [{ fields: { b: ['b2'] } } as unknown as estypes.SearchHit], - 3 - ), - }) - ) - .mockImplementationOnce(() => + const mockDataClientSearchDefault = jest.fn().mockImplementation( + (): Rx.Observable<{ rawResponse: SearchResponse }> => Rx.of({ - rawResponse: getMockRawResponse( - [{ fields: { a: ['a3'], c: ['c3'] } } as unknown as estypes.SearchHit], - 3 - ), + rawResponse: getMockRawResponse(), }) - ); - - const generateCsv = new CsvGenerator( - createMockJob({ searchSource: {}, columns: [] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream ); - await generateCsv.generateData(); - expect(content).toMatchSnapshot(); -}); + const mockFieldFormatsRegistry = { + deserialize: jest.fn().mockImplementation(() => ({ + id: 'string', + convert: jest.fn().mockImplementation(identity), + })), + } as unknown as FieldFormatsRegistry; + + beforeEach(async () => { + content = ''; + stream = { write: jest.fn((chunk) => (content += chunk)) } as unknown as typeof stream; + mockEsClient = elasticsearchServiceMock.createScopedClusterClient(); + mockDataClient = dataPluginMock.createStartContract().search.asScoped({} as any); + mockDataClient.search = mockDataClientSearchDefault; + + mockEsClient.asCurrentUser.openPointInTime = jest.fn().mockResolvedValueOnce({ id: mockPitId }); + + uiSettingsClient = uiSettingsServiceMock + .createStartContract() + .asScopedToClient(savedObjectsClientMock.create()); + uiSettingsClient.get = jest.fn().mockImplementation((key): any => { + switch (key) { + case UI_SETTINGS_CSV_QUOTE_VALUES: + return true; + case UI_SETTINGS_CSV_SEPARATOR: + return ','; + case UI_SETTINGS_DATEFORMAT_TZ: + return 'Browser'; + } + }); -describe('fields from job.searchSource.getFields() (7.12 generated)', () => { - it('cells can be multi-value', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, + mockConfig = { + checkForFormulas: true, + escapeFormulaValues: true, + maxSizeBytes: 180000, + useByteOrderMarkEncoding: false, + scroll: { size: 500, duration: '30s' }, + }; + + searchSourceMock.getField = jest.fn((key: string) => { + switch (key) { + case 'pit': + return { id: mockPitId }; + case 'index': + return { fields: { - sku: [`This is a cool SKU.`, `This is also a cool SKU.`], + getByName: jest.fn(() => []), + getByType: jest.fn(() => []), }, - }, - ]), - }) - ); + metaFields: ['_id', '_index', '_type', '_score'], + getFormatterForField: jest.fn(), + getIndexPattern: () => 'logstash-*', + }; + } + }); + mockLogger = loggingSystemMock.createLogger(); + }); + + it('formats an empty search result to CSV content', async () => { const generateCsv = new CsvGenerator( - createMockJob({ searchSource: {}, columns: ['_id', 'sku'] }), + createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, { es: mockEsClient, @@ -434,39 +150,27 @@ describe('fields from job.searchSource.getFields() (7.12 generated)', () => { mockLogger, stream ); - await generateCsv.generateData(); - + const csvResult = await generateCsv.generateData(); expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(false); }); - it('provides top-level underscored fields as columns', async () => { + it('formats a search result to CSV content', async () => { mockDataClient.search = jest.fn().mockImplementation(() => Rx.of({ rawResponse: getMockRawResponse([ { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, fields: { - date: ['2020-12-31T00:14:28.000Z'], - message: [`it's nice to see you`], + date: `["2020-12-31T00:14:28.000Z"]`, + ip: `["110.135.176.89"]`, + message: `["This is a great message!"]`, }, - }, + } as unknown as estypes.SearchHit, ]), }) ); - const generateCsv = new CsvGenerator( - createMockJob({ - searchSource: { - query: { query: '', language: 'kuery' }, - sort: [{ '@date': 'desc' }], - index: '93f4bc50-6662-11eb-98bc-f550e2308366', - fields: ['_id', '_index', '@date', 'message'], - filter: [], - }, - columns: ['_id', '_index', 'date', 'message'], - }), + createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, { es: mockEsClient, @@ -481,46 +185,31 @@ describe('fields from job.searchSource.getFields() (7.12 generated)', () => { mockLogger, stream ); - const csvResult = await generateCsv.generateData(); - expect(content).toMatchSnapshot(); expect(csvResult.csv_contains_formulas).toBe(false); }); - it('sorts the fields when they are to be used as table column names', async () => { + const HITS_TOTAL = 100; + + it('calculates the bytes of the content', async () => { mockDataClient.search = jest.fn().mockImplementation(() => Rx.of({ - rawResponse: getMockRawResponse([ - { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, - fields: { - date: ['2020-12-31T00:14:28.000Z'], - message_z: [`test field Z`], - message_y: [`test field Y`], - message_x: [`test field X`], - message_w: [`test field W`], - message_v: [`test field V`], - message_u: [`test field U`], - message_t: [`test field T`], - }, - }, - ]), + rawResponse: getMockRawResponse( + range(0, HITS_TOTAL).map( + () => + ({ + fields: { + message: ['this is a great message'], + }, + } as unknown as estypes.SearchHit) + ) + ), }) ); const generateCsv = new CsvGenerator( - createMockJob({ - searchSource: { - query: { query: '', language: 'kuery' }, - sort: [{ '@date': 'desc' }], - index: '93f4bc50-6662-11eb-98bc-f550e2308366', - fields: ['*'], - filter: [], - }, - }), + createMockJob({ columns: ['message'] }), mockConfig, { es: mockEsClient, @@ -535,34 +224,40 @@ describe('fields from job.searchSource.getFields() (7.12 generated)', () => { mockLogger, stream ); - const csvResult = await generateCsv.generateData(); - - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(false); + expect(csvResult.max_size_reached).toBe(false); + expect(csvResult.warnings).toEqual([]); }); -}); -describe('fields from job.columns (7.13+ generated)', () => { - it('cells can be multi-value', async () => { + it('warns if max size was reached', async () => { + const TEST_MAX_SIZE = 500; + mockConfig = { + checkForFormulas: true, + escapeFormulaValues: true, + maxSizeBytes: TEST_MAX_SIZE, + useByteOrderMarkEncoding: false, + scroll: { size: 500, duration: '30s' }, + }; + mockDataClient.search = jest.fn().mockImplementation(() => Rx.of({ - rawResponse: getMockRawResponse([ - { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, - fields: { - product: 'coconut', - category: [`cool`, `rad`], - }, - }, - ]), + rawResponse: getMockRawResponse( + range(0, HITS_TOTAL).map( + () => + ({ + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: ['super cali fragile istic XPLA docious'], + }, + } as unknown as estypes.SearchHit) + ) + ), }) ); const generateCsv = new CsvGenerator( - createMockJob({ searchSource: {}, columns: ['product', 'category'] }), + createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, { es: mockEsClient, @@ -577,30 +272,51 @@ describe('fields from job.columns (7.13+ generated)', () => { mockLogger, stream ); - await generateCsv.generateData(); - + const csvResult = await generateCsv.generateData(); + expect(csvResult.max_size_reached).toBe(true); + expect(csvResult.warnings).toEqual([]); expect(content).toMatchSnapshot(); }); - it('columns can be top-level fields such as _id and _index', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, - fields: { - product: 'coconut', - category: [`cool`, `rad`], - }, - }, - ]), - }) - ); + it('uses the pit ID to page all the data', async () => { + mockDataClient.search = jest + .fn() + .mockImplementationOnce(() => + Rx.of({ + rawResponse: getMockRawResponse( + range(0, HITS_TOTAL / 10).map( + () => + ({ + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: ['hit from the initial search'], + }, + } as unknown as estypes.SearchHit) + ), + HITS_TOTAL + ), + }) + ) + .mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse( + range(0, HITS_TOTAL / 10).map( + () => + ({ + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: ['hit from a subsequent scroll'], + }, + } as unknown as estypes.SearchHit) + ) + ), + }) + ); const generateCsv = new CsvGenerator( - createMockJob({ searchSource: {}, columns: ['_id', '_index', 'product', 'category'] }), + createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, { es: mockEsClient, @@ -615,28 +331,60 @@ describe('fields from job.columns (7.13+ generated)', () => { mockLogger, stream ); - await generateCsv.generateData(); - + const csvResult = await generateCsv.generateData(); + expect(csvResult.warnings).toEqual([]); expect(content).toMatchSnapshot(); - }); - it('default column names come from tabify', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - _id: 'my-cool-id', - _index: 'my-cool-index', - _version: 4, - fields: { - product: 'coconut', - category: [`cool`, `rad`], - }, - }, - ]), - }) + expect(mockDataClient.search).toHaveBeenCalledTimes(10); + expect(mockDataClient.search).toBeCalledWith( + { params: { body: {}, ignore_throttled: undefined } }, + { strategy: 'es', transport: { maxRetries: 0, requestTimeout: '30s' } } + ); + + expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledTimes(1); + expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( + { + ignore_unavailable: true, + index: 'logstash-*', + keep_alive: '30s', + }, + { maxRetries: 0, requestTimeout: '30s' } ); + expect(mockEsClient.asCurrentUser.closePointInTime).toHaveBeenCalledTimes(1); + expect(mockEsClient.asCurrentUser.closePointInTime).toHaveBeenCalledWith({ + body: { id: mockPitId }, + }); + }); + + it('keeps order of the columns during the scroll', async () => { + mockDataClient.search = jest + .fn() + .mockImplementationOnce(() => + Rx.of({ + rawResponse: getMockRawResponse( + [{ fields: { a: ['a1'], b: ['b1'] } } as unknown as estypes.SearchHit], + 3 + ), + }) + ) + .mockImplementationOnce(() => + Rx.of({ + rawResponse: getMockRawResponse( + [{ fields: { b: ['b2'] } } as unknown as estypes.SearchHit], + 3 + ), + }) + ) + .mockImplementationOnce(() => + Rx.of({ + rawResponse: getMockRawResponse( + [{ fields: { a: ['a3'], c: ['c3'] } } as unknown as estypes.SearchHit], + 3 + ), + }) + ); + const generateCsv = new CsvGenerator( createMockJob({ searchSource: {}, columns: [] }), mockConfig, @@ -657,34 +405,403 @@ describe('fields from job.columns (7.13+ generated)', () => { expect(content).toMatchSnapshot(); }); -}); -describe('formulas', () => { - const TEST_FORMULA = '=SUM(A1:A2)'; + describe('fields from job.searchSource.getFields() (7.12 generated)', () => { + it('cells can be multi-value', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + sku: [`This is a cool SKU.`, `This is also a cool SKU.`], + }, + }, + ]), + }) + ); - it(`escapes formula values in a cell, doesn't warn the csv contains formulas`, async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: [TEST_FORMULA], + const generateCsv = new CsvGenerator( + createMockJob({ searchSource: {}, columns: ['_id', 'sku'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + }); + + it('provides top-level underscored fields as columns', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + date: ['2020-12-31T00:14:28.000Z'], + message: [`it's nice to see you`], + }, }, - } as unknown as estypes.SearchHit, - ]), - }) - ); + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ + searchSource: { + query: { query: '', language: 'kuery' }, + sort: [{ '@date': 'desc' }], + index: '93f4bc50-6662-11eb-98bc-f550e2308366', + fields: ['_id', '_index', '@date', 'message'], + filter: [], + }, + columns: ['_id', '_index', 'date', 'message'], + }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const csvResult = await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(false); + }); + + it('sorts the fields when they are to be used as table column names', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + date: ['2020-12-31T00:14:28.000Z'], + message_z: [`test field Z`], + message_y: [`test field Y`], + message_x: [`test field X`], + message_w: [`test field W`], + message_v: [`test field V`], + message_u: [`test field U`], + message_t: [`test field T`], + }, + }, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ + searchSource: { + query: { query: '', language: 'kuery' }, + sort: [{ '@date': 'desc' }], + index: '93f4bc50-6662-11eb-98bc-f550e2308366', + fields: ['*'], + filter: [], + }, + }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const csvResult = await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(false); + }); + }); + + describe('fields from job.columns (7.13+ generated)', () => { + it('cells can be multi-value', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + product: 'coconut', + category: [`cool`, `rad`], + }, + }, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ searchSource: {}, columns: ['product', 'category'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + }); + + it('columns can be top-level fields such as _id and _index', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + product: 'coconut', + category: [`cool`, `rad`], + }, + }, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ searchSource: {}, columns: ['_id', '_index', 'product', 'category'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + }); + + it('default column names come from tabify', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + _id: 'my-cool-id', + _index: 'my-cool-index', + _version: 4, + fields: { + product: 'coconut', + category: [`cool`, `rad`], + }, + }, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ searchSource: {}, columns: [] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + }); + }); + + describe('formulas', () => { + const TEST_FORMULA = '=SUM(A1:A2)'; + + it(`escapes formula values in a cell, doesn't warn the csv contains formulas`, async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: [TEST_FORMULA], + }, + } as unknown as estypes.SearchHit, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ columns: ['date', 'ip', 'message'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const csvResult = await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(false); + }); + + it(`escapes formula values in a header, doesn't warn the csv contains formulas`, async () => { + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + [TEST_FORMULA]: 'This is great data', + }, + } as unknown as estypes.SearchHit, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ columns: ['date', 'ip', TEST_FORMULA] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const csvResult = await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(false); + }); + + it('can check for formulas, without escaping them', async () => { + mockConfig = { + checkForFormulas: true, + escapeFormulaValues: false, + maxSizeBytes: 180000, + useByteOrderMarkEncoding: false, + scroll: { size: 500, duration: '30s' }, + }; + mockDataClient.search = jest.fn().mockImplementation(() => + Rx.of({ + rawResponse: getMockRawResponse([ + { + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: [TEST_FORMULA], + }, + } as unknown as estypes.SearchHit, + ]), + }) + ); + + const generateCsv = new CsvGenerator( + createMockJob({ columns: ['date', 'ip', 'message'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const csvResult = await generateCsv.generateData(); + + expect(content).toMatchSnapshot(); + expect(csvResult.csv_contains_formulas).toBe(true); + }); + }); + + it('can override ignoring frozen indices', async () => { + const originalGet = uiSettingsClient.get; + uiSettingsClient.get = jest.fn().mockImplementation((key): any => { + if (key === 'search:includeFrozen') { + return true; + } + return originalGet(key); + }); const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), + createMockJob({}), mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, + { es: mockEsClient, data: mockDataClient, uiSettings: uiSettingsClient }, { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, @@ -694,29 +811,49 @@ describe('formulas', () => { stream ); - const csvResult = await generateCsv.generateData(); + await generateCsv.generateData(); - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(false); + expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( + { + ignore_unavailable: true, + ignore_throttled: false, + index: 'logstash-*', + keep_alive: '30s', + }, + { maxRetries: 0, requestTimeout: '30s' } + ); + + expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( + { + ignore_unavailable: true, + ignore_throttled: false, + index: 'logstash-*', + keep_alive: '30s', + }, + { maxRetries: 0, requestTimeout: '30s' } + ); + + expect(mockDataClient.search).toBeCalledWith( + { + params: { + body: {}, + }, + }, + { strategy: 'es', transport: { maxRetries: 0, requestTimeout: '30s' } } + ); }); - it(`escapes formula values in a header, doesn't warn the csv contains formulas`, async () => { - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - [TEST_FORMULA]: 'This is great data', - }, - } as unknown as estypes.SearchHit, - ]), + it('adds a warning if export was unable to close the PIT', async () => { + mockEsClient.asCurrentUser.closePointInTime = jest.fn().mockRejectedValueOnce( + new esErrors.ResponseError({ + statusCode: 419, + warnings: [], + meta: { context: 'test' } as any, }) ); const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', TEST_FORMULA] }), + createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, { es: mockEsClient, @@ -732,34 +869,33 @@ describe('formulas', () => { stream ); - const csvResult = await generateCsv.generateData(); - - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(false); + await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` + Object { + "content_type": "text/csv", + "csv_contains_formulas": false, + "error_code": undefined, + "max_size_reached": false, + "metrics": Object { + "csv": Object { + "rows": 0, + }, + }, + "warnings": Array [ + "Unable to close the Point-In-Time used for search. Check the Kibana server logs.", + ], + } + `); }); - it('can check for formulas, without escaping them', async () => { - mockConfig = { - checkForFormulas: true, - escapeFormulaValues: false, - maxSizeBytes: 180000, - useByteOrderMarkEncoding: false, - scroll: { size: 500, duration: '30s' }, - }; - mockDataClient.search = jest.fn().mockImplementation(() => - Rx.of({ - rawResponse: getMockRawResponse([ - { - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: [TEST_FORMULA], - }, - } as unknown as estypes.SearchHit, - ]), - }) - ); - + it('will return partial data if the scroll or search fails', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => { + throw new esErrors.ResponseError({ + statusCode: 500, + meta: {} as any, + body: 'my error', + warnings: [], + }); + }); const generateCsv = new CsvGenerator( createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, @@ -776,226 +912,39 @@ describe('formulas', () => { mockLogger, stream ); - - const csvResult = await generateCsv.generateData(); - - expect(content).toMatchSnapshot(); - expect(csvResult.csv_contains_formulas).toBe(true); - }); -}); - -it('can override ignoring frozen indices', async () => { - const originalGet = uiSettingsClient.get; - uiSettingsClient.get = jest.fn().mockImplementation((key): any => { - if (key === 'search:includeFrozen') { - return true; - } - return originalGet(key); - }); - - const generateCsv = new CsvGenerator( - createMockJob({}), - mockConfig, - { es: mockEsClient, data: mockDataClient, uiSettings: uiSettingsClient }, - { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry }, - new CancellationToken(), - mockLogger, - stream - ); - - await generateCsv.generateData(); - - expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( - { - ignore_unavailable: true, - ignore_throttled: false, - index: 'logstash-*', - keep_alive: '30s', - }, - { maxRetries: 0, requestTimeout: '30s' } - ); - - expect(mockEsClient.asCurrentUser.openPointInTime).toHaveBeenCalledWith( - { - ignore_unavailable: true, - ignore_throttled: false, - index: 'logstash-*', - keep_alive: '30s', - }, - { maxRetries: 0, requestTimeout: '30s' } - ); - - expect(mockDataClient.search).toBeCalledWith( - { - params: { - body: {}, - }, - }, - { strategy: 'es', transport: { maxRetries: 0, requestTimeout: '30s' } } - ); -}); - -it('adds a warning if export was unable to close the PIT', async () => { - mockEsClient.asCurrentUser.closePointInTime = jest.fn().mockRejectedValueOnce( - new esErrors.ResponseError({ - statusCode: 419, - warnings: [], - meta: { context: 'test' } as any, - }) - ); - - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - - await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` - Object { - "content_type": "text/csv", - "csv_contains_formulas": false, - "error_code": undefined, - "max_size_reached": false, - "metrics": Object { - "csv": Object { - "rows": 0, - }, - }, - "warnings": Array [ - "Unable to close the Point-In-Time used for search. Check the Kibana server logs.", - ], - } - `); -}); - -it('will return partial data if the scroll or search fails', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => { - throw new esErrors.ResponseError({ - statusCode: 500, - meta: {} as any, - body: 'my error', - warnings: [], - }); - }); - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` - Object { - "content_type": "text/csv", - "csv_contains_formulas": false, - "error_code": undefined, - "max_size_reached": false, - "metrics": Object { - "csv": Object { - "rows": 0, + await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` + Object { + "content_type": "text/csv", + "csv_contains_formulas": false, + "error_code": undefined, + "max_size_reached": false, + "metrics": Object { + "csv": Object { + "rows": 0, + }, }, - }, - "warnings": Array [ - "Received a 500 response from Elasticsearch: my error", - "Encountered an error with the number of CSV rows generated from the search: expected NaN, received 0.", - ], - } - `); - expect(mockLogger.error.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - "CSV export search error: ResponseError: my error", - ], + "warnings": Array [ + "Received a 500 response from Elasticsearch: my error", + "Encountered an error with the number of CSV rows generated from the search: expected rows were indeterminable, received 0.", + ], + } + `); + expect(mockLogger.error.mock.calls).toMatchInlineSnapshot(` Array [ - [ResponseError: my error], - ], - ] - `); -}); - -it('handles unknown errors', async () => { - mockDataClient.search = jest.fn().mockImplementation(() => { - throw new Error('An unknown error'); + Array [ + "CSV export search error: ResponseError: my error", + ], + Array [ + [ResponseError: my error], + ], + ] + `); }); - const generateCsv = new CsvGenerator( - createMockJob({ columns: ['date', 'ip', 'message'] }), - mockConfig, - { - es: mockEsClient, - data: mockDataClient, - uiSettings: uiSettingsClient, - }, - { - searchSourceStart: mockSearchSourceService, - fieldFormatsRegistry: mockFieldFormatsRegistry, - }, - new CancellationToken(), - mockLogger, - stream - ); - await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` - Object { - "content_type": "text/csv", - "csv_contains_formulas": false, - "error_code": undefined, - "max_size_reached": false, - "metrics": Object { - "csv": Object { - "rows": 0, - }, - }, - "warnings": Array [ - "Encountered an unknown error: An unknown error", - "Encountered an error with the number of CSV rows generated from the search: expected NaN, received 0.", - ], - } - `); -}); - -describe('error codes', () => { - it('returns the expected error code when authentication expires', async () => { - mockDataClient.search = jest - .fn() - .mockImplementationOnce(() => - Rx.of({ - rawResponse: getMockRawResponse( - range(0, 5).map(() => ({ - _index: 'lasdf', - _id: 'lasdf123', - fields: { - date: ['2020-12-31T00:14:28.000Z'], - ip: ['110.135.176.89'], - message: ['super cali fragile istic XPLA docious'], - }, - })), - 10 - ), - }) - ) - .mockImplementationOnce(() => { - throw new esErrors.ResponseError({ statusCode: 403, meta: {} as any, warnings: [] }); - }); + it('handles unknown errors', async () => { + mockDataClient.search = jest.fn().mockImplementation(() => { + throw new Error('An unknown error'); + }); const generateCsv = new CsvGenerator( createMockJob({ columns: ['date', 'ip', 'message'] }), mockConfig, @@ -1012,25 +961,85 @@ describe('error codes', () => { mockLogger, stream ); - - const { error_code: errorCode, warnings } = await generateCsv.generateData(); - expect(errorCode).toBe('authentication_expired_error'); - expect(warnings).toMatchInlineSnapshot(` - Array [ - "This report contains partial CSV results because the authentication token expired. Export a smaller amount of data or increase the timeout of the authentication token.", - "Encountered an error with the number of CSV rows generated from the search: expected 10, received 5.", - ] + await expect(generateCsv.generateData()).resolves.toMatchInlineSnapshot(` + Object { + "content_type": "text/csv", + "csv_contains_formulas": false, + "error_code": undefined, + "max_size_reached": false, + "metrics": Object { + "csv": Object { + "rows": 0, + }, + }, + "warnings": Array [ + "Encountered an unknown error: An unknown error", + "Encountered an error with the number of CSV rows generated from the search: expected rows were indeterminable, received 0.", + ], + } `); + }); - expect(mockLogger.error.mock.calls).toMatchInlineSnapshot(` - Array [ + describe('error codes', () => { + it('returns the expected error code when authentication expires', async () => { + mockDataClient.search = jest + .fn() + .mockImplementationOnce(() => + Rx.of({ + rawResponse: getMockRawResponse( + range(0, 5).map(() => ({ + _index: 'lasdf', + _id: 'lasdf123', + fields: { + date: ['2020-12-31T00:14:28.000Z'], + ip: ['110.135.176.89'], + message: ['super cali fragile istic XPLA docious'], + }, + })), + 10 + ), + }) + ) + .mockImplementationOnce(() => { + throw new esErrors.ResponseError({ statusCode: 403, meta: {} as any, warnings: [] }); + }); + + const generateCsv = new CsvGenerator( + createMockJob({ columns: ['date', 'ip', 'message'] }), + mockConfig, + { + es: mockEsClient, + data: mockDataClient, + uiSettings: uiSettingsClient, + }, + { + searchSourceStart: mockSearchSourceService, + fieldFormatsRegistry: mockFieldFormatsRegistry, + }, + new CancellationToken(), + mockLogger, + stream + ); + + const { error_code: errorCode, warnings } = await generateCsv.generateData(); + expect(errorCode).toBe('authentication_expired_error'); + expect(warnings).toMatchInlineSnapshot(` Array [ - "CSV export search error: ResponseError: Response Error", - ], + "This report contains partial CSV results because the authentication token expired. Export a smaller amount of data or increase the timeout of the authentication token.", + "Encountered an error with the number of CSV rows generated from the search: expected 10, received 5.", + ] + `); + + expect(mockLogger.error.mock.calls).toMatchInlineSnapshot(` Array [ - [ResponseError: Response Error], - ], - ] - `); + Array [ + "CSV export search error: ResponseError: Response Error", + ], + Array [ + [ResponseError: Response Error], + ], + ] + `); + }); }); }); diff --git a/packages/kbn-generate-csv/src/generate_csv.ts b/packages/kbn-generate-csv/src/generate_csv.ts index 3e4d324dcfced..9d3b85b214c94 100644 --- a/packages/kbn-generate-csv/src/generate_csv.ts +++ b/packages/kbn-generate-csv/src/generate_csv.ts @@ -475,9 +475,13 @@ export class CsvGenerator { `ES scroll returned fewer total hits than expected! ` + `Search result total hits: ${totalRecords}. Row count: ${this.csvRowCount}` ); - warnings.push( - i18nTexts.csvRowCountError({ expected: totalRecords ?? NaN, received: this.csvRowCount }) - ); + if (totalRecords || totalRecords === 0) { + warnings.push( + i18nTexts.csvRowCountError({ expected: totalRecords, received: this.csvRowCount }) + ); + } else { + warnings.push(i18nTexts.csvRowCountIndeterminable({ received: this.csvRowCount })); + } } return { diff --git a/packages/kbn-generate-csv/src/i18n_texts.ts b/packages/kbn-generate-csv/src/i18n_texts.ts index 8b492aae7fae1..b9a863a18d2df 100644 --- a/packages/kbn-generate-csv/src/i18n_texts.ts +++ b/packages/kbn-generate-csv/src/i18n_texts.ts @@ -37,6 +37,12 @@ export const i18nTexts = { 'Encountered an error with the number of CSV rows generated from the search: expected {expected}, received {received}.', values: { expected, received }, }), + csvRowCountIndeterminable: ({ received }: { expected?: number; received: number }) => + i18n.translate('generateCsv.indeterminableRowCount', { + defaultMessage: + 'Encountered an error with the number of CSV rows generated from the search: expected rows were indeterminable, received {received}.', + values: { received }, + }), csvUnableToClosePit: () => i18n.translate('generateCsv.csvUnableToClosePit', { defaultMessage: From 8d5dfafd8d06cc3096f9b72325032510aa498eab Mon Sep 17 00:00:00 2001 From: Paulo Henrique Date: Wed, 4 Oct 2023 20:57:17 -0700 Subject: [PATCH 24/27] [Cloud Security] CloudSecurityDataTable component (#167587) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR introduces the Cloud Security DataTable component, meant to replace and consolidate the tables used in the Cloud Security plugin The CloudSecurityDataTable component is a wrapper over the `` component. We made that decision based on the number of features it provides for the users plus support from the most common features such as Flyout, Sort, Filtering, and Pagination to the most advanced features like Virtualization and DataView integration. - **Virtualization**: Thanks to Virtualization, users can fetch more data on the table than the limit of `500`, and also use larger items per page if desired. - **DataView integration**: This option allows users to rename Columns as needed by setting custom labels in the DataView. - **Column control**: Users can move columns and resize it as needed, and that settings is saved on the local storage. - **Row Height control**: Users can modify in the Advanced Settings -> `discover:rowHeight` the height of the row. Below is a Matrix comparing the features between the current Findings table, the Vulnerabilities Data Grid and the new CloudSecurityDataTable. Feature | CloudSecurity DataTable (new >= 8.11) | Findings Table (current <= 8.10) | Vulnerabilities Data Grid (current <= 8.10) -- | -- | -- | -- Tooltip on Cell Hover | ❌ | ✅ | ❌ Column Sorting | ✅ | ✅ | ✅ Multi Column Sorting | ✅ | ❌ | ✅ Column filtering | ✅ | ✅ | ✅ Pagination | ✅ | ✅ | ✅ Rows per page | ✅ | ✅ | ✅ Virtualization (Support to load more data) | ✅ | ❌ | ❌ Custom component on Column Header | ❌ (only custom text) | ✅ | ❌ Additional controls on the left | ✅ | ❌ | ✅ Text truncation | ✅ | ✅ | ✅ Override Style | ✅ (https://github.com/elastic/kibana/pull/166994) | ✅ | ✅ Load more button | ✅ | ❌ | ❌ Resize column | ✅ | ❌ | ✅ Reorder column | ✅ | ❌ | ✅ FullScreen button | ✅ | ❌ | ✅ User-defined row height | ✅ | ❌ | ❌ external pagination control (enables Flyout pagination) | ❌ | ✅ | ✅ user-defined column renaming | ✅ (using DataViews) | ❌ | ❌ ### Regressions There are some regressions such as losing the ability to paginate on the Flyout and the table pagination is no longer controlled by URL params, that's because pagination is controlled by an internal state in the `` component, and we plan to re-enable those features again in the future by contributing to the `` component. ### Screenshots ![image](https://github.com/elastic/kibana/assets/19270322/a0d1f95a-adcc-4e58-9d3e-0adec3df8b3b) ### Videos Basic Features + Virtualization https://github.com/elastic/kibana/assets/19270322/b1a61592-e1ae-4baf-9610-3e24c473c17d https://github.com/elastic/kibana/assets/19270322/d8e6106c-0ca3-4277-b78b-5ca482095ae1 DataView integration https://github.com/elastic/kibana/assets/19270322/0d583243-bb86-45e4-baa5-dc63253da8f6 Row Height Control https://github.com/elastic/kibana/assets/19270322/b1d43609-7c8a-4855-ab2f-624c18663579 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Jordan <51442161+JordanSh@users.noreply.github.com> --- .../cloud_security_posture/kibana.jsonc | 4 +- .../common/api/use_filtered_data_view.ts | 53 ---- .../api/use_latest_findings_data_view.ts | 51 +++- .../public/common/constants.ts | 2 + .../use_cloud_posture_table.ts | 29 +- .../cloud_security_data_table.tsx | 275 ++++++++++++++++++ .../cloud_security_data_table/index.ts | 8 + .../cloud_security_data_table/use_styles.ts | 85 ++++++ .../configurations/configurations.test.tsx | 27 +- .../findings_flyout/findings_flyout.tsx | 32 +- .../latest_findings_container.test.tsx | 87 ------ .../latest_findings_container.tsx | 263 ++++++++--------- .../latest_findings_table.test.tsx | 133 --------- .../latest_findings/latest_findings_table.tsx | 120 -------- .../latest_findings/use_latest_findings.ts | 37 ++- .../findings_by_resource_container.tsx | 60 ++-- .../resource_findings_container.tsx | 56 ++-- .../layout/findings_distribution_bar.tsx | 69 ++--- .../pages/vulnerabilities/hooks/use_styles.ts | 2 + .../pages/vulnerabilities/vulnerabilities.tsx | 19 +- .../vulnerabilities/vulnerabilties.test.tsx | 31 +- .../cloud_security_posture/public/plugin.tsx | 21 +- .../public/test/test_provider.tsx | 6 +- .../cloud_security_posture/public/types.ts | 15 + .../cloud_security_posture/tsconfig.json | 12 +- .../page_objects/findings_page.ts | 114 +++++++- .../pages/findings.ts | 45 +-- 27 files changed, 911 insertions(+), 745 deletions(-) delete mode 100644 x-pack/plugins/cloud_security_posture/public/common/api/use_filtered_data_view.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.test.tsx delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.test.tsx delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/kibana.jsonc b/x-pack/plugins/cloud_security_posture/kibana.jsonc index b6dfd66931b1f..9237ed70104ad 100644 --- a/x-pack/plugins/cloud_security_posture/kibana.jsonc +++ b/x-pack/plugins/cloud_security_posture/kibana.jsonc @@ -11,6 +11,7 @@ "requiredPlugins": [ "navigation", "data", + "dataViews", "fleet", "unifiedSearch", "taskManager", @@ -19,7 +20,8 @@ "discover", "cloud", "licensing", - "share" + "share", + "kibanaUtils" ], "optionalPlugins": ["usageCollection"], "requiredBundles": ["kibanaReact", "usageCollection"] diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_filtered_data_view.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_filtered_data_view.ts deleted file mode 100644 index cabc449b1e3bd..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_filtered_data_view.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; -import type { DataView } from '@kbn/data-plugin/common'; -import { DATA_VIEW_INDEX_PATTERN } from '../../../common/constants'; -import { CspClientPluginStartDeps } from '../../types'; - -/** - * Returns the common logs-* data view with fields filtered by - * fields present in the given index pattern - */ -export const useFilteredDataView = (indexPattern: string) => { - const { - data: { dataViews }, - } = useKibana().services; - - const findDataView = async (): Promise => { - const dataView = (await dataViews.find(DATA_VIEW_INDEX_PATTERN))?.[0]; - if (!dataView) { - throw new Error('Findings data view not found'); - } - - const indexPatternFields = await dataViews.getFieldsForWildcard({ - pattern: indexPattern, - }); - - if (!indexPatternFields) { - throw new Error('Error fetching fields for the index pattern'); - } - - // Filter out fields that are not present in the index pattern passed as a parameter - dataView.fields = dataView.fields.filter((field) => - indexPatternFields.some((indexPatternField) => indexPatternField.name === field.name) - ) as DataView['fields']; - - // Insert fields that are present in the index pattern but not in the data view - indexPatternFields.forEach((indexPatternField) => { - if (!dataView.fields.some((field) => field.name === indexPatternField.name)) { - dataView.fields.push(indexPatternField as DataView['fields'][0]); - } - }); - - return dataView; - }; - - return useQuery(['latest_findings_data_view', indexPattern], findDataView); -}; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts index 2ab22ff4dd092..86b9692cbfc43 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts @@ -8,8 +8,45 @@ import { useQuery } from '@tanstack/react-query'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import type { DataView } from '@kbn/data-plugin/common'; +import { i18n } from '@kbn/i18n'; +import { LATEST_FINDINGS_INDEX_PATTERN } from '../../../common/constants'; import { CspClientPluginStartDeps } from '../../types'; +const cloudSecurityFieldLabels: Record = { + 'result.evaluation': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.resultColumnLabel', + { defaultMessage: 'Result' } + ), + 'resource.id': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.resourceIdColumnLabel', + { defaultMessage: 'Resource ID' } + ), + 'resource.name': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.resourceNameColumnLabel', + { defaultMessage: 'Resource Name' } + ), + 'resource.sub_type': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.resourceTypeColumnLabel', + { defaultMessage: 'Resource Type' } + ), + 'rule.benchmark.rule_number': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.ruleNumberColumnLabel', + { defaultMessage: 'Rule Number' } + ), + 'rule.name': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.ruleNameColumnLabel', + { defaultMessage: 'Rule Name' } + ), + 'rule.section': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.ruleSectionColumnLabel', + { defaultMessage: 'CIS Section' } + ), + '@timestamp': i18n.translate( + 'xpack.csp.findings.findingsTable.findingsTableColumn.lastCheckedColumnLabel', + { defaultMessage: 'Last Checked' } + ), +} as const; + /** * TODO: use perfected kibana data views */ @@ -19,11 +56,23 @@ export const useLatestFindingsDataView = (dataView: string) => { } = useKibana().services; const findDataView = async (): Promise => { - const dataViewObj = (await dataViews.find(dataView))?.[0]; + const [dataViewObj] = await dataViews.find(dataView); if (!dataViewObj) { throw new Error(`Data view not found [Name: {${dataView}}]`); } + if (dataView === LATEST_FINDINGS_INDEX_PATTERN) { + Object.entries(cloudSecurityFieldLabels).forEach(([field, label]) => { + if ( + !dataViewObj.getFieldAttrs()[field]?.customLabel || + dataViewObj.getFieldAttrs()[field]?.customLabel === field + ) { + dataViewObj.setFieldCustomLabel(field, label); + } + }); + await dataViews.updateSavedObject(dataViewObj); + } + return dataViewObj; }; diff --git a/x-pack/plugins/cloud_security_posture/public/common/constants.ts b/x-pack/plugins/cloud_security_posture/public/common/constants.ts index bec25a70dbd1e..9f267e07569c2 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/constants.ts @@ -38,6 +38,8 @@ export const CSP_MOMENT_FORMAT = 'MMMM D, YYYY @ HH:mm:ss.SSS'; export const MAX_FINDINGS_TO_LOAD = 500; export const DEFAULT_VISIBLE_ROWS_PER_PAGE = 25; +export const LOCAL_STORAGE_DATA_TABLE_PAGE_SIZE_KEY = 'cloudPosture:dataTable:pageSize'; +export const LOCAL_STORAGE_DATA_TABLE_COLUMNS_KEY = 'cloudPosture:dataTable:columns'; export const LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY = 'cloudPosture:findings:pageSize'; export const LOCAL_STORAGE_PAGE_SIZE_BENCHMARK_KEY = 'cloudPosture:benchmark:pageSize'; export const LOCAL_STORAGE_PAGE_SIZE_RULES_KEY = 'cloudPosture:rules:pageSize'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts index 2d42c2a8303d6..0becb56e6ec22 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts @@ -8,19 +8,18 @@ import { Dispatch, SetStateAction, useCallback } from 'react'; import { type DataView } from '@kbn/data-views-plugin/common'; import { BoolQuery } from '@kbn/es-query'; import { CriteriaWithPagination } from '@elastic/eui'; +import { DataTableRecord } from '@kbn/discover-utils/types'; import { useUrlQuery } from '../use_url_query'; import { usePageSize } from '../use_page_size'; import { getDefaultQuery, useBaseEsQuery, usePersistedQuery } from './utils'; - -interface QuerySort { - direction: string; - id: string; -} +import { LOCAL_STORAGE_DATA_TABLE_COLUMNS_KEY } from '../../constants'; export interface CloudPostureTableResult { + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable setUrlQuery: (query: any) => void; - // TODO: remove any, this sorting is used for both EuiGrid and EuiTable which uses different types of sorts + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable sort: any; + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable filters: any[]; query?: { bool: BoolQuery }; queryError?: Error; @@ -28,13 +27,17 @@ export interface CloudPostureTableResult { // TODO: remove any, urlQuery is an object with query fields but we also add custom fields to it, need to assert usages urlQuery: any; setTableOptions: (options: CriteriaWithPagination) => void; + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable handleUpdateQuery: (query: any) => void; pageSize: number; setPageSize: Dispatch>; onChangeItemsPerPage: (newPageSize: number) => void; onChangePage: (newPageIndex: number) => void; - onSort: (sort: QuerySort[]) => void; + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable + onSort: (sort: any) => void; onResetFilters: () => void; + columnsLocalStorageKey: string; + getRowsFromPages: (data: Array<{ page: DataTableRecord[] }> | undefined) => DataTableRecord[]; } /* @@ -44,10 +47,13 @@ export const useCloudPostureTable = ({ defaultQuery = getDefaultQuery, dataView, paginationLocalStorageKey, + columnsLocalStorageKey, }: { + // TODO: Remove any when all finding tables are converted to CloudSecurityDataTable defaultQuery?: (params: any) => any; dataView: DataView; paginationLocalStorageKey: string; + columnsLocalStorageKey?: string; }): CloudPostureTableResult => { const getPersistedDefaultQuery = usePersistedQuery(defaultQuery); const { urlQuery, setUrlQuery } = useUrlQuery(getPersistedDefaultQuery); @@ -120,6 +126,13 @@ export const useCloudPostureTable = ({ [setUrlQuery] ); + const getRowsFromPages = (data: Array<{ page: DataTableRecord[] }> | undefined) => + data + ?.map(({ page }: { page: DataTableRecord[] }) => { + return page; + }) + .flat() || []; + return { setUrlQuery, sort: urlQuery.sort, @@ -136,5 +149,7 @@ export const useCloudPostureTable = ({ onChangePage, onSort, onResetFilters, + columnsLocalStorageKey: columnsLocalStorageKey || LOCAL_STORAGE_DATA_TABLE_COLUMNS_KEY, + getRowsFromPages, }; }; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx new file mode 100644 index 0000000000000..2318a16f2efbb --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -0,0 +1,275 @@ +/* + * 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, { useState, useMemo } from 'react'; +import { UnifiedDataTableSettings, useColumns } from '@kbn/unified-data-table'; +import { type DataView } from '@kbn/data-views-plugin/common'; +import { UnifiedDataTable, DataLoadingState } from '@kbn/unified-data-table'; +import { CellActionsProvider } from '@kbn/cell-actions'; +import { + ROW_HEIGHT_OPTION, + SHOW_MULTIFIELDS, + SORT_DEFAULT_ORDER_SETTING, +} from '@kbn/discover-utils'; +import { DataTableRecord } from '@kbn/discover-utils/types'; +import { + EuiDataGridCellValueElementProps, + EuiDataGridStyle, + EuiFlexItem, + EuiProgress, +} from '@elastic/eui'; +import { AddFieldFilterHandler } from '@kbn/unified-field-list'; +import { generateFilters } from '@kbn/data-plugin/public'; +import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import numeral from '@elastic/numeral'; +import { useKibana } from '../../common/hooks/use_kibana'; +import { CloudPostureTableResult } from '../../common/hooks/use_cloud_posture_table'; +import { FindingsGroupBySelector } from '../../pages/configurations/layout/findings_group_by_selector'; +import { EmptyState } from '../empty_state'; +import { MAX_FINDINGS_TO_LOAD } from '../../common/constants'; +import { useStyles } from './use_styles'; + +export interface CloudSecurityDefaultColumn { + id: string; +} + +const formatNumber = (value: number) => { + return value < 1000 ? value : numeral(value).format('0.0a'); +}; + +const gridStyle: EuiDataGridStyle = { + border: 'horizontal', + cellPadding: 'l', + stripes: false, + header: 'underline', +}; + +const useNewFieldsApi = true; + +interface CloudSecurityDataGridProps { + dataView: DataView; + isLoading: boolean; + defaultColumns: CloudSecurityDefaultColumn[]; + rows: DataTableRecord[]; + total: number; + /** + * This is the component that will be rendered in the flyout when a row is expanded. + * This component will receive the row data and a function to close the flyout. + */ + flyoutComponent: (hit: DataTableRecord, onCloseFlyout: () => void) => JSX.Element; + /** + * This is the object that contains all the data and functions from the useCloudPostureTable hook. + * This is also used to manage the table state from the parent component. + */ + cloudPostureTable: CloudPostureTableResult; + title: string; + /** + * This is a function that returns a map of column ids to custom cell renderers. + * This is useful for rendering custom components for cells in the table. + */ + customCellRenderer?: (rows: DataTableRecord[]) => { + [key: string]: (props: EuiDataGridCellValueElementProps) => JSX.Element; + }; + /** + * Function to load more rows once the max number of rows has been reached. + */ + loadMore: () => void; + 'data-test-subj'?: string; +} + +export const CloudSecurityDataTable = ({ + dataView, + isLoading, + defaultColumns, + rows, + total, + flyoutComponent, + cloudPostureTable, + loadMore, + title, + customCellRenderer, + ...rest +}: CloudSecurityDataGridProps) => { + const { + columnsLocalStorageKey, + pageSize, + onChangeItemsPerPage, + setUrlQuery, + onSort, + onResetFilters, + filters, + sort, + } = cloudPostureTable; + + const [columns, setColumns] = useLocalStorage( + columnsLocalStorageKey, + defaultColumns.map((c) => c.id) + ); + const [settings, setSettings] = useLocalStorage( + `${columnsLocalStorageKey}:settings`, + { + columns: defaultColumns.reduce((prev, curr) => { + const newColumn = { [curr.id]: {} }; + return { ...prev, ...newColumn }; + }, {} as UnifiedDataTableSettings['columns']), + } + ); + + const [expandedDoc, setExpandedDoc] = useState(undefined); + + const renderDocumentView = (hit: DataTableRecord) => + flyoutComponent(hit, () => setExpandedDoc(undefined)); + + // services needed for unified-data-table package + const { + uiSettings, + uiActions, + dataViews, + data, + application, + theme, + fieldFormats, + toastNotifications, + storage, + dataViewFieldEditor, + } = useKibana().services; + + const styles = useStyles(); + + const { capabilities } = application; + const { filterManager } = data.query; + + const services = { + theme, + fieldFormats, + uiSettings, + toastNotifications, + storage, + data, + dataViewFieldEditor, + }; + + const { columns: currentColumns, onSetColumns } = useColumns({ + capabilities, + defaultOrder: uiSettings.get(SORT_DEFAULT_ORDER_SETTING), + dataView, + dataViews, + setAppState: (props) => setColumns(props.columns), + useNewFieldsApi, + columns, + sort, + }); + + const onAddFilter: AddFieldFilterHandler | undefined = useMemo( + () => + filterManager && dataView + ? (clickedField, values, operation) => { + const newFilters = generateFilters( + filterManager, + clickedField, + values, + operation, + dataView + ); + filterManager.addFilters(newFilters); + setUrlQuery({ + filters: filterManager.getFilters(), + }); + } + : undefined, + [dataView, filterManager, setUrlQuery] + ); + + const onResize = (colSettings: { columnId: string; width: number }) => { + const grid = settings || {}; + const newColumns = { ...(grid.columns || {}) }; + newColumns[colSettings.columnId] = { + width: Math.round(colSettings.width), + }; + const newGrid = { ...grid, columns: newColumns }; + setSettings(newGrid); + }; + + const externalCustomRenderers = useMemo(() => { + if (!customCellRenderer) { + return undefined; + } + return customCellRenderer(rows); + }, [customCellRenderer, rows]); + + if (!isLoading && !rows.length) { + return ; + } + + return ( + +
0 ? 454 : 414}px)`, + }} + > + + } + gridStyleOverride={gridStyle} + /> +
+
+ ); +}; + +const AdditionalControls = ({ total, title }: { total: number; title: string }) => { + const styles = useStyles(); + return ( + <> + + {`${formatNumber(total)} ${title}`} + + + + + + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts new file mode 100644 index 0000000000000..b2abf6bd4b8bd --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './cloud_security_data_table'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts new file mode 100644 index 0000000000000..200ea5dbe7330 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.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 { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; + +export const useStyles = () => { + const { euiTheme } = useEuiTheme(); + + const gridContainer = css` + min-height: 400px; + `; + + const gridStyle = css` + & .euiDataGridHeaderCell__icon { + display: none; + } + & .euiDataGrid__controls { + border-bottom: none; + margin-bottom: ${euiTheme.size.s}; + border-top: none; + & .euiButtonEmpty { + font-weight: ${euiTheme.font.weight.bold}; + } + } + & .euiDataGrid--headerUnderline .euiDataGridHeaderCell { + border-bottom: ${euiTheme.border.width.thick} solid ${euiTheme.colors.fullShade}; + } + & .euiDataGridRowCell__contentByHeight + .euiDataGridRowCell__expandActions { + padding: 0; + } + & .euiButtonIcon[data-test-subj='docTableExpandToggleColumn'] { + color: ${euiTheme.colors.primary}; + } + + & .euiDataGridRowCell { + font-size: ${euiTheme.size.m}; + } + & .euiDataGridRowCell__expandFlex { + align-items: center; + } + & .euiDataGridRowCell.euiDataGridRowCell--numeric { + text-align: left; + } + & .euiDataGrid__controls { + gap: ${euiTheme.size.s}; + } + & .euiDataGrid__leftControls { + display: flex; + align-items: center; + width: 100%; + } + & .cspDataTableTotal { + font-size: ${euiTheme.size.m}; + font-weight: ${euiTheme.font.weight.bold}; + } + & .euiDataGrid__rightControls { + display: none; + } + + & [data-test-subj='docTableExpandToggleColumn'] svg { + inline-size: 16px; + block-size: 16px; + } + + & .unifiedDataTable__cellValue { + font-family: ${euiTheme.font.family}; + } + `; + + const groupBySelector = css` + width: 188px; + margin-left: auto; + `; + + return { + gridStyle, + groupBySelector, + gridContainer, + }; +}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx index 96e5b2a964f94..d1b35ab617a96 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx @@ -12,13 +12,10 @@ import { useLatestFindingsDataView } from '../../common/api/use_latest_findings_ import { Configurations } from './configurations'; import { TestProvider } from '../../test/test_provider'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import { createStubDataView } from '@kbn/data-views-plugin/public/data_views/data_view.stub'; import { CSP_LATEST_FINDINGS_DATA_VIEW } from '../../../common/constants'; import * as TEST_SUBJECTS from './test_subjects'; import type { DataView } from '@kbn/data-plugin/common'; -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; @@ -27,11 +24,9 @@ import { useCspIntegrationLink } from '../../common/navigation/use_csp_integrati import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; import { render } from '@testing-library/react'; import { expectIdsInDoc } from '../../test/utils'; -import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; -import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import { PACKAGE_NOT_INSTALLED_TEST_SUBJECT } from '../../components/cloud_posture_page'; -import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; +import { useCloudPostureTable } from '../../common/hooks/use_cloud_posture_table'; jest.mock('../../common/api/use_latest_findings_data_view'); jest.mock('../../common/api/use_setup_status_api'); @@ -39,6 +34,7 @@ jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); jest.mock('../../common/navigation/use_csp_integration_link'); +jest.mock('../../common/hooks/use_cloud_posture_table'); const chance = new Chance(); @@ -58,21 +54,18 @@ beforeEach(() => { data: true, }) ); + + (useCloudPostureTable as jest.Mock).mockImplementation(() => ({ + getRowsFromPages: jest.fn(), + columnsLocalStorageKey: 'test', + filters: [], + sort: [], + })); }); const renderFindingsPage = () => { render( - + ); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index 2c59f360850d8..524e893092e53 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -76,9 +76,9 @@ type FindingsTab = typeof tabs[number]; interface FindingFlyoutProps { onClose(): void; findings: CspFinding; - flyoutIndex: number; - findingsCount: number; - onPaginate: (pageIndex: number) => void; + flyoutIndex?: number; + findingsCount?: number; + onPaginate?: (pageIndex: number) => void; } export const CodeBlock: React.FC> = (props) => ( @@ -166,16 +166,22 @@ export const FindingsRuleFlyout = ({ - - - - + + {onPaginate && ( + + + + )} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.test.tsx deleted file mode 100644 index 100c42b6520cb..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.test.tsx +++ /dev/null @@ -1,87 +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 React from 'react'; -import { render } from '@testing-library/react'; -import { LatestFindingsContainer, getDefaultQuery } from './latest_findings_container'; -import { createStubDataView } from '@kbn/data-views-plugin/common/mocks'; -import { CSP_LATEST_FINDINGS_DATA_VIEW } from '../../../../common/constants'; -import { DEFAULT_VISIBLE_ROWS_PER_PAGE } from '../../../common/constants'; -import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; -import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { TestProvider } from '../../../test/test_provider'; -import { getFindingsQuery } from './use_latest_findings'; -import { encodeQuery } from '../../../common/navigation/query_utils'; -import { useLocation } from 'react-router-dom'; -import { buildEsQuery } from '@kbn/es-query'; -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; -import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; -import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; -import { getPaginationQuery } from '../../../common/hooks/use_cloud_posture_table/utils'; -import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; - -jest.mock('../../../common/api/use_latest_findings_data_view'); -jest.mock('../../../common/api/use_cis_kubernetes_integration'); - -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useHistory: () => ({ push: jest.fn(), location: { pathname: '' } }), - useLocation: jest.fn(), -})); - -beforeEach(() => { - jest.restoreAllMocks(); -}); - -describe('', () => { - it('data#search.search fn called with URL query', () => { - const query = getDefaultQuery({ - filters: [], - query: { language: 'kuery', query: '' }, - }); - const pageSize = DEFAULT_VISIBLE_ROWS_PER_PAGE; - const dataMock = dataPluginMock.createStartContract(); - const dataView = createStubDataView({ - spec: { - id: CSP_LATEST_FINDINGS_DATA_VIEW, - }, - }); - - (useLocation as jest.Mock).mockReturnValue({ - search: encodeQuery(query), - }); - - render( - - - - ); - - const baseQuery = { - query: buildEsQuery(dataView, query.query, query.filters), - }; - - expect(dataMock.search.search).toHaveBeenNthCalledWith(1, { - params: getFindingsQuery({ - ...baseQuery, - ...getPaginationQuery({ ...query, pageSize }), - sort: query.sort, - enabled: true, - }), - }); - }); -}); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx index 3c5443d652c08..049010126837c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx @@ -4,80 +4,140 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useCallback } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; +import React, { useMemo } from 'react'; +import { EuiDataGridCellValueElementProps, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { DataTableRecord } from '@kbn/discover-utils/types'; +import { Filter, Query } from '@kbn/es-query'; +import { TimestampTableCell } from '../../../components/timestamp_table_cell'; +import { CspEvaluationBadge } from '../../../components/csp_evaluation_badge'; import type { Evaluation } from '../../../../common/types'; import type { FindingsBaseProps, FindingsBaseURLQuery } from '../../../common/types'; -import { FindingsTable } from './latest_findings_table'; import { FindingsSearchBar } from '../layout/findings_search_bar'; import * as TEST_SUBJECTS from '../test_subjects'; import { useLatestFindings } from './use_latest_findings'; -import type { FindingsGroupByNoneQuery } from './use_latest_findings'; import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; -import { getFindingsPageSizeInfo, getFilters } from '../utils/utils'; -import { LimitedResultsBar } from '../layout/findings_layout'; -import { FindingsGroupBySelector } from '../layout/findings_group_by_selector'; -import { usePageSlice } from '../../../common/hooks/use_page_slice'; +import { getFilters } from '../utils/utils'; import { ErrorCallout } from '../layout/error_callout'; -import { useLimitProperties } from '../../../common/utils/get_limit_properties'; -import { LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY } from '../../../common/constants'; +import { LOCAL_STORAGE_DATA_TABLE_PAGE_SIZE_KEY } from '../../../common/constants'; import { CspFinding } from '../../../../common/schemas/csp_finding'; import { useCloudPostureTable } from '../../../common/hooks/use_cloud_posture_table'; -import { getPaginationTableParams } from '../../../common/hooks/use_cloud_posture_table/utils'; +import { + CloudSecurityDataTable, + CloudSecurityDefaultColumn, +} from '../../../components/cloud_security_data_table'; +import { FindingsRuleFlyout } from '../findings_flyout/findings_flyout'; -export const getDefaultQuery = ({ +const getDefaultQuery = ({ query, filters, -}: FindingsBaseURLQuery): FindingsBaseURLQuery & - FindingsGroupByNoneQuery & { findingIndex: number } => ({ +}: { + query: Query; + filters: Filter[]; +}): FindingsBaseURLQuery & { + sort: string[][]; +} => ({ query, filters, - sort: { field: '@timestamp', direction: 'desc' }, - pageIndex: 0, - findingIndex: -1, + sort: [['@timestamp', 'desc']], +}); + +const defaultColumns: CloudSecurityDefaultColumn[] = [ + { id: 'result.evaluation' }, + { id: 'resource.id' }, + { id: 'resource.name' }, + { id: 'resource.sub_type' }, + { id: 'rule.benchmark.rule_number' }, + { id: 'rule.name' }, + { id: 'rule.section' }, + { id: '@timestamp' }, +]; + +/** + * Type Guard for checking if the given source is a CspFinding + */ +const isCspFinding = (source: Record | undefined): source is CspFinding => { + return source?.result?.evaluation !== undefined; +}; + +/** + * This Wrapper component renders the children if the given row is a CspFinding + * it uses React's Render Props pattern + */ +const CspFindingRenderer = ({ + row, + children, +}: { + row: DataTableRecord; + children: ({ finding }: { finding: CspFinding }) => JSX.Element; +}) => { + const source = row.raw._source; + const finding = isCspFinding(source) && (source as CspFinding); + if (!finding) return <>; + return children({ finding }); +}; + +/** + * Flyout component for the latest findings table + */ +const flyoutComponent = (row: DataTableRecord, onCloseFlyout: () => void): JSX.Element => { + return ( + + {({ finding }) => } + + ); +}; + +const columnsLocalStorageKey = 'cloudSecurityPostureLatestFindingsColumns'; + +const title = i18n.translate('xpack.csp.findings.latestFindings.tableRowTypeLabel', { + defaultMessage: 'Findings', +}); + +const customCellRenderer = (rows: DataTableRecord[]) => ({ + 'result.evaluation': ({ rowIndex }: EuiDataGridCellValueElementProps) => ( + + {({ finding }) => } + + ), + '@timestamp': ({ rowIndex }: EuiDataGridCellValueElementProps) => ( + + {({ finding }) => } + + ), }); export const LatestFindingsContainer = ({ dataView }: FindingsBaseProps) => { - const { - pageIndex, - query, - sort, - queryError, - pageSize, - setTableOptions, - urlQuery, - setUrlQuery, - filters, - onResetFilters, - } = useCloudPostureTable({ + const cloudPostureTable = useCloudPostureTable({ dataView, + paginationLocalStorageKey: LOCAL_STORAGE_DATA_TABLE_PAGE_SIZE_KEY, + columnsLocalStorageKey, defaultQuery: getDefaultQuery, - paginationLocalStorageKey: LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY, }); - /** - * Page ES query result - */ - const findingsGroupByNone = useLatestFindings({ + const { query, sort, queryError, setUrlQuery, filters, getRowsFromPages } = cloudPostureTable; + + const { + data, + error: fetchError, + isFetching, + fetchNextPage, + } = useLatestFindings({ query, sort, enabled: !queryError, }); - const slicedPage = usePageSlice(findingsGroupByNone.data?.page, pageIndex, pageSize); + const rows = useMemo(() => getRowsFromPages(data?.pages), [data?.pages, getRowsFromPages]); - const error = findingsGroupByNone.error || queryError; + const error = fetchError || queryError; - const { isLastLimitedPage, limitedTotalItemCount } = useLimitProperties({ - total: findingsGroupByNone.data?.total, - pageIndex, - pageSize, - }); + const passed = data?.pages[0].count.passed || 0; + const failed = data?.pages[0].count.failed || 0; + const total = data?.pages[0].total || 0; const handleDistributionClick = (evaluation: Evaluation) => { setUrlQuery({ - pageIndex: 0, filters: getFilters({ filters, dataView, @@ -88,117 +148,36 @@ export const LatestFindingsContainer = ({ dataView }: FindingsBaseProps) => { }); }; - const flyoutFindingIndex = urlQuery?.findingIndex; - - const pagination = getPaginationTableParams({ - pageSize, - pageIndex, - totalItemCount: limitedTotalItemCount, - }); - - const onOpenFlyout = useCallback( - (flyoutFinding: CspFinding) => { - setUrlQuery({ - findingIndex: slicedPage.findIndex( - (finding) => - finding.resource.id === flyoutFinding?.resource.id && - finding.rule.id === flyoutFinding?.rule.id - ), - }); - }, - [slicedPage, setUrlQuery] - ); - - const onCloseFlyout = () => - setUrlQuery({ - findingIndex: -1, - }); - - const onPaginateFlyout = useCallback( - (nextFindingIndex: number) => { - // the index of the finding in the current page - const newFindingIndex = nextFindingIndex % pageSize; - - // if the finding is not in the current page, we need to change the page - const flyoutPageIndex = Math.floor(nextFindingIndex / pageSize); - - setUrlQuery({ - pageIndex: flyoutPageIndex, - findingIndex: newFindingIndex, - }); - }, - [pageSize, setUrlQuery] - ); - return ( -
- { - setUrlQuery({ ...newQuery, pageIndex: 0 }); - }} - loading={findingsGroupByNone.isFetching} - /> + + - {!error && ( - - - - - - - )} {error && } {!error && ( <> - {findingsGroupByNone.isSuccess && !!findingsGroupByNone.data.page.length && ( + {total > 0 && ( )} - - setUrlQuery({ - pageIndex: 0, - filters: getFilters({ - filters, - dataView, - field, - value, - negate, - }), - }) - } + )} - {isLastLimitedPage && } -
+ ); }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.test.tsx deleted file mode 100644 index 31b2db9592f63..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.test.tsx +++ /dev/null @@ -1,133 +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 React from 'react'; -import userEvent from '@testing-library/user-event'; -import { render, screen, within } from '@testing-library/react'; -import * as TEST_SUBJECTS from '../test_subjects'; -import { FindingsTable } from './latest_findings_table'; -import type { PropsOf } from '@elastic/eui'; -import Chance from 'chance'; -import { TestProvider } from '../../../test/test_provider'; -import { getFindingsFixture } from '../../../test/fixtures/findings_fixture'; -import { EMPTY_STATE_TEST_SUBJ } from '../../../components/test_subjects'; - -const chance = new Chance(); - -type TableProps = PropsOf; - -const onAddFilter = jest.fn(); -const onOpenFlyout = jest.fn(); -const onCloseFlyout = jest.fn(); - -describe('', () => { - const TestComponent = ({ ...overrideProps }) => ( - - - - ); - - const renderWrapper = (overrideProps: Partial = {}) => { - return render(); - }; - - it('opens/closes the flyout when clicked on expand/close buttons ', async () => { - const props = { - items: [getFindingsFixture()], - }; - const { rerender } = renderWrapper(props); - - expect(screen.queryByTestId(TEST_SUBJECTS.FINDINGS_FLYOUT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(TEST_SUBJECTS.FINDINGS_TABLE_EXPAND_COLUMN)).toBeInTheDocument(); - - userEvent.click(screen.getByTestId(TEST_SUBJECTS.FINDINGS_TABLE_EXPAND_COLUMN)); - expect(onOpenFlyout).toHaveBeenCalled(); - rerender(); - - userEvent.click(screen.getByTestId('euiFlyoutCloseButton')); - expect(onCloseFlyout).toHaveBeenCalled(); - rerender(); - expect(screen.queryByTestId(TEST_SUBJECTS.FINDINGS_FLYOUT)).not.toBeInTheDocument(); - }); - - it('renders the zero state when status success and data has a length of zero ', async () => { - renderWrapper({ items: [] }); - - expect(screen.getByTestId(EMPTY_STATE_TEST_SUBJ)).toBeInTheDocument(); - }); - - it('renders the table with provided items', () => { - const names = chance.unique(chance.sentence, 10); - const data = names.map((name) => { - const fixture = getFindingsFixture(); - return { ...fixture, rule: { ...fixture.rule, name } }; - }); - - renderWrapper({ items: data }); - - data.forEach((item) => { - expect(screen.getAllByText(item.rule.name)[0]).toBeInTheDocument(); - }); - }); - - it('adds filter with a cell button click', () => { - const names = chance.unique(chance.sentence, 10); - const data = names.map((name) => { - const fixture = getFindingsFixture(); - return { ...fixture, rule: { ...fixture.rule, name } }; - }); - - renderWrapper({ items: data }); - - const row = data[0]; - - const columns = [ - 'result.evaluation', - 'resource.id', - 'resource.name', - 'resource.sub_type', - 'rule.name', - ]; - - columns.forEach((field) => { - const cellElement = screen.getByTestId( - TEST_SUBJECTS.getFindingsTableCellTestId(field, row.resource.id) - ); - userEvent.hover(cellElement); - const addFilterElement = within(cellElement).getByTestId( - TEST_SUBJECTS.FINDINGS_TABLE_CELL_ADD_FILTER - ); - const addNegatedFilterElement = within(cellElement).getByTestId( - TEST_SUBJECTS.FINDINGS_TABLE_CELL_ADD_NEGATED_FILTER - ); - - // We need to account for values like resource.id (deep.nested.values) - const value = field.split('.').reduce((a, c) => a[c], row); - - expect(addFilterElement).toBeVisible(); - expect(addNegatedFilterElement).toBeVisible(); - - userEvent.click(addFilterElement); - expect(onAddFilter).toHaveBeenCalledWith(field, value, false); - - userEvent.click(addNegatedFilterElement); - expect(onAddFilter).toHaveBeenCalledWith(field, value, true); - }); - }); -}); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx deleted file mode 100644 index 3ad8deb346998..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx +++ /dev/null @@ -1,120 +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 React, { useMemo } from 'react'; -import { - EuiBasicTable, - useEuiTheme, - type Pagination, - type EuiBasicTableProps, - type CriteriaWithPagination, - type EuiTableActionsColumnType, - type EuiTableFieldDataColumnType, -} from '@elastic/eui'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; -import * as TEST_SUBJECTS from '../test_subjects'; -import { FindingsRuleFlyout } from '../findings_flyout/findings_flyout'; -import { - baseFindingsColumns, - createColumnWithFilters, - getExpandColumn, - type OnAddFilter, -} from '../layout/findings_layout'; -import { getSelectedRowStyle } from '../utils/utils'; -import { EmptyState } from '../../../components/empty_state'; - -type TableProps = Required>; - -interface Props { - loading: boolean; - items: CspFinding[]; - pagination: Pagination & { pageSize: number }; - sorting: TableProps['sorting']; - setTableOptions(options: CriteriaWithPagination): void; - onAddFilter: OnAddFilter; - onPaginateFlyout: (pageIndex: number) => void; - onCloseFlyout: () => void; - onOpenFlyout: (finding: CspFinding) => void; - flyoutFindingIndex: number; - onResetFilters: () => void; -} - -const FindingsTableComponent = ({ - loading, - items, - pagination, - sorting, - setTableOptions, - onAddFilter, - onOpenFlyout, - flyoutFindingIndex, - onPaginateFlyout, - onCloseFlyout, - onResetFilters, -}: Props) => { - const { euiTheme } = useEuiTheme(); - - const selectedFinding = items[flyoutFindingIndex]; - - const getRowProps = (row: CspFinding) => ({ - 'data-test-subj': TEST_SUBJECTS.getFindingsTableRowTestId(row.resource.id), - style: getSelectedRowStyle(euiTheme, row, selectedFinding), - }); - - const getCellProps = (row: CspFinding, column: EuiTableFieldDataColumnType) => ({ - 'data-test-subj': TEST_SUBJECTS.getFindingsTableCellTestId(column.field, row.resource.id), - }); - - const columns: [ - EuiTableActionsColumnType, - ...Array> - ] = useMemo( - () => [ - getExpandColumn({ onClick: onOpenFlyout }), - createColumnWithFilters(baseFindingsColumns['result.evaluation'], { onAddFilter }), - createColumnWithFilters(baseFindingsColumns['resource.id'], { onAddFilter }), - createColumnWithFilters(baseFindingsColumns['resource.name'], { onAddFilter }), - createColumnWithFilters(baseFindingsColumns['resource.sub_type'], { onAddFilter }), - baseFindingsColumns['rule.benchmark.rule_number'], - createColumnWithFilters(baseFindingsColumns['rule.name'], { onAddFilter }), - createColumnWithFilters(baseFindingsColumns['rule.section'], { onAddFilter }), - baseFindingsColumns['@timestamp'], - ], - [onOpenFlyout, onAddFilter] - ); - - if (!loading && !items.length) { - return ; - } - - return ( - <> - - {selectedFinding && ( - - )} - - ); -}; - -export const FindingsTable = React.memo(FindingsTableComponent); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index 00aa0d817e955..9ce0292175839 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -4,28 +4,30 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { useQuery } from '@tanstack/react-query'; +import { useInfiniteQuery } from '@tanstack/react-query'; import { number } from 'io-ts'; import { lastValueFrom } from 'rxjs'; import type { IKibanaSearchRequest, IKibanaSearchResponse } from '@kbn/data-plugin/common'; import type { Pagination } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { buildDataTableRecord } from '@kbn/discover-utils'; +import { EsHitRecord } from '@kbn/discover-utils/types'; import { CspFinding } from '../../../../common/schemas/csp_finding'; import { useKibana } from '../../../common/hooks/use_kibana'; -import type { Sort, FindingsBaseEsQuery } from '../../../common/types'; +import type { FindingsBaseEsQuery } from '../../../common/types'; import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; import { CSP_LATEST_FINDINGS_DATA_VIEW } from '../../../../common/constants'; import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; import { showErrorToast } from '../../../common/utils/show_error_toast'; interface UseFindingsOptions extends FindingsBaseEsQuery { - sort: Sort; + sort: string[][]; enabled: boolean; } export interface FindingsGroupByNoneQuery { pageIndex: Pagination['pageIndex']; - sort: Sort; + sort: any; } type LatestFindingsRequest = IKibanaSearchRequest; @@ -37,15 +39,24 @@ interface FindingsAggs { count: estypes.AggregationsMultiBucketAggregateBase; } -export const getFindingsQuery = ({ query, sort }: UseFindingsOptions) => ({ +export const getFindingsQuery = ({ query, sort }: UseFindingsOptions, pageParam: any) => ({ index: CSP_LATEST_FINDINGS_DATA_VIEW, query, - sort: getSortField(sort), + sort: getMultiFieldsSort(sort), size: MAX_FINDINGS_TO_LOAD, aggs: getFindingsCountAggQuery(), ignore_unavailable: false, + ...(pageParam ? { search_after: pageParam } : {}), }); +const getMultiFieldsSort = (sort: string[][]) => { + return sort.map(([id, direction]) => { + return { + ...getSortField({ field: id, direction }), + }; + }); +}; + /** * By default, ES will sort keyword fields in case-sensitive format, the * following fields are required to have a case-insensitive sorting. @@ -60,7 +71,7 @@ const fieldsRequiredSortingByPainlessScript = [ * Generates Painless sorting if the given field is matched or returns default sorting * This painless script will sort the field in case-insensitive manner */ -const getSortField = ({ field, direction }: Sort) => { +const getSortField = ({ field, direction }: { field: string; direction: string }) => { if (fieldsRequiredSortingByPainlessScript.includes(field)) { return { _script: { @@ -81,14 +92,14 @@ export const useLatestFindings = (options: UseFindingsOptions) => { data, notifications: { toasts }, } = useKibana().services; - return useQuery( + return useInfiniteQuery( ['csp_findings', { params: options }], - async () => { + async ({ pageParam }) => { const { rawResponse: { hits, aggregations }, } = await lastValueFrom( data.search.search({ - params: getFindingsQuery(options), + params: getFindingsQuery(options, pageParam), }) ); if (!aggregations) throw new Error('expected aggregations to be an defined'); @@ -96,7 +107,7 @@ export const useLatestFindings = (options: UseFindingsOptions) => { throw new Error('expected buckets to be an array'); return { - page: hits.hits.map((hit) => hit._source!), + page: hits.hits.map((hit) => buildDataTableRecord(hit as EsHitRecord)), total: number.is(hits.total) ? hits.total : 0, count: getAggregationCount(aggregations.count.buckets), }; @@ -105,6 +116,10 @@ export const useLatestFindings = (options: UseFindingsOptions) => { enabled: options.enabled, keepPreviousData: true, onError: (err: Error) => showErrorToast(toasts, err), + getNextPageParam: (lastPage) => { + if (lastPage.page.length === 0) return undefined; + return lastPage.page[lastPage.page.length - 1].raw.sort; + }, } ); }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings_by_resource/findings_by_resource_container.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings_by_resource/findings_by_resource_container.tsx index 1ac0470229282..7f483c3ee0847 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings_by_resource/findings_by_resource_container.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings_by_resource/findings_by_resource_container.tsx @@ -16,13 +16,13 @@ import * as TEST_SUBJECTS from '../test_subjects'; import { usePageSlice } from '../../../common/hooks/use_page_slice'; import { FindingsByResourceQuery, useFindingsByResource } from './use_findings_by_resource'; import { FindingsByResourceTable } from './findings_by_resource_table'; -import { getFindingsPageSizeInfo, getFilters } from '../utils/utils'; +import { getFilters } from '../utils/utils'; import { LimitedResultsBar } from '../layout/findings_layout'; import { FindingsGroupBySelector } from '../layout/findings_group_by_selector'; import { findingsNavigation } from '../../../common/navigation/constants'; import { ResourceFindings } from './resource_findings/resource_findings_container'; import { ErrorCallout } from '../layout/error_callout'; -import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; +import { CurrentPageOfTotal, FindingsDistributionBar } from '../layout/findings_distribution_bar'; import { LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY } from '../../../common/constants'; import type { FindingsBaseURLQuery, FindingsBaseProps } from '../../../common/types'; import { useCloudPostureTable } from '../../../common/hooks/use_cloud_posture_table'; @@ -111,34 +111,42 @@ const LatestFindingsByResource = ({ dataView }: FindingsBaseProps) => { loading={findingsGroupByResource.isFetching} /> - {!error && ( - - - - - - - )} + {error && } {!error && ( <> {findingsGroupByResource.isSuccess && !!findingsGroupByResource.data.page.length && ( - + <> + + + + + + + + + + + )} { {!error && ( <> {resourceFindings.isSuccess && !!resourceFindings.data.page.length && ( - + <> + + + + + + + + )} void; - pageStart: number; - pageEnd: number; - type: string; } const formatNumber = (value: number) => (value < 1000 ? value : numeral(value).format('0.0a')); +export const CurrentPageOfTotal = ({ + pageEnd, + pageStart, + total, + type, +}: { + pageEnd: number; + pageStart: number; + total: number; + type: string; +}) => ( + + {pageStart}, + pageEnd: {pageEnd}, + total: {formatNumber(total)}, + type, + }} + /> + +); + export const FindingsDistributionBar = (props: Props) => (
- {} +
); const Counters = (props: Props) => ( - + - - - - + + + ); @@ -86,26 +101,6 @@ const PassedFailedCounters = ({ passed, failed }: Pick) => ( - - {pageStart}, - pageEnd: {pageEnd}, - total: {formatNumber(total)}, - type, - }} - /> - -); - const DistributionBar: React.FC> = ({ passed, failed, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_styles.ts b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_styles.ts index e18f501cbeb9c..245138775e5b9 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_styles.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_styles.ts @@ -67,6 +67,8 @@ export const useStyles = () => { const groupBySelector = css` width: 188px; + display: inline-block; + margin-left: 8px; `; return { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx index a9b8fdaa2f190..6c1aa59cfab4c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx @@ -29,7 +29,6 @@ import type { VulnerabilitiesQueryData } from './types'; import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../common/constants'; import { ErrorCallout } from '../configurations/layout/error_callout'; import { FindingsSearchBar } from '../configurations/layout/findings_search_bar'; -import { useFilteredDataView } from '../../common/api/use_filtered_data_view'; import { CVSScoreBadge, SeverityStatusBadge } from '../../components/vulnerability_badges'; import { EmptyState } from '../../components/empty_state'; import { VulnerabilityFindingFlyout } from './vulnerabilities_finding_flyout/vulnerability_finding_flyout'; @@ -55,6 +54,7 @@ import { findingsNavigation } from '../../common/navigation/constants'; import { VulnerabilitiesByResource } from './vulnerabilities_by_resource/vulnerabilities_by_resource'; import { ResourceVulnerabilities } from './vulnerabilities_by_resource/resource_vulnerabilities/resource_vulnerabilities'; import { getVulnerabilitiesGridCellActions } from './utils/get_vulnerabilities_grid_cell_actions'; +import { useLatestFindingsDataView } from '../../common/api/use_latest_findings_data_view'; const getDefaultQuery = ({ query, filters }: any): any => ({ query, @@ -163,6 +163,11 @@ const VulnerabilitiesDataGrid = ({ }); }, [data?.page, dataView, pageSize, setUrlQuery, urlQuery.filters]); + // Column visibility + const [visibleColumns, setVisibleColumns] = useState( + columns.map(({ id }) => id) // initialize to the full set of columns + ); + const flyoutVulnerabilityIndex = urlQuery?.vulnerabilityIndex; const selectedVulnerabilityIndex = flyoutVulnerabilityIndex @@ -298,10 +303,7 @@ const VulnerabilitiesDataGrid = ({ className={cx({ [styles.gridStyle]: true }, { [styles.highlightStyle]: showHighlight })} aria-label={VULNERABILITIES} columns={columns} - columnVisibility={{ - visibleColumns: columns.map(({ id }) => id), - setVisibleColumns: () => {}, - }} + columnVisibility={{ visibleColumns, setVisibleColumns }} schemaDetectors={[severitySchemaConfig]} rowCount={limitedTotalItemCount} toolbarVisibility={{ @@ -311,7 +313,7 @@ const VulnerabilitiesDataGrid = ({ showFullScreenSelector: false, additionalControls: { left: { - prepend: ( + append: ( <> {i18n.translate('xpack.csp.vulnerabilities.totalVulnerabilities', { @@ -451,7 +453,10 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => { }; export const Vulnerabilities = () => { - const { data, isLoading, error } = useFilteredDataView(LATEST_VULNERABILITIES_INDEX_PATTERN); + const { data, isLoading, error } = useLatestFindingsDataView( + LATEST_VULNERABILITIES_INDEX_PATTERN + ); + const getSetupStatus = useCspSetupStatusApi(); if (getSetupStatus?.data?.vuln_mgmt?.status !== 'indexed') return ; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx index 6eab4ba03f682..24c12405c1436 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx @@ -6,16 +6,14 @@ */ import React from 'react'; import Chance from 'chance'; -import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import { Vulnerabilities } from './vulnerabilities'; import { + CSP_LATEST_FINDINGS_DATA_VIEW, LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useLatestFindingsDataView } from '../../common/api/use_latest_findings_data_view'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; @@ -26,11 +24,9 @@ import { } from '../../components/test_subjects'; import { render } from '@testing-library/react'; import { expectIdsInDoc } from '../../test/utils'; -import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; -import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import { TestProvider } from '../../test/test_provider'; -import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; +import { createStubDataView } from '@kbn/data-views-plugin/common/stubs'; jest.mock('../../common/api/use_latest_findings_data_view'); jest.mock('../../common/api/use_setup_status_api'); @@ -57,21 +53,20 @@ beforeEach(() => { data: true, }) ); + + (useLatestFindingsDataView as jest.Mock).mockReturnValue({ + status: 'success', + data: createStubDataView({ + spec: { + id: CSP_LATEST_FINDINGS_DATA_VIEW, + }, + }), + }); }); const renderVulnerabilitiesPage = () => { render( - + ); diff --git a/x-pack/plugins/cloud_security_posture/public/plugin.tsx b/x-pack/plugins/cloud_security_posture/public/plugin.tsx index 32e5ee577e40e..f215841b30cea 100755 --- a/x-pack/plugins/cloud_security_posture/public/plugin.tsx +++ b/x-pack/plugins/cloud_security_posture/public/plugin.tsx @@ -7,8 +7,8 @@ import React, { lazy, Suspense } from 'react'; import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import { SubscriptionTrackingProvider } from '@kbn/subscription-tracking'; import { CspLoadingState } from './components/csp_loading_state'; import type { CspRouterProps } from './application/csp_router'; import type { @@ -68,20 +68,17 @@ export class CspPlugin Component: LazyCspCustomAssets, }); + const storage = new Storage(localStorage); + // Keep as constant to prevent remounts https://github.com/elastic/kibana/issues/146773 const App = (props: CspRouterProps) => ( - + - -
- - - -
-
+
+ + + +
); diff --git a/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx b/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx index 57fc2935e5708..3f89c934e5dd4 100755 --- a/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx +++ b/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx @@ -21,11 +21,13 @@ import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; import { fleetMock } from '@kbn/fleet-plugin/public/mocks'; import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; +import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; +import { sessionStorageMock } from '@kbn/core-http-server-mocks'; import type { CspClientPluginStartDeps } from '../types'; interface CspAppDeps { core: CoreStart; - deps: CspClientPluginStartDeps; + deps: Partial; params: AppMountParameters; } @@ -38,6 +40,8 @@ export const TestProvider: React.FC> = ({ discover: discoverPluginMock.createStartContract(), fleet: fleetMock.createStartMock(), licensing: licensingMock.createStart(), + uiActions: uiActionsPluginMock.createStartContract(), + storage: sessionStorageMock.create(), }, params = coreMock.createAppMountParameters(), children, diff --git a/x-pack/plugins/cloud_security_posture/public/types.ts b/x-pack/plugins/cloud_security_posture/public/types.ts index c888496a0b157..6766067df67e0 100755 --- a/x-pack/plugins/cloud_security_posture/public/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/types.ts @@ -7,9 +7,16 @@ import type { CloudSetup } from '@kbn/cloud-plugin/public'; import type { LicensingPluginStart } from '@kbn/licensing-plugin/public'; +import { DataViewsServicePublic } from '@kbn/data-views-plugin/public'; import type { ComponentType, ReactNode } from 'react'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; +import { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; +import { IndexPatternFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { ToastsStart } from '@kbn/core/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; + import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; import type { DiscoverStart } from '@kbn/discover-plugin/public'; import type { FleetSetup, FleetStart } from '@kbn/fleet-plugin/public'; @@ -40,6 +47,7 @@ export interface CspClientPluginSetupDeps { data: DataPublicPluginSetup; fleet: FleetSetup; cloud: CloudSetup; + uiActions: UiActionsSetup; // optional usageCollection?: UsageCollectionSetup; } @@ -47,12 +55,19 @@ export interface CspClientPluginSetupDeps { export interface CspClientPluginStartDeps { // required data: DataPublicPluginStart; + dataViews: DataViewsServicePublic; + dataViewFieldEditor: IndexPatternFieldEditorStart; unifiedSearch: UnifiedSearchPublicPluginStart; + uiActions: UiActionsStart; + fieldFormats: FieldFormatsStart; + toastNotifications: ToastsStart; charts: ChartsPluginStart; discover: DiscoverStart; fleet: FleetStart; licensing: LicensingPluginStart; share: SharePluginStart; + storage: Storage; + // optional usageCollection?: UsageCollectionStart; } diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json index 307394e41d84b..113ddcb92202a 100755 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/plugins/cloud_security_posture/tsconfig.json @@ -50,7 +50,17 @@ "@kbn/share-plugin", "@kbn/core-http-server", "@kbn/core-http-browser", - "@kbn/subscription-tracking" + "@kbn/subscription-tracking", + "@kbn/discover-utils", + "@kbn/unified-data-table", + "@kbn/cell-actions", + "@kbn/unified-field-list", + "@kbn/unified-doc-viewer", + "@kbn/kibana-utils-plugin", + "@kbn/ui-actions-plugin", + "@kbn/core-http-server-mocks", + "@kbn/field-formats-plugin", + "@kbn/data-view-field-editor-plugin" ], "exclude": ["target/**/*"] } diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts index bd3a43951bf25..49f4ab0a6d12f 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts @@ -55,13 +55,7 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider refresh: true, }), ]), - add: async < - T extends { - '@timestamp'?: string; - } - >( - findingsMock: T[] - ) => { + add: async (findingsMock: Array>) => { await Promise.all([ ...findingsMock.map((finding) => es.index({ @@ -124,6 +118,110 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider }, }); + const createDataTableObject = (tableTestSubject: string) => ({ + getElement() { + return testSubjects.find(tableTestSubject); + }, + + async getHeaders() { + const element = await this.getElement(); + return await element.findAllByCssSelector('.euiDataGridHeader'); + }, + + async getColumnIndex(columnName: string) { + const element = await this.getElement(); + const columnIndex = await ( + await element.findByCssSelector(`[data-gridcell-column-id="${columnName}"]`) + ).getAttribute('data-gridcell-column-index'); + expect(columnIndex).to.be.greaterThan(-1); + return columnIndex; + }, + + async getColumnHeaderCell(columnName: string) { + const headers = await this.getHeaders(); + const headerIndexes = await Promise.all(headers.map((header) => header.getVisibleText())); + const columnIndex = headerIndexes.findIndex((i) => i === columnName); + return headers[columnIndex]; + }, + + async getRowsCount() { + const element = await this.getElement(); + const rows = await element.findAllByCssSelector('.euiDataGridRow'); + return rows.length; + }, + + async getFindingsCount(type: 'passed' | 'failed') { + const element = await this.getElement(); + const items = await element.findAllByCssSelector(`span[data-test-subj="${type}_finding"]`); + return items.length; + }, + + async getRowIndexForValue(columnName: string, value: string) { + const values = await this.getColumnValues(columnName); + const rowIndex = values.indexOf(value); + expect(rowIndex).to.be.greaterThan(-1); + return rowIndex; + }, + + async getFilterElementButton(rowIndex: number, columnIndex: number | string, negated = false) { + const tableElement = await this.getElement(); + const button = negated ? 'filterOutButton' : 'filterForButton'; + const selector = `[data-gridcell-row-index="${rowIndex}"][data-gridcell-column-index="${columnIndex}"] button[data-test-subj="${button}"]`; + return tableElement.findByCssSelector(selector); + }, + + async addCellFilter(columnName: string, cellValue: string, negated = false) { + const columnIndex = await this.getColumnIndex(columnName); + const rowIndex = await this.getRowIndexForValue(columnName, cellValue); + const filterElement = await this.getFilterElementButton(rowIndex, columnIndex, negated); + await filterElement.click(); + }, + + async getColumnValues(columnName: string) { + const tableElement = await this.getElement(); + const selector = `.euiDataGridRowCell[data-gridcell-column-id="${columnName}"]`; + const columnCells = await tableElement.findAllByCssSelector(selector); + + return await Promise.all(columnCells.map((cell) => cell.getVisibleText())); + }, + + async hasColumnValue(columnName: string, value: string) { + const values = await this.getColumnValues(columnName); + return values.includes(value); + }, + + async toggleColumnSort(columnName: string, direction: 'asc' | 'desc') { + const currentSorting = await testSubjects.find('dataGridColumnSortingButton'); + const currentSortingText = await currentSorting.getVisibleText(); + await currentSorting.click(); + + if (currentSortingText !== 'Sort fields') { + const clearSortButton = await testSubjects.find('dataGridColumnSortingClearButton'); + await clearSortButton.click(); + } + + const selectSortFieldButton = await testSubjects.find('dataGridColumnSortingSelectionButton'); + await selectSortFieldButton.click(); + + const sortField = await testSubjects.find( + `dataGridColumnSortingPopoverColumnSelection-${columnName}` + ); + await sortField.click(); + + const sortDirection = await testSubjects.find( + `euiDataGridColumnSorting-sortColumn-${columnName}-${direction}` + ); + await sortDirection.click(); + await currentSorting.click(); + }, + + async openFlyoutAt(rowIndex: number) { + const table = await this.getElement(); + const flyoutButton = await table.findAllByTestSubject('docTableExpandToggleColumn'); + await flyoutButton[rowIndex].click(); + }, + }); + const createTableObject = (tableTestSubject: string) => ({ getElement() { return testSubjects.find(tableTestSubject); @@ -255,7 +353,7 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider ); }; - const latestFindingsTable = createTableObject('latest_findings_table'); + const latestFindingsTable = createDataTableObject('latest_findings_table'); const resourceFindingsTable = createTableObject('resource_findings_table'); const findingsByResourceTable = { ...createTableObject('findings_by_resource_table'), diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index 5caedd4a6e7f2..2dbee8496998a 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -122,6 +122,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await findings.index.add(data); await findings.navigateToLatestFindingsPage(); + await retry.waitFor( 'Findings table to be loaded', async () => (await latestFindingsTable.getRowsCount()) === data.length @@ -135,10 +136,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('SearchBar', () => { it('add filter', async () => { - await filterBar.addFilter({ field: 'rule.name', operation: 'is', value: ruleName1 }); + // Filter bar uses the field's customLabel in the DataView + await filterBar.addFilter({ field: 'Rule Name', operation: 'is', value: ruleName1 }); expect(await filterBar.hasFilter('rule.name', ruleName1)).to.be(true); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName1)).to.be(true); + expect(await latestFindingsTable.hasColumnValue('rule.name', ruleName1)).to.be(true); }); it('remove filter', async () => { @@ -152,8 +154,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await queryBar.setQuery(ruleName1); await queryBar.submitQuery(); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName1)).to.be(true); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName2)).to.be(false); + expect(await latestFindingsTable.hasColumnValue('rule.name', ruleName1)).to.be(true); + expect(await latestFindingsTable.hasColumnValue('rule.name', ruleName2)).to.be(false); await queryBar.setQuery(''); await queryBar.submitQuery(); @@ -162,25 +164,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - describe('Table Filters', () => { - it('add cell value filter', async () => { - await latestFindingsTable.addCellFilter('Rule Name', ruleName1, false); - - expect(await filterBar.hasFilter('rule.name', ruleName1)).to.be(true); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName1)).to.be(true); - }); - - it('add negated cell value filter', async () => { - await latestFindingsTable.addCellFilter('Rule Name', ruleName1, true); - - expect(await filterBar.hasFilter('rule.name', ruleName1, true, false, true)).to.be(true); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName1)).to.be(false); - expect(await latestFindingsTable.hasColumnValue('Rule Name', ruleName2)).to.be(true); - - await filterBar.removeFilter('rule.name'); - }); - }); - describe('Table Sort', () => { type SortingMethod = (a: string, b: string) => number; type SortDirection = 'asc' | 'desc'; @@ -195,14 +178,14 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('sorts by a column, should be case sensitive/insensitive depending on the column', async () => { type TestCase = [string, SortDirection, SortingMethod]; const testCases: TestCase[] = [ - ['CIS Section', 'asc', sortByAlphabeticalOrder], - ['CIS Section', 'desc', sortByAlphabeticalOrder], - ['Resource ID', 'asc', compareStringByLexicographicOrder], - ['Resource ID', 'desc', compareStringByLexicographicOrder], - ['Resource Name', 'asc', sortByAlphabeticalOrder], - ['Resource Name', 'desc', sortByAlphabeticalOrder], - ['Resource Type', 'asc', sortByAlphabeticalOrder], - ['Resource Type', 'desc', sortByAlphabeticalOrder], + ['rule.section', 'asc', sortByAlphabeticalOrder], + ['rule.section', 'desc', sortByAlphabeticalOrder], + ['resource.id', 'asc', compareStringByLexicographicOrder], + ['resource.id', 'desc', compareStringByLexicographicOrder], + ['resource.name', 'asc', sortByAlphabeticalOrder], + ['resource.name', 'desc', sortByAlphabeticalOrder], + ['resource.sub_type', 'asc', sortByAlphabeticalOrder], + ['resource.sub_type', 'desc', sortByAlphabeticalOrder], ]; for (const [columnName, dir, sortingMethod] of testCases) { await latestFindingsTable.toggleColumnSort(columnName, dir); From 0b4fe3f12365f2f03532b0e2a767e05ecef6e691 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 5 Oct 2023 01:14:24 -0400 Subject: [PATCH 25/27] [api-docs] 2023-10-05 Daily api_docs build (#168057) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/481 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.devdocs.json | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.devdocs.json | 14 ++ api_docs/discover.mdx | 4 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.devdocs.json | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.devdocs.json | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.devdocs.json | 20 ++ api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...cts_migration_server_internal.devdocs.json | 4 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- ...e_test_helpers_model_versions.devdocs.json | 175 +++++++++++++++--- .../kbn_core_test_helpers_model_versions.mdx | 4 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- .../kbn_deeplinks_observability.devdocs.json | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.devdocs.json | 95 +++++++++- api_docs/kbn_ml_agg_utils.mdx | 7 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.devdocs.json | 162 +++++++++++++++- api_docs/kbn_search_connectors.mdx | 4 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- ...ared_ux_avatar_user_profile_components.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_subscription_tracking.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.devdocs.json | 4 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- ...n_visualization_ui_components.devdocs.json | 18 +- api_docs/kbn_visualization_ui_components.mdx | 4 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.devdocs.json | 40 +++- api_docs/metrics_data_access.mdx | 7 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 64 +++++++ api_docs/security_solution.mdx | 4 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 610 files changed, 1185 insertions(+), 649 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 7865515c81381..6f38f4750c370 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 4b7a5895c09d6..62e61a17a8127 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-10-04 +date: 2023-10-05 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 f99157d9b1296..45a0c747b090c 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 8f74f7e7bb42b..375db4c7efb28 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-10-04 +date: 2023-10-05 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 00df9f3ae880c..1ad5f00314d37 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 303aff25799ab..4a99345030314 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.devdocs.json b/api_docs/asset_manager.devdocs.json index 31183ec6acb0b..fe7b5db2d4104 100644 --- a/api_docs/asset_manager.devdocs.json +++ b/api_docs/asset_manager.devdocs.json @@ -95,7 +95,7 @@ "label": "AssetManagerConfig", "description": [], "signature": [ - "{ readonly alphaEnabled?: boolean | undefined; readonly sourceIndices: Readonly<{} & { logs: string; }>; readonly lockedSource: \"assets\" | \"signals\"; }" + "{ readonly alphaEnabled?: boolean | undefined; readonly sourceIndices: Readonly<{} & { logs: string; }>; }" ], "path": "x-pack/plugins/asset_manager/common/config.ts", "deprecated": false, diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 5c4a95c5c063a..f93c3d9cbd16f 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-10-04 +date: 2023-10-05 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 2b20563d9f23d..48e125fbccdeb 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-10-04 +date: 2023-10-05 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 82a2760aa1990..6bc52cc600dcc 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-10-04 +date: 2023-10-05 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 756c31a594314..b0588be276955 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-10-04 +date: 2023-10-05 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 a41b8226a310d..23cfac93362c3 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index df951a523d01c..41f312af9ef34 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-10-04 +date: 2023-10-05 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 059e6302d2a85..ec0779772c594 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index e7ac64c0a45b7..151541280cb24 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-10-04 +date: 2023-10-05 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 41275f4aba27e..c6cdbceb371ce 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-10-04 +date: 2023-10-05 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 2d3eb40d33976..3fba9ebc078b7 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-10-04 +date: 2023-10-05 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 6d31a18297b04..81c3f08703d1b 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-10-04 +date: 2023-10-05 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 aa95d1e752b65..400d7600698f5 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-10-04 +date: 2023-10-05 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 ce5120e848d2c..e3e00bde9cce8 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-10-04 +date: 2023-10-05 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 eff0f089f8eb7..ab954e1952a3d 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-10-04 +date: 2023-10-05 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 35ee99b6b5e7c..e33b409dd942e 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-10-04 +date: 2023-10-05 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 088e364318f89..6395f79512bfd 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-10-04 +date: 2023-10-05 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 412b45bf97d74..b3ec595bd5ed5 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 3709c8ab988c6..357c16cb56e68 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-10-04 +date: 2023-10-05 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 0afd41cff92a8..27611ed0ab83f 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-10-04 +date: 2023-10-05 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 f9460e94e9899..cdbdf5210738f 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-10-04 +date: 2023-10-05 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 03846af7220a7..0cd38215a7b3d 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-10-04 +date: 2023-10-05 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 5744ba4b8bbf2..9d632dc980631 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-10-04 +date: 2023-10-05 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 952e15de74e11..b2d9512eeb913 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 93b0f65f9101b..c730bd76fe102 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-10-04 +date: 2023-10-05 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 e5d3358eb677f..a17a9bff9c842 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-10-04 +date: 2023-10-05 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 e1a1b3a004005..9bed14c9c66f5 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 9bc8d03a4ce6e..337dd8f32e5d7 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index b9d10871a4d39..c2b26c90b13dc 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 238ae40d31a40..12e87454796b7 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index f9574171a342d..e47c4c62d4bd1 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -996,6 +996,20 @@ "path": "src/plugins/discover/public/customizations/customization_types/search_bar_customization.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "discover", + "id": "def-public.SearchBarCustomization.hideDataViewPicker", + "type": "CompoundType", + "tags": [], + "label": "hideDataViewPicker", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/discover/public/customizations/customization_types/search_bar_customization.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 068620922588d..7b723a22751ee 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.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 | |-------------------|-----------|------------------------|-----------------| -| 117 | 0 | 75 | 18 | +| 118 | 0 | 76 | 18 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 7390866525e15..bf0b8f6018575 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-10-04 +date: 2023-10-05 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 a99c2f8eb1411..7ada82cd8f7fd 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 2a80ba9cd8783..e8c03aef24bab 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 00deb995b5c95..a867f4a6b681a 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-10-04 +date: 2023-10-05 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 f2ff6b7d655d9..e7d32b061e693 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-10-04 +date: 2023-10-05 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 92df92379c1a4..8e86a0f6b2a8c 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 8ba7beec0ce61..59a1071d48f01 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-10-04 +date: 2023-10-05 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 222295607199b..82e6b036dc9dd 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 9cebdbcb838fd..aac8a4729a54a 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 1d4b555eb678d..71fa9c2cb3e23 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 8c6c6cd16ff30..63ec7aa9b90aa 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-10-04 +date: 2023-10-05 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 37d670daa555d..aea0543bcfb18 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-10-04 +date: 2023-10-05 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 1b9a91b390ed8..2e2e63c929a10 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 8226afed10eb6..201f0fca7814d 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 81a0266817e70..6d7df68181c89 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 7c7bff6beab7f..c143334202636 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 1533707c0d55c..9958f32c89f7f 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 453e5dccca4da..d4a660f1251fd 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 8256b7a4d25fe..641f4c3934fae 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 0bcd2e1c069e1..b114dfe15ba98 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 08fdea666da30..1fb3847e3e28a 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 2ad70d81f0db3..0ffd0ab5b20b3 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 5506a938d0ff2..ab60436810980 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index a6aaa2f548e18..ed065710dd663 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index e5c6384f99c4c..5d2481bd9fbd0 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-10-04 +date: 2023-10-05 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 7b70d059e6285..742130e024027 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-10-04 +date: 2023-10-05 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 1eea9336254fb..d9a205c80f7b1 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-10-04 +date: 2023-10-05 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 a7f8564a4da2b..73ca6c086993b 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-10-04 +date: 2023-10-05 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 574406b54f72e..1f5bd1b40008a 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-10-04 +date: 2023-10-05 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 29e2a7e7ee869..321afdb0e5d9b 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-10-04 +date: 2023-10-05 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 babd1ad4101ad..e6adf15f7f8f4 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-10-04 +date: 2023-10-05 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 8258e5d9a5543..b39182e1ef311 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -23960,7 +23960,7 @@ "section": "def-common.RegistryPackage", "text": "RegistryPackage" }, - ", \"assets\" | \"internal\" | \"elasticsearch\" | \"readme\" | \"data_streams\">" + ", \"internal\" | \"elasticsearch\" | \"assets\" | \"readme\" | \"data_streams\">" ], "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 848e80c4294f3..c5dd2f263374c 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 3b4f019aa6cee..ac8f9ff094cdc 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-10-04 +date: 2023-10-05 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 1362b9f2bcadd..ef9deafbddd29 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-10-04 +date: 2023-10-05 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 c3ac645b73385..1056dff08a2c1 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-10-04 +date: 2023-10-05 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 660b526285c73..2f7b590170334 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-10-04 +date: 2023-10-05 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 2d60d18aed9be..7e1019b337845 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-10-04 +date: 2023-10-05 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 a8de454418166..c2db70472f312 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.devdocs.json b/api_docs/infra.devdocs.json index a47357d002cdd..a4d50b94d6cf1 100644 --- a/api_docs/infra.devdocs.json +++ b/api_docs/infra.devdocs.json @@ -491,7 +491,7 @@ "label": "featureFlags", "description": [], "signature": [ - "{ metricsExplorerEnabled: boolean; }" + "{ metricsExplorerEnabled: boolean; customThresholdAlertsEnabled: boolean; osqueryEnabled: boolean; }" ], "path": "x-pack/plugins/infra/common/plugin_config_types.ts", "deprecated": false, diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 59449d9c99d55..6427a90ebbc58 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-10-04 +date: 2023-10-05 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 dc3ec65a000d3..b541a5b8d4c33 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-10-04 +date: 2023-10-05 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 b63a05e5cd721..99ff7d269dc85 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-10-04 +date: 2023-10-05 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 eddc7c3011213..4917364bc05f9 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-10-04 +date: 2023-10-05 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 c2b12c2585d79..0ef57ce20b790 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-10-04 +date: 2023-10-05 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 17395efff2aa7..2387a509f4fe1 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 0b109ce3d397e..d57d9696b721d 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index b36a24fae1c6b..d82263e97fd41 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-10-04 +date: 2023-10-05 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 700b5e310e784..1033c76b41ce8 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-10-04 +date: 2023-10-05 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 629f986829a63..4fb927e45502f 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-10-04 +date: 2023-10-05 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 f4ce75294b55c..6444138248dd3 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-10-04 +date: 2023-10-05 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 e4cd3e8f0b593..05af4848e87ed 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-10-04 +date: 2023-10-05 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 050ac31dab502..b0c8c0b8f1658 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-10-04 +date: 2023-10-05 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 46c29a791c795..a0c4704aecb96 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-10-04 +date: 2023-10-05 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 da46224b109bf..40b9a14880538 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-10-04 +date: 2023-10-05 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 7645fcf4d2d94..f845884f7a976 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-10-04 +date: 2023-10-05 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 d4461115614b9..474872eeedcf7 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-10-04 +date: 2023-10-05 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 a426de3247da4..ccec678d7b8a8 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-10-04 +date: 2023-10-05 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 311ce4475a935..d33ce0743770e 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-10-04 +date: 2023-10-05 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 838e32eb9a262..ef9a637cd7e99 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-10-04 +date: 2023-10-05 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 97a176d006159..71609a7dd9023 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-10-04 +date: 2023-10-05 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 eae91b473cb53..95200ba612ed9 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-10-04 +date: 2023-10-05 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 e71bfdca41094..0be63073d4e4e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index f510d835d4e32..e72a6ed12ef59 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-10-04 +date: 2023-10-05 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 390edf689fbbd..0a1dccac606de 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-10-04 +date: 2023-10-05 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 3cc18b1c2d517..966ecceb14744 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-10-04 +date: 2023-10-05 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 7c0c354823b90..11af9568df46f 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-10-04 +date: 2023-10-05 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 8eb28b43c63b8..4d2cff56ec56c 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-10-04 +date: 2023-10-05 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 1ce5c5f2274d9..1e17bd8ceaad7 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-10-04 +date: 2023-10-05 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 7da38d1ded8fa..3833acc88b1ea 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-10-04 +date: 2023-10-05 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 7f2d3c5a5c82b..49fda7ff46b6b 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-10-04 +date: 2023-10-05 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 c9e201e7e662c..7e556d9cfeff7 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-10-04 +date: 2023-10-05 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 25b484ce3e5f0..aaec357dc74bc 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-10-04 +date: 2023-10-05 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 adfb1aa3fca7f..8884261229084 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-10-04 +date: 2023-10-05 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 355fa2434225f..838a8060031df 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-10-04 +date: 2023-10-05 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 abe297cfee59e..ee7d74430cde9 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-10-04 +date: 2023-10-05 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 1fe4613e66472..8c9a07e5aea70 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-10-04 +date: 2023-10-05 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 efe1b163da05e..c91194e83b2e7 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-10-04 +date: 2023-10-05 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 88878002f7136..5d1622ab81373 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-10-04 +date: 2023-10-05 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 ad683c3f39712..957316c0b4de7 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-10-04 +date: 2023-10-05 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 3cbce545bae6a..5248175b4002c 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-10-04 +date: 2023-10-05 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 96fc9b553ec79..8f8a8507f493a 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-10-04 +date: 2023-10-05 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 8d03118fe4acc..2fb133a928f60 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-10-04 +date: 2023-10-05 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 34a4579235f35..430be0a19e4c4 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-10-04 +date: 2023-10-05 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 1f9f99069c43c..c58341d7c01a4 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-10-04 +date: 2023-10-05 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 c9678edd1a781..31b564ce515c1 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-10-04 +date: 2023-10-05 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 087da7b66a7fe..068540a191540 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-10-04 +date: 2023-10-05 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 bb23b12e8ea9d..eb2217e48ee25 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-10-04 +date: 2023-10-05 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 281ce96184988..20b81f7e9c992 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-10-04 +date: 2023-10-05 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 6cebcbf3745d0..1011f8337a3fb 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-10-04 +date: 2023-10-05 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 cc6cd6f93f082..dd0b23b45c50a 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-10-04 +date: 2023-10-05 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 d73e4c10578b1..0aec4d912f74f 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-10-04 +date: 2023-10-05 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 9c1cdf6c52abc..50f3366a6dd88 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-10-04 +date: 2023-10-05 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 f615c70a4ad85..4aad51eda3015 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-10-04 +date: 2023-10-05 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 7c630ed3543d4..098fe8161da81 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-10-04 +date: 2023-10-05 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 c86578d403d06..5415b79bf96c1 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-10-04 +date: 2023-10-05 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 8ae992ea3a230..832c1e8740ba4 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-10-04 +date: 2023-10-05 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 fe17576adfb01..dbdb621522933 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-10-04 +date: 2023-10-05 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 7f19981f3d57f..7fa339bb891b9 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-10-04 +date: 2023-10-05 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 c9f49f6962342..05639f10e559e 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-10-04 +date: 2023-10-05 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 664bb01c9b9f9..7d5bc7cd6662c 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-10-04 +date: 2023-10-05 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 bf7d1d0a26721..d7016d0774650 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 1ed5d87c0543a..18e38ab4aadd5 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index b6204480a8099..8d4618cf68c98 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-10-04 +date: 2023-10-05 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 969ca5a6d49c2..8e55b4f3d2568 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-10-04 +date: 2023-10-05 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 7289c0475cfdf..3f65de152a32e 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-10-04 +date: 2023-10-05 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 57907642925c0..d94792d57296d 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-10-04 +date: 2023-10-05 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 ff9c078288354..e2059726c0120 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-10-04 +date: 2023-10-05 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 83fa609336574..eb02d1102ea20 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-10-04 +date: 2023-10-05 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 98b99cfc39b13..b3c2614d7394c 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-10-04 +date: 2023-10-05 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 d77dcbb152441..35026c90a7235 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-10-04 +date: 2023-10-05 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 957b6753dc31a..8eae6532f6b7d 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-10-04 +date: 2023-10-05 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 dd9b8abf41be7..2ab82ce6be132 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-10-04 +date: 2023-10-05 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 ac7571da0b2db..39837c5e196cd 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-10-04 +date: 2023-10-05 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 5efb83f3307bd..bc0e35bb99b8f 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-10-04 +date: 2023-10-05 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 0e9c94a9269c3..02534b47faa35 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-10-04 +date: 2023-10-05 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 7920bd0900222..758a5b640777e 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-10-04 +date: 2023-10-05 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 8a772cadb6f33..a00dbd0e4728c 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-10-04 +date: 2023-10-05 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 342cbf06052ce..07857d632a3c3 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-10-04 +date: 2023-10-05 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 15d00fa8a9c0a..a8506aac18ce7 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-10-04 +date: 2023-10-05 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 a270167e53110..c5d3320f76f16 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-10-04 +date: 2023-10-05 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 a7e257b21e686..690d7039dbf1e 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-10-04 +date: 2023-10-05 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 527ec2f5df9fb..5ea76e4f20a78 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-10-04 +date: 2023-10-05 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 be7963a1bb8eb..2b4e109764a96 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-10-04 +date: 2023-10-05 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 21a60d25046fd..52ab3911b38c7 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-10-04 +date: 2023-10-05 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 3af0a99784b75..fb82fdb9c14f2 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-10-04 +date: 2023-10-05 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 f49735b9b263a..95412bf8094a0 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-10-04 +date: 2023-10-05 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 0f1604993ebbb..e2e22130eebf8 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-10-04 +date: 2023-10-05 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 bbe87b748077d..cbf1ed558d71f 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-10-04 +date: 2023-10-05 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 3f20471c1931d..2b71b55a9c39a 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-10-04 +date: 2023-10-05 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 068ce3276dcaa..0073734f778cd 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-10-04 +date: 2023-10-05 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 b7d1d6977cc0e..76107f687586c 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-10-04 +date: 2023-10-05 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 557c3d83a1664..fad72d774fa1d 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-10-04 +date: 2023-10-05 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 526d856120728..a55c9cdc19151 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-10-04 +date: 2023-10-05 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 fb4b13e04f778..65d0f937e24ca 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-10-04 +date: 2023-10-05 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 416305d3304c1..af89bc642f963 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-10-04 +date: 2023-10-05 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 82cb2abc519aa..540da6ffec729 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-10-04 +date: 2023-10-05 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 b77b9ec5b5bf9..1365a47d9f6d0 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-10-04 +date: 2023-10-05 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 d418bd45971be..22cd0d1831953 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-10-04 +date: 2023-10-05 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 4d8aed97b127a..8e2a0c3e80bcd 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-10-04 +date: 2023-10-05 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 22aca6a0bab37..b278a536b9e43 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-10-04 +date: 2023-10-05 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 8964716d4d7d1..c0a2a2829091b 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-10-04 +date: 2023-10-05 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 513e082be4958..bca33163bc4b3 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-10-04 +date: 2023-10-05 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 fec6873ab6b71..01a11fda9a465 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-10-04 +date: 2023-10-05 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 ef4148d762d89..fb98ca8c993fd 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-10-04 +date: 2023-10-05 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 27bf92d460a94..dff0d5b03389b 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-10-04 +date: 2023-10-05 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 ac32abd746c73..07aa5ede2df5a 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-10-04 +date: 2023-10-05 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 4f9ade14cffc4..c7f6e8e3ca66b 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-10-04 +date: 2023-10-05 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 2a590a816ee79..6ee80febebfaa 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-10-04 +date: 2023-10-05 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 9985d442babd6..2779412e95f4e 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-10-04 +date: 2023-10-05 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 52c4d79d9fc03..32c3c6d9ccab3 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4359,6 +4359,10 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + }, { "plugin": "snapshotRestore", "path": "x-pack/plugins/snapshot_restore/server/routes/api/app.ts" @@ -6729,6 +6733,22 @@ "plugin": "searchprofiler", "path": "x-pack/plugins/searchprofiler/server/routes/profile.ts" }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + }, { "plugin": "snapshotRestore", "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index c90bf8799f663..01d821c769454 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-10-04 +date: 2023-10-05 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 532b7a6bf1ca7..b89fd8d57349d 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-10-04 +date: 2023-10-05 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 fe959d8f5d1a1..b0f24f106e524 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-10-04 +date: 2023-10-05 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 12444c9c0b8a4..536385612056e 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-10-04 +date: 2023-10-05 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 1bcd6ea14bd11..c5314c7f4b767 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-10-04 +date: 2023-10-05 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 1b168c74b8b58..2ef5d47d8d414 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-10-04 +date: 2023-10-05 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 db79b11229bb4..ed0407b2c5c05 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-10-04 +date: 2023-10-05 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 b28d89e823714..ab6a03200332f 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-10-04 +date: 2023-10-05 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 bda20eb073852..9f82b2b20cbe9 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-10-04 +date: 2023-10-05 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 152ec865a023c..a597d70c42136 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-10-04 +date: 2023-10-05 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 0e648f41445e7..56132eb7ebf08 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-10-04 +date: 2023-10-05 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 92043c6e048f4..f591439487352 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-10-04 +date: 2023-10-05 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 d80f89e60458f..e981043f76381 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-10-04 +date: 2023-10-05 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 5f6874f0f947e..a56b618eb1ff7 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-10-04 +date: 2023-10-05 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 e09c0816da08c..169f80f9d0d84 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-10-04 +date: 2023-10-05 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 56982d0b02411..961348363216d 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-10-04 +date: 2023-10-05 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 7b210b2e1c977..57ee79118446c 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-10-04 +date: 2023-10-05 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 8faee45bb3cb1..21c8604c7e747 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-10-04 +date: 2023-10-05 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 c9066c2d388bc..d1eefe15df755 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-10-04 +date: 2023-10-05 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 f8741125c30fa..48bcc0f6954f3 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-10-04 +date: 2023-10-05 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 eaf4235e55930..5572bbc51cb90 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-10-04 +date: 2023-10-05 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 377853939d053..db578a11b9c9e 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-10-04 +date: 2023-10-05 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 a1ed8bca0727b..abadcd967ddda 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-10-04 +date: 2023-10-05 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 c9791e4c7292f..48eefb7432b90 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-10-04 +date: 2023-10-05 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 ca5fdeb6a2128..69558ff08e76b 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-10-04 +date: 2023-10-05 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 1bbbf0ffa6665..c6839be6e066b 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-10-04 +date: 2023-10-05 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 c2cc20277c448..03765ed009b72 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-10-04 +date: 2023-10-05 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 18aa7bd340615..1ffb20b80354d 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-10-04 +date: 2023-10-05 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 c8ca73f4c2e60..524c32035ffdd 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-10-04 +date: 2023-10-05 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 260f7af02d28d..d5c8993562431 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-10-04 +date: 2023-10-05 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 20dc5d68a4a93..f5005f0543cc2 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-10-04 +date: 2023-10-05 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 7af7dbcf72952..b3e00ec4f6d0c 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-10-04 +date: 2023-10-05 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 73345e735c135..7a7a03b924a3e 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-10-04 +date: 2023-10-05 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 270b1c8f60f01..383d1dcd793fe 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-10-04 +date: 2023-10-05 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 9acd2c768be29..f921c60e38969 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-10-04 +date: 2023-10-05 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 bc66a8dd4177e..ac3a13a4937a7 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-10-04 +date: 2023-10-05 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 83ba09196d96f..e66b192783e4b 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-10-04 +date: 2023-10-05 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 db4d1acf2e5cd..845be339ef70b 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-10-04 +date: 2023-10-05 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 a04c45abece2b..57b7b05efcf20 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-10-04 +date: 2023-10-05 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 7593a5b6f3d98..5ae654662f351 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-10-04 +date: 2023-10-05 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 a2740a34940a3..74c7b3b742b47 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-10-04 +date: 2023-10-05 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 f1f2d95bf2531..d36fdcdb89314 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-10-04 +date: 2023-10-05 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 50343f33cf49e..8e0d9dd8a57c1 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-10-04 +date: 2023-10-05 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 a339dd100da34..b9e1e6f8544f2 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-10-04 +date: 2023-10-05 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 58a9170317312..2f9ffaf93689d 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 151f4b0660106..e8b11e82f489f 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-10-04 +date: 2023-10-05 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 b102b1093b222..b4d8a6d291439 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-10-04 +date: 2023-10-05 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 32dd08ca19744..b4246c1223a41 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-10-04 +date: 2023-10-05 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 21ec40e2563c0..39bb1d9655e14 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-10-04 +date: 2023-10-05 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 23df10d67f7e4..d99f30e17f372 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-10-04 +date: 2023-10-05 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 7c91d9670245b..13ec427c95819 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-10-04 +date: 2023-10-05 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 9880adee6e781..34ac03aa40895 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-10-04 +date: 2023-10-05 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 8d5ce601b5d22..c535679266395 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-10-04 +date: 2023-10-05 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 c21a4af02a9f4..119e9ea59ab0f 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-10-04 +date: 2023-10-05 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 bf157cd79ce30..aac6bc7a98f3d 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-10-04 +date: 2023-10-05 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 6ba2e53ec11c5..d31385ab8f3ca 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-10-04 +date: 2023-10-05 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.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json index 4706f5a6e2e38..fa854a0dea28f 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json @@ -158,7 +158,7 @@ "section": "def-common.SavedObjectUnsanitizedDoc", "text": "SavedObjectUnsanitizedDoc" }, - ", { allowDowngrade }?: ", + ", { allowDowngrade, targetTypeVersion }?: ", "DocumentMigrateOptions", ") => ", { @@ -201,7 +201,7 @@ "id": "def-common.DocumentMigrator.migrate.$2", "type": "Object", "tags": [], - "label": "{ allowDowngrade = false }", + "label": "{ allowDowngrade = false, targetTypeVersion }", "description": [], "signature": [ "DocumentMigrateOptions" 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 8d8fb5a9f1b8a..6e4d87fdd9d22 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-10-04 +date: 2023-10-05 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 3ab30ff55eeed..7379dda4b84e5 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-10-04 +date: 2023-10-05 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 3efc97ac9b050..2fd116614dfe9 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-10-04 +date: 2023-10-05 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 3cfcb0706e2ad..92ec92c262c40 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-10-04 +date: 2023-10-05 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 0408a171e7978..f4e2572db868b 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-10-04 +date: 2023-10-05 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 7f179227ab375..772969a84e74b 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-10-04 +date: 2023-10-05 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 e9b61ff7b99f7..6494e022dd491 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-10-04 +date: 2023-10-05 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 e1faad06d6148..d50b5512a30cb 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-10-04 +date: 2023-10-05 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 3ed39cb6c294c..70abf452bdc74 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-10-04 +date: 2023-10-05 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 3e8b3cb6b2ed0..8cc082349aa27 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-10-04 +date: 2023-10-05 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 504cb4a1ed871..a2a984fd4b97a 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-10-04 +date: 2023-10-05 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 310b482ee0d34..9e8e90e9636c4 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-10-04 +date: 2023-10-05 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 3380018fdfba3..e3e2aeec88b46 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-10-04 +date: 2023-10-05 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 1a71653a78e28..adb9782ff0d86 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.devdocs.json b/api_docs/kbn_core_test_helpers_model_versions.devdocs.json index 4f935324525fc..7e2f256a95f89 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.devdocs.json +++ b/api_docs/kbn_core_test_helpers_model_versions.devdocs.json @@ -38,12 +38,81 @@ "text": "ModelVersionTestBed" } ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/test_bed.ts", "deprecated": false, "trackAdoption": false, "children": [], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.createModelVersionTestMigrator", + "type": "Function", + "tags": [], + "label": "createModelVersionTestMigrator", + "description": [ + "\nCreate a {@link ModelVersionTestMigrator | test migrator} that can be used\nto test model version changes between versions.\n" + ], + "signature": [ + "({ type, }: { type: ", + { + "pluginId": "@kbn/core-saved-objects-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsServerPluginApi", + "section": "def-common.SavedObjectsType", + "text": "SavedObjectsType" + }, + "; }) => ", + { + "pluginId": "@kbn/core-test-helpers-model-versions", + "scope": "common", + "docId": "kibKbnCoreTestHelpersModelVersionsPluginApi", + "section": "def-common.ModelVersionTestMigrator", + "text": "ModelVersionTestMigrator" + } + ], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.createModelVersionTestMigrator.$1", + "type": "Object", + "tags": [], + "label": "{\n type,\n}", + "description": [], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.createModelVersionTestMigrator.$1.type", + "type": "Object", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsServerPluginApi", + "section": "def-common.SavedObjectsType", + "text": "SavedObjectsType" + }, + "" + ], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -56,7 +125,7 @@ "description": [ "\nA testbed that can be used for model version integration tests.\n" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -72,7 +141,7 @@ "signature": [ "() => Promise" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -90,7 +159,7 @@ "signature": [ "() => Promise" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -127,7 +196,7 @@ }, ">" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -147,7 +216,7 @@ "text": "ModelVersionTestkitOptions" } ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -167,7 +236,7 @@ "description": [ "\nTestkit composed of various services that can be used to run the\nmodel version integration tests.\n\nMostly composed of the two `repositoryBefore` and `repositoryAfter` repositories\nthat can be used to interact with different versions of the SO types.\n" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -183,7 +252,7 @@ "signature": [ "default" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -205,7 +274,7 @@ "text": "ISavedObjectsRepository" } ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -227,7 +296,7 @@ "text": "ISavedObjectsRepository" } ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -243,7 +312,7 @@ "signature": [ "() => Promise" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -261,7 +330,7 @@ "description": [ "\nOptions used to create a {@link ModelVersionTestKit} via {@link ModelVersionTestBed#prepareTestKit}\n" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -284,7 +353,7 @@ }, "[]" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +366,7 @@ "description": [ "\nThe path of the file to write logs to.\nNecessary because the testkit doesn't know the test's location\n" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -320,7 +389,7 @@ }, "[] | undefined" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -336,7 +405,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -352,7 +421,7 @@ "signature": [ "string | undefined" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -368,7 +437,7 @@ "signature": [ "string | undefined" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -384,13 +453,73 @@ "signature": [ "string | undefined" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false } ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.ModelVersionTestMigrator", + "type": "Interface", + "tags": [], + "label": "ModelVersionTestMigrator", + "description": [ + "\nTest utility allowing to test model version changes between versions." + ], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.ModelVersionTestMigrator.migrate", + "type": "Function", + "tags": [ + "see" + ], + "label": "migrate", + "description": [ + "\nMigrate the document from the provided source to destination model version.\n" + ], + "signature": [ + "(options: ModelVersionTestMigrateOptions) => ", + { + "pluginId": "@kbn/core-saved-objects-common", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsCommonPluginApi", + "section": "def-common.SavedObject", + "text": "SavedObject" + }, + "" + ], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-test-helpers-model-versions", + "id": "def-common.ModelVersionTestMigrator.migrate.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ModelVersionTestMigrateOptions" + ], + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/model_version_tester.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/core-test-helpers-model-versions", "id": "def-common.SavedObjectTestkitDefinition", @@ -400,7 +529,7 @@ "description": [ "\nRepresents the info necessary to prepare a given type for the sandbox.\nContains both the actual SO type definition, and the versions\nthat should be used at 'before' and 'after' model versions.\n" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -423,7 +552,7 @@ }, "" ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -436,7 +565,7 @@ "description": [ "\nThe model version to be used for the 'before' repository." ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false }, @@ -449,7 +578,7 @@ "description": [ "\nThe model version to be used for the 'after' repository." ], - "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/types.ts", + "path": "packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 3006ade153153..a075d44c2a8de 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 23 | 0 | 1 | 0 | +| 29 | 0 | 4 | 0 | ## Common 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 c23537c785d7b..5ef8bc4b278d9 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-10-04 +date: 2023-10-05 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 df3d8c0bda577..7fdd1bc587f6b 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-10-04 +date: 2023-10-05 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 54aa802f18b17..7871a74ea7707 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 6b4bb2377720f..1f6a93a99c6b9 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-10-04 +date: 2023-10-05 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 d1c43f217cfa0..09586321ed287 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-10-04 +date: 2023-10-05 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 0c8a899aba681..4ecf9b2982b88 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-10-04 +date: 2023-10-05 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 ca3f405e911a2..40bb2a9197ff9 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-10-04 +date: 2023-10-05 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 6297dd680a265..0198fc9779ec9 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-10-04 +date: 2023-10-05 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 b6994aacb6b79..b2e7b1b6745a6 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-10-04 +date: 2023-10-05 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 f5eead18510aa..452357560fa0d 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-10-04 +date: 2023-10-05 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 2d483f1918899..d45e1063425e6 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-10-04 +date: 2023-10-05 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 f73dbb3ec7f2c..7d9a2c6570843 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-10-04 +date: 2023-10-05 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 310ed94c63830..810d197c66c20 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-10-04 +date: 2023-10-05 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 3536f096d9dd5..2ce46d4f896a6 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-10-04 +date: 2023-10-05 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 fd17d4fed17d7..e6f9193d16e40 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-10-04 +date: 2023-10-05 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 58c629c941615..a89f42b41434e 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-10-04 +date: 2023-10-05 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 df98672012180..ed9777330dadb 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-10-04 +date: 2023-10-05 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 ad88ceb2104eb..5a2a158bc0ee9 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-10-04 +date: 2023-10-05 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 5d2a239ab71de..a1bd577f8eb53 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index a69548f8adc4f..e8987912280ce 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index f9cbc955ef98f..0f3d42e0e49d3 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-10-04 +date: 2023-10-05 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 eddf3cc179871..5fb1b195f7624 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-10-04 +date: 2023-10-05 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 15f52e0102c70..b81f5773c6fef 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-10-04 +date: 2023-10-05 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 bcf03f43a1360..2f27765b02ddf 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-10-04 +date: 2023-10-05 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 4a7619a98d584..8c6a2dcb2ad11 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-10-04 +date: 2023-10-05 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 45d2dd65edec5..d085b8ac1f555 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-10-04 +date: 2023-10-05 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 e87e7d58c6db1..18a69fd353644 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.devdocs.json b/api_docs/kbn_deeplinks_observability.devdocs.json index 2f03e9787f455..58a3afb86bdc9 100644 --- a/api_docs/kbn_deeplinks_observability.devdocs.json +++ b/api_docs/kbn_deeplinks_observability.devdocs.json @@ -427,7 +427,7 @@ "section": "def-common.AppId", "text": "AppId" }, - " | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:rules\" | \"observability-overview:alerts\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"observability-overview:slos\" | \"metrics:settings\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:metrics-hosts\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:services\" | \"apm:service-groups-list\" | \"apm:storage-explorer\"" + " | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:rules\" | \"observability-overview:alerts\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"observability-overview:slos\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:services\" | \"apm:service-groups-list\" | \"apm:storage-explorer\"" ], "path": "packages/deeplinks/observability/deep_links.ts", "deprecated": false, diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 3281642e94f6a..4c91324e78257 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-10-04 +date: 2023-10-05 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 27da2bb89123d..9677de66ce7b2 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-10-04 +date: 2023-10-05 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 65c410e3da692..560cd13f81076 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-10-04 +date: 2023-10-05 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 c57f48430a741..6b7506059c12f 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-10-04 +date: 2023-10-05 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 3599cf73e846b..8a7191390dbf1 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-10-04 +date: 2023-10-05 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 5ff8ccb2e9884..247dcd19f8f15 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-10-04 +date: 2023-10-05 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 5366921bffaaa..8d1438fd2a008 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-10-04 +date: 2023-10-05 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 aa88314638326..6064cb802ee91 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-10-04 +date: 2023-10-05 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 d4c5cec74fdcc..bf984c21f71c6 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-10-04 +date: 2023-10-05 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 2937bcffe4e21..9b0098d4f1572 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index a225f6c0a0a08..fc3a4148b108c 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 0bc1a8c54d042..04306a72149bb 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-10-04 +date: 2023-10-05 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 695014c4e8cfa..7b92e31297617 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-10-04 +date: 2023-10-05 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 58159568bf8f2..42c3a3d562aa5 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-10-04 +date: 2023-10-05 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 7166a84534dcc..1e4373937a0b5 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-10-04 +date: 2023-10-05 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 5444ac7240385..310976776c5eb 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-10-04 +date: 2023-10-05 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 77f3fa578d6cd..fbc442faacfff 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-10-04 +date: 2023-10-05 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 cf859f629faa8..d026bf0a48a80 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-10-04 +date: 2023-10-05 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 7cbadfcc9827a..a64c08611aec4 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-10-04 +date: 2023-10-05 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 adecd141c7414..cc5c9d2609e45 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-10-04 +date: 2023-10-05 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 4ba938b753052..a2db586a413de 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-10-04 +date: 2023-10-05 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 ccdcb3dba0e46..bb4ac4ea3f783 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-10-04 +date: 2023-10-05 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 030ac91b423f5..c30a20d934926 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-10-04 +date: 2023-10-05 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 7b476cd7fd11f..023dddf0fe636 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index a7a12d3447cf0..c3ab30d7507f9 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 0bd569188da06..5c55eef86860d 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 158edc5b86c65..05c03c3d2e6e6 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-10-04 +date: 2023-10-05 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 b6fbf7f7bb289..8b59ffb09015d 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-10-04 +date: 2023-10-05 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 6796b16f5237a..d1773c41d264a 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-10-04 +date: 2023-10-05 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 07f237321de52..841478842b634 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-10-04 +date: 2023-10-05 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 34e0d43faa94d..577aec0084757 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-10-04 +date: 2023-10-05 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 1738895575923..9c9f3ee9e90c5 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-10-04 +date: 2023-10-05 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 719969da565e8..ef93b367bca51 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-10-04 +date: 2023-10-05 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 810b40dc2640c..b5c850d51e89b 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-10-04 +date: 2023-10-05 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 406e4541e1d7f..a17b4d2270b7d 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-10-04 +date: 2023-10-05 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 86dea148b967f..5f21a89b95665 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-10-04 +date: 2023-10-05 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 9bf79be513a86..4941572c32b95 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-10-04 +date: 2023-10-05 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 f470d8f8a6cf4..1aef9b5a35bd8 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-10-04 +date: 2023-10-05 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 3ad45637e66c3..506c9a1985c0b 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-10-04 +date: 2023-10-05 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 57b4cf8b5aa43..00b0c4783bdae 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-10-04 +date: 2023-10-05 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 8ac2fe4cb76fe..2512f5395d3d5 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-10-04 +date: 2023-10-05 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 ac93215a66425..ccb56d1af2e08 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-10-04 +date: 2023-10-05 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 f47825f2f54ac..06c3ec9cffed5 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-10-04 +date: 2023-10-05 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 4cf3b9ce1c213..40ccb851b962c 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-10-04 +date: 2023-10-05 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 85bb64c864a43..7edabba45efa9 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-10-04 +date: 2023-10-05 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 e869624164d7e..a8a253875768e 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-10-04 +date: 2023-10-05 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 87c2fa1d1a2b9..3f286ce50d459 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-10-04 +date: 2023-10-05 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 dad7dd81c0f74..07e911788b1f7 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-10-04 +date: 2023-10-05 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 e4877891dfddc..da17e432653ba 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-10-04 +date: 2023-10-05 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 4d50897248da0..2a07fb5edb032 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-10-04 +date: 2023-10-05 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 aabfd0fa99189..d032996d847c6 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index f50cb2a2a4889..d29cac159c802 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 48595d9349706..ac40fdb839eef 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-10-04 +date: 2023-10-05 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 30a6da003d0a0..c20799a25ccd2 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-10-04 +date: 2023-10-05 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 f6d747ec95282..aaa058c310f4e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index a4415118cbca0..2305fb0f85c07 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 6c3a050991bd1..ed3d3a2efed32 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 4c3ca9eeef417..cf91fcd65c8f3 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 9bc2b8fa786ce..39b8d16a3f0e1 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index b28b93d6f6862..98a903869a9ef 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 4bc51cc169539..f3fe8fd7c0ad7 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index d78504247f227..a39fce674e64a 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index f53797c3b7172..597f2a9fa6f45 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 18c2b07f72d85..bbfe43254d20c 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 18aeadde73881..8ec47776eb2e7 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index caac16a9f5e32..27779f359056c 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index ac6eca560bd67..77799dee908a2 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 2712c4dbed297..f57683d3598e1 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-10-04 +date: 2023-10-05 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 ca9e24e992fcb..0bb478b87d201 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-10-04 +date: 2023-10-05 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.devdocs.json b/api_docs/kbn_ml_agg_utils.devdocs.json index dffe6cb0643a7..950d7c821d368 100644 --- a/api_docs/kbn_ml_agg_utils.devdocs.json +++ b/api_docs/kbn_ml_agg_utils.devdocs.json @@ -1222,6 +1222,35 @@ "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SignificantTerm.key", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "The key associated with the significant term." + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SignificantTerm.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "The type of the significant term." + ], + "signature": [ + "\"keyword\" | \"log_pattern\"" + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/ml-agg-utils", "id": "def-common.SignificantTerm.doc_count", @@ -1550,6 +1579,35 @@ "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SignificantTermGroupItem.key", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "The key associated with the significant term." + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SignificantTermGroupItem.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "The type of the significant term." + ], + "signature": [ + "\"keyword\" | \"log_pattern\"" + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/ml-agg-utils", "id": "def-common.SignificantTermGroupItem.docCount", @@ -1810,8 +1868,43 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SignificantTermType", + "type": "Type", + "tags": [], + "label": "SignificantTermType", + "description": [ + "\nRepresents the type of significant term as determined by the SIGNIFICANT_TERM_TYPE enumeration." + ], + "signature": [ + "\"keyword\" | \"log_pattern\"" + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/ml-agg-utils", + "id": "def-common.SIGNIFICANT_TERM_TYPE", + "type": "Object", + "tags": [], + "label": "SIGNIFICANT_TERM_TYPE", + "description": [ + "\nEnumeration of significant term types." + ], + "signature": [ + "{ readonly KEYWORD: \"keyword\"; readonly LOG_PATTERN: \"log_pattern\"; }" + ], + "path": "x-pack/packages/ml/agg_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 976bbcbaa80ef..60ff3d90ba090 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; @@ -21,10 +21,13 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 93 | 2 | 0 | 0 | +| 99 | 2 | 0 | 0 | ## Common +### Objects + + ### Functions diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index d7c9b0ae80fe5..0d89993003450 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-10-04 +date: 2023-10-05 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_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 1e14fd5e52cb7..3cf4e592f476f 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 3990a8bfc55b1..ebb6b76d539aa 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index ad874267b8817..ea5cea8ea65d0 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-10-04 +date: 2023-10-05 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 6f5672379a2f3..d7b78d0d67b1e 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-10-04 +date: 2023-10-05 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 e8c6a7b200e85..736b49f786bc8 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-10-04 +date: 2023-10-05 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 d94b4b0980a3c..5a4d551b94ac4 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-10-04 +date: 2023-10-05 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 e6186a1931297..02d7b69a30f2b 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 64452c2521165..f2467daf121de 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 2e702ff1859d4..58a129ca7187e 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-10-04 +date: 2023-10-05 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 c6435521f79f6..56bfdd0fe305b 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-10-04 +date: 2023-10-05 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 febe7eb79e2ff..96b1b38741db7 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-10-04 +date: 2023-10-05 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 a86280bd83138..a7c8c6aeb7702 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-10-04 +date: 2023-10-05 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 7603d7cc69c0a..cfba28b9c3a59 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-10-04 +date: 2023-10-05 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 d53550e2ea97e..2f4476bd49ff6 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-10-04 +date: 2023-10-05 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 e423084c6a2b6..43b79b427bd17 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-10-04 +date: 2023-10-05 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 037ac91309614..7dcecbc5ca180 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-10-04 +date: 2023-10-05 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 63d2ec3c20d1f..19b279009eebe 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-10-04 +date: 2023-10-05 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 2f03f56501dbd..66bd855a2cbf4 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-10-04 +date: 2023-10-05 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 ee0882e668509..7b57e055237a7 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-10-04 +date: 2023-10-05 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 be9908f3b9b81..9f991f8004d8f 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-10-04 +date: 2023-10-05 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 699a896170f7d..7f760ddf71757 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-10-04 +date: 2023-10-05 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 c2834c5cf7ab0..e426e5d060b83 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-10-04 +date: 2023-10-05 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 d3a35c96ba723..e5ae81e5294e3 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-10-04 +date: 2023-10-05 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 500fa9945ff45..8463c6f134940 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index fb9cc14ead142..4b712546c2199 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index c85beac6f863b..1a0beedde92d1 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-10-04 +date: 2023-10-05 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 c54a30a800005..126d1cebdbc79 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-10-04 +date: 2023-10-05 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 647de77bca211..e42256ffac0c6 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-10-04 +date: 2023-10-05 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 087668ee0d628..2c1390c0facde 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-10-04 +date: 2023-10-05 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 27577f749ca74..695d7f2fed5d1 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-10-04 +date: 2023-10-05 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 fa87b382f9531..3d470624e376e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index f80f83b70d6c4..349bc465c44fa 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index bd82bd11c69cc..634015cc9cbfb 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-10-04 +date: 2023-10-05 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 cf85c1c8857aa..541945d41fdec 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 1509c1a981ff1..213f6f5905542 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index facd8a5434cea..bbbc68fc85ac7 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index ad7592dd3ad90..d69321985868d 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 6c7a7187c7418..5535aff0427f5 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index 07a624239db5d..21a14a6402586 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 427c4673b94bb..dafa95ed7d0b6 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index dbb92f84671f7..0e85af827ced5 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-10-04 +date: 2023-10-05 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 9eecd8792a6e4..891a6e444f60f 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-10-04 +date: 2023-10-05 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 ec84b6f1b1280..4e6c6da052b74 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-10-04 +date: 2023-10-05 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 9cd05df3aac22..9fbcd58a07e3d 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-10-04 +date: 2023-10-05 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 6643d1d45fb39..cefcb0a13b4ce 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index e1bf02ac29cc2..5ed7b897540d8 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 0224356418b99..3a45f2b8d351b 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 861159a104eea..94c33b67c50d9 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 4a41353e4caf6..7612964e812d1 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-10-04 +date: 2023-10-05 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 bd257bba9018a..205f2d7885fc3 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 66cb8a44a0f57..dffb8f26b7957 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.devdocs.json b/api_docs/kbn_search_connectors.devdocs.json index dee27e260aaa7..d3794619ffb6b 100644 --- a/api_docs/kbn_search_connectors.devdocs.json +++ b/api_docs/kbn_search_connectors.devdocs.json @@ -113,7 +113,7 @@ "section": "def-common.ConnectorFeatures", "text": "ConnectorFeatures" }, - " | undefined; indexName: string | null; isNative: boolean; language: string | null; name?: string | undefined; pipeline: ", + " | undefined; indexName: string | null; isNative: boolean; language: string | null; name?: string | undefined; pipeline?: ", { "pluginId": "@kbn/search-connectors", "scope": "common", @@ -121,7 +121,7 @@ "section": "def-common.IngestPipelineParams", "text": "IngestPipelineParams" }, - "; serviceType?: string | null | undefined; }) => Promise<", + " | undefined; serviceType?: string | null | undefined; instant_response?: boolean | undefined; }) => Promise<", { "pluginId": "@kbn/search-connectors", "scope": "common", @@ -276,7 +276,8 @@ "docId": "kibKbnSearchConnectorsPluginApi", "section": "def-common.IngestPipelineParams", "text": "IngestPipelineParams" - } + }, + " | undefined" ], "path": "packages/kbn-search-connectors/lib/create_connector.ts", "deprecated": false, @@ -295,6 +296,20 @@ "path": "packages/kbn-search-connectors/lib/create_connector.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.createConnector.$2.instant_response", + "type": "CompoundType", + "tags": [], + "label": "instant_response", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-search-connectors/lib/create_connector.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -1222,6 +1237,147 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncJobTypeToText", + "type": "Function", + "tags": [], + "label": "syncJobTypeToText", + "description": [], + "signature": [ + "(syncType: ", + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncJobType", + "text": "SyncJobType" + }, + ") => string" + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncJobTypeToText.$1", + "type": "Enum", + "tags": [], + "label": "syncType", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncJobType", + "text": "SyncJobType" + } + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncStatusToColor", + "type": "Function", + "tags": [], + "label": "syncStatusToColor", + "description": [], + "signature": [ + "(status: ", + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncStatus", + "text": "SyncStatus" + }, + ") => string" + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncStatusToColor.$1", + "type": "Enum", + "tags": [], + "label": "status", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncStatus", + "text": "SyncStatus" + } + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncStatusToText", + "type": "Function", + "tags": [], + "label": "syncStatusToText", + "description": [], + "signature": [ + "(status: ", + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncStatus", + "text": "SyncStatus" + }, + ") => string" + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.syncStatusToText.$1", + "type": "Enum", + "tags": [], + "label": "status", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.SyncStatus", + "text": "SyncStatus" + } + ], + "path": "packages/kbn-search-connectors/utils/sync_status_to_text.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.updateConnectorConfiguration", diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 373c49016f105..05b9a41ade851 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2048 | 0 | 2048 | 0 | +| 2055 | 0 | 2055 | 0 | ## Common diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 49de241dc8472..2a061bcbc49ae 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 717b6108076fe..eb11b6ebc9210 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 73884fa7880ab..7ae94765042dc 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 116f26dd90f46..764d1ebb7142b 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-10-04 +date: 2023-10-05 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 9c29a3620e564..0972dd71d8026 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-10-04 +date: 2023-10-05 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 60dc2e146ee97..5cfdff23498dd 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-10-04 +date: 2023-10-05 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 84b75373410ee..f1ba4a1c00621 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-10-04 +date: 2023-10-05 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 ab6bc7fad047a..b17303af451b8 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-10-04 +date: 2023-10-05 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 b240450803243..18ee8dbc746cf 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-10-04 +date: 2023-10-05 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 aba7a850cdc69..258743373fbb6 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-10-04 +date: 2023-10-05 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 c4674eea19506..1874c6daa7468 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-10-04 +date: 2023-10-05 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 c9ba5071281b1..4be086a5fdf9d 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-10-04 +date: 2023-10-05 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 34661d22ed9c5..0cf2a59dd349b 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-10-04 +date: 2023-10-05 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 41075154bac87..23bd68b91ceaa 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-10-04 +date: 2023-10-05 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 76ff7b35cdf24..07d677198f68d 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-10-04 +date: 2023-10-05 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 d873aa8b59dee..eb0d1e4aa742a 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-10-04 +date: 2023-10-05 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 77c29e6a7ef8e..e4973a04bcaad 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-10-04 +date: 2023-10-05 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 b726e7d9bcc4e..1747423a7d970 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-10-04 +date: 2023-10-05 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 2de4b1c3d0e1a..854420aa857bb 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-10-04 +date: 2023-10-05 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 b4fcc1f3ab65a..a0fd09261b9bf 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-10-04 +date: 2023-10-05 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 81e4be7d4d983..a04895fbfcbb1 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-10-04 +date: 2023-10-05 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 cfec7eea37bba..536c01e99d851 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-10-04 +date: 2023-10-05 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 295f8697601c6..b3ecbd5e53c2a 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-10-04 +date: 2023-10-05 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 7316db3890f86..70d1e9446027e 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-10-04 +date: 2023-10-05 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 58a18cdb0fd67..8c27a9e168eb7 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index c73e1bd6c4fcd..da47fd95e1fd1 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 514dd3f915e8c..67c70178ba6c8 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 01446a23c72d5..b8462d568d13f 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index df2d3b07e5d7b..a67d41d2a1f38 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index bfb556f280f92..6ef6b672aa56e 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 6ffc0c6183594..e72dd06c2f75f 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-10-04 +date: 2023-10-05 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 7d7b3d1e927d1..81d11ff777f22 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-10-04 +date: 2023-10-05 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 e3278f6713a62..8226c58ff992f 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-10-04 +date: 2023-10-05 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 8c66cb2c66b09..89c8cf3fba0ac 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-10-04 +date: 2023-10-05 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 5d5715345b9d1..d25c1e77791ef 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-10-04 +date: 2023-10-05 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 98366524af159..1ea03c3771d6d 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-10-04 +date: 2023-10-05 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 4532a64fa853d..e42bfd5b502c1 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-10-04 +date: 2023-10-05 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 51e51e1b5fcee..cffc22362ce51 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-10-04 +date: 2023-10-05 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 3909f7cb5b76f..76c5f084ee8b7 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-10-04 +date: 2023-10-05 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 fbb57cc717da1..7fdddf0f4417e 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-10-04 +date: 2023-10-05 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 5a72a36f1e513..6e90c76a651c2 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-10-04 +date: 2023-10-05 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 d657ae8b8c151..5e11db43fd217 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-10-04 +date: 2023-10-05 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 8b9b3d8c9479a..f087ef2d4f9fc 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-10-04 +date: 2023-10-05 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 b83874e227ab1..77287e4cb8a92 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-10-04 +date: 2023-10-05 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 497dc43acf8d2..4cea551deb9e6 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-10-04 +date: 2023-10-05 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 a937fb3a1f2bd..118f1d369499f 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-10-04 +date: 2023-10-05 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 2e4eb12f81ca9..30d8bdf11da46 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-10-04 +date: 2023-10-05 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 7cf0d2d51552a..6141f852d4316 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-10-04 +date: 2023-10-05 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 60820afea31f1..3d14d53d58cd6 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-10-04 +date: 2023-10-05 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 5a9680546679a..3a7830733ebef 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-10-04 +date: 2023-10-05 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 5cc6157894249..a2ef77cf0e3d1 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-10-04 +date: 2023-10-05 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 a68389a97579d..f2c362cdbb1b6 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-10-04 +date: 2023-10-05 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 41124c5d1364c..31871ded466f5 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-10-04 +date: 2023-10-05 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 9b1594fa5b6d5..4b93fe436b1ea 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-10-04 +date: 2023-10-05 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 614cb0dcb1788..2be4c4a419ceb 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-10-04 +date: 2023-10-05 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 0ae50d2dca0cd..1093683cc1747 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-10-04 +date: 2023-10-05 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 de2ccbffecc32..c12c83294db73 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-10-04 +date: 2023-10-05 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 4bdf7d15cad4e..8cb67b44d85bf 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-10-04 +date: 2023-10-05 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 aab0920194812..152307763f693 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-10-04 +date: 2023-10-05 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 2a3ff12472f28..84f728d9f6c17 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-10-04 +date: 2023-10-05 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 f3a46f161bbcf..814a5561ff0d8 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-10-04 +date: 2023-10-05 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 ad9e850bdc497..6f5d08687b868 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-10-04 +date: 2023-10-05 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 06bde717c846b..f2e93158528da 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-10-04 +date: 2023-10-05 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 4f0895eedd529..4dc96300849f1 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-10-04 +date: 2023-10-05 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 ead2f6e7e3ffd..d3973686c39f0 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-10-04 +date: 2023-10-05 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 af81c4c53858f..309b5c3864483 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-10-04 +date: 2023-10-05 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 9dfb6a29e1580..fb3a73b3b8673 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-10-04 +date: 2023-10-05 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 e9892249c21ca..ec59aec022df2 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-10-04 +date: 2023-10-05 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 0d93c547dd514..28239b4149653 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-10-04 +date: 2023-10-05 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 6005a60064f71..df36c3372277e 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-10-04 +date: 2023-10-05 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 af997d48080e1..66f15d350c64b 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-10-04 +date: 2023-10-05 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 6b60f64117f37..ddc162fbbfcab 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-10-04 +date: 2023-10-05 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 352c042ce2a03..5ffd57f187fde 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-10-04 +date: 2023-10-05 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 ba2faa59f4ee2..028b597daef38 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-10-04 +date: 2023-10-05 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 24614e641fa4d..6d3d40e0695d7 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-10-04 +date: 2023-10-05 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 10da0ca89d067..532180c694222 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx index a215f21dde154..ea66174a6612e 100644 --- a/api_docs/kbn_subscription_tracking.mdx +++ b/api_docs/kbn_subscription_tracking.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking title: "@kbn/subscription-tracking" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/subscription-tracking plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking'] --- import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 4d864b8037c81..f76f94ff2a84f 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.devdocs.json b/api_docs/kbn_test.devdocs.json index ca43d8708297a..2d9a82dde4b9e 100644 --- a/api_docs/kbn_test.devdocs.json +++ b/api_docs/kbn_test.devdocs.json @@ -3120,7 +3120,9 @@ "label": "esServerlessOptions", "description": [], "signature": [ - "{ image?: string | undefined; tag?: string | undefined; } | undefined" + "Pick<", + "ServerlessOptions", + ", \"host\" | \"tag\" | \"image\" | \"resources\"> | undefined" ], "path": "packages/kbn-test/src/es/test_es_cluster.ts", "deprecated": false, diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index a57c3ed3ebc0a..157a11b2b82e5 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-10-04 +date: 2023-10-05 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 8e830cf45b2a6..2d6ba75691bc0 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-10-04 +date: 2023-10-05 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 0fd0a340e4197..376aa2a8f138c 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-10-04 +date: 2023-10-05 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 4eae2e898df5d..cb4ff39c8e980 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-10-04 +date: 2023-10-05 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 c448d74c001bb..2b52f295d57bf 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-10-04 +date: 2023-10-05 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 a98aee6a2762d..f5cbc116309d2 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-10-04 +date: 2023-10-05 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 6abef4b3cb265..920b1ac581e23 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-10-04 +date: 2023-10-05 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 1cf8ad38e2749..84958a4400909 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-10-04 +date: 2023-10-05 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 87218bf34c107..b23e146a340f8 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-10-04 +date: 2023-10-05 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 d81de2c5fca9a..5b79b58a992d6 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 2ee6ad369ae8b..6a1b55fd4ed1d 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index b8120562c5c50..759f0df1290bd 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a2087344b05b3..d7b87d1dab7ef 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-10-04 +date: 2023-10-05 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 3ae29ff6cec18..45760019e9ce7 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index cc32e0d5a7fe3..fbfaa53f01b67 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 7d0e762554919..8d25fb89e0eba 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-10-04 +date: 2023-10-05 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 5279f67f8e4af..cb4beff8a49fe 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-10-04 +date: 2023-10-05 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 145b5304caf14..99bf78ded44fb 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-10-04 +date: 2023-10-05 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 0206955946b47..1a320a6cb58f4 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.devdocs.json b/api_docs/kbn_visualization_ui_components.devdocs.json index c33aaf04d4bed..80a90a0b589f6 100644 --- a/api_docs/kbn_visualization_ui_components.devdocs.json +++ b/api_docs/kbn_visualization_ui_components.devdocs.json @@ -11,7 +11,7 @@ "label": "ColorPicker", "description": [], "signature": [ - "({ overwriteColor, defaultColor, setConfig, label, disableHelpTooltip, disabledMessage, showAlpha, }: { overwriteColor?: string | null | undefined; defaultColor?: string | null | undefined; setConfig: (config: { color?: string | undefined; }) => void; label?: string | undefined; disableHelpTooltip?: boolean | undefined; disabledMessage?: string | undefined; showAlpha?: boolean | undefined; }) => JSX.Element" + "({ overwriteColor, defaultColor, isClearable, setConfig, label, disableHelpTooltip, disabledMessage, showAlpha, }: { overwriteColor?: string | null | undefined; defaultColor?: string | null | undefined; isClearable?: boolean | undefined; setConfig: (config: { color?: string | undefined; }) => void; label?: string | undefined; disableHelpTooltip?: boolean | undefined; disabledMessage?: string | undefined; showAlpha?: boolean | undefined; }) => JSX.Element" ], "path": "packages/kbn-visualization-ui-components/components/color_picker.tsx", "deprecated": false, @@ -22,7 +22,7 @@ "id": "def-public.ColorPicker.$1", "type": "Object", "tags": [], - "label": "{\n overwriteColor,\n defaultColor,\n setConfig,\n label,\n disableHelpTooltip,\n disabledMessage,\n showAlpha,\n}", + "label": "{\n overwriteColor,\n defaultColor,\n isClearable,\n setConfig,\n label,\n disableHelpTooltip,\n disabledMessage,\n showAlpha,\n}", "description": [], "path": "packages/kbn-visualization-ui-components/components/color_picker.tsx", "deprecated": false, @@ -56,6 +56,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/visualization-ui-components", + "id": "def-public.ColorPicker.$1.isClearable", + "type": "CompoundType", + "tags": [], + "label": "isClearable", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-visualization-ui-components/components/color_picker.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/visualization-ui-components", "id": "def-public.ColorPicker.$1.setConfig", diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 35b86e5615659..4ee51b49ea720 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 155 | 0 | 151 | 3 | +| 156 | 0 | 152 | 3 | ## Client diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index b550dbb55e6d3..861b90cfe800e 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index b316eb12dad4d..fd42d4e6a54cf 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-10-04 +date: 2023-10-05 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 356e258f0b7e2..c943b4e7a834e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 85b74a775e951..b9ab273d2c2af 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-10-04 +date: 2023-10-05 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 ef82a6fde36af..5ccd842d840b3 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-10-04 +date: 2023-10-05 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 e2532acc7f909..613784ce420a7 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 535cb06bd546f..5d6ce5cc9d4bd 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-10-04 +date: 2023-10-05 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 9d7769ae9a297..52e33c4804b1a 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-10-04 +date: 2023-10-05 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 f4931f56c2be0..bf3a62ee42dad 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-10-04 +date: 2023-10-05 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 6ace00fe51a0f..ba2389425ca49 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 252c39322ca6a..2cab6ad58f065 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 36861d7fc6323..6c8f63af993ca 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 9ac971ea3b4a0..1cfc3276626b0 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 566777c5b4797..7dafc5ecdaf55 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 26b43a942c8d1..b3d019368c835 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-10-04 +date: 2023-10-05 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 3b1862a9f985b..7bbbe4190b259 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-10-04 +date: 2023-10-05 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 0bc75c29258ff..74a6930cc3918 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.devdocs.json b/api_docs/metrics_data_access.devdocs.json index ed498fd981e05..de32b9fe2732f 100644 --- a/api_docs/metrics_data_access.devdocs.json +++ b/api_docs/metrics_data_access.devdocs.json @@ -271,7 +271,45 @@ "initialIsOpen": false } ], - "objects": [], + "objects": [ + { + "parentPluginId": "metricsDataAccess", + "id": "def-server.MetricsDataClientMock", + "type": "Object", + "tags": [], + "label": "MetricsDataClientMock", + "description": [], + "path": "x-pack/plugins/metrics_data_access/server/client_mock.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "metricsDataAccess", + "id": "def-server.MetricsDataClientMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "metricsDataAccess", + "scope": "server", + "docId": "kibMetricsDataAccessPluginApi", + "section": "def-server.MetricsDataClient", + "text": "MetricsDataClient" + } + ], + "path": "x-pack/plugins/metrics_data_access/server/client_mock.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "setup": { "parentPluginId": "metricsDataAccess", "id": "def-server.MetricsDataPluginSetup", diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index d4b6dfef85c01..8ae5f0a13f73a 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; @@ -21,13 +21,16 @@ Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/inf | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 14 | 0 | 14 | 0 | +| 16 | 0 | 16 | 0 | ## Server ### Setup +### Objects + + ### Classes diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 30cddb7edb9bc..dd49804dc6368 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-10-04 +date: 2023-10-05 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 fbec9a529dc70..585db02f7e9cf 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-10-04 +date: 2023-10-05 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 fae56d87b06cb..4e5312777fcbd 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-10-04 +date: 2023-10-05 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 5680809c10e42..81a99e60577a8 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-10-04 +date: 2023-10-05 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 3e6d4a836f0d4..7d13563813834 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 1c5b21cb4714e..eea0c775578e4 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 5ce826a89a292..377afbdf9867e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 1d3696f26300b..f3f223bd637a0 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index c36dfffa7e4f1..43690855d68ff 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index b3b5d7dc00d55..c09dfc97371a3 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index ac51c37ec4bed..81cc8c0edbad5 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-10-04 +date: 2023-10-05 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 495743d4247b0..6ceb8b06b6cfe 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-10-04 +date: 2023-10-05 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 7e19211aec394..836cce900dadb 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index d9d8766ba9cca..6319160624ce9 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 5385249ce7b86..ab6f3303b0a4a 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 699 | 589 | 42 | +| 698 | 589 | 41 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 75755 | 223 | 64565 | 1575 | +| 75782 | 223 | 64582 | 1576 | ## Plugin Directory @@ -63,7 +63,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1037 | 0 | 257 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 117 | 0 | 75 | 18 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 118 | 0 | 76 | 18 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Server APIs for the Elastic AI Assistant | 4 | 0 | 2 | 0 | @@ -129,7 +129,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 47 | 0 | 47 | 7 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 259 | 0 | 258 | 28 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 67 | 0 | 67 | 0 | -| | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Exposes utilities for accessing metrics data | 14 | 0 | 14 | 0 | +| | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Exposes utilities for accessing metrics data | 16 | 0 | 16 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 150 | 3 | 64 | 33 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 15 | 3 | 13 | 1 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 9 | 0 | 9 | 0 | @@ -162,7 +162,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. | 270 | 0 | 87 | 3 | -| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 172 | 0 | 106 | 34 | +| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 176 | 0 | 109 | 35 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 19 | 0 | 18 | 0 | @@ -394,7 +394,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 5 | 0 | 5 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 61 | 1 | 54 | 1 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 1 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 29 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 15 | 0 | 14 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 4 | 0 | @@ -491,7 +491,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 2 | 0 | 0 | 0 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 582 | 1 | 1 | 0 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 2 | 0 | 2 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 93 | 2 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 99 | 2 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 206 | 3 | 1 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 | @@ -544,7 +544,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 114 | 0 | 111 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 68 | 0 | 68 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2048 | 0 | 2048 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2055 | 0 | 2055 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 15 | 0 | 8 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 14 | 0 | 14 | 6 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 50 | 0 | 47 | 0 | @@ -642,7 +642,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 16 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 24 | 0 | 14 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 155 | 0 | 151 | 3 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 156 | 0 | 152 | 3 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 12 | 0 | 12 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 6 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index c94afd6726d23..5bd114fba99f5 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-10-04 +date: 2023-10-05 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 3a4e594dfff37..13abb7b599e07 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 00457f1b7f5ad..735b7600ab35d 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 93900ce0671df..3805921d9798f 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-10-04 +date: 2023-10-05 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 e5a5c3745fedf..c648f1fe61675 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d57bdbfe3d304..d7f5e2f30b8d0 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-10-04 +date: 2023-10-05 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 17be3ce7347ab..63786d2b4ab6b 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-10-04 +date: 2023-10-05 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 f80203dc65a03..455ebfb0e5a52 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-10-04 +date: 2023-10-05 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 057ef309a1908..59f7840bcbef8 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-10-04 +date: 2023-10-05 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 e2ef88610bad4..a3663b3ad45ed 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-10-04 +date: 2023-10-05 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 beff3d03e6432..d44c705e67a82 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-10-04 +date: 2023-10-05 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 9bb0ee48c65c7..7bdb32f9a1087 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-10-04 +date: 2023-10-05 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 9be994c1a1b97..89d8bb96757ae 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-10-04 +date: 2023-10-05 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 035cafcea23c1..17624c52e3739 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-10-04 +date: 2023-10-05 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 fd1e6da25c084..2614c21a5ffe7 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-10-04 +date: 2023-10-05 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 2f1dad24ba22d..5b513a88c0c5e 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-10-04 +date: 2023-10-05 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 8a8530a7e0bc4..14111499bc1ab 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-10-04 +date: 2023-10-05 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 065104cd519d1..461ab76dbedd6 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -1769,6 +1769,20 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "securitySolution", + "id": "def-public.PluginSetup.experimentalFeatures", + "type": "Object", + "tags": [], + "label": "experimentalFeatures", + "description": [], + "signature": [ + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly discoverInTimeline: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; }" + ], + "path": "x-pack/plugins/security_solution/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "securitySolution", "id": "def-public.PluginSetup.setAppLinksSwitcher", @@ -1803,6 +1817,40 @@ ], "returnComment": [] }, + { + "parentPluginId": "securitySolution", + "id": "def-public.PluginSetup.setDeepLinksFormatter", + "type": "Function", + "tags": [], + "label": "setDeepLinksFormatter", + "description": [], + "signature": [ + "(deepLinksFormatter: ", + "DeepLinksFormatter", + ") => void" + ], + "path": "x-pack/plugins/security_solution/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "securitySolution", + "id": "def-public.PluginSetup.setDeepLinksFormatter.$1", + "type": "Function", + "tags": [], + "label": "deepLinksFormatter", + "description": [], + "signature": [ + "DeepLinksFormatter" + ], + "path": "x-pack/plugins/security_solution/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "securitySolution", "id": "def-public.PluginSetup.setDataQualityPanelConfig", @@ -2855,6 +2903,22 @@ "trackAdoption": false } ] + }, + { + "parentPluginId": "securitySolution", + "id": "def-server.SecuritySolutionPluginSetup.experimentalFeatures", + "type": "Object", + "tags": [], + "label": "experimentalFeatures", + "description": [ + "\nThe security solution generic experimental features" + ], + "signature": [ + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly alertDetailsPageEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly discoverInTimeline: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; }" + ], + "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", + "deprecated": false, + "trackAdoption": false } ], "lifecycle": "setup", diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 6750369625a69..2cb161270674c 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-10-04 +date: 2023-10-05 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 | |-------------------|-----------|------------------------|-----------------| -| 172 | 0 | 106 | 34 | +| 176 | 0 | 109 | 35 | ## Client diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 61333fa922ef8..becb9fde425e1 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index f2a4007dfabc1..37093bb4b4f7e 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 5f9ac7fdfc053..3173f6aa55c71 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-10-04 +date: 2023-10-05 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 545a9b04455ea..107391fef8adb 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-10-04 +date: 2023-10-05 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 3a1d3130b69a1..dd95be9b76a23 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 1fde97f8160a1..28dc097455faf 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-10-04 +date: 2023-10-05 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 1655bfd9995c6..8efcaff9ae3e5 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-10-04 +date: 2023-10-05 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 65d3d009b0817..24ddfd9abc371 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-10-04 +date: 2023-10-05 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 6ae122edde8f7..efd20cce0d61e 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-10-04 +date: 2023-10-05 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 df49f554a3e4c..dd59703e27f31 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-10-04 +date: 2023-10-05 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 77a5f87ceff41..c6f45a141ec56 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-10-04 +date: 2023-10-05 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 487a988e98d83..a1a16e0031669 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 10f1f2535bc91..0ce9c23e30635 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-10-04 +date: 2023-10-05 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 293abfc53166a..10660c9902ebf 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-10-04 +date: 2023-10-05 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 8a56f882f506a..725195148694e 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-10-04 +date: 2023-10-05 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 3c18c09632a4d..e178ccd7710e7 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-10-04 +date: 2023-10-05 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 b151e77653cc6..ff58b40131f17 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-10-04 +date: 2023-10-05 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 ac963e4b5591f..766971e73dc37 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-10-04 +date: 2023-10-05 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 b080995580376..49c7177a4a91f 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-10-04 +date: 2023-10-05 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 61eac471b522f..fb23df99c0b51 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-10-04 +date: 2023-10-05 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 48e4f9d89c804..a25a5033682e0 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-10-04 +date: 2023-10-05 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 6a0bbf988918f..9e4ce07d6a80b 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-10-04 +date: 2023-10-05 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 af87c5d67d7a2..cf4eee540b9a8 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index fb2d331b7115f..431a8e20122a8 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 06f5ae34177b2..5cf1bb5d790fd 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 925959a291e16..1eff054661043 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-10-04 +date: 2023-10-05 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 e1252144f7396..0cb2e557affec 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 7d8a95edf987d..f23cae5aa118d 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 3eb337c05ae3d..d20b3af00da87 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-10-04 +date: 2023-10-05 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 7b6f2f888e0c0..2f44258c9d401 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-10-04 +date: 2023-10-05 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 365162b61ee7d..05d4d8426559f 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-10-04 +date: 2023-10-05 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 02be92a35c2d5..64a1839ecd061 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-10-04 +date: 2023-10-05 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 aaa1b41d5bd0c..ce5e50c85e65d 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-10-04 +date: 2023-10-05 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 bfe7402987c65..2e87d67658305 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-10-04 +date: 2023-10-05 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 63ce12aab067d..52b107ad6057c 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-10-04 +date: 2023-10-05 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 9f2e4cd8f8961..936cd0c2773bb 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-10-04 +date: 2023-10-05 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 2eefb08259743..c303cca0180ce 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-10-04 +date: 2023-10-05 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 dfc9b6cd8ad57..dd261e79a06c7 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-10-04 +date: 2023-10-05 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 2c2a070030345..44a7b0f347fe3 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-10-04 +date: 2023-10-05 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 cdf3234db07ab..9cfad5a688fe2 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-10-04 +date: 2023-10-05 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 a314818334cbb..45d735650a81e 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 28f223df4f772..af3a417abd9de 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-10-04 +date: 2023-10-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From a2a7f4254000f53d764b49c760a2ffbf93f73041 Mon Sep 17 00:00:00 2001 From: Julia Rechkunova Date: Thu, 5 Oct 2023 09:38:09 +0200 Subject: [PATCH 26/27] [Discover] Fix flaky chart interval test (#167977) - Closes https://github.com/elastic/kibana/issues/146223 100x https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3317 --- test/functional/apps/discover/group1/_discover.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/apps/discover/group1/_discover.ts b/test/functional/apps/discover/group1/_discover.ts index 2933dd02f1525..8a72fd9cc5a58 100644 --- a/test/functional/apps/discover/group1/_discover.ts +++ b/test/functional/apps/discover/group1/_discover.ts @@ -111,10 +111,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); }); - // FLAKY: https://github.com/elastic/kibana/issues/146223 - it.skip('should show correct initial chart interval of Auto', async function () { + it('should show correct initial chart interval of Auto', async function () { await PageObjects.timePicker.setDefaultAbsoluteRange(); await PageObjects.discover.waitUntilSearchingHasFinished(); + await testSubjects.click('unifiedHistogramQueryHits'); // to cancel out tooltips const actualInterval = await PageObjects.discover.getChartInterval(); const expectedInterval = 'Auto'; From 4f9e7490797e88027acbd7b099f10db6a1c85d12 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Thu, 5 Oct 2023 10:12:57 +0200 Subject: [PATCH 27/27] [ftr] unskip tests that failed due to auth issue or navigation (#168006) ## Summary While debugging MKI failures I found some tests that should be stable without modification. I added waiting for page to loaded in some places though. https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3340 60x for examples & 20x for oblt configs --- .../search_examples/search_example.ts | 5 ++-- .../dataset_selection_state.ts | 26 ++++++++++++++++--- .../observability_log_explorer/header_menu.ts | 6 ++++- .../test_suites/search/empty_page.ts | 3 +++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts index 67a2e41d50314..dff9c30052905 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts @@ -17,7 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Failing: See https://github.com/elastic/kibana/issues/165730 // FLAKY: https://github.com/elastic/kibana/issues/165735 - describe.skip('Search example', () => { + describe('Search example', () => { describe('with bfetch', () => { testSearchExample(); }); @@ -83,7 +83,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - it('should handle warnings', async () => { + // failing because no toasts are displayed + it.skip('should handle warnings', async () => { await testSubjects.click('searchWithWarning'); await retry.waitFor('', async () => { const toastCount = await toasts.getToastCount(); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/dataset_selection_state.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/dataset_selection_state.ts index 4c8ddb58bf45d..1e12a054c852f 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/dataset_selection_state.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/dataset_selection_state.ts @@ -12,13 +12,27 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); const retry = getService('retry'); - const PageObjects = getPageObjects(['common', 'observabilityLogExplorer']); + const PageObjects = getPageObjects([ + 'common', + 'observabilityLogExplorer', + 'svlCommonPage', + 'header', + ]); + + // https://github.com/elastic/kibana/issues/166016 + describe('DatasetSelection initialization and update', () => { + before(async () => { + await PageObjects.svlCommonPage.login(); + }); + + after(async () => { + await PageObjects.svlCommonPage.forceLogout(); + }); - // FLAKY: https://github.com/elastic/kibana/issues/166016 - describe.skip('DatasetSelection initialization and update', () => { describe('when the "index" query param does not exist', () => { it('should initialize the "All logs" selection', async () => { await PageObjects.observabilityLogExplorer.navigateTo(); + await PageObjects.header.waitUntilLoadingHasFinished(); const datasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); @@ -35,6 +49,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { _a: rison.encode({ index: azureActivitylogsIndex }), }), }); + await PageObjects.header.waitUntilLoadingHasFinished(); const datasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); @@ -49,6 +64,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { _a: rison.encode({ index: invalidEncodedIndex }), }), }); + await PageObjects.header.waitUntilLoadingHasFinished(); const datasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); @@ -61,6 +77,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('when navigating back and forth on the page history', () => { it('should decode and restore the selection for the current index', async () => { await PageObjects.observabilityLogExplorer.navigateTo(); + await PageObjects.header.waitUntilLoadingHasFinished(); const allDatasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); expect(allDatasetSelectionTitle).to.be('All logs'); @@ -73,6 +90,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { controlPanels: rison.encode({}), }), }); + await PageObjects.header.waitUntilLoadingHasFinished(); const azureDatasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); expect(azureDatasetSelectionTitle).to.be('[Azure Logs] activitylogs'); @@ -80,6 +98,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Go back to previous page selection await retry.try(async () => { await browser.goBack(); + await PageObjects.header.waitUntilLoadingHasFinished(); const backNavigationDatasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); expect(backNavigationDatasetSelectionTitle).to.be('All logs'); @@ -88,6 +107,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Go forward to previous page selection await retry.try(async () => { await browser.goForward(); + await PageObjects.header.waitUntilLoadingHasFinished(); const forwardNavigationDatasetSelectionTitle = await PageObjects.observabilityLogExplorer.getDatasetSelectorButtonText(); expect(forwardNavigationDatasetSelectionTitle).to.be('[Azure Logs] activitylogs'); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/header_menu.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/header_menu.ts index c7cba34e28ec2..882c5803a6cc0 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/header_menu.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/header_menu.ts @@ -18,10 +18,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'observabilityLogExplorer', 'svlCommonPage', 'timePicker', + 'header', ]); // FLAKY: https://github.com/elastic/kibana/issues/167189 - describe.skip('Header menu', () => { + describe('Header menu', () => { before(async () => { await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await esArchiver.load( @@ -29,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); await PageObjects.svlCommonPage.login(); await PageObjects.observabilityLogExplorer.navigateTo(); + await PageObjects.header.waitUntilLoadingHasFinished(); }); after(async () => { @@ -47,6 +49,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Discover fallback link', () => { before(async () => { await PageObjects.observabilityLogExplorer.navigateTo(); + await PageObjects.header.waitUntilLoadingHasFinished(); }); it('should render a button link ', async () => { @@ -99,6 +102,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Add data link', () => { before(async () => { await PageObjects.observabilityLogExplorer.navigateTo(); + await PageObjects.header.waitUntilLoadingHasFinished(); }); it('should render a button link ', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/search/empty_page.ts b/x-pack/test_serverless/functional/test_suites/search/empty_page.ts index 5a7891968cb81..e3e82c0b0d97b 100644 --- a/x-pack/test_serverless/functional/test_suites/search/empty_page.ts +++ b/x-pack/test_serverless/functional/test_suites/search/empty_page.ts @@ -25,6 +25,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { it('should show search specific empty page in discover', async () => { await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'discover' }); + await testSubjects.existOrFail('~breadcrumb-deepLinkId-discover'); await testSubjects.existOrFail('kbnOverviewElasticsearchGettingStarted'); await testSubjects.click('kbnOverviewElasticsearchGettingStarted'); await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Getting started' }); @@ -32,6 +33,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { it('should show search specific empty page in visualize', async () => { await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'visualize' }); + await testSubjects.existOrFail('~breadcrumb-deepLinkId-visualize'); await testSubjects.existOrFail('kbnOverviewElasticsearchGettingStarted'); await testSubjects.click('kbnOverviewElasticsearchGettingStarted'); await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Getting started' }); @@ -39,6 +41,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { it('should show search specific empty page in dashboards', async () => { await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'dashboards' }); + await testSubjects.existOrFail('~breadcrumb-deepLinkId-dashboards'); await testSubjects.existOrFail('kbnOverviewElasticsearchGettingStarted'); await testSubjects.click('kbnOverviewElasticsearchGettingStarted'); await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Getting started' });