diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index c838c83e5253b..8d7b3fee29006 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -417,6 +417,7 @@ enabled: - x-pack/performance/journeys/many_fields_discover.ts - x-pack/performance/journeys/many_fields_lens_editor.ts - x-pack/performance/journeys/many_fields_transform.ts + - x-pack/performance/journeys/tsdb_logs_data_visualizer.ts - x-pack/performance/journeys/promotion_tracking_dashboard.ts - x-pack/performance/journeys/web_logs_dashboard.ts - x-pack/performance/journeys/data_stress_test_lens.ts diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index e36a1434bee88..60c26c8bce2fb 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -140,7 +140,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 40 - parallelism: 12 + parallelism: 2 soft_fail: true retry: automatic: @@ -166,7 +166,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 40 - parallelism: 6 + parallelism: 2 soft_fail: true retry: automatic: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index e7fbf640cf565..8d8d32e9d478b 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -4,7 +4,7 @@ steps: - label: ":pipeline::kibana::seedling: Trigger Kibana Serverless Tests for ${ENVIRONMENT}" - trigger: appex-qa-kibana-serverless-ftr-tests # https://buildkite.com/elastic/appex-qa-kibana-serverless-ftr-tests + trigger: appex-qa-serverless-kibana-ftr-tests # https://buildkite.com/elastic/appex-qa-serverless-kibana-ftr-tests soft_fail: true # Remove this before release or when tests stabilize build: env: @@ -17,14 +17,6 @@ steps: - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" command: .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh - - label: ":judge::seedling: Trigger Manual Tests Phase" - command: "make -C /agent trigger-manual-verification-phase" - if: build.branch == "main" - env: - TEAM_CHANNEL: "#kibana-mission-control" - agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" - - label: ":pipeline::ship::seedling: Trigger Fleet serverless smoke tests for ${ENVIRONMENT}" trigger: fleet-smoke-tests # https://buildkite.com/elastic/fleet-smoke-tests soft_fail: true # Remove this before release diff --git a/.buildkite/pipelines/serverless.yml b/.buildkite/pipelines/serverless.yml index e7b5dbc299722..0a9cc038088ff 100644 --- a/.buildkite/pipelines/serverless.yml +++ b/.buildkite/pipelines/serverless.yml @@ -105,32 +105,33 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 40 - parallelism: 12 + parallelism: 2 retry: automatic: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/functional/security_serverless_explore.sh - label: 'Serverless Explore - Security Solution Cypress Tests' + - command: .buildkite/scripts/steps/functional/security_serverless_investigations.sh + label: 'Serverless Security Investigations Cypress Tests' agents: queue: n2-4-spot depends_on: build - timeout_in_minutes: 60 - parallelism: 4 + timeout_in_minutes: 120 + parallelism: 2 retry: automatic: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/functional/security_serverless_investigations.sh - label: 'Serverless Investigations - Security Solution Cypress Tests' + - command: .buildkite/scripts/steps/functional/security_serverless_explore.sh + label: 'Serverless Security Explore Cypress Tests' agents: queue: n2-4-spot depends_on: build - timeout_in_minutes: 120 - parallelism: 6 + timeout_in_minutes: 60 + parallelism: 2 retry: automatic: - exit_status: '*' limit: 1 + diff --git a/.buildkite/scripts/lifecycle/post_command.sh b/.buildkite/scripts/lifecycle/post_command.sh index 77f11120a4abe..01877bedbef8c 100755 --- a/.buildkite/scripts/lifecycle/post_command.sh +++ b/.buildkite/scripts/lifecycle/post_command.sh @@ -31,8 +31,10 @@ if [[ "$IS_TEST_EXECUTION_STEP" == "true" ]]; then buildkite-agent artifact upload '.es/**/*.hprof' buildkite-agent artifact upload 'data/es_debug_*.tar.gz' - echo "--- Run Failed Test Reporter" - node scripts/report_failed_tests --build-url="${BUILDKITE_BUILD_URL}#${BUILDKITE_JOB_ID}" 'target/junit/**/*.xml' + if [[ $BUILDKITE_COMMAND_EXIT_STATUS -ne 0 ]]; then + echo "--- Run Failed Test Reporter" + node scripts/report_failed_tests --build-url="${BUILDKITE_BUILD_URL}#${BUILDKITE_JOB_ID}" 'target/junit/**/*.xml' + fi if [[ -d 'target/test_failures' ]]; then buildkite-agent artifact upload 'target/test_failures/**/*' diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 68e7723fc7fa1..4e648524c704d 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -2094,7 +2094,9 @@ "signature": [ "(requesterId: string, actionsToExecute: ", "ExecuteOptions", - "[]) => Promise" + "[]) => Promise<", + "ExecutionResponse", + ">" ], "path": "x-pack/plugins/actions/server/unsecured_actions_client/unsecured_actions_client.ts", "deprecated": false, @@ -2967,7 +2969,9 @@ "signature": [ "(requesterId: string, actionsToExecute: ", "ExecuteOptions", - "[]) => Promise" + "[]) => Promise<", + "ExecutionResponse", + ">" ], "path": "x-pack/plugins/actions/server/unsecured_actions_client/unsecured_actions_client.ts", "deprecated": false, @@ -3249,7 +3253,9 @@ }, ">; bulkEnqueueExecution: (options: ", "ExecuteOptions", - "[]) => Promise; ephemeralEnqueuedExecution: (options: ", + "[]) => Promise<", + "ExecutionResponse", + ">; ephemeralEnqueuedExecution: (options: ", "ExecuteOptions", ") => Promise<", { diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 0e911e1388269..b9e0ea3bd2a03 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 269 | 0 | 263 | 30 | +| 269 | 0 | 263 | 31 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 950786cd3b4f0..2c2850e645dc3 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-09-07 +date: 2023-09-08 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 eec6749c64c74..bd656f15d0ab7 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 4f8b13c4cf84c..9be8b8f4a38c8 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -2820,7 +2820,7 @@ "label": "monitoring", "description": [], "signature": [ - "Readonly<{} & { run: Readonly<{} & { history: Readonly<{ outcome?: Readonly<{ warning?: \"execute\" | \"license\" | \"validate\" | \"timeout\" | \"unknown\" | \"read\" | \"decrypt\" | \"disabled\" | \"maxExecutableActions\" | \"maxAlerts\" | null | undefined; outcomeOrder?: number | undefined; outcomeMsg?: string[] | null | undefined; } & { outcome: \"warning\" | \"succeeded\" | \"failed\"; alertsCount: Readonly<{ recovered?: number | null | undefined; active?: number | null | undefined; new?: number | null | undefined; ignored?: number | null | undefined; } & {}>; }> | undefined; duration?: number | undefined; } & { timestamp: number; success: boolean; }>[]; calculated_metrics: Readonly<{ p50?: number | undefined; p95?: number | undefined; p99?: number | undefined; } & { success_ratio: number; }>; last_run: Readonly<{} & { timestamp: string; metrics: Readonly<{ duration?: number | undefined; total_search_duration_ms?: number | null | undefined; total_indexing_duration_ms?: number | null | undefined; total_alerts_detected?: number | null | undefined; total_alerts_created?: number | null | undefined; gap_duration_s?: number | null | undefined; } & {}>; }>; }>; }> | undefined" + "Readonly<{} & { run: Readonly<{} & { history: Readonly<{ outcome?: Readonly<{ warning?: \"execute\" | \"license\" | \"validate\" | \"timeout\" | \"unknown\" | \"read\" | \"decrypt\" | \"disabled\" | \"maxExecutableActions\" | \"maxAlerts\" | \"maxQueuedActions\" | null | undefined; outcomeOrder?: number | undefined; outcomeMsg?: string[] | null | undefined; } & { outcome: \"warning\" | \"succeeded\" | \"failed\"; alertsCount: Readonly<{ recovered?: number | null | undefined; active?: number | null | undefined; new?: number | null | undefined; ignored?: number | null | undefined; } & {}>; }> | undefined; duration?: number | undefined; } & { timestamp: number; success: boolean; }>[]; calculated_metrics: Readonly<{ p50?: number | undefined; p95?: number | undefined; p99?: number | undefined; } & { success_ratio: number; }>; last_run: Readonly<{} & { timestamp: string; metrics: Readonly<{ duration?: number | undefined; total_search_duration_ms?: number | null | undefined; total_indexing_duration_ms?: number | null | undefined; total_alerts_detected?: number | null | undefined; total_alerts_created?: number | null | undefined; gap_duration_s?: number | null | undefined; } & {}>; }>; }>; }> | undefined" ], "path": "x-pack/plugins/alerting/server/application/rule/types/rule.ts", "deprecated": false, @@ -2876,7 +2876,7 @@ "label": "lastRun", "description": [], "signature": [ - "Readonly<{ warning?: \"execute\" | \"license\" | \"validate\" | \"timeout\" | \"unknown\" | \"read\" | \"decrypt\" | \"disabled\" | \"maxExecutableActions\" | \"maxAlerts\" | null | undefined; outcomeOrder?: number | undefined; outcomeMsg?: string[] | null | undefined; } & { outcome: \"warning\" | \"succeeded\" | \"failed\"; alertsCount: Readonly<{ recovered?: number | null | undefined; active?: number | null | undefined; new?: number | null | undefined; ignored?: number | null | undefined; } & {}>; }> | null | undefined" + "Readonly<{ warning?: \"execute\" | \"license\" | \"validate\" | \"timeout\" | \"unknown\" | \"read\" | \"decrypt\" | \"disabled\" | \"maxExecutableActions\" | \"maxAlerts\" | \"maxQueuedActions\" | null | undefined; outcomeOrder?: number | undefined; outcomeMsg?: string[] | null | undefined; } & { outcome: \"warning\" | \"succeeded\" | \"failed\"; alertsCount: Readonly<{ recovered?: number | null | undefined; active?: number | null | undefined; new?: number | null | undefined; ignored?: number | null | undefined; } & {}>; }> | null | undefined" ], "path": "x-pack/plugins/alerting/server/application/rule/types/rule.ts", "deprecated": false, diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index d9179b60a4569..4f9441fe039f5 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-09-07 +date: 2023-09-08 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 70247d54ed182..4f53bd10a2801 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-09-07 +date: 2023-09-08 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 fd59d9c3ea435..15ffcff9abc22 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 7246565be88f0..6d78302f57c7c 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-09-07 +date: 2023-09-08 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 d5c3222b55598..c5e9339917668 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-09-07 +date: 2023-09-08 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 ffc745e80bce4..a125c9e3bc8fd 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-09-07 +date: 2023-09-08 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 6666facbefa25..418ef78fe36d0 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-09-07 +date: 2023-09-08 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 5fee0ae6cc0db..a592c4bfad9fa 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-09-07 +date: 2023-09-08 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 fd9d2db8180c1..220ce7b794894 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-09-07 +date: 2023-09-08 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 c1dc9279cd53c..de64b15cb76c2 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 4376a5d930938..5440ae863e79b 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 2bd7a50cded91..8998256b5ce68 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 621475c234897..73720f0f5e7a5 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-09-07 +date: 2023-09-08 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 b4bc426ec27f3..c8bb28ae40d21 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-09-07 +date: 2023-09-08 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 f63c1e23364b7..c5913e6847851 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-09-07 +date: 2023-09-08 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 52c0e2cb60a26..c5b04814190fc 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-09-07 +date: 2023-09-08 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 f2c725ae8eb92..58e89dc822ad1 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-09-07 +date: 2023-09-08 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 987b34a2c2fc1..eb698c55484da 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-09-07 +date: 2023-09-08 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 0ca1d3881a938..24c9a3a9b9cb7 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-09-07 +date: 2023-09-08 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 5b53bb97d7dab..ab49925960161 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-09-07 +date: 2023-09-08 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 8b9ba774d9a7d..30e6b76d6e094 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-09-07 +date: 2023-09-08 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 44a1aa4710043..3f686f8ccaf8b 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-09-07 +date: 2023-09-08 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 1d0ec20339e5a..ab9fe1acf38bc 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-09-07 +date: 2023-09-08 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 5557fd59c7bbe..b40d23731df97 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-09-07 +date: 2023-09-08 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 1823366e7947b..ad9b6a84efa62 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-09-07 +date: 2023-09-08 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 99fb909a07f79..8a487529aeabd 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-09-07 +date: 2023-09-08 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 21a077f7e9b9e..8cc70599758b9 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-09-07 +date: 2023-09-08 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 fdf6650d5838a..19179bcd857cb 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-09-07 +date: 2023-09-08 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 d711770385472..cd8385997d9bf 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-09-07 +date: 2023-09-08 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 72d35ccf434d7..b0e19ec63cace 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-09-07 +date: 2023-09-08 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 dac134691fe57..9c19d94256029 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -45,7 +45,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | securitySolution | - | | | securitySolution | - | | | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjectsTaggingOss, savedObjectsTagging, securitySolution, lists, upgradeAssistant, savedObjectsManagement, @kbn/core-saved-objects-api-server, @kbn/core-saved-objects-import-export-server-internal, home, canvas, savedObjects, @kbn/core-saved-objects-browser-mocks, @kbn/core-ui-settings-server-internal | - | -| | @kbn/core-saved-objects-migration-server-internal, actions, dataViews, data, alerting, lens, lists, savedObjectsTagging, securitySolution, cases, visualizations, savedSearch, canvas, graph, maps, dashboard, @kbn/core-test-helpers-so-type-serializer | - | +| | @kbn/core-saved-objects-migration-server-internal, actions, dataViews, data, alerting, lens, lists, cases, savedObjectsTagging, securitySolution, visualizations, savedSearch, canvas, graph, maps, dashboard, @kbn/core-test-helpers-so-type-serializer | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 10b4958afbe02..105960f2baeb3 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 4900f1cfbc6f5..66cb187a50623 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index a4fbd9e05ac5d..2899ab82c4f30 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 2bc37b574845d..44a37c29c05e6 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index af34f5f5d592c..e845dab4f5d4f 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-09-07 +date: 2023-09-08 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 b3df60c604ffd..fd3c723717a24 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-09-07 +date: 2023-09-08 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 4dc9076452bd2..29f288b9ccc27 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-09-07 +date: 2023-09-08 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 9efe6bbde92d5..3dd86a1699e67 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-09-07 +date: 2023-09-08 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 29581b5840241..89ac3f34d57a7 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-09-07 +date: 2023-09-08 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 43a8b841a437d..ae9ef108a8191 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-09-07 +date: 2023-09-08 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 c32daf9c7593b..4ba6b1b59828e 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-09-07 +date: 2023-09-08 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 c219fe71fa102..7871fc44e2c52 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-09-07 +date: 2023-09-08 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 70155bbdc4316..f3c3aba720f68 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index dc30b3cbe84e6..db2178a379d0a 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-09-07 +date: 2023-09-08 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 e90935caffef1..e41f09638c474 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-09-07 +date: 2023-09-08 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 5660e6626be0e..722dbf00719af 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-09-07 +date: 2023-09-08 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 fcd4815db7c23..9b99ef71fe03e 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-09-07 +date: 2023-09-08 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 eb6bccba953d6..d7ae0c3b14a87 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-09-07 +date: 2023-09-08 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 850488dff1403..d6f8357886699 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-09-07 +date: 2023-09-08 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 3a1d3f08cf583..77e022ab5456e 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-09-07 +date: 2023-09-08 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 3ad066d09a41d..6c6b7d5dcd859 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-09-07 +date: 2023-09-08 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 50f8eb0cc0415..5cebde5950fcd 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-09-07 +date: 2023-09-08 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 231a4e040b801..b5af00049d0f0 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-09-07 +date: 2023-09-08 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 da3dfe67bdc69..266c8c7db0ff3 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-09-07 +date: 2023-09-08 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 51dcf3903022d..4f8117542c747 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-09-07 +date: 2023-09-08 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 d336e9dd9b1fa..f81318a61a762 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-09-07 +date: 2023-09-08 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 86a5ba026e305..b3853b1a70a43 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-09-07 +date: 2023-09-08 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 5b380facf2a6a..0b61b3b5f389b 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-09-07 +date: 2023-09-08 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 30f6121fa16b5..ffe8a542e4349 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-09-07 +date: 2023-09-08 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 402b2d208d32f..1c463d8bd0d40 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-09-07 +date: 2023-09-08 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 14a92e780c05b..1f68c374415c0 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-09-07 +date: 2023-09-08 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 68046facc540c..961fbbc3f2b6c 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-09-07 +date: 2023-09-08 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 6a5c909638041..8394270ea771b 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-09-07 +date: 2023-09-08 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 847115d939449..735e98f3eecb4 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 46152edb131c2..d4054644ef4de 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-09-07 +date: 2023-09-08 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 a1154dbe07233..eb5235ebe3720 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-09-07 +date: 2023-09-08 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 a43178389241f..c7e9498868d0a 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-09-07 +date: 2023-09-08 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 83a0998492eb4..2b6ec6564ac17 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-09-07 +date: 2023-09-08 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 3e34787b32238..8b0e101713972 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-09-07 +date: 2023-09-08 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 6cea83e831c4d..9a7be0da2d344 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-09-07 +date: 2023-09-08 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 c0bdc91ad1068..c06b56857d3da 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 6438d7bef3b05..e20529504e9e4 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-09-07 +date: 2023-09-08 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 ef20ede6f25e4..61dae0d52bc07 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-09-07 +date: 2023-09-08 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 8a718916b9793..9576c3c7c47cc 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-09-07 +date: 2023-09-08 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 330942e72dbbe..2696872c9ab7d 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-09-07 +date: 2023-09-08 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 ff493b78f7abc..aa050c2e56732 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-09-07 +date: 2023-09-08 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 4c8485413c734..65009c98e3998 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-09-07 +date: 2023-09-08 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 d5c0a3a720eb4..f0057aa1f6403 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-09-07 +date: 2023-09-08 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 30a20b5b7e674..bc0ae73975ce3 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-09-07 +date: 2023-09-08 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 b0e9a7e77c16a..c21ba1c197503 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-09-07 +date: 2023-09-08 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 7917182607af9..640f71f170e9f 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-09-07 +date: 2023-09-08 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 48a2b6903a621..cb84088e44a22 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-09-07 +date: 2023-09-08 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 684cfafdde062..a9805e5088d48 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-09-07 +date: 2023-09-08 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 28fd548682a72..ffdc84a2be77e 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-09-07 +date: 2023-09-08 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 1d5d26531a4e0..1841304ecfa9b 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-09-07 +date: 2023-09-08 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 cd9270c4e0016..3405383589761 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-09-07 +date: 2023-09-08 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 adc60b1779a76..34a8f04f4c472 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-09-07 +date: 2023-09-08 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 b71ef0ac554c1..8901ff1ab8da8 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-09-07 +date: 2023-09-08 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 b36c6907e4d3e..d842542a01675 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-09-07 +date: 2023-09-08 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 bec9988648d7f..84bd7b4fb2ac1 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-09-07 +date: 2023-09-08 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 beecec6ab6ebd..749ab885e4c2d 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-09-07 +date: 2023-09-08 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 57a2672d2cf02..29360ae39f660 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-09-07 +date: 2023-09-08 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 c0a39d2139031..f7720406d1bf2 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-09-07 +date: 2023-09-08 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 e093e347f078a..152571482ac85 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-09-07 +date: 2023-09-08 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 a913d3ec82625..5b31aef812c0f 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-09-07 +date: 2023-09-08 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 5e5c4c3a30eb6..12443a3bddfcb 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-09-07 +date: 2023-09-08 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 d398222734368..adb8324d93ddb 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-09-07 +date: 2023-09-08 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 9d33c066ecc5c..4ef3a04fb1c37 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-09-07 +date: 2023-09-08 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 ed7fac9ec7961..93de39c51aa09 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-09-07 +date: 2023-09-08 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 8eb5e9a68cdda..82e20528eb252 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-09-07 +date: 2023-09-08 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 3c993497d1643..70a5e6d36e0f6 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-09-07 +date: 2023-09-08 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 bbca62b4dc64f..db55867ac0d88 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-09-07 +date: 2023-09-08 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 0ec207be992e1..4354c411cf926 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-09-07 +date: 2023-09-08 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 316b933b75372..eb06303c41100 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-09-07 +date: 2023-09-08 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 8018cf8547bc4..ca3d971195845 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-09-07 +date: 2023-09-08 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 fdf8e07447514..61853bd87aebd 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.devdocs.json b/api_docs/kbn_config_schema.devdocs.json index 4d82048910c62..aa5023e4e9fcd 100644 --- a/api_docs/kbn_config_schema.devdocs.json +++ b/api_docs/kbn_config_schema.devdocs.json @@ -1878,7 +1878,105 @@ "section": "def-common.ObjectType", "text": "ObjectType" }, - "

; oneOf: { (types: [", + "

; oneOf: { (types: [", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + "], options?: ", + "TypeOptions", + " | undefined): ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + "; (types: [", { "pluginId": "@kbn/config-schema", "scope": "common", @@ -3413,7 +3511,105 @@ "label": "oneOf", "description": [], "signature": [ - "{ (types: [", + "{ (types: [", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + ", ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + "], options?: ", + "TypeOptions", + " | undefined): ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + "; (types: [", { "pluginId": "@kbn/config-schema", "scope": "common", diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index f4abb9b1124a9..22e4c6d7e968c 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-09-07 +date: 2023-09-08 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 13f8fff01aa8d..9d4a5a5329538 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-09-07 +date: 2023-09-08 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 42a0718e80b27..f1cfb688d74cb 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-09-07 +date: 2023-09-08 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 12dcf021cdfdb..3fc90f95c25c4 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-09-07 +date: 2023-09-08 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 c9e141aa12e45..99ad7eacb4ab6 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-09-07 +date: 2023-09-08 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 e6b86ef2d6bd1..0ca92f06ea2e6 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-09-07 +date: 2023-09-08 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 0429261727cd4..855c2d3a2d470 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-09-07 +date: 2023-09-08 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 38f2eb50e7147..e02d5005a2706 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-09-07 +date: 2023-09-08 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 9eb7c9801d22c..d72b5d17c714b 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-09-07 +date: 2023-09-08 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 40fb19fef46f9..481dbeff75d8b 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-09-07 +date: 2023-09-08 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 02ebfef81b1de..d1d4c99e9fbc9 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-09-07 +date: 2023-09-08 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 8a7f32b239d75..ee268d87becf9 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-09-07 +date: 2023-09-08 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 4fb66ea9346e0..200c493802aa9 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-09-07 +date: 2023-09-08 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 78d35d01e2395..9100a7bc09077 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-09-07 +date: 2023-09-08 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 31a1869989a47..72baff86f857f 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-09-07 +date: 2023-09-08 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 0c2b8e773acba..0071f4ad7e761 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-09-07 +date: 2023-09-08 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 cd52a5c8d21ed..a27d7e55742f0 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-09-07 +date: 2023-09-08 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 2a2e1e5a29eac..5dabac7f426a4 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-09-07 +date: 2023-09-08 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 f43f1970440d5..5218078d521c2 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-09-07 +date: 2023-09-08 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 41b448e561e41..310f861dfaa49 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-09-07 +date: 2023-09-08 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 0f0a96d976497..e0478f7488fa4 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-09-07 +date: 2023-09-08 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 be9c3b18d768c..ce95be0e114e7 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-09-07 +date: 2023-09-08 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 0eb07761075eb..5bf84a3b88421 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-09-07 +date: 2023-09-08 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 f8c10e870ff89..c0cd5499fa5da 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-09-07 +date: 2023-09-08 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 bc782cdacaed5..e3657747b22be 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-09-07 +date: 2023-09-08 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 5c16e81530ba9..8d168e0906326 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-09-07 +date: 2023-09-08 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 a670c917659d4..0abc0b2258458 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-09-07 +date: 2023-09-08 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 758c4ae94685c..948aebef80793 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-09-07 +date: 2023-09-08 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 f0b481abda1ff..ccc5d573adfbc 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-09-07 +date: 2023-09-08 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 c5e4edec4e07d..593ea1034e171 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-09-07 +date: 2023-09-08 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 8941858b808d5..a93df98f96875 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-09-07 +date: 2023-09-08 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 23d9af62b888b..3e27fdb249169 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-09-07 +date: 2023-09-08 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 abb14e4955fda..39189f77795dd 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-09-07 +date: 2023-09-08 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 63ce4abadc293..9768092827418 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-09-07 +date: 2023-09-08 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 c6ff4d0234f56..ebd0b06ab43d2 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-09-07 +date: 2023-09-08 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 feebc541b30fe..f94edebbad938 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-09-07 +date: 2023-09-08 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 1e6c81e2ad47e..3670ead1fda2e 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-09-07 +date: 2023-09-08 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 f399c7d405c53..222c2abdb89e3 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-09-07 +date: 2023-09-08 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 32b96990596da..8b4f65106b364 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-09-07 +date: 2023-09-08 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 320315150ed60..653ec5b94c7bd 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-09-07 +date: 2023-09-08 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 43a9e3b142ce3..4394e0424ca70 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-09-07 +date: 2023-09-08 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 0bdef9ceb70ae..3b6468d8cd783 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-09-07 +date: 2023-09-08 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 eeba0ee03fef3..f9b7ad0e8e8ab 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-09-07 +date: 2023-09-08 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 65472f635696e..feb9f01c7761a 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-09-07 +date: 2023-09-08 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 880bc113f6547..85bd1b78da71c 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-09-07 +date: 2023-09-08 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 1592f733c594b..9464ee2e493f4 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-09-07 +date: 2023-09-08 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 b95faa4ae2615..5dd4226b66b60 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-09-07 +date: 2023-09-08 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 6eb4ce8354698..fd1a2428df995 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-09-07 +date: 2023-09-08 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 6b789d924c02e..2826aa0354906 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-09-07 +date: 2023-09-08 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 5e9ce72774d21..05762a08155e2 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-09-07 +date: 2023-09-08 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 31fc850565dd7..4d13a8d4de86b 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-09-07 +date: 2023-09-08 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 61bed730f2d6b..e19eb659072ee 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-09-07 +date: 2023-09-08 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 82641eba39397..60ac849241e1e 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-09-07 +date: 2023-09-08 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 d7d929fa71b47..4fe8316d4356e 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-09-07 +date: 2023-09-08 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 401a1d5494916..5011a2f28cfa8 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-09-07 +date: 2023-09-08 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 85e5436096ae8..2c74e7259cb8a 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-09-07 +date: 2023-09-08 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 120badd2fefbd..84332fc496461 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-09-07 +date: 2023-09-08 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 c00f808ca5b00..ec0a95450a5ec 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-09-07 +date: 2023-09-08 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 9dd22e864625e..e175e66f365db 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-09-07 +date: 2023-09-08 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 64c41920f3978..101b01486e271 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-09-07 +date: 2023-09-08 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 03bd3040e43bf..19288cba030ef 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-09-07 +date: 2023-09-08 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 77119ac2c6989..b9c14a45a136c 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-09-07 +date: 2023-09-08 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 28936ae4fc3d1..a039a1dc3bf84 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-09-07 +date: 2023-09-08 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 9426823039155..a3267c00d8347 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-09-07 +date: 2023-09-08 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 53ec6ce4d6f09..3e3824c52d9a3 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-09-07 +date: 2023-09-08 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 c5de9d0c961b2..48129ca13af5c 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-09-07 +date: 2023-09-08 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 4b663f774b0a0..63d8da93ba46b 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-09-07 +date: 2023-09-08 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 5dc2bd7736ae1..49b9419215b19 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-09-07 +date: 2023-09-08 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 4ac9685e087e0..b26a92a05635b 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-09-07 +date: 2023-09-08 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 3b96ef5c515cc..67ae74d716b4d 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-09-07 +date: 2023-09-08 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 c889eb7eb6a41..516514f140a32 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-09-07 +date: 2023-09-08 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 efcb6da5001ca..1b6a2f0ceeefd 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-09-07 +date: 2023-09-08 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 659798f138434..b8fa7f8a42f69 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-09-07 +date: 2023-09-08 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 0eef46e759984..3d6a7c95bc350 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-09-07 +date: 2023-09-08 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 836015fccff64..6a2eb40ed5800 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-09-07 +date: 2023-09-08 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 0bf60b56126fb..796deb8bd12d2 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -7979,6 +7979,10 @@ "plugin": "reporting", "path": "x-pack/plugins/reporting/server/routes/internal/deprecations/deprecations.ts" }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_create_route.ts" + }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 524c28f9f58db..f0356876f6ebd 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-09-07 +date: 2023-09-08 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 643cd4bd6ba18..78ea22a2b5c52 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-09-07 +date: 2023-09-08 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 764aa8b3aae47..a5f084f4c4807 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-09-07 +date: 2023-09-08 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 022d4442cbf8d..abbbe440d31b9 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-09-07 +date: 2023-09-08 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 0a12f1a1df1c3..5ddf3c9777b2e 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-09-07 +date: 2023-09-08 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 bd2e72eaf3fc4..dcabb76ea5591 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-09-07 +date: 2023-09-08 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 f523db576ed07..3c3104294bcf8 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-09-07 +date: 2023-09-08 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 5ec1a09ca8999..f989989436520 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-09-07 +date: 2023-09-08 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 c1b9bafa28aa7..2ce94ed031bd7 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-09-07 +date: 2023-09-08 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 71ccb29fe9ddf..b2be359b8ffdb 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-09-07 +date: 2023-09-08 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 e8be0a4b4f1ec..cfb385b109f8c 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-09-07 +date: 2023-09-08 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 dcebdea23053a..99cd41bc1d62d 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-09-07 +date: 2023-09-08 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 59a45f8aece4e..95755ec481eac 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-09-07 +date: 2023-09-08 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 74edb3f049c24..9f2bbe895dd41 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-09-07 +date: 2023-09-08 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 342e73b5af697..6e0615f55c861 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-09-07 +date: 2023-09-08 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 01540c6511f01..956e484f335f4 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-09-07 +date: 2023-09-08 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 72d2fe78fbd64..a604b946fadeb 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-09-07 +date: 2023-09-08 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 b3cd0d6261ea3..b783eee1bba20 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-09-07 +date: 2023-09-08 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 9bc280825799d..c5cff2e93f858 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-09-07 +date: 2023-09-08 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 976128777a55b..0b9351349b958 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-09-07 +date: 2023-09-08 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 15bd1e3daa32c..34fbd10ef9bae 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-09-07 +date: 2023-09-08 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 608c2393e1428..07d7a363caf8c 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-09-07 +date: 2023-09-08 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 e752441ae1949..4379582e67297 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-09-07 +date: 2023-09-08 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 0dbdea30ffa12..3d87b370b3fd0 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-09-07 +date: 2023-09-08 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 9d8a3145f4cd2..86e5358c13a3a 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-09-07 +date: 2023-09-08 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 22806f2d511e9..5cfdc2bf4c900 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-09-07 +date: 2023-09-08 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 ce5d28c7ca846..4443ac1d041a3 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-09-07 +date: 2023-09-08 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 ad9cf10185784..adab241388357 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-09-07 +date: 2023-09-08 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 4d633bda18089..13e05a8013bfe 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-09-07 +date: 2023-09-08 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 7dae166ea1775..0e3681b7696b0 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-09-07 +date: 2023-09-08 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 eefc0c018241b..73594a3464965 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-09-07 +date: 2023-09-08 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 f0d3b67178a31..36ca2945429fc 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-09-07 +date: 2023-09-08 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 f111285b6a271..4bce0b56a52d8 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-09-07 +date: 2023-09-08 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 1a7651add3a71..986c5954057b8 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-09-07 +date: 2023-09-08 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 858fb06982f28..0f1600d4ab4f8 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-09-07 +date: 2023-09-08 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 a670a25a01a9c..beb36919ffdf8 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-09-07 +date: 2023-09-08 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 05c61d3a982f3..268a5f35cf70d 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-09-07 +date: 2023-09-08 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 b15fd6bb9f401..161d4ae981f4a 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-09-07 +date: 2023-09-08 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 b197b27c39ec7..1f087597d6c7e 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-09-07 +date: 2023-09-08 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 26404256ee68f..f27897e997aaf 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-09-07 +date: 2023-09-08 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 50931621f7ac0..47951ccaed847 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-09-07 +date: 2023-09-08 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 29b2d4a33647b..7512482a16705 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-09-07 +date: 2023-09-08 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 e195fdc670ad9..1fdc697e78df0 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-09-07 +date: 2023-09-08 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 da6e8eef6b50a..d50dd24ab4566 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-09-07 +date: 2023-09-08 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 b1db124ded172..68f36d72a4f76 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-09-07 +date: 2023-09-08 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 4b838dfd9956f..c37d7d9586515 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-09-07 +date: 2023-09-08 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 550a24059762f..f3f835d242a4a 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-09-07 +date: 2023-09-08 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 dd345d20efba0..ec196f622ea2e 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-09-07 +date: 2023-09-08 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 708b1c7623188..dde1394588271 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-09-07 +date: 2023-09-08 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 69a379f3ebe61..e7e2cd91dd02d 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-09-07 +date: 2023-09-08 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 f87d40af80278..56e06aff87150 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-09-07 +date: 2023-09-08 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 2e0b7b5c57183..44590b477dc23 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-09-07 +date: 2023-09-08 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 dbd89a867c992..35b69642632df 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-09-07 +date: 2023-09-08 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 5275566b81395..7e792fc3e084d 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-09-07 +date: 2023-09-08 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 d47385b09c267..e2bafbf02e4a7 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-09-07 +date: 2023-09-08 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 99efb28372a8d..d89a199baf3e7 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index f3df3c2f82637..40ba4ffe4cc3b 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-09-07 +date: 2023-09-08 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 c131798c141f0..8a6fd132f31a2 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-09-07 +date: 2023-09-08 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.devdocs.json b/api_docs/kbn_core_saved_objects_server.devdocs.json index 1853a66e3f1b5..2af69eecce1fe 100644 --- a/api_docs/kbn_core_saved_objects_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_server.devdocs.json @@ -10515,22 +10515,6 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/saved_objects/exception_list.ts" }, - { - "plugin": "savedObjectsTagging", - "path": "x-pack/plugins/saved_objects_tagging/server/saved_objects/tag.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/server/saved_object_types/cases.ts" @@ -10551,6 +10535,22 @@ "plugin": "cases", "path": "x-pack/plugins/cases/server/saved_object_types/connector_mappings.ts" }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/server/saved_objects/tag.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 133135909fef4..085933be10c50 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-09-07 +date: 2023-09-08 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 bec256f258a92..d292f5668de3e 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-09-07 +date: 2023-09-08 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 eba8b28059383..60d6a97391a8f 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-09-07 +date: 2023-09-08 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 9784f060a9ac5..15544cba67cdb 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-09-07 +date: 2023-09-08 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 2750648ba37d1..b8bee1a38954e 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-09-07 +date: 2023-09-08 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 d938b4cfb657f..a7965c78b553c 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-09-07 +date: 2023-09-08 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 106a3c65d98e2..cc01485b8b32f 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-09-07 +date: 2023-09-08 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 4d589c377d835..7ff12c396b239 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-09-07 +date: 2023-09-08 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 1f0fd8ddeb002..0016f37f4b9db 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-09-07 +date: 2023-09-08 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 3f9359f240fb8..f88e7cf3fc25a 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-09-07 +date: 2023-09-08 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 ec2fd963cbfb0..7de852497511c 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-09-07 +date: 2023-09-08 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 c0cd3d14155f5..e043468204dc3 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 13cd5bbf4bdf7..4903c5b8cff74 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-09-07 +date: 2023-09-08 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 75600d210cfe4..46abc1816d89a 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-09-07 +date: 2023-09-08 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 5d53b7eabe9a4..14b3af1c332ae 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-09-07 +date: 2023-09-08 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 9c278f78e3ecc..d61539fb97da4 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-09-07 +date: 2023-09-08 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 0377abd92bf9b..59815be0c9364 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-09-07 +date: 2023-09-08 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 d0f610aaba4f3..5014865f74325 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-09-07 +date: 2023-09-08 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 9a76328adc2b0..7e8f393532d94 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-09-07 +date: 2023-09-08 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 829ac001c8c36..2ca5980a9f8d7 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-09-07 +date: 2023-09-08 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 36de04565782f..8d6a2e09426ab 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-09-07 +date: 2023-09-08 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 cb3b507d6007a..f70acadef78dd 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-09-07 +date: 2023-09-08 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 19c4d4684d15f..2469efec0f41f 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-09-07 +date: 2023-09-08 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 bf229537141e0..e5b5791caa1db 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-09-07 +date: 2023-09-08 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 cab49d88fd4a0..bc1bf4814be37 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-09-07 +date: 2023-09-08 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 53f3d8adffca7..544caf1fcfdec 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-09-07 +date: 2023-09-08 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 13c85d56c8ce8..00592bbbafa2d 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-09-07 +date: 2023-09-08 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 1b1f1254d9472..96dc9b825486e 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-09-07 +date: 2023-09-08 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 6237aaea079c3..2e365d6911d8b 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-09-07 +date: 2023-09-08 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 55295735c937c..a229cc2acfe9f 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-09-07 +date: 2023-09-08 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 472d1a158845c..8419e90b391da 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 7be7302f554d7..d59814ab6757d 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-09-07 +date: 2023-09-08 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 a8bd4c0efa24d..23613cdd7aee6 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-09-07 +date: 2023-09-08 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 acd983c51f130..3af4569c84a77 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-09-07 +date: 2023-09-08 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 3360915b691ce..e602fce25553f 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-09-07 +date: 2023-09-08 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 a1c579d5f0c5f..3f420fffbc4e6 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-09-07 +date: 2023-09-08 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 03d5d36dc8437..62fba60542f67 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-09-07 +date: 2023-09-08 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 4e6e47f32a38a..d7d9edc414629 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 6ccdebf8a10e2..bbd75a908c5c0 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-09-07 +date: 2023-09-08 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 d3563db00e449..6918c3932512b 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-09-07 +date: 2023-09-08 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 c1a3ccf8b5b8b..a312e575e1ea6 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-09-07 +date: 2023-09-08 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 c6b884aedd57a..1a2b7c1298ef5 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-09-07 +date: 2023-09-08 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 fe5c9fe3d51d7..41dde9d18b03a 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-09-07 +date: 2023-09-08 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 01de67e7ea159..ff27bb7f9be34 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-09-07 +date: 2023-09-08 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 5c02782eca67b..b21d133bffa6d 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-09-07 +date: 2023-09-08 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 42dac5b37d1ff..e4721b18ccf0a 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-09-07 +date: 2023-09-08 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 35d5ec3f2fabc..92a8afddeda11 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-09-07 +date: 2023-09-08 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 959e3967a1d9e..7b88610ec4d64 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-09-07 +date: 2023-09-08 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 bb59a0538e702..267732ef33f39 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-09-07 +date: 2023-09-08 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 0d071bbd36d9c..51f94f4b7c44a 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-09-07 +date: 2023-09-08 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 75ae029e5b556..e6e553327753a 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-09-07 +date: 2023-09-08 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 2fa013599dba5..62bcd6686c772 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-09-07 +date: 2023-09-08 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 ae63079191e03..d65c2ac2766df 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-09-07 +date: 2023-09-08 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 f0bb3426b3934..ea7ece235603a 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-09-07 +date: 2023-09-08 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 1e2cfe20365be..a52961733a2e8 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-09-07 +date: 2023-09-08 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 c36a4e823a86d..1880a44121010 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-09-07 +date: 2023-09-08 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 8f52eccfd3bda..15a1111af3ce3 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-09-07 +date: 2023-09-08 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 23e79b7fa49c4..3d02571c7355a 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-09-07 +date: 2023-09-08 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 bb6eb0d9fae16..26b63d9bd77f0 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-09-07 +date: 2023-09-08 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 a12e1afbbb1e9..0d71589efd79f 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-09-07 +date: 2023-09-08 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 fe7bba02a3494..ab7a2440525f9 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-09-07 +date: 2023-09-08 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 6db39ea36d3c5..c38728f98ac0c 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-09-07 +date: 2023-09-08 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 108c25f1cfdd7..13b3a66005607 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-09-07 +date: 2023-09-08 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 8bd67769c582a..8e87541ab0ea0 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-09-07 +date: 2023-09-08 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 ca81e58bb1af5..825c0801bded5 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-09-07 +date: 2023-09-08 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 3af6f0754e79d..74ca04c73badb 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-09-07 +date: 2023-09-08 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 f23051fd60553..1eb4bfa716542 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-09-07 +date: 2023-09-08 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 a8bc1c6985402..59bc0a9754c72 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-09-07 +date: 2023-09-08 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 82e7a6429a3f3..820cc3710724a 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-09-07 +date: 2023-09-08 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 1162fca64a5b8..86503bb9bff58 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-09-07 +date: 2023-09-08 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 120da3937dfd1..525bddfb895d8 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-09-07 +date: 2023-09-08 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 aece1358b05c0..1caa2e7b2bd03 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-09-07 +date: 2023-09-08 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 d42da1ac9b6be..cf1975454e96e 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-09-07 +date: 2023-09-08 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 ff591293ccc7c..9600dd46a80ca 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-09-07 +date: 2023-09-08 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 4782db52d2da2..8c39d54ddd698 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-09-07 +date: 2023-09-08 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 3d628696e8151..a3b0a2812807b 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-09-07 +date: 2023-09-08 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 9889c9e387127..aa0c49b749e2a 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-09-07 +date: 2023-09-08 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 a2a44b51da906..74cd18c9dab4c 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-09-07 +date: 2023-09-08 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 792ea12361c81..9fcc5425de1c8 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-09-07 +date: 2023-09-08 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 8c154e5a65996..d18705af1269f 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-09-07 +date: 2023-09-08 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 680add585f26f..eeea7bea92146 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-09-07 +date: 2023-09-08 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 5b3971882ab29..3035a337946ef 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-09-07 +date: 2023-09-08 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 7b396ff913a2b..c01768df43c45 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-09-07 +date: 2023-09-08 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 7202252e9393a..7af1037d76619 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-09-07 +date: 2023-09-08 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 36ef37997795c..583672426f870 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-09-07 +date: 2023-09-08 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 339c80744f619..4efc45e105d70 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-09-07 +date: 2023-09-08 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 5fa3bd4e5e506..581b14bee0ffe 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-09-07 +date: 2023-09-08 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 0f6e3aec16de0..0711d461174fb 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-09-07 +date: 2023-09-08 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 6116165a21bd9..84c6d415da610 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-09-07 +date: 2023-09-08 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 1d59503d9f393..26cb9ab606a5f 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-09-07 +date: 2023-09-08 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 ac511da994117..6baf076ca4f02 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-09-07 +date: 2023-09-08 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 e76082e81b202..6c0dd6dd3dabb 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-09-07 +date: 2023-09-08 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 97d0708ae2a7a..5285f1d65f197 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-09-07 +date: 2023-09-08 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 d6907d2e9fc8c..4bdb2d0e46815 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-09-07 +date: 2023-09-08 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_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 8b23313328ee4..bd9929305278c 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-09-07 +date: 2023-09-08 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_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 72b228342e885..b629de5b97080 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-09-07 +date: 2023-09-08 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 dbc5be6ef424c..1ca426fde6739 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-09-07 +date: 2023-09-08 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 c2574bad2e432..df57b8003d0b3 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index c8b57cc3f3bfb..613afe8855559 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index ce984d4b3120d..cb10341c2b494 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-09-07 +date: 2023-09-08 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 8146777b310b2..2dcb8b11942f8 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-09-07 +date: 2023-09-08 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 604927e8dbd9c..ce3c64a75e683 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-09-07 +date: 2023-09-08 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 03caad0f02ba5..ac4518ffac189 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-09-07 +date: 2023-09-08 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 73bd16f3701cf..6572f79406269 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-09-07 +date: 2023-09-08 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 a0b567255525e..cd155fe3c758d 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-09-07 +date: 2023-09-08 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 6f4b7bd3cb5b5..f0fb0f130d9e2 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-09-07 +date: 2023-09-08 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 930d7663cb1cc..3102c95267cab 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-09-07 +date: 2023-09-08 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 e1825452ebb7f..afc7be8e651af 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-09-07 +date: 2023-09-08 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 229f03a58354c..e45308f78effd 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-09-07 +date: 2023-09-08 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 d12c0806de6fa..3b6c5571fca02 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-09-07 +date: 2023-09-08 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 714909028c707..ab568fd385037 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-09-07 +date: 2023-09-08 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 8fe3474c520a6..d1f17b743099b 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-09-07 +date: 2023-09-08 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 576c11e40ad1f..3efdc587a1703 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-09-07 +date: 2023-09-08 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 f0b94d49a4b2e..e28a3952caeb7 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-09-07 +date: 2023-09-08 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 392deee9de3f4..a7ba7e8b9efe0 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-09-07 +date: 2023-09-08 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 5a30d92ce4d9b..3075b65c8ecac 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-09-07 +date: 2023-09-08 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 fe3ff65084fc1..5a099b020bbab 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-09-07 +date: 2023-09-08 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 a81620195387e..37a1c35cd4c2c 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-09-07 +date: 2023-09-08 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 0bbd1cd4a77d2..01e326ca4f865 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-09-07 +date: 2023-09-08 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 94922e02f7ef0..260bb193ea3c4 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-09-07 +date: 2023-09-08 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 794637307304a..aac09909f4ae0 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-09-07 +date: 2023-09-08 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 5c6edcf7172a7..adf5bb4ba1fb3 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-09-07 +date: 2023-09-08 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 1149b68db08dc..640b1fa43af2f 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 9e39f61cf08d2..98e82243327c3 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-09-07 +date: 2023-09-08 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 d23c1201e1dab..5b892ff847f33 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-09-07 +date: 2023-09-08 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 c3b10b12bd441..e718baf04fa02 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-09-07 +date: 2023-09-08 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 297ee6b1be457..7264c3e306935 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-09-07 +date: 2023-09-08 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 0366d99d9d01a..c7a3fb0e6d5f3 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-09-07 +date: 2023-09-08 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 db50c36d6229d..e4ed56f60eb33 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 28307f12d2b28..be2b9a97528fa 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-09-07 +date: 2023-09-08 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 33929a9dcb507..94db9b37450a3 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-09-07 +date: 2023-09-08 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 12d7b57a58a47..0f2ba928ee271 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-09-07 +date: 2023-09-08 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 6ae5aba2b9198..045d4a05ebc26 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-09-07 +date: 2023-09-08 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 86b945b8a405b..21d296e3f8871 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-09-07 +date: 2023-09-08 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 5b581a974e3a0..75fcecca678cb 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-09-07 +date: 2023-09-08 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 0c30be0bfbc4c..ec5edbf23d91e 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-09-07 +date: 2023-09-08 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 2be6f38cd0b97..bdd0c759f222b 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-09-07 +date: 2023-09-08 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 3a37cab5f1feb..5a0f8e881f6aa 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-09-07 +date: 2023-09-08 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 70f8d20ec93ae..bce772f950a9d 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-09-07 +date: 2023-09-08 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 06fe9b2a0f09e..f565a5d9dd655 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-09-07 +date: 2023-09-08 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 eaadfa9c72e24..64d936997d9dd 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-09-07 +date: 2023-09-08 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 bdd17b320a8e1..cfa4ec1a0a4f9 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index ecd2224a41e23..001f81b523080 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-09-07 +date: 2023-09-08 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 05bf37913bfb8..9d3ceb3f5b8b9 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-09-07 +date: 2023-09-08 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 59eac05339b19..38d81b1eb3f77 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-09-07 +date: 2023-09-08 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 4089b880106f6..f63bd19649362 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-09-07 +date: 2023-09-08 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.devdocs.json b/api_docs/kbn_search_api_panels.devdocs.json index e493e1db46fd8..d2169d84164c5 100644 --- a/api_docs/kbn_search_api_panels.devdocs.json +++ b/api_docs/kbn_search_api_panels.devdocs.json @@ -526,7 +526,7 @@ "label": "WelcomeBanner", "description": [], "signature": [ - "({ userProfile, assetBasePath, image, showDescription, }: React.PropsWithChildren<", + "({ user, assetBasePath, image, showDescription, }: React.PropsWithChildren<", { "pluginId": "@kbn/search-api-panels", "scope": "common", @@ -545,7 +545,7 @@ "id": "def-common.WelcomeBanner.$1", "type": "CompoundType", "tags": [], - "label": "{\n userProfile,\n assetBasePath,\n image,\n showDescription = true,\n}", + "label": "{\n user,\n assetBasePath,\n image,\n showDescription = true,\n}", "description": [], "signature": [ "React.PropsWithChildren<", @@ -1149,13 +1149,20 @@ "children": [ { "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.WelcomeBannerProps.userProfile", + "id": "def-common.WelcomeBannerProps.user", "type": "Object", "tags": [], - "label": "userProfile", + "label": "user", "description": [], "signature": [ - "{ user: { full_name?: string | undefined; username?: string | undefined; }; }" + { + "pluginId": "security", + "scope": "common", + "docId": "kibSecurityPluginApi", + "section": "def-common.AuthenticatedUser", + "text": "AuthenticatedUser" + }, + " | undefined" ], "path": "packages/kbn-search-api-panels/index.tsx", "deprecated": false, diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index fef62ef1d6f2f..2de372d2b4595 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-09-07 +date: 2023-09-08 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.mdx b/api_docs/kbn_search_connectors.mdx index 4890a772ccf2b..8bad8381c2233 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 2033ae03e8042..bf28678b4f23b 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-09-07 +date: 2023-09-08 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 2997ced54d756..7019fff836806 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-09-07 +date: 2023-09-08 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 58ae7b3192bb9..c4d1064b2dc86 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-09-07 +date: 2023-09-08 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 ac0456fb4605f..646f3f12a38cd 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-09-07 +date: 2023-09-08 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 b9b2beb5b8922..823cd657eb63b 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-09-07 +date: 2023-09-08 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 8a680f4990f0b..1f4eac047be1e 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-09-07 +date: 2023-09-08 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 a94d5b0a66478..df7aea4a5fde4 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-09-07 +date: 2023-09-08 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 df9860416e9e7..e5f0a3c344281 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-09-07 +date: 2023-09-08 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 9bc2a09b2c584..96f723b0c0c01 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-09-07 +date: 2023-09-08 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 23eb702e4b133..abcbf295a7955 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-09-07 +date: 2023-09-08 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 e899a50967092..52caed30acc04 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-09-07 +date: 2023-09-08 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 2d80d442c224f..6c7dbc12a40f6 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-09-07 +date: 2023-09-08 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 9ba791d98cb92..62a178f12a3f0 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-09-07 +date: 2023-09-08 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 55b130a716ecb..3bc840d7eedcd 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-09-07 +date: 2023-09-08 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 7da2c80b5e2c8..3a1542e72162d 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-09-07 +date: 2023-09-08 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 b4867b8d8038e..00fec9a131570 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-09-07 +date: 2023-09-08 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 ea1d190889a5a..92551aacca7a3 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-09-07 +date: 2023-09-08 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 179bde08dacab..0e5a3cf35b19f 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-09-07 +date: 2023-09-08 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 8ecd26e5090f7..dedd674fdd873 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-09-07 +date: 2023-09-08 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 34f16182953d9..4b52381bd4a11 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-09-07 +date: 2023-09-08 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 945ad028a13fc..e80a4f7ff6b2e 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-09-07 +date: 2023-09-08 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 184454e347255..c5a6bc389a207 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-09-07 +date: 2023-09-08 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 b99d6c8625d05..00ca9d842f924 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-09-07 +date: 2023-09-08 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 04248bbb3a89a..62c8ca4a596fb 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-09-07 +date: 2023-09-08 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 19caf9de588ab..7d11309c453da 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 67e1ba7f000b3..e397c924a291b 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index a6e103c9db23d..b9dd1969cbdd5 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-09-07 +date: 2023-09-08 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 d66c53efc2896..475efd731a720 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-09-07 +date: 2023-09-08 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 607215f3a3795..61bfd36cf5444 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-09-07 +date: 2023-09-08 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 11a87e549e02f..4d2915cbc89fa 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-09-07 +date: 2023-09-08 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 2d8f7b57050fb..d6e995300a288 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-09-07 +date: 2023-09-08 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 71afff3c16311..72430e134bb43 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-09-07 +date: 2023-09-08 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 11a327f867780..802da92334e7a 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-09-07 +date: 2023-09-08 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 a131b00d7037c..27524f3ba3722 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-09-07 +date: 2023-09-08 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 e6d1d8d6cfebe..dd9b219ccd73f 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-09-07 +date: 2023-09-08 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 2bddc8d071f2c..78fc7e6f55cfb 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-09-07 +date: 2023-09-08 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 1fe09d51dde94..ecf604de7092b 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-09-07 +date: 2023-09-08 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 0aebbbeaf1483..446043b3ea4ff 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-09-07 +date: 2023-09-08 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 37e9757141b66..9957ffe614443 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-09-07 +date: 2023-09-08 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 226b7d9d5bf96..0dcadb784c622 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-09-07 +date: 2023-09-08 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 c71cde909ac68..3f8529272fa51 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-09-07 +date: 2023-09-08 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 98c7f15bb0994..4493ee8488fb3 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-09-07 +date: 2023-09-08 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 78e2cf9c7f7b4..502f65c32a1a3 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-09-07 +date: 2023-09-08 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 7a85f2d5486d1..927aba1979274 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-09-07 +date: 2023-09-08 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 ec4c9b5816192..f5dd2e9ebd035 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-09-07 +date: 2023-09-08 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 df8b4f1f1aec0..ae73b81d0dea6 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-09-07 +date: 2023-09-08 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 bb88ada3f8567..94082d9c30a24 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-09-07 +date: 2023-09-08 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 db3ffa26ad7a9..898842b15b5f0 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-09-07 +date: 2023-09-08 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 7dcc6c375e929..9e4d6a188b6b5 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-09-07 +date: 2023-09-08 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 160fb9bbe0c00..d624dace866a5 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-09-07 +date: 2023-09-08 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 b70e59cc750b0..6f04104be0f31 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-09-07 +date: 2023-09-08 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 91c11e282894d..23aaffa6a7c40 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-09-07 +date: 2023-09-08 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 75fd7771c4089..a773ee61ed0ce 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-09-07 +date: 2023-09-08 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 98ecc523d6e00..e9e19630758ad 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-09-07 +date: 2023-09-08 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 50fdd48412e87..cd01372e32cc4 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-09-07 +date: 2023-09-08 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 ae54321f280b6..d0a6a0cc1ebbd 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-09-07 +date: 2023-09-08 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 3f885ae4a6ae5..c512c71fde930 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-09-07 +date: 2023-09-08 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 eab5f66ef4f26..780f549fac678 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-09-07 +date: 2023-09-08 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 fb729f83c61f5..d28759bd6d1f2 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-09-07 +date: 2023-09-08 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 50702f90b9584..a8b4a07595c06 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-09-07 +date: 2023-09-08 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 b329f8ffc200b..d293cfe6431bf 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-09-07 +date: 2023-09-08 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 35eae4c7b2385..3fec089bdf793 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-09-07 +date: 2023-09-08 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 3a19fb8452525..144c99678ede5 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-09-07 +date: 2023-09-08 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 cca3e5fac1d82..214a70c0e6113 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-09-07 +date: 2023-09-08 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 8cc1caef1c9ca..77ab39655789c 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-09-07 +date: 2023-09-08 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 b0265f06902dc..2f390b9a0a34a 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-09-07 +date: 2023-09-08 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 741413373b3a1..8c74f092513e6 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-09-07 +date: 2023-09-08 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 85e5b09ee7902..82c0eafcfb495 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-09-07 +date: 2023-09-08 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 14e14d8f992ac..e07a6f1a37690 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-09-07 +date: 2023-09-08 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 9ce936ff20a1c..44aea43b0ccb9 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-09-07 +date: 2023-09-08 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 91e4a31fa075d..93f47be252054 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-09-07 +date: 2023-09-08 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 7dde4b582a377..3cbba13b8bbb4 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 3680cf1302754..55c67fbdec2ba 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 585243f0d11c1..36fa47f98cf8b 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-09-07 +date: 2023-09-08 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 805a6732235fe..b8be9ac84864b 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-09-07 +date: 2023-09-08 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 8bf5969c3008f..5ec024b155baa 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-09-07 +date: 2023-09-08 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 cc19ee9893681..b422548328b6a 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-09-07 +date: 2023-09-08 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 4fe3ac6b07284..b0537618c323d 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-09-07 +date: 2023-09-08 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 e631bb711c2b4..c84a7a8ed3d67 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-09-07 +date: 2023-09-08 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 e76a497196857..65b49d400b582 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-09-07 +date: 2023-09-08 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 1e814fa3d4ccb..35c794c5a8fe8 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-09-07 +date: 2023-09-08 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 7475de30bd9a4..c4088aa99fdd6 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-09-07 +date: 2023-09-08 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 a340d88f5ab70..939de1797681f 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-09-07 +date: 2023-09-08 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 9c5f77d82201a..048a4f2d9ee12 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-09-07 +date: 2023-09-08 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 b5e82b583d0a5..2ef06c3636786 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-09-07 +date: 2023-09-08 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 86a83b3189fa3..7a5de4487cb2f 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-09-07 +date: 2023-09-08 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 e9de9d3448bd9..1a6d7ff9927e0 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-09-07 +date: 2023-09-08 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 911acbe78fe8e..630d143c954a9 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-09-07 +date: 2023-09-08 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 d5860fd8ef363..b344b0debe42e 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-09-07 +date: 2023-09-08 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 a6eb09c191601..010a490f21186 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-09-07 +date: 2023-09-08 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 92d19d7f82165..726f64fbae4e6 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-09-07 +date: 2023-09-08 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 de435a2a3f42d..622e6b2ed0ac3 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index ff4e0362e5c2f..af22b74387b39 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 61f47c1340f8e..bed6508d4b2de 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-09-07 +date: 2023-09-08 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 f23c052887c30..82fa92364dccb 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-09-07 +date: 2023-09-08 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 a02e9c966bd3f..6a6ee577def49 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-09-07 +date: 2023-09-08 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 089c0f88b0487..055439dfb1e41 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-09-07 +date: 2023-09-08 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 cdded5acc1f4a..0ffe4e969ad5d 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-09-07 +date: 2023-09-08 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 3d4f2f53cdf82..f2f0d10d99577 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-09-07 +date: 2023-09-08 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 1467a74be91f5..c36050d51922b 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-09-07 +date: 2023-09-08 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 7a2a4066dc7f1..185859ab2a35e 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-09-07 +date: 2023-09-08 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 4f2041faab978..941dcc45d7c68 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 8c3bfdf453293..dd678def074d4 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-09-07 +date: 2023-09-08 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 53fc15ca48c27..ad6d9e7276a15 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-09-07 +date: 2023-09-08 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 a779eee95cf76..ad2c3e2a63aba 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-09-07 +date: 2023-09-08 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 ff53cebb7446e..43e37757a6c9d 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-09-07 +date: 2023-09-08 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 74cb03b613496..5c4deefc68f38 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-09-07 +date: 2023-09-08 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 08827ca30d2ca..843b37b1d0440 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 26deedf1a2c27..33d72757a8395 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-09-07 +date: 2023-09-08 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 5e4fe4811231e..bc80ed07e10fd 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-09-07 +date: 2023-09-08 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 526a8a4d208f5..4e8b72a8b72ec 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-09-07 +date: 2023-09-08 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 c4885f84f8754..80a3f99e8d7ee 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-09-07 +date: 2023-09-08 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 80aefab0158ae..de4865b1d3456 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-09-07 +date: 2023-09-08 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 f0890c2fb929c..1b99a1a684e71 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-09-07 +date: 2023-09-08 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 7fd3f2f04b970..a4583a80124b2 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-09-07 +date: 2023-09-08 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 2e699cd41db69..673f211cda9ef 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-09-07 +date: 2023-09-08 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 1a6935b28c09d..99e85e15499a2 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 1a972e940c327..dd7862b1ad8ce 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-09-07 +date: 2023-09-08 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 5b33b822640a7..73ff4052f0f60 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-09-07 +date: 2023-09-08 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 bcc6a923564fc..38c04192172b6 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.devdocs.json b/api_docs/painless_lab.devdocs.json new file mode 100644 index 0000000000000..04e37e95b5801 --- /dev/null +++ b/api_docs/painless_lab.devdocs.json @@ -0,0 +1,74 @@ +{ + "id": "painlessLab", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "painlessLab", + "id": "def-server.ConfigType", + "type": "Type", + "tags": [], + "label": "ConfigType", + "description": [], + "signature": [ + "{ readonly enabled: boolean; }" + ], + "path": "x-pack/plugins/painless_lab/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "painlessLab", + "id": "def-server.configSchema", + "type": "Object", + "tags": [], + "label": "configSchema", + "description": [], + "signature": [ + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.ObjectType", + "text": "ObjectType" + }, + "<{ enabled: ", + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.ConditionalType", + "text": "ConditionalType" + }, + "; }>" + ], + "path": "x-pack/plugins/painless_lab/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx new file mode 100644 index 0000000000000..988d81adfab7b --- /dev/null +++ b/api_docs/painless_lab.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibPainlessLabPluginApi +slug: /kibana-dev-docs/api/painlessLab +title: "painlessLab" +image: https://source.unsplash.com/400x175/?github +description: API docs for the painlessLab plugin +date: 2023-09-08 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] +--- +import painlessLabObj from './painless_lab.devdocs.json'; + + + +Contact [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Server + +### Objects + + +### Consts, variables and types + + diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 601b0717c3f74..5d1dfe8b2d0b1 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,19 +15,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 675 | 565 | 39 | +| 675 | 566 | 39 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 74237 | 223 | 63613 | 1514 | +| 74239 | 223 | 63615 | 1515 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 269 | 0 | 263 | 30 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 269 | 0 | 263 | 31 | | | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 17 | 1 | 15 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 61 | 1 | 3 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 793 | 1 | 762 | 49 | @@ -141,7 +141,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 15 | 0 | 15 | 0 | | | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 277 | 1 | 276 | 11 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 | -| painlessLab | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | +| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 218 | 2 | 164 | 11 | | | [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) | - | 17 | 1 | 17 | 3 | | | [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) | - | 3 | 0 | 3 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 16a416fe95a0c..440d6a35f47a9 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-09-07 +date: 2023-09-08 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 4c09c95a11123..9153db2179991 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-09-07 +date: 2023-09-08 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 1ccc2e1dc89b2..abfa3f2256fdc 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-09-07 +date: 2023-09-08 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 30d66270e0f25..9912ee09f1b6c 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-09-07 +date: 2023-09-08 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 9d5429e4f0cc8..7260df76aaf24 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-09-07 +date: 2023-09-08 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 c2164a4c7b2a8..109aab02b4460 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-09-07 +date: 2023-09-08 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 3994c58af98d1..65913eafd985c 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-09-07 +date: 2023-09-08 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 72cdac752a0ab..0ec41f127bc43 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-09-07 +date: 2023-09-08 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 7a1a25144c4ae..bdb739bff786d 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-09-07 +date: 2023-09-08 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 1f6f5d6d1e8c0..abab89329687e 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-09-07 +date: 2023-09-08 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 cc94325ec9d17..fc6efb8b93154 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-09-07 +date: 2023-09-08 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 fb28755b08537..f67f2441029af 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-09-07 +date: 2023-09-08 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 654ca0587b344..51663467ef133 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-09-07 +date: 2023-09-08 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 c1574b3c61484..b99575ee33c3b 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-09-07 +date: 2023-09-08 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 a13064c6d697b..240577805446e 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-09-07 +date: 2023-09-08 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 e7f92d35e12df..a95e21ddae58d 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-09-07 +date: 2023-09-08 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 126b3540d26b1..03fd746234c6d 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 724950bb76780..a1bc669b94bac 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index ae5ec268adc66..bdf1d4c542bc9 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-09-07 +date: 2023-09-08 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 5890f292cc729..88a4eb9913d27 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-09-07 +date: 2023-09-08 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 69edfddb92c9c..3e097cfc8b1fe 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-09-07 +date: 2023-09-08 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 4a60d7a40d80b..5c5066d92bd6c 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-09-07 +date: 2023-09-08 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 52b0acbca2d7d..58c1e5c5967ad 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-09-07 +date: 2023-09-08 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 15b76c5900c7f..e845460cc0b3c 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-09-07 +date: 2023-09-08 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 fb2ebe3684514..f04ded318e8b4 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-09-07 +date: 2023-09-08 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 72e3abd02f71e..8a51e91c48b48 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-09-07 +date: 2023-09-08 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 6291d81c088dc..0f87d24eaffc5 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-09-07 +date: 2023-09-08 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 3bb6e595759fa..77c77a5cc8866 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-09-07 +date: 2023-09-08 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 978518d32b6ab..109ddb4373ed2 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-09-07 +date: 2023-09-08 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 b3099ef691554..faf5ccaa001f7 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-09-07 +date: 2023-09-08 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 571324c507106..cb3600310e57c 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-09-07 +date: 2023-09-08 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 aac2fd84e008f..a258b079360b6 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-09-07 +date: 2023-09-08 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 151314589e927..1474f0cbc9c54 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-09-07 +date: 2023-09-08 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 4a8cb8faf0ddb..bfe621313fbe2 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-09-07 +date: 2023-09-08 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 22fa5b6d057fa..2c69aa13be21e 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-09-07 +date: 2023-09-08 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 6792e6ec46689..4356437d44b58 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-09-07 +date: 2023-09-08 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 530e39980d924..7fb6e77b8b58a 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-09-07 +date: 2023-09-08 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 6a6ef352a13ec..05ce78d0fc72d 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-09-07 +date: 2023-09-08 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 741601a65849f..ecac7993727d0 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-09-07 +date: 2023-09-08 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 ebf9028f06bd8..7c91194264494 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-09-07 +date: 2023-09-08 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 516841763eebc..c70ad78e55c9c 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-09-07 +date: 2023-09-08 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 5e1ea6412f623..c0053cf6566cd 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-09-07 +date: 2023-09-08 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 e29640f3d3fbe..06ab25a2682ca 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-09-07 +date: 2023-09-08 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 86dca02ec7532..277496e0f06fc 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-09-07 +date: 2023-09-08 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 5288a252a44d8..9e3948302acf1 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-09-07 +date: 2023-09-08 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 a4dc702fb6513..77d962dad1765 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-09-07 +date: 2023-09-08 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 752db77b2d6d4..737d328cd6a31 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-09-07 +date: 2023-09-08 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 d59abda8c04b5..224c6df3968dd 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-09-07 +date: 2023-09-08 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 a3f548d5ae17b..7e72205528a8f 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-09-07 +date: 2023-09-08 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 7d9a359462643..817a0aba40550 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-09-07 +date: 2023-09-08 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 1ee895ade0085..aa5f31854a9af 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-09-07 +date: 2023-09-08 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 68ce0ccb0961a..895510784daaa 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-09-07 +date: 2023-09-08 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 f03a7f6090b78..58dabba1c3302 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-09-07 +date: 2023-09-08 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 e505f494d03be..703f2fe02c462 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-09-07 +date: 2023-09-08 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 707e0447510b1..72e62f5a1542e 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-09-07 +date: 2023-09-08 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 9252d5c19361f..9a31d12b1fd7b 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-09-07 +date: 2023-09-08 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 ea2135ba522b0..e38a2de9610a5 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-09-07 +date: 2023-09-08 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 4ce8acc6e097f..e06939c91f044 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-09-07 +date: 2023-09-08 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 9a5133b7a1df2..6eebe21d02876 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-09-07 +date: 2023-09-08 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 e6559f6bda4a3..05a0acef1ca7f 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-09-07 +date: 2023-09-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/config/serverless.es.yml b/config/serverless.es.yml index ed56156858a45..896251c0f7bcd 100644 --- a/config/serverless.es.yml +++ b/config/serverless.es.yml @@ -31,3 +31,7 @@ xpack.actions.enabledActionTypes: ['.email', '.index', '.slack', '.jira', '.webh # Customize empty page state for analytics apps no_data_page.analyticsNoDataPageFlavor: 'serverless_search' + +# Disable Dev tools +xpack.grokdebugger.enabled: false +xpack.painless_lab.enabled: false diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml index 9e41408f9600b..ce93c4bed937e 100644 --- a/config/serverless.oblt.yml +++ b/config/serverless.oblt.yml @@ -3,6 +3,7 @@ ## Disable plugins enterpriseSearch.enabled: false xpack.cloudSecurityPosture.enabled: false +xpack.infra.enabled: false xpack.securitySolution.enabled: false xpack.uptime.enabled: false xpack.legacy_uptime.enabled: false diff --git a/config/serverless.security.yml b/config/serverless.security.yml index bd92af2ecb7c4..a17b2592f0db1 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -3,6 +3,7 @@ ## Disable plugins enterpriseSearch.enabled: false xpack.apm.enabled: false +xpack.infra.enabled: false xpack.observability.enabled: false xpack.uptime.enabled: false xpack.legacy_uptime.enabled: false diff --git a/docs/setup/docker.asciidoc b/docs/setup/docker.asciidoc index f8ad122d7e865..4dcd80d1bfd66 100644 --- a/docs/setup/docker.asciidoc +++ b/docs/setup/docker.asciidoc @@ -4,10 +4,10 @@ Install with Docker ++++ -:docker-repo: docker.elastic.co/kibana/kibana -:docker-image: {docker-repo}:{version} -:es-docker-repo: docker.elastic.co/elasticsearch/elasticsearch -:es-docker-image: {es-docker-repo}:{version} +:kib-docker-repo: docker.elastic.co/kibana/kibana +:kib-docker-image: {kib-docker-repo}:{version} +:es-docker-repo: docker.elastic.co/elasticsearch/elasticsearch +:es-docker-image: {es-docker-repo}:{version} Docker images for {kib} are available from the Elastic Docker registry. The base image is https://hub.docker.com/_/ubuntu[ubuntu:20.04]. @@ -21,166 +21,153 @@ These images contain both free and subscription features. [discrete] [[run-kibana-on-docker-for-dev]] -=== Run {kib} on Docker for development +=== Run {kib} in Docker for development -. Start an {es} container for development or testing: -+ --- -ifeval::["{release-state}"=="unreleased"] - -NOTE: No Docker images are currently available for {kib} {version}. +Use Docker commands to run {kib} on a single-node {es} cluster for development or +testing. -endif::[] +TIP: This setup doesn't run multiple {es} nodes by default. To create a +multi-node cluster with {kib}, use Docker Compose instead. Refer to +{ref}/docker.html#docker-compose-file[Start a multi-node cluster with Docker +Compose] in the {es} documentation. -ifeval::["{release-state}"!="unreleased"] +. Install Docker. Visit https://docs.docker.com/get-docker/[Get Docker] to +install Docker for your environment. ++ +IMPORTANT: If using Docker Desktop, make sure to allocate at least 4GB of +memory. You can adjust memory usage in Docker Desktop by going to **Settings > +Resources**. -.. Create a new Docker network for {es} and {kib}: +. Create a new Docker network for {es} and {kib}. + [source,sh,subs="attributes"] ---- docker network create elastic ---- -.. Pull the {es} Docker image: +. Pull the {es} Docker image. + +-- +ifeval::["{release-state}"=="unreleased"] +WARNING: Version {version} has not yet been released. +No Docker image is currently available for {es} {version}. +endif::[] + [source,sh,subs="attributes"] ---- docker pull {es-docker-image} ---- +-- -.. Optional: Verify the {es} Docker image signature:: +. Optional: Install +https://docs.sigstore.dev/system_config/installation/[Cosign] for your +environment. Then use Cosign to verify the {es} image's signature. + [source,sh,subs="attributes"] ---- wget https://artifacts.elastic.co/cosign.pub -cosign verify --key cosign.pub {docker-repo}:{version} +cosign verify --key cosign.pub {es-docker-image} ---- + -For details about this step, refer to {ref}/docker.html#docker-verify-signature[Verify the {es} Docker image signature] in the {es} documentation. +The `cosign` command prints the check results and the signature payload in JSON format: ++ +[source,sh,subs="attributes"] +-------------------------------------------- +Verification for {es-docker-image} -- +The following checks were performed on each of these signatures: + - The cosign claims were validated + - Existence of the claims in the transparency log was verified offline + - The signatures were verified against the specified public key +-------------------------------------------- -.. Start {es} in Docker: +. Start an {es} container. + [source,sh,subs="attributes"] ---- -docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t {es-docker-image} +docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB {es-docker-image} ---- - - - -endif::[] - --- -+ -When you start {es} for the first time, the following security configuration -occurs automatically: + -* {ref}/configuring-stack-security.html#stack-security-certificates[Certificates and keys] -are generated for the transport and HTTP layers. -* The Transport Layer Security (TLS) configuration settings are written to -`elasticsearch.yml`. -* A password is generated for the `elastic` user. -* An enrollment token is generated for {kib}. +TIP: Use the `-m` flag to set a memory limit for the container. This removes the +need to {ref}/docker.html#docker-set-heap-size[manually set the JVM size]. + -NOTE: You might need to scroll back a bit in the terminal to view the password -and enrollment token. +The command prints the `elastic` user password and an enrollment token for {kib}. -. Copy the generated password and enrollment token and save them in a secure -location. These values are shown only when you start {es} for the first time. -You'll use these to enroll {kib} with your {es} cluster and log in. - -. In a new terminal session, start {kib} and connect it to your {es} container: +. Copy the generated `elastic` password and enrollment token. These credentials +are only shown when you start {es} for the first time. You can regenerate the +credentials using the following commands. + --- -ifeval::["{release-state}"=="unreleased"] - -NOTE: No Docker images are currently available for {kib} {version}. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - [source,sh,subs="attributes"] ---- -docker pull {docker-image} -docker run --name kib-01 --net elastic -p 5601:5601 {docker-image} +docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic +docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana ---- -.. Pull the {kib} Docker image: +. Pull the {kib} Docker image. + +-- +ifeval::["{release-state}"=="unreleased"] +WARNING: Version {version} has not yet been released. +No Docker image is currently available for {kib} {version}. +endif::[] + [source,sh,subs="attributes"] ---- -docker pull {docker-image} +docker pull {kib-docker-image} ---- +-- -.. Optional: Verify the {kib} Docker image signature:: +. Optional: Verify the {kib} image's signature. + [source,sh,subs="attributes"] ---- wget https://artifacts.elastic.co/cosign.pub -cosign verify --key cosign.pub {docker-repo}:{version} +cosign verify --key cosign.pub {kib-docker-image} ---- -+ -For details about this step, refer to {ref}/docker.html#docker-verify-signature[Verify the {es} Docker image signature] in the {es} documentation. -.. Start {kib} in Docker: +. Start a {kib} container. + [source,sh,subs="attributes"] ---- -docker run --name kib-01 --net elastic -p 5601:5601 {docker-image} +docker run --name kib01 --net elastic -p 5601:5601 {kib-docker-image} ---- +. When {kib} starts, it outputs a unique generated link to the terminal. To +access {kib}, open this link in a web browser. - - - -endif::[] --- +. In your browser, enter the enrollment token that was generated when you started {es}. ++ +To regenerate the token, run: + -When you start {kib}, a unique link is output to your terminal. - -. To access {kib}, click the generated link in your terminal. - - .. In your browser, paste the enrollment token that you copied when starting - {es} and click the button to connect your {kib} instance with {es}. - - .. Log in to {kib} as the `elastic` user with the password that was generated - when you started {es}. - -[[docker-generate]] -[discrete] -=== Generate passwords and enrollment tokens -If you need to reset the password for the `elastic` user or other -built-in users, run the {ref}/reset-password.html[`elasticsearch-reset-password`] -tool. This tool is available in the {es} `bin` directory of the Docker container. - -For example, to reset the password for the `elastic` user: - [source,sh] ---- -docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic +docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana ---- -If you need to generate new enrollment tokens for {kib} or {es} nodes, run the -{ref}/create-enrollment-token.html[`elasticsearch-create-enrollment-token`] tool. -This tool is available in the {es} `bin` directory of the Docker container. - -For example, to generate a new enrollment token for {kib}: - +. Log in to {kib} as the `elastic` user with the password that was generated +when you started {es}. ++ +To regenerate the password, run: ++ [source,sh] ---- -docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana +docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic ---- [discrete] -=== Remove Docker containers +==== Remove Docker containers To remove the containers and their network, run: -[source,sh] +[source,sh,subs="attributes"] ---- +# Remove the Elastic network docker network rm elastic -docker rm es-node01 -docker rm kib-01 + +# Remove the {es} container +docker rm es01 + +# Remove the {kib} container +docker rm kib01 ---- [discrete] @@ -204,7 +191,7 @@ With `docker-compose`, the bind-mount can be specified like this: version: '2' services: kibana: - image: {docker-image} + image: {kib-docker-image} volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml -------------------------------------------- @@ -215,8 +202,8 @@ By default, {kib} auto-generates a keystore file for secure settings at startup. ["source","sh",subs="attributes"] ---- -docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data {docker-image} bin/kibana-keystore create -docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data {docker-image} bin/kibana-keystore add test_keystore_setting +docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data {kib-docker-image} bin/kibana-keystore create +docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data {kib-docker-image} bin/kibana-keystore add test_keystore_setting ---- [discrete] @@ -254,7 +241,7 @@ These variables can be set with +docker-compose+ like this: version: '2' services: kibana: - image: {docker-image} + image: {kib-docker-image} environment: SERVER_NAME: kibana.example.org ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]' diff --git a/docs/user/alerting/create-and-manage-rules.asciidoc b/docs/user/alerting/create-and-manage-rules.asciidoc index 31c43346ef308..aa72b65944462 100644 --- a/docs/user/alerting/create-and-manage-rules.asciidoc +++ b/docs/user/alerting/create-and-manage-rules.asciidoc @@ -1,4 +1,3 @@ -[role="xpack"] [[create-and-manage-rules]] == Create and manage rules :frontmatter-description: Set up alerting in the {kib} {stack-manage-app} app and manage your rules. @@ -52,10 +51,11 @@ For more details, refer to the https://registry.terraform.io/providers/elastic/e Depending on the {kib} app and context, you might be prompted to choose the type of rule to create. Some apps will preselect the type of rule for you. -Each rule type provides its own way of defining the conditions to detect, but an expression formed by a series of clauses is a common pattern. For example, in a metric threshold rule, the `WHEN` clause enables you to select an aggregation operation to apply to a numeric field. +Each rule type provides its own way of defining the conditions to detect, but an expression formed by a series of clauses is a common pattern. +For example, in an {es} query rule, you specify an index, a query, and a threshold, which uses a metric aggregation operation (`count`, `average`, `max`, `min`, or `sum`): [role="screenshot"] -image::images/rule-flyout-rule-conditions.png[UI for defining rule conditions on a metric threshold rule,500] +image::images/es-query-rule-conditions.png[UI for defining rule conditions in an {es} query rule,500] // NOTE: This is an autogenerated screenshot. Do not edit it directly. All rules must have a check interval, which defines how often to evaluate the rule conditions. Checks are queued; they run as close to the defined value as capacity allows. @@ -71,15 +71,16 @@ conditions are met and when they are no longer met. Each action uses a connector, which provides connection information for a {kib} service or third party integration, depending on where you want to send the notifications. If no connectors exist, click **Add connector** to create one. -After you select a connector, set the action frequency. If the rule type supports alert summaries, you can choose to create a summary of alerts on each check interval or on a custom interval. For example, if you create a metrics threshold rule, you can send email notifications that summarize the new, ongoing, and recovered alerts each hour: +After you select a connector, set the action frequency. If the rule type supports alert summaries, you can choose to create a summary of alerts on each check interval or on a custom interval. +For example, if you create an {es} query rule, you can send notifications that summarize the new, ongoing, and recovered alerts on a custom interval: [role="screenshot"] -image::images/action-alert-summary.png[UI for defining rule conditions on a metric threshold rule,500] +image::images/es-query-rule-action-summary.png[UI for defining alert summary action in an {es} query rule,500] // NOTE: This is an autogenerated screenshot. Do not edit it directly. [NOTE] ==== -* The rules that support alert summaries, such as this metric threshold rule, enable you to further refine when actions run by adding time frame and query filters. +* Some rules that support alert summaries, such as metric threshold rules, enable you to further refine when actions run by adding time frame and query filters. * If you choose a custom action interval, it cannot be shorter than the rule's check interval. ==== @@ -87,10 +88,10 @@ Alternatively, you can set the action frequency such that the action runs for ea If the rule type does not support alert summaries, this is your only available option. You must choose when the action runs (for example, at each check interval, only when the alert status changes, or at a custom action interval). You must also choose an action group, which affects whether the action runs. Each rule type has a specific set of valid action groups. -For example, you can set *Run when* to `Alert`, `Warning`, `No data`, or `Recovered` for the metric threshold rule: +For example, you can set *Run when* to `Query matched` or `Recovered` for the {es} query rule: [role="screenshot"] -image::images/rule-flyout-action-details.png[UI for defining an email action,500] +image::images/es-query-rule-recovery-action.png[UI for defining a recovery action,500] // NOTE: This is an autogenerated screenshot. Do not edit it directly. Each connector enables different action properties. For example, an email connector enables you to set the recipients, the subject, and a message body in markdown format. For more information about connectors, refer to <>. @@ -123,7 +124,7 @@ You can pass rule values to an action at the time a condition is detected. To view the list of variables available for your rule, click the "add rule variable" button: [role="screenshot"] -image::images/rule-flyout-action-variables.png[Passing rule values to an action,500] +image::images/es-query-rule-action-variables.png[Passing rule values to an action,500] // NOTE: This is an autogenerated screenshot. Do not edit it directly. For more information about common action variables, refer to <>. diff --git a/docs/user/alerting/images/action-alert-summary.png b/docs/user/alerting/images/action-alert-summary.png deleted file mode 100644 index 038e346a72725..0000000000000 Binary files a/docs/user/alerting/images/action-alert-summary.png and /dev/null differ diff --git a/docs/user/alerting/images/es-query-rule-action-query-matched.png b/docs/user/alerting/images/es-query-rule-action-query-matched.png new file mode 100644 index 0000000000000..cafa6e82e2ab2 Binary files /dev/null and b/docs/user/alerting/images/es-query-rule-action-query-matched.png differ diff --git a/docs/user/alerting/images/es-query-rule-action-summary.png b/docs/user/alerting/images/es-query-rule-action-summary.png new file mode 100644 index 0000000000000..1e098d77fc5f3 Binary files /dev/null and b/docs/user/alerting/images/es-query-rule-action-summary.png differ diff --git a/docs/user/alerting/images/es-query-rule-action-variables.png b/docs/user/alerting/images/es-query-rule-action-variables.png new file mode 100644 index 0000000000000..685f455b986ab Binary files /dev/null and b/docs/user/alerting/images/es-query-rule-action-variables.png differ diff --git a/docs/user/alerting/images/es-query-rule-conditions.png b/docs/user/alerting/images/es-query-rule-conditions.png new file mode 100644 index 0000000000000..c9572afc3dc26 Binary files /dev/null and b/docs/user/alerting/images/es-query-rule-conditions.png differ diff --git a/docs/user/alerting/images/es-query-rule-recovery-action.png b/docs/user/alerting/images/es-query-rule-recovery-action.png new file mode 100644 index 0000000000000..a7c1243c1d0f8 Binary files /dev/null and b/docs/user/alerting/images/es-query-rule-recovery-action.png differ diff --git a/docs/user/alerting/images/rule-flyout-action-details.png b/docs/user/alerting/images/rule-flyout-action-details.png deleted file mode 100644 index b7d7050dd9cab..0000000000000 Binary files a/docs/user/alerting/images/rule-flyout-action-details.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-flyout-action-variables.png b/docs/user/alerting/images/rule-flyout-action-variables.png deleted file mode 100644 index ef74f4dc179d6..0000000000000 Binary files a/docs/user/alerting/images/rule-flyout-action-variables.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-flyout-rule-conditions.png b/docs/user/alerting/images/rule-flyout-rule-conditions.png deleted file mode 100644 index 07a1587ab8683..0000000000000 Binary files a/docs/user/alerting/images/rule-flyout-rule-conditions.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-types-es-query-example-action-variable.png b/docs/user/alerting/images/rule-types-es-query-example-action-variable.png deleted file mode 100644 index 8cb5c07543ddc..0000000000000 Binary files a/docs/user/alerting/images/rule-types-es-query-example-action-variable.png and /dev/null differ diff --git a/docs/user/alerting/rule-types/es-query.asciidoc b/docs/user/alerting/rule-types/es-query.asciidoc index f8310eefa790f..f1a391a9e87be 100644 --- a/docs/user/alerting/rule-types/es-query.asciidoc +++ b/docs/user/alerting/rule-types/es-query.asciidoc @@ -1,7 +1,7 @@ [[rule-type-es-query]] == {es} query -:frontmatter-description: An {es} query rule generates alerts when your query meets a threshold. +:frontmatter-description: Create an {es} query rule, which generates alerts when your query meets a threshold. :frontmatter-tags-products: [kibana,alerting] :frontmatter-tags-content-type: [overview] :frontmatter-tags-user-goals: [analyze] @@ -10,18 +10,15 @@ The {es} query rule type runs a user-configured query, compares the number of matches to a configured threshold, and schedules actions to run when the threshold condition is met. - [float] === Create the rule -Fill in the name and optional tags, then select -*{es} query*. {es} query rule can be defined using KQL/Lucene or Query DSL. +In *{stack-manage-app}* > *{rules-ui}*, click *Create rule*, fill in the name and optional tags, then select *{es} query*. +An {es} query rule can be defined using KQL/Lucene or Query DSL. [float] === Define the conditions -Define properties to detect the condition. - [role="screenshot"] image::user/alerting/images/rule-types-es-query-conditions.png[Define the condition to detect] // NOTE: This is an autogenerated screenshot. Do not edit it directly. @@ -46,13 +43,48 @@ Exclude matches from previous run:: Turn on to avoid alert duplication by excluding documents that have already been detected by the previous rule run. This option is not available when a grouping field is specified. +[float] +=== Add actions + +You can optionally send notifications when the rule conditions are met and when they are no longer met. +In particular, this rule type supports: + +* alert summaries +* actions that run when the query is matched +* recovery actions that run when the rule conditions are no longer met + +For each action, you must choose a connector, which provides connection information for a {kib} service or third party integration. For more information about all the supported connectors, go to <>. + +After you select a connector, you must set the action frequency. +You can choose to create a summary of alerts on each check interval or on a custom interval. +For example, send email notifications that summarize the new, ongoing, and recovered alerts at a custom interval: + +[role="screenshot"] +image::images/es-query-rule-action-summary.png[UI for defining alert summary action in an {es} query rule] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +Alternatively, you can set the action frequency such that actions run for each alert. +Choose how often the action runs (at each check interval, only when the alert status changes, or at a custom action interval). +You must also choose an action group, which indicates whether the action runs when the query is matched or when the alert is recovered. +For example: + +[role="screenshot"] +image::images/es-query-rule-action-query-matched.png[UI for defining a recovery action] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + [float] === Add action variables -<> to run when the rule condition -is met. The following variables are specific to the {es} query rule. You can -also specify -<>. +You can pass rule values to an action to provide contextual details. +To view the list of variables available for each action, click the "add rule variable" button. +For example: + +[role="screenshot"] +image::images/es-query-rule-action-variables.png[Passing rule values to an action] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +The following variables are specific to the {es} query rule. +You can also specify <>. `context.title`:: A preconstructed title for the rule. Example: `rule term match alert query matched`. @@ -76,17 +108,26 @@ Example: `2022-02-03T20:29:27.732Z`. `context.hits`:: The most recent documents that matched the query. Using the https://mustache.github.io/[Mustache] template array syntax, you can iterate -over these hits to get values from the ES documents into your actions. -+ -[role="screenshot"] -image::images/rule-types-es-query-example-action-variable.png[Iterate over hits using Mustache template syntax] +over these hits to get values from the {es} documents into your actions. +For example, the message in an email connector action might contain: + +-- +[source,sh] +-------------------------------------------------- +Elasticsearch query rule '{{rule.name}}' is active: + +{{#context.hits}} +Document with {{_id}} and hostname {{_source.host.name}} has +{{_source.system.memory.actual.free}} bytes of memory free +{{/context.hits}} +-------------------------------------------------- + The documents returned by `context.hits` include the {ref}/mapping-source-field.html[`_source`] field. If the {es} query search API's {ref}/search-fields.html#search-fields-param[`fields`] parameter is used, documents will also return the `fields` field, -which can be used to access any runtime fields defined by the {ref}/runtime-search-request.html[`runtime_mappings`] parameter as the following example shows: -+ --- -[source] +which can be used to access any runtime fields defined by the {ref}/runtime-search-request.html[`runtime_mappings`] parameter. +For example: + +[source,sh] -------------------------------------------------- {{#context.hits}} timestamp: {{_source.@timestamp}} @@ -95,13 +136,12 @@ day of the week: {{fields.day_of_week}} <1> -------------------------------------------------- // NOTCONSOLE <1> The `fields` parameter here is used to access the `day_of_week` runtime field. --- -+ + As the {ref}/search-fields.html#search-fields-response[`fields`] response always returns an array of values for each field, -the https://mustache.github.io/[Mustache] template array syntax is used to iterate over these values in your actions as the following example shows: -+ --- -[source] +the https://mustache.github.io/[Mustache] template array syntax is used to iterate over these values in your actions. +For example: + +[source,sh] -------------------------------------------------- {{#context.hits}} Labels: diff --git a/docs/user/security/api-keys/images/api-keys-details.png b/docs/user/security/api-keys/images/api-keys-details.png new file mode 100644 index 0000000000000..c6029d11de2fa Binary files /dev/null and b/docs/user/security/api-keys/images/api-keys-details.png differ diff --git a/docs/user/security/api-keys/images/api-keys.png b/docs/user/security/api-keys/images/api-keys.png index 2a9df066fc3b8..6dec5730a1289 100644 Binary files a/docs/user/security/api-keys/images/api-keys.png and b/docs/user/security/api-keys/images/api-keys.png differ diff --git a/docs/user/security/api-keys/images/create-ccr-api-key.png b/docs/user/security/api-keys/images/create-ccr-api-key.png new file mode 100644 index 0000000000000..00b5cf546b439 Binary files /dev/null and b/docs/user/security/api-keys/images/create-ccr-api-key.png differ diff --git a/docs/user/security/api-keys/index.asciidoc b/docs/user/security/api-keys/index.asciidoc index c8b7d72248e5e..eda187ed9096c 100644 --- a/docs/user/security/api-keys/index.asciidoc +++ b/docs/user/security/api-keys/index.asciidoc @@ -3,18 +3,17 @@ === API Keys -API keys enable you to create secondary credentials so that you can send -requests on behalf of a user. Secondary credentials have -the same or lower access rights. +API keys are security mechanisms used to authenticate and authorize access to {es} resources. They ensure that only authorized users or applications interact with {es}. -For example, if you extract data from an {es} cluster on a daily -basis, you might create an API key tied to your credentials, -configure it with minimum access, -and then put the API credentials into a cron job. -Or, you might create API keys to automate ingestion of new data from -remote sources, without a live user interaction. +For example, if you extract data from an {es} cluster on a daily basis, you might create an API key tied to your credentials, configure it with minimum access, and then put the API credentials into a cron job. Or you might create API keys to automate ingestion of new data from remote sources, without a live user interaction. -To manage API keys, open the main menu, then click *Stack Management > API Keys*. +You can use {kib} to manage your different API keys: + +* Personal API key: allows external services to access the Elastic Stack on behalf of a user. +* Cross-Cluster API key: allows remote clusters to connect to your local cluster. +* Managed API key: created and managed by Kibana to correctly run background tasks. + +To manage API keys, open the main menu, then click *Stack Management > Security > API Keys*. [role="screenshot"] image:images/api-keys.png["API Keys UI"] @@ -23,51 +22,45 @@ image:images/api-keys.png["API Keys UI"] [[api-keys-security-privileges]] === Security privileges -You must have the `manage_security`, `manage_api_key`, or the `manage_own_api_key` -cluster privileges to use API keys in {kib}. API keys can also be seen in a readonly view with access to the page and the `read_security` cluster privilege. To manage roles, open the main menu, then click -*Stack Management > Roles*, or use the <>. +* To use API keys in {kib}, you must have the `manage_security`, `manage_api_key`, or the `manage_own_api_key` cluster privileges. +* To delete API keys, you must have the `manage_api_key` or `manage_own_api_key` privileges. +* To create or update a *personal API key*, you must have the `manage_api_key` or the `manage_own_api_key` privilege. +* To create or update a *cross-cluster API key*, you must have the `manage_security` privilege and an Enterprise license. +* To have a read-only view on the API keys, you must have access to the page and the `read_security` cluster privilege. +To manage roles, open the main menu, then click *Stack Management > Security > Roles*, or use the <>. [float] [[create-api-key]] === Create an API key -To create an API key, open the main menu, then click *Stack Management > API Keys > Create API key*. +To create an API key, open the main menu, then click *Stack Management > Security > API Keys > Create API key*. [role="screenshot"] -image:images/create-api-key.png["Create API Key UI"] +image:images/create-ccr-api-key.png["Create API Key UI"] -Once created, you can copy the API key (Base64 encoded) and use it to send requests to {es} on your behalf. For example: -[source,bash] -curl --location --request GET 'http://localhost:5601/api/security/role' \ ---header 'Content-Type: application/json;charset=UTF-8' \ ---header 'kbn-xsrf: true' \ ---header 'Authorization: ApiKey aVZlLUMzSUJuYndxdDJvN0k1bU46aGxlYUpNS2lTa2FKeVZua1FnY1VEdw==' \ +Refer to the {ref}/security-api-create-api-key.html[create API key] documentation to learn more about creating personal API keys. - -[IMPORTANT] -============================================================================ -API keys are intended for programmatic access to {kib} and {es}. Do not use API keys to authenticate access via a web browser. -============================================================================ +Refer to the {ref}/security-api-create-cross-cluster-api-key.html[create cross-cluster API key] documentation to learn more about creating cross-cluster API keys. [float] [[udpate-api-key]] === Update an API key -To update an API key, open the main menu, click *Stack Management > API Keys*, and then click on the name of the key. +To update an API key, open the main menu, click *Stack Management > Security > API Keys*, and then click on the name of the key. You cannot update the name or the type of API key. + +Refer to the {ref}/security-api-update-api-key.html[update API key] documentation to learn more about updating personal API keys. -You can only update the `Restrict privileges` and `metadata` fields. +Refer to the {ref}/security-api-update-cross-cluster-api-key.html[update cross-cluster API key] documentation to learn more about updating cross-cluster API keys. [float] [[view-api-keys]] === View and delete API keys -The *API Keys* feature in Kibana lists your API keys, including the name, date created, and status. If an API key expires, its status changes from `Active` to `Expired`. +The *API Keys* feature in {kib} lists your API keys, including the name, date created, and status. If an API key expires, its status changes from `Active` to `Expired`. -If you have `manage_security` or `manage_api_key` permissions, -you can view the API keys of all users, and see which API key was -created by which user in which realm. +If you have `manage_security` or `manage_api_key` permissions, you can view the API keys of all users, and see which API key was created by which user in which realm. If you have only the `manage_own_api_key` permission, you see only a list of your own keys. -You can delete API keys individually or in bulk. +You can delete API keys individually or in bulk, but you need the `manage_api_keys` or `manage_own_api_key` privileges. diff --git a/packages/content-management/content_editor/src/__jest__/tests.helpers.tsx b/packages/content-management/content_editor/src/__jest__/tests.helpers.tsx index b2bc4c9850f49..d71b237010c1c 100644 --- a/packages/content-management/content_editor/src/__jest__/tests.helpers.tsx +++ b/packages/content-management/content_editor/src/__jest__/tests.helpers.tsx @@ -7,14 +7,11 @@ */ import React from 'react'; import type { ComponentType } from 'react'; -import { of } from 'rxjs'; import { TagSelector, TagList } from '../mocks'; import { ContentEditorProvider } from '../services'; import type { Services } from '../services'; -const theme$ = of({ darkMode: false }); - export const getMockServices = (overrides?: Partial) => { const services = { openFlyout: jest.fn(() => ({ @@ -24,7 +21,6 @@ export const getMockServices = (overrides?: Partial) => { TagList, TagSelector, notifyError: () => undefined, - theme$, ...overrides, }; diff --git a/packages/content-management/content_editor/src/components/editor_loader.tsx b/packages/content-management/content_editor/src/components/editor_loader.tsx index ee621949b5ba8..b15009f3b4db1 100644 --- a/packages/content-management/content_editor/src/components/editor_loader.tsx +++ b/packages/content-management/content_editor/src/components/editor_loader.tsx @@ -7,21 +7,11 @@ */ import React, { useState, useCallback, useEffect } from 'react'; -import { EuiFlyoutHeader, EuiFlyoutBody, EuiFlyoutFooter, EuiThemeProvider } from '@elastic/eui'; -import useObservable from 'react-use/lib/useObservable'; -import { Observable, of } from 'rxjs'; - -import { Theme } from '../services'; +import { EuiFlyoutHeader, EuiFlyoutBody, EuiFlyoutFooter } from '@elastic/eui'; import type { Props } from './editor_flyout_content_container'; -const themeDefault = { darkMode: false }; - -export const ContentEditorLoader: React.FC }> = ({ - theme$, - ...rest -}) => { +export const ContentEditorLoader: React.FC = (props) => { const [Editor, setEditor] = useState | null>(null); - const { darkMode } = useObservable(theme$ ?? of(themeDefault), themeDefault); const loadEditor = useCallback(async () => { const { ContentEditorFlyoutContentContainer } = await import( @@ -36,9 +26,7 @@ export const ContentEditorLoader: React.FC }, [loadEditor]); return Editor ? ( - - - + ) : ( <> diff --git a/packages/content-management/content_editor/src/open_content_editor.tsx b/packages/content-management/content_editor/src/open_content_editor.tsx index e2521eaa996c1..37d06be73aeb4 100644 --- a/packages/content-management/content_editor/src/open_content_editor.tsx +++ b/packages/content-management/content_editor/src/open_content_editor.tsx @@ -20,7 +20,7 @@ export type OpenContentEditorParams = Pick< export function useOpenContentEditor() { const services = useServices(); - const { openFlyout, theme$ } = services; + const { openFlyout } = services; const flyout = useRef(null); return useCallback( @@ -35,12 +35,7 @@ export function useOpenContentEditor() { }; flyout.current = openFlyout( - , + , { maxWidth: 600, size: 'm', @@ -51,6 +46,6 @@ export function useOpenContentEditor() { return closeFlyout; }, - [openFlyout, services, theme$] + [openFlyout, services] ); } diff --git a/packages/content-management/content_editor/src/services.tsx b/packages/content-management/content_editor/src/services.tsx index 6b5536a2961e5..9eb75c0cb3d04 100644 --- a/packages/content-management/content_editor/src/services.tsx +++ b/packages/content-management/content_editor/src/services.tsx @@ -38,7 +38,6 @@ export interface Services { notifyError: NotifyFn; TagList?: FC<{ references: SavedObjectsReference[] }>; TagSelector?: React.FC; - theme$: Observable; } const ContentEditorContext = React.createContext(null); @@ -111,6 +110,7 @@ export const ContentEditorKibanaProvider: FC = }) => { const { core, toMountPoint, savedObjectsTagging } = services; const { openFlyout: coreOpenFlyout } = core.overlays; + const { theme$ } = core.theme; const TagList = useMemo(() => { const Comp: Services['TagList'] = ({ references }) => { @@ -126,9 +126,9 @@ export const ContentEditorKibanaProvider: FC = const openFlyout = useCallback( (node: ReactNode, options: OverlayFlyoutOpenOptions) => { - return coreOpenFlyout(toMountPoint(node), options); + return coreOpenFlyout(toMountPoint(node, { theme$ }), options); }, - [toMountPoint, coreOpenFlyout] + [coreOpenFlyout, toMountPoint, theme$] ); return ( @@ -139,7 +139,6 @@ export const ContentEditorKibanaProvider: FC = }} TagList={TagList} TagSelector={savedObjectsTagging?.ui.components.SavedObjectSaveModalTagSelector} - theme$={core.theme.theme$} > {children} diff --git a/packages/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx b/packages/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx index a81ba92b07f5a..5fb8b605d9202 100644 --- a/packages/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx +++ b/packages/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; import type { ComponentType } from 'react'; -import { from, of } from 'rxjs'; +import { from } from 'rxjs'; import { ContentEditorProvider } from '@kbn/content-management-content-editor'; import { TagList } from '../mocks'; @@ -31,13 +31,11 @@ export const getMockServices = (overrides?: Partial) => { return services; }; -const theme$ = of({ darkMode: false }); - export function WithServices

(Comp: ComponentType

, overrides: Partial = {}) { return (props: P) => { const services = getMockServices(overrides); return ( - undefined} theme$={theme$}> + undefined}> diff --git a/packages/kbn-es/src/utils/docker.test.ts b/packages/kbn-es/src/utils/docker.test.ts index 35696e1f91af8..905f51e2d67c3 100644 --- a/packages/kbn-es/src/utils/docker.test.ts +++ b/packages/kbn-es/src/utils/docker.test.ts @@ -476,15 +476,18 @@ describe('runServerlessCluster()', () => { [baseEsPath]: {}, }); execa.mockImplementation(() => Promise.resolve({ stdout: '' })); - const info = jest.fn(); - jest.requireMock('@elastic/elasticsearch').Client.mockImplementation(() => ({ info })); + const health = jest.fn(); + jest + .requireMock('@elastic/elasticsearch') + .Client.mockImplementation(() => ({ cluster: { health } })); - info.mockImplementationOnce(() => Promise.reject()); // first call fails - info.mockImplementationOnce(() => Promise.resolve()); // then succeeds + health.mockImplementationOnce(() => Promise.reject()); // first call fails + health.mockImplementationOnce(() => Promise.resolve({ status: 'red' })); // second call return wrong status + health.mockImplementationOnce(() => Promise.resolve({ status: 'green' })); // then succeeds await runServerlessCluster(log, { basePath: baseEsPath, waitForReady: true }); - expect(info).toHaveBeenCalledTimes(2); - }); + expect(health).toHaveBeenCalledTimes(3); + }, 10000); }); }); diff --git a/packages/kbn-es/src/utils/docker.ts b/packages/kbn-es/src/utils/docker.ts index 7734cddc3c614..085854e4ecb40 100644 --- a/packages/kbn-es/src/utils/docker.ts +++ b/packages/kbn-es/src/utils/docker.ts @@ -35,6 +35,7 @@ import { ELASTIC_SERVERLESS_SUPERUSER_PASSWORD, } from './ess_file_realm'; import { SYSTEM_INDICES_SUPERUSER } from './native_realm'; +import { waitUntilClusterReady } from './wait_until_cluster_ready'; interface BaseOptions { tag?: string; @@ -560,25 +561,6 @@ function getESClient(clientOptions: ClientOptions): Client { }); } -const delay = (ms: number) => new Promise((res) => setTimeout(res, ms)); -async function waitUntilClusterReady( - clientOptions: ClientOptions, - timeoutMs = 60 * 1000 -): Promise { - const started = Date.now(); - const client = getESClient(clientOptions); - - while (started + timeoutMs > Date.now()) { - try { - await client.info(); - break; - } catch (e) { - await delay(1000); - /* trap to continue */ - } - } -} - /** * Runs an ES Serverless Cluster through Docker */ @@ -636,7 +618,7 @@ export async function runServerlessCluster(log: ToolingLog, options: ServerlessO portCmd[1].lastIndexOf(':') )}`; - await waitUntilClusterReady({ + const client = getESClient({ node: esNodeUrl, ...(options.ssl ? { @@ -654,6 +636,7 @@ export async function runServerlessCluster(log: ToolingLog, options: ServerlessO } : {}), }); + await waitUntilClusterReady({ client, log }); log.success('ES is ready'); } diff --git a/packages/kbn-es/src/utils/wait_until_cluster_ready.ts b/packages/kbn-es/src/utils/wait_until_cluster_ready.ts new file mode 100644 index 0000000000000..b8611253f89d3 --- /dev/null +++ b/packages/kbn-es/src/utils/wait_until_cluster_ready.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Client } from '@elastic/elasticsearch'; +import { ToolingLog } from '@kbn/tooling-log'; +const DEFAULT_READY_TIMEOUT = 60 * 1000; // 1 minute + +export interface WaitOptions { + client: Client; + log: ToolingLog; + readyTimeout?: number; +} + +/** + * General method to wait for the ES cluster status to be green + */ +export async function waitUntilClusterReady({ + client, + log, + readyTimeout = DEFAULT_READY_TIMEOUT, +}: WaitOptions) { + let attempt = 0; + const start = Date.now(); + + log.info('waiting for ES cluster to report a green status'); + + while (true) { + attempt += 1; + + try { + const resp = await client.cluster.health(); + if (resp.status === 'green') { + return; + } + + throw new Error(`not ready, cluster health is ${resp.status}`); + } catch (error) { + const timeSinceStart = Date.now() - start; + if (timeSinceStart > readyTimeout) { + const sec = readyTimeout / 1000; + throw new Error(`ES cluster failed to come online with the ${sec} second timeout`); + } + + if (error?.message?.startsWith('not ready,')) { + if (timeSinceStart > 10_000) { + log.warning(error.message); + } + } else { + log.warning( + `waiting for ES cluster to come online, attempt ${attempt} failed with: ${error?.message}` + ); + } + + const waitSec = attempt * 1.5; + await new Promise((resolve) => setTimeout(resolve, waitSec * 1000)); + } + } +} diff --git a/packages/kbn-search-api-panels/components/code_box.scss b/packages/kbn-search-api-panels/components/code_box.scss index b04dbe0ffba42..50e1bcb2b6168 100644 --- a/packages/kbn-search-api-panels/components/code_box.scss +++ b/packages/kbn-search-api-panels/components/code_box.scss @@ -1,3 +1,3 @@ -.serverlessSearchCodeBoxPanel { +.codeBoxPanel { border-top: $euiBorderThin $euiColorLightShade; } diff --git a/packages/kbn-search-api-panels/components/code_box.tsx b/packages/kbn-search-api-panels/components/code_box.tsx index 9a00bdd86e4e3..ca3dd4d8b52c5 100644 --- a/packages/kbn-search-api-panels/components/code_box.tsx +++ b/packages/kbn-search-api-panels/components/code_box.tsx @@ -86,7 +86,7 @@ export const CodeBox: React.FC = ({ return ( - + diff --git a/packages/kbn-search-api-panels/components/install_client.tsx b/packages/kbn-search-api-panels/components/install_client.tsx index 6d56f69e09530..7fa0ecee6a049 100644 --- a/packages/kbn-search-api-panels/components/install_client.tsx +++ b/packages/kbn-search-api-panels/components/install_client.tsx @@ -96,15 +96,19 @@ export const InstallClientPanel: React.FC = ({ defaultMessage: 'Elastic builds and maintains clients in several popular languages and our community has contributed many more. Install your favorite language client to get started.', })} - links={[ - { - href: language.docLink, - label: i18n.translate('searchApiPanels.welcomeBanner.installClient.clientDocLink', { - defaultMessage: '{languageName} client documentation', - values: { languageName: language.name }, - }), - }, - ]} + links={ + language.docLink + ? [ + { + href: language.docLink, + label: i18n.translate('searchApiPanels.welcomeBanner.installClient.clientDocLink', { + defaultMessage: '{languageName} client documentation', + values: { languageName: language.name }, + }), + }, + ] + : [] + } title={i18n.translate('searchApiPanels.welcomeBanner.installClient.title', { defaultMessage: 'Install a client', })} diff --git a/packages/kbn-search-api-panels/index.tsx b/packages/kbn-search-api-panels/index.tsx index feb26ae501de7..67bc9b221bdab 100644 --- a/packages/kbn-search-api-panels/index.tsx +++ b/packages/kbn-search-api-panels/index.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiSpacer, EuiImage, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { AuthenticatedUser } from '@kbn/security-plugin/common'; export * from './components/code_box'; export * from './components/github_link'; @@ -24,19 +25,14 @@ export * from './types'; export * from './utils'; export interface WelcomeBannerProps { - userProfile: { - user: { - full_name?: string; - username?: string; - }; - }; + user?: AuthenticatedUser; assetBasePath?: string; image?: string; showDescription?: boolean; } export const WelcomeBanner: React.FC = ({ - userProfile, + user, assetBasePath, image, showDescription = true, @@ -54,16 +50,22 @@ export const WelcomeBanner: React.FC = ({ - - -

- {i18n.translate('searchApiPanels.welcomeBanner.header.greeting.title', { - defaultMessage: 'Hi {name}!', - values: { name: userProfile?.user?.full_name || userProfile?.user?.username }, - })} -

- - + {Boolean(user) && ( + + +

+ {user + ? i18n.translate('searchApiPanels.welcomeBanner.header.greeting.customTitle', { + defaultMessage: 'Hi {name}!', + values: { name: user.full_name || user.username }, + }) + : i18n.translate('searchApiPanels.welcomeBanner.header.greeting.defaultTitle', { + defaultMessage: 'Hi!', + })} +

+
+
+ )} {showDescription && ( diff --git a/packages/kbn-search-api-panels/languages/console.ts b/packages/kbn-search-api-panels/languages/console.ts index be924d5fa3cbf..e156409239242 100644 --- a/packages/kbn-search-api-panels/languages/console.ts +++ b/packages/kbn-search-api-panels/languages/console.ts @@ -8,6 +8,8 @@ import { LanguageDefinition } from '../types'; +const INDEX_NAME_PLACEHOLDER = 'index_name'; + export const consoleDefinition: Partial = { buildSearchQuery: `POST /books/_search?pretty { @@ -30,4 +32,8 @@ export const consoleDefinition: Partial = { {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} { "index" : { "_index" : "books" } } {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}`, + ingestDataIndex: ({ indexName }) => `POST _bulk?pretty +{ "index" : { "_index" : "${indexName ?? INDEX_NAME_PLACEHOLDER}" } } +{"name": "foo", "title": "bar"} +`, }; diff --git a/packages/kbn-search-api-panels/tsconfig.json b/packages/kbn-search-api-panels/tsconfig.json index 82fd44f2cbb32..768b73f8cef46 100644 --- a/packages/kbn-search-api-panels/tsconfig.json +++ b/packages/kbn-search-api-panels/tsconfig.json @@ -20,6 +20,7 @@ "@kbn/core-http-browser", "@kbn/core-application-browser", "@kbn/share-plugin", - "@kbn/i18n-react" + "@kbn/i18n-react", + "@kbn/security-plugin" ] } diff --git a/packages/kbn-search-api-panels/types.ts b/packages/kbn-search-api-panels/types.ts index 5aba2d7b46bc0..774dd6c4bc9f0 100644 --- a/packages/kbn-search-api-panels/types.ts +++ b/packages/kbn-search-api-panels/types.ts @@ -30,22 +30,22 @@ export interface LanguageDefinitionSnippetArguments { type CodeSnippet = string | ((args: LanguageDefinitionSnippetArguments) => string); export interface LanguageDefinition { + name: string; + id: Languages; + iconType: string; + docLink?: string; + configureClient?: CodeSnippet; + ingestData?: CodeSnippet; + ingestDataIndex?: CodeSnippet; + installClient?: string; + buildSearchQuery?: CodeSnippet; + testConnection?: CodeSnippet; advancedConfig?: string; apiReference?: string; basicConfig?: string; - configureClient: CodeSnippet; - docLink: string; github?: { link: string; label: string; }; - iconType: string; - id: Languages; - ingestData: CodeSnippet; - ingestDataIndex: CodeSnippet; - installClient: string; languageStyling?: string; - name: string; - buildSearchQuery: CodeSnippet; - testConnection: CodeSnippet; } diff --git a/packages/kbn-search-api-panels/utils.test.ts b/packages/kbn-search-api-panels/utils.test.ts new file mode 100644 index 0000000000000..c842dd03cf275 --- /dev/null +++ b/packages/kbn-search-api-panels/utils.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { consoleDefinition } from './languages/console'; +import { getConsoleRequest } from './utils'; + +describe('utils', () => { + describe('getConsoleRequest()', () => { + test('accepts string values', () => { + const consoleRequest = getConsoleRequest('ingestData'); + expect(consoleRequest).toEqual(consoleDefinition.ingestData); + }); + + test('accepts function values', () => { + const consoleRequest = getConsoleRequest('ingestDataIndex', { + url: 'https://your_deployment_url', + apiKey: 'yourApiKey', + indexName: 'test-index', + }); + expect(consoleRequest).toContain(`POST _bulk?pretty +{ \"index\" : { \"_index\" : \"test-index\" } } +{\"name\": \"foo\", \"title\": \"bar\"}`); + }); + + test('returns undefined if language definition is undefined', () => { + // @ts-ignore TS should not allow an invalid language definition + // We add @ts-ignore here to test the safeguard + const consoleRequest = getConsoleRequest('nonExistentRequest'); + expect(consoleRequest).toEqual(undefined); + }); + }); +}); diff --git a/packages/kbn-search-api-panels/utils.ts b/packages/kbn-search-api-panels/utils.ts index ffd81257c5a30..6cc16439ea2f5 100644 --- a/packages/kbn-search-api-panels/utils.ts +++ b/packages/kbn-search-api-panels/utils.ts @@ -26,7 +26,23 @@ export const getLanguageDefinitionCodeSnippet = ( } }; -export const getConsoleRequest = (code: keyof LanguageDefinition): string | undefined => - code in consoleDefinition && typeof consoleDefinition[code] === 'string' - ? (consoleDefinition[code] as string) - : undefined; +export const getConsoleRequest = ( + code: keyof LanguageDefinition, + args?: LanguageDefinitionSnippetArguments +): string | undefined => { + if (code in consoleDefinition) { + const codeType = consoleDefinition[code]; + + switch (typeof codeType) { + case 'string': + return codeType as string; + case 'function': + if (args) { + return codeType(args) as string; + } + return undefined; + default: + return undefined; + } + } +}; diff --git a/packages/kbn-search-connectors/lib/update_native.ts b/packages/kbn-search-connectors/lib/update_native.ts index dff5042961088..73af04e75aa8b 100644 --- a/packages/kbn-search-connectors/lib/update_native.ts +++ b/packages/kbn-search-connectors/lib/update_native.ts @@ -9,7 +9,7 @@ import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; import { CONNECTORS_INDEX } from '..'; -import { Connector } from '../types/connectors'; +import { Connector, ConnectorStatus } from '../types/connectors'; export const putUpdateNative = async ( client: ElasticsearchClient, @@ -19,6 +19,7 @@ export const putUpdateNative = async ( const result = await client.update({ doc: { is_native: isNative, + status: ConnectorStatus.CONFIGURED, }, id: connectorId, index: CONNECTORS_INDEX, diff --git a/packages/kbn-securitysolution-list-api/src/api/index.ts b/packages/kbn-securitysolution-list-api/src/api/index.ts index 98b83b6279953..970282080cb89 100644 --- a/packages/kbn-securitysolution-list-api/src/api/index.ts +++ b/packages/kbn-securitysolution-list-api/src/api/index.ts @@ -43,6 +43,8 @@ import { } from '@kbn/securitysolution-list-constants'; import { toError, toPromise } from '../fp_utils'; +const version = '2023-10-31'; + /** * Add new ExceptionList * @@ -62,6 +64,7 @@ const addExceptionList = async ({ body: JSON.stringify(list), method: 'POST', signal, + version, }); const addExceptionListWithValidation = async ({ @@ -105,6 +108,7 @@ const addExceptionListItem = async ({ body: JSON.stringify(listItem), method: 'POST', signal, + version, }); const addExceptionListItemWithValidation = async ({ @@ -148,6 +152,7 @@ const updateExceptionList = async ({ body: JSON.stringify(list), method: 'PUT', signal, + version, }); const updateExceptionListWithValidation = async ({ @@ -191,6 +196,7 @@ const updateExceptionListItem = async ({ body: JSON.stringify(listItem), method: 'PUT', signal, + version, }); const updateExceptionListItemWithValidation = async ({ @@ -247,6 +253,7 @@ const fetchExceptionLists = async ({ method: 'GET', query, signal, + version, }); }; @@ -298,6 +305,7 @@ const fetchExceptionListById = async ({ method: 'GET', query: { id, namespace_type: namespaceType }, signal, + version, }); const fetchExceptionListByIdWithValidation = async ({ @@ -361,6 +369,7 @@ const fetchExceptionListsItemsByListIds = async ({ method: 'GET', query, signal, + version, }); }; @@ -414,6 +423,7 @@ const fetchExceptionListItemById = async ({ method: 'GET', query: { id, namespace_type: namespaceType }, signal, + version, }); const fetchExceptionListItemByIdWithValidation = async ({ @@ -450,6 +460,7 @@ const deleteExceptionListById = async ({ method: 'DELETE', query: { id, namespace_type: namespaceType }, signal, + version, }); const deleteExceptionListByIdWithValidation = async ({ @@ -486,6 +497,7 @@ const deleteExceptionListItemById = async ({ method: 'DELETE', query: { id, namespace_type: namespaceType }, signal, + version, }); const deleteExceptionListItemByIdWithValidation = async ({ @@ -518,6 +530,7 @@ const addEndpointExceptionList = async ({ http.fetch(ENDPOINT_LIST_URL, { method: 'POST', signal, + version, }); const addEndpointExceptionListWithValidation = async ({ @@ -561,6 +574,7 @@ export const exportExceptionList = async ({ include_expired_exceptions: includeExpiredExceptions, }, signal, + version, }); /** @@ -647,4 +661,5 @@ export const duplicateExceptionList = async ({ include_expired_exceptions: includeExpiredExceptions, }, signal, + version, }); diff --git a/packages/kbn-securitysolution-list-api/src/list_api/index.ts b/packages/kbn-securitysolution-list-api/src/list_api/index.ts index 5c280c7959763..59303b9e8abaf 100644 --- a/packages/kbn-securitysolution-list-api/src/list_api/index.ts +++ b/packages/kbn-securitysolution-list-api/src/list_api/index.ts @@ -57,6 +57,8 @@ export type { ImportListParams, } from './types'; +const version = '2023-10-31'; + const findLists = async ({ http, cursor, @@ -79,6 +81,7 @@ const findLists = async ({ sort_order, }, signal, + version, }); }; @@ -167,6 +170,7 @@ const importList = async ({ method: 'POST', query: { list_id, type }, signal, + version, }); }; @@ -207,6 +211,7 @@ const deleteList = async ({ method: 'DELETE', query: { deleteReferences, id, ignoreReferences }, signal, + version, }); const deleteListWithValidation = async ({ @@ -236,6 +241,7 @@ const exportList = async ({ method: 'POST', query: { list_id }, signal, + version, }); const exportListWithValidation = async ({ @@ -256,6 +262,7 @@ const readListIndex = async ({ http, signal }: ApiParams): Promise(LIST_INDEX, { method: 'GET', signal, + version, }); const readListIndexWithValidation = async ({ @@ -273,15 +280,16 @@ export { readListIndexWithValidation as readListIndex }; // TODO add types and validation export const readListPrivileges = async ({ http, signal }: ApiParams): Promise => http.fetch(LIST_PRIVILEGES_URL, { - version: '2023-10-31', method: 'GET', signal, + version, }); const createListIndex = async ({ http, signal }: ApiParams): Promise => http.fetch(LIST_INDEX, { method: 'POST', signal, + version, }); const createListIndexWithValidation = async ({ diff --git a/packages/kbn-storybook/templates/index.ejs b/packages/kbn-storybook/templates/index.ejs index 899c6a5897c56..21e1035627aeb 100644 --- a/packages/kbn-storybook/templates/index.ejs +++ b/packages/kbn-storybook/templates/index.ejs @@ -46,7 +46,7 @@ diff --git a/packages/kbn-text-based-editor/src/resizable_button.scss b/packages/kbn-text-based-editor/src/resizable_button.scss deleted file mode 100644 index cd0342df39a77..0000000000000 --- a/packages/kbn-text-based-editor/src/resizable_button.scss +++ /dev/null @@ -1,87 +0,0 @@ -.TextBasedLangEditor--resizableButtonContainer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - display: flex; - flex-direction: column; -} - -.TextBasedLangEditor--resizableButton { - position: relative; - flex-shrink: 0; - z-index: 1; - cursor: row-resize; - height: $euiSize; - margin-top: -($euiSize / 2); - margin-bottom: -($euiSize / 2); - - &:before, - &:after { - content: ''; - display: block; - position: absolute; - top: 50%; - left: 50%; - width: $euiSizeM; - height: 1px; - background-color: $euiColorDarkestShade; - transition: ( - width $euiAnimSpeedFast ease, - height $euiAnimSpeedFast ease, - transform $euiAnimSpeedFast ease, - background-color $euiAnimSpeedFast ease - ); - } - - &:before { - transform: translate(-50%, -2px); - } - - &:after { - transform: translate(-50%, 2px); - } - - //Lighten the "grab" icon on :hover - &:hover:not(:disabled) { - &:before, - &:after { - background-color: $euiColorMediumShade; - transition-delay: $euiAnimSpeedFast; //Delay transition on hover so animation is not accidentally triggered on mouse over - } - } - - //Add a transparent background to the container and emphasis the "grab" icon with primary color on :focus - &:focus:not(:disabled) { - background-color: transparentize($euiColorPrimary, .9); - - &:before, - &:after { - background-color: $euiColorPrimary; - // Overrides default transition so that "grab" icon background-color doesn't animate - transition: ( - width $euiAnimSpeedFast ease, - height $euiAnimSpeedFast ease, - transform $euiAnimSpeedFast ease - ); - transition-delay: $euiAnimSpeedFast / 2; - } - } - - //Morph the "grab" icon into a fluid 2px straight line on :hover and :focus - &:hover:not(:disabled), - &:focus:not(:disabled) { - &:before, - &:after { - width: 100%; - } - - &:before { - transform: translate(-50%, -1px); - } - - &:after { - transform: translate(-50%, 0); - } - } -} \ No newline at end of file diff --git a/packages/kbn-text-based-editor/src/resizable_button.tsx b/packages/kbn-text-based-editor/src/resizable_button.tsx index 7ae69b4e33d73..fb4ee944bc2f5 100644 --- a/packages/kbn-text-based-editor/src/resizable_button.tsx +++ b/packages/kbn-text-based-editor/src/resizable_button.tsx @@ -7,29 +7,30 @@ */ import React from 'react'; - -import './resizable_button.scss'; +import { EuiResizableButton } from '@elastic/eui'; +import { css } from '@emotion/react'; export function ResizableButton({ onMouseDownResizeHandler, onKeyDownResizeHandler, }: { onMouseDownResizeHandler: ( - mouseDownEvent: React.MouseEvent + mouseDownEvent: React.MouseEvent | React.TouchEvent ) => void; onKeyDownResizeHandler: (keyDownEvernt: React.KeyboardEvent) => void; }) { - const setFocus = (e: React.MouseEvent) => e.currentTarget.focus(); - return ( -
-
+ ); } diff --git a/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx index 91fe00263c1c4..d7d90ff6b517e 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx @@ -8,6 +8,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule } from '@elastic/eui'; import { DragDrop, type DropType, DropOverlayWrapper } from '@kbn/dom-drag-drop'; +import useObservable from 'react-use/lib/useObservable'; import React, { useCallback } from 'react'; import { DataView } from '@kbn/data-views-plugin/common'; import { METRIC_TYPE } from '@kbn/analytics'; @@ -22,6 +23,7 @@ import { DiscoverDocuments } from './discover_documents'; import { DOCUMENTS_VIEW_CLICK, FIELD_STATISTICS_VIEW_CLICK } from '../field_stats_table/constants'; import { ErrorCallout } from '../../../../components/common/error_callout'; import { useDataState } from '../../hooks/use_data_state'; +import { SelectedVSAvailableCallout } from './selected_vs_available_callout'; const DROP_PROPS = { value: { @@ -75,6 +77,7 @@ export const DiscoverMainContent = ({ ); const dataState = useDataState(stateContainer.dataState.data$.main$); + const documents = useObservable(stateContainer.dataState.data$.documents$); const isDropAllowed = Boolean(onDropFieldToTable); return ( @@ -112,6 +115,11 @@ export const DiscoverMainContent = ({ data-test-subj="discoverMainError" /> )} + {viewMode === VIEW_MODE.DOCUMENT_LEVEL ? ( { + it('should render the callout if isPlainRecord is true and the selected columns are less than the available ones', async () => { + const component = mountWithIntl( + + ); + expect(component.find('[data-test-subj="dscSelectedColumnsCallout"]').exists()).toBe(true); + }); + + it('should not render the callout if isPlainRecord is false', async () => { + const component = mountWithIntl( + + ); + expect(component.find('[data-test-subj="dscSelectedColumnsCallout"]').exists()).toBe(false); + }); + + it('should not render the callout if isPlainRecord is true but the selected columns are equal with the available ones', async () => { + const component = mountWithIntl( + + ); + expect(component.find('[data-test-subj="dscSelectedColumnsCallout"]').exists()).toBe(false); + }); +}); diff --git a/src/plugins/discover/public/application/main/components/layout/selected_vs_available_callout.tsx b/src/plugins/discover/public/application/main/components/layout/selected_vs_available_callout.tsx new file mode 100644 index 0000000000000..ec05667e69b35 --- /dev/null +++ b/src/plugins/discover/public/application/main/components/layout/selected_vs_available_callout.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; +import type { DatatableColumn } from '@kbn/expressions-plugin/common'; + +interface SelectedVSAvailableCallout { + isPlainRecord: boolean; + selectedColumns: string[]; + textBasedQueryColumns?: DatatableColumn[]; +} + +export const SelectedVSAvailableCallout = ({ + isPlainRecord, + textBasedQueryColumns, + selectedColumns, +}: SelectedVSAvailableCallout) => { + return ( + <> + {isPlainRecord && + textBasedQueryColumns && + selectedColumns.length > 0 && + selectedColumns.length < textBasedQueryColumns.length && ( + + )} + + ); +}; diff --git a/src/plugins/home/server/services/sample_data/sample_data_installer.test.ts b/src/plugins/home/server/services/sample_data/sample_data_installer.test.ts index af3108ddafce9..361a9c74c0090 100644 --- a/src/plugins/home/server/services/sample_data/sample_data_installer.test.ts +++ b/src/plugins/home/server/services/sample_data/sample_data_installer.test.ts @@ -159,8 +159,14 @@ describe('SampleDataInstaller', () => { expect(esClient.asCurrentUser.indices.create).toHaveBeenCalledWith({ index: 'kibana_sample_data_test_single_data_index', body: { - settings: { index: { number_of_shards: 1, auto_expand_replicas: '0-1' } }, - mappings: { properties: { someField: { type: 'keyword' } } }, + mappings: { + properties: { + someField: { type: 'keyword' }, + }, + }, + settings: { + index: {}, + }, }, }); }); diff --git a/src/plugins/home/server/services/sample_data/sample_data_installer.ts b/src/plugins/home/server/services/sample_data/sample_data_installer.ts index 958f952fdd5a1..3f165a4a0e219 100644 --- a/src/plugins/home/server/services/sample_data/sample_data_installer.ts +++ b/src/plugins/home/server/services/sample_data/sample_data_installer.ts @@ -155,13 +155,13 @@ export class SampleDataInstaller { private async installDataIndex(dataset: SampleDatasetSchema, dataIndex: DataIndexSchema) { const index = createIndexName(dataset.id, dataIndex.id); + try { if (dataIndex.isDataStream) { const request = { name: index, body: { template: { - settings: { number_of_shards: 1, auto_expand_replicas: '0-1' }, mappings: { properties: dataIndex.fields }, }, index_patterns: [index], @@ -180,8 +180,6 @@ export class SampleDataInstaller { settings: { index: { ...dataIndex.indexSettings, - number_of_shards: 1, - auto_expand_replicas: '0-1', }, }, mappings: { properties: dataIndex.fields }, diff --git a/versions.json b/versions.json index aeaf855d329d7..ba9e6cc338097 100644 --- a/versions.json +++ b/versions.json @@ -14,13 +14,13 @@ "previousMinor": true }, { - "version": "8.9.2", + "version": "8.9.3", "branch": "8.9", "currentMajor": true, "previousMinor": false }, { - "version": "7.17.13", + "version": "7.17.14", "branch": "7.17", "previousMajor": true } diff --git a/x-pack/performance/journeys/tsdb_logs_data_visualizer.ts b/x-pack/performance/journeys/tsdb_logs_data_visualizer.ts new file mode 100644 index 0000000000000..1c398e8511cdc --- /dev/null +++ b/x-pack/performance/journeys/tsdb_logs_data_visualizer.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Journey } from '@kbn/journeys'; +import { subj } from '@kbn/test-subj-selector'; + +export const journey = new Journey({ + kbnArchives: ['test/functional/fixtures/kbn_archiver/kibana_sample_data_logs_tsdb'], + esArchives: ['test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb'], +}) + .step('Go to Data Visualizer', async ({ page, kbnUrl, kibanaPage }) => { + await page.goto(kbnUrl.get(`app/ml/datavisualizer`)); + await kibanaPage.waitForHeader(); + await page.waitForSelector(subj('mlDataVisualizerCardIndexData')); + await page.waitForSelector(subj('globalLoadingIndicator-hidden')); + }) + .step('Go to data view selection', async ({ page }) => { + const createButtons = page.locator(subj('mlDataVisualizerSelectIndexButton')); + await createButtons.first().click(); + await page.waitForSelector(subj('savedObjectsFinderTable')); + }) + .step('Go to Index data visualizer', async ({ page, kibanaPage }) => { + await page.click(subj('savedObjectTitlekibana_sample_data_logstsdb')); + await page.click(subj('mlDatePickerButtonUseFullData')); + await kibanaPage.waitForHeader(); + await page.waitForSelector(subj('dataVisualizerTable-loaded'), { timeout: 60000 }); + await page.waitForSelector(subj('globalLoadingIndicator-hidden'), { timeout: 60000 }); + }); diff --git a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap index 2bed81c9c05c3..c389d411462d7 100644 --- a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap +++ b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap @@ -1704,7 +1704,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "total": { "type": "long", "_meta": { - "description": "Total number of shards for span and trasnaction indices" + "description": "Total number of shards for span and transaction indices" } } } @@ -1718,7 +1718,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "count": { "type": "long", "_meta": { - "description": "Total number of transaction and span documents overall" + "description": "Total number of metric documents overall" } } } @@ -1728,7 +1728,7 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the "size_in_bytes": { "type": "long", "_meta": { - "description": "Size of the index in byte units overall." + "description": "Size of the metric indicess in byte units overall." } } } diff --git a/x-pack/plugins/apm/dev_docs/telemetry.md b/x-pack/plugins/apm/dev_docs/telemetry.md index 7bfb065965261..e11ea3bcdec33 100644 --- a/x-pack/plugins/apm/dev_docs/telemetry.md +++ b/x-pack/plugins/apm/dev_docs/telemetry.md @@ -69,3 +69,27 @@ mappings snapshot used in the jest tests. Behavioral telemetry is recorded with the ui_metrics and application_usage methods from the Usage Collection plugin. Please fill this in with more details. + +## Event based telemetry + +Event-based telemetry (EBT) allows sending raw or minimally prepared data to the telemetry endpoints. + +EBT is part of the core analytics service in Kibana and the `TelemetryService` provides an easy way to track custom events that are specific to `APM`. + +#### Collect a new event type + +1. You need to define the event type in the [telemetry_events.ts](https://github.com/elastic/kibana/blob/4283802c195231f710be0d9870615fbc31382a31/x-pack/plugins/apm/public/services/telemetry/telemetry_events.ts#L36) +2. Define the tracking method in the [telemetry_client.ts](https://github.com/elastic/kibana/blob/4283802c195231f710be0d9870615fbc31382a31/x-pack/plugins/apm/public/services/telemetry/telemetry_client.ts#L18) +3. Use the tracking method with the telemetry client (`telemetry.reportSearchQuerySumbitted({property: test})`) + +In addition to the custom properties, analytics module automatically sends context properties. The list of the properties can be found [here](https://docs.elastic.dev/telemetry/collection/event-based-telemetry-context#browser-context) + +#### How to check the events + +In development, the events are sent to staging telemetry every hour and these events are stored in the `ebt-kibana-browser` dataview. + +For instance, you can use a query like the following as an example to filter the apm event Search Query Submitted. + +``` +context.applicationId : "apm" and event_type : "Search Query Submitted" +``` diff --git a/x-pack/plugins/apm/kibana.jsonc b/x-pack/plugins/apm/kibana.jsonc index ed7f8fca0a241..a9329cd965ce7 100644 --- a/x-pack/plugins/apm/kibana.jsonc +++ b/x-pack/plugins/apm/kibana.jsonc @@ -15,7 +15,6 @@ "controls", "embeddable", "features", - "infra", "logsShared", "inspector", "licensing", @@ -41,6 +40,7 @@ "discover", "fleet", "fieldFormats", + "infra", "home", "ml", "security", @@ -49,7 +49,7 @@ "usageCollection", "customIntegrations", // Move this to requiredPlugins after completely migrating from the Tutorials Home App "licenseManagement", - "profiling", + "profiling" ], "requiredBundles": [ "advancedSettings", @@ -58,7 +58,6 @@ "kibanaUtils", "ml", "observability", - "esUiShared", "maps", "observabilityAIAssistant" ] diff --git a/x-pack/plugins/apm/public/application/index.tsx b/x-pack/plugins/apm/public/application/index.tsx index 6f92ded082a01..a79be6c310be5 100644 --- a/x-pack/plugins/apm/public/application/index.tsx +++ b/x-pack/plugins/apm/public/application/index.tsx @@ -15,7 +15,7 @@ import { } from '@kbn/core/public'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import { ConfigSchema } from '..'; -import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps, ApmServices } from '../plugin'; import { createCallApmApi } from '../services/rest/create_call_apm_api'; import { setHelpExtension } from '../set_help_extension'; import { setReadonlyBadge } from '../update_badge'; @@ -24,7 +24,6 @@ import { ApmAppRoot } from '../components/routing/app_root'; /** * This module is rendered asynchronously in the Kibana platform. */ - export const renderApp = ({ coreStart, pluginsSetup, @@ -32,6 +31,7 @@ export const renderApp = ({ config, pluginsStart, observabilityRuleTypeRegistry, + apmServices, }: { coreStart: CoreStart; pluginsSetup: ApmPluginSetupDeps; @@ -39,6 +39,7 @@ export const renderApp = ({ config: ConfigSchema; pluginsStart: ApmPluginStartDeps; observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; + apmServices: ApmServices; }) => { const { element, theme$ } = appMountParameters; const apmPluginContextValue = { @@ -80,6 +81,7 @@ export const renderApp = ({ , element diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/index.tsx index 4b2f8bb39579e..d2e8034cab32f 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/index.tsx @@ -40,10 +40,7 @@ export function InstanceActionsMenu({ kuery, onClose, }: Props) { - const { - core, - infra: { locators }, - } = useApmPluginContext(); + const { core, infra } = useApmPluginContext(); const { data, status } = useInstanceDetailsFetcher({ serviceName, serviceNodeName, @@ -92,7 +89,7 @@ export function InstanceActionsMenu({ basePath: core.http.basePath, onFilterByInstanceClick: handleFilterByInstanceClick, metricsHref, - infraLocators: locators, + infraLocators: infra?.locators, }); return ( diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/menu_sections.ts b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/menu_sections.ts index e3398258b5fed..284e3ca6d4964 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/menu_sections.ts +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_instances_table/instance_actions_menu/menu_sections.ts @@ -52,67 +52,71 @@ export function getMenuSections({ ? new Date(instanceDetails['@timestamp']).valueOf() : undefined; const infraMetricsQuery = getInfraMetricsQuery(instanceDetails['@timestamp']); - const infraNodeLocator = infraLocators.nodeLogsLocator; + const infraNodeLocator = infraLocators?.nodeLogsLocator; - const podActions: Action[] = [ - { - key: 'podLogs', - label: i18n.translate( - 'xpack.apm.serviceOverview.instancesTable.actionMenus.podLogs', - { defaultMessage: 'Pod logs' } - ), - href: infraNodeLocator.getRedirectUrl({ - nodeId: podId!, - nodeType: 'pod', - time, - }), - condition: !!podId, - }, - { - key: 'podMetrics', - label: i18n.translate( - 'xpack.apm.serviceOverview.instancesTable.actionMenus.podMetrics', - { defaultMessage: 'Pod metrics' } - ), - href: getInfraHref({ - app: 'metrics', - basePath, - path: `/link-to/pod-detail/${podId}`, - query: infraMetricsQuery, - }), - condition: !!podId, - }, - ]; + const podActions: Action[] = infraNodeLocator + ? [ + { + key: 'podLogs', + label: i18n.translate( + 'xpack.apm.serviceOverview.instancesTable.actionMenus.podLogs', + { defaultMessage: 'Pod logs' } + ), + href: infraNodeLocator?.getRedirectUrl({ + nodeId: podId!, + nodeType: 'pod', + time, + }), + condition: !!podId, + }, + { + key: 'podMetrics', + label: i18n.translate( + 'xpack.apm.serviceOverview.instancesTable.actionMenus.podMetrics', + { defaultMessage: 'Pod metrics' } + ), + href: getInfraHref({ + app: 'metrics', + basePath, + path: `/link-to/pod-detail/${podId}`, + query: infraMetricsQuery, + }), + condition: !!podId, + }, + ] + : []; - const containerActions: Action[] = [ - { - key: 'containerLogs', - label: i18n.translate( - 'xpack.apm.serviceOverview.instancesTable.actionMenus.containerLogs', - { defaultMessage: 'Container logs' } - ), - href: infraNodeLocator.getRedirectUrl({ - nodeId: containerId!, - nodeType: 'container', - time, - }), - condition: !!containerId, - }, - { - key: 'containerMetrics', - label: i18n.translate( - 'xpack.apm.serviceOverview.instancesTable.actionMenus.containerMetrics', - { defaultMessage: 'Container metrics' } - ), - href: getInfraHref({ - app: 'metrics', - basePath, - path: `/link-to/container-detail/${containerId}`, - query: infraMetricsQuery, - }), - condition: !!containerId, - }, - ]; + const containerActions: Action[] = infraNodeLocator + ? [ + { + key: 'containerLogs', + label: i18n.translate( + 'xpack.apm.serviceOverview.instancesTable.actionMenus.containerLogs', + { defaultMessage: 'Container logs' } + ), + href: infraNodeLocator?.getRedirectUrl({ + nodeId: containerId!, + nodeType: 'container', + time, + }), + condition: !!containerId, + }, + { + key: 'containerMetrics', + label: i18n.translate( + 'xpack.apm.serviceOverview.instancesTable.actionMenus.containerMetrics', + { defaultMessage: 'Container metrics' } + ), + href: getInfraHref({ + app: 'metrics', + basePath, + path: `/link-to/container-detail/${containerId}`, + query: infraMetricsQuery, + }), + condition: !!containerId, + }, + ] + : []; const apmActions: Action[] = [ { diff --git a/x-pack/plugins/apm/public/components/app/trace_explorer/index.tsx b/x-pack/plugins/apm/public/components/app/trace_explorer/index.tsx index 74b38ea153558..0c072f6fba128 100644 --- a/x-pack/plugins/apm/public/components/app/trace_explorer/index.tsx +++ b/x-pack/plugins/apm/public/components/app/trace_explorer/index.tsx @@ -78,7 +78,7 @@ export function TraceExplorer({ children }: { children: React.ReactElement }) { - + - + diff --git a/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx b/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx index 84d72000c7b88..6c83b02456b1c 100644 --- a/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx +++ b/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx @@ -9,7 +9,6 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, - EuiText, EuiSelect, EuiSelectOption, } from '@elastic/eui'; @@ -23,12 +22,11 @@ import { } from '../../../../../common/trace_explorer'; import { useApmDataView } from '../../../../hooks/use_apm_data_view'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; -import { EQLCodeEditorSuggestionType } from '../../../shared/eql_code_editor/constants'; -import { LazilyLoadedEQLCodeEditor } from '../../../shared/eql_code_editor/lazily_loaded_code_editor'; + +import { EQLCodeEditor } from '../../../shared/monaco_code_editor'; interface Props { query: TraceSearchQuery; - message?: string; error: boolean; onQueryChange: (query: TraceSearchQuery) => void; onQueryCommit: () => void; @@ -54,8 +52,6 @@ export function TraceSearchBox({ query, onQueryChange, onQueryCommit, - message, - error, loading, }: Props) { const { unifiedSearch, core, data, dataViews } = useApmPluginContext(); @@ -67,57 +63,21 @@ export function TraceSearchBox({ const { dataView } = useApmDataView(); return ( - + {query.type === TraceSearchType.eql ? ( - { + onChange={(value: string) => { onQueryChange({ ...query, query: value, }); }} - onBlur={() => { - onQueryCommit(); - }} - getSuggestions={async (request) => { - switch (request.type) { - case EQLCodeEditorSuggestionType.EventType: - return ['transaction', 'span', 'error']; - - case EQLCodeEditorSuggestionType.Field: - return ( - dataView?.fields.map((field) => field.name) ?? [] - ); - - case EQLCodeEditorSuggestionType.Value: - const field = dataView?.getFieldByName(request.field); - - if (!dataView || !field) { - return []; - } - - const suggestions: string[] = - await unifiedSearch.autocomplete.getValueSuggestions( - { - field, - indexPattern: dataView, - query: request.value, - useTimeRange: true, - method: 'terms_agg', - } - ); - - return suggestions.slice(0, 15); - } - }} - width="100%" - height="100px" /> ) : (
@@ -176,33 +136,21 @@ export function TraceSearchBox({ - - + { + onQueryCommit(); + }} + iconType="search" + style={{ width: '100px' }} > - - - {message} - - - - { - onQueryCommit(); - }} - iconType="search" - > - {i18n.translate('xpack.apm.traceSearchBox.refreshButton', { - defaultMessage: 'Search', - })} - - - + {i18n.translate('xpack.apm.traceSearchBox.refreshButton', { + defaultMessage: 'Search', + })} + diff --git a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx index a49beaa221566..2af4d21028b80 100644 --- a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx @@ -32,7 +32,7 @@ import { BreadcrumbsContextProvider } from '../../../context/breadcrumbs/context import { LicenseProvider } from '../../../context/license/license_context'; import { TimeRangeIdContextProvider } from '../../../context/time_range_id/time_range_id_context'; import { UrlParamsProvider } from '../../../context/url_params_context/url_params_context'; -import { ApmPluginStartDeps } from '../../../plugin'; +import { ApmPluginStartDeps, ApmServices } from '../../../plugin'; import { ApmErrorBoundary } from '../apm_error_boundary'; import { apmRouter } from '../apm_route_config'; import { TrackPageview } from '../track_pageview'; @@ -49,9 +49,11 @@ const storage = new Storage(localStorage); export function ApmAppRoot({ apmPluginContextValue, pluginsStart, + apmServices, }: { apmPluginContextValue: ApmPluginContextValue; pluginsStart: ApmPluginStartDeps; + apmServices: ApmServices; }) { const { appMountParameters, core } = apmPluginContextValue; const { history } = appMountParameters; @@ -65,7 +67,9 @@ export function ApmAppRoot({ role="main" > - + ); } diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/completer.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/completer.ts deleted file mode 100644 index 5128c288fefc2..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/completer.ts +++ /dev/null @@ -1,195 +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 { Editor, IEditSession, TokenInfo as AceTokenInfo } from 'brace'; -import { Maybe } from '../../../../typings/common'; -import { EQLCodeEditorSuggestionType } from './constants'; -import { EQLToken } from './tokens'; -import { - EQLCodeEditorSuggestion, - EQLCodeEditorSuggestionCallback, - EQLCodeEditorSuggestionRequest, -} from './types'; - -type TokenInfo = AceTokenInfo & { - type: string; - index: number; -}; - -export class EQLCodeEditorCompleter { - callback?: EQLCodeEditorSuggestionCallback; - - private async getCompletionsAsync( - session: IEditSession, - position: { row: number; column: number }, - prefix: string | undefined - ): Promise { - const token = session.getTokenAt( - position.row, - position.column - ) as Maybe; - const tokensInLine = session.getTokens(position.row) as TokenInfo[]; - - function withWhitespace( - vals: EQLCodeEditorSuggestion[], - options: { - before?: string; - after?: string; - } = {} - ) { - const { after = ' ' } = options; - let { before = ' ' } = options; - - if ( - before && - (token?.value.match(/^\s+$/) || (token && token.type !== 'text')) - ) { - before = before.trimLeft(); - } - - return vals.map((val) => { - const suggestion = typeof val === 'string' ? { value: val } : val; - const valueAsString = suggestion.value; - - return { - ...suggestion, - caption: valueAsString, - value: [before, valueAsString, after].join(''), - }; - }); - } - - if ( - position.row === 0 && - (!token || token.index === 0) && - 'sequence by'.includes(prefix || '') - ) { - return withWhitespace(['sequence by'], { - before: '', - after: ' ', - }); - } - - const previousTokens = tokensInLine - .slice(0, token ? tokensInLine.indexOf(token) : tokensInLine.length) - .reverse(); - - const completedEqlToken = previousTokens.find((t) => - t.type.startsWith('eql.') - ); - - switch (completedEqlToken?.type) { - case undefined: - return [ - ...withWhitespace(['['], { before: '', after: ' ' }), - ...(position.row > 2 - ? withWhitespace(['until'], { before: '', after: ' [ ' }) - : []), - ]; - - case EQLToken.Sequence: - return withWhitespace( - await this.getExternalSuggestions({ - type: EQLCodeEditorSuggestionType.Field, - }), - { - after: '\n\t[ ', - } - ); - - case EQLToken.SequenceItemStart: - return withWhitespace( - [ - ...(await this.getExternalSuggestions({ - type: EQLCodeEditorSuggestionType.EventType, - })), - 'any', - ], - { after: ' where ' } - ); - - case EQLToken.EventType: - return withWhitespace(['where']); - - case EQLToken.Where: - case EQLToken.LogicalOperator: - return [ - ...withWhitespace( - await this.getExternalSuggestions({ - type: EQLCodeEditorSuggestionType.Field, - }) - ), - ...withWhitespace(['true', 'false'], { after: ' ]\n\t' }), - ]; - - case EQLToken.BoolCondition: - return withWhitespace([']'], { after: '\n\t' }); - - case EQLToken.Operator: - case EQLToken.InOperator: - const field = - previousTokens?.find((t) => t.type === EQLToken.Field)?.value ?? ''; - - const hasStartedValueLiteral = - !!prefix?.trim() || token?.value.trim() === '"'; - - return withWhitespace( - await this.getExternalSuggestions({ - type: EQLCodeEditorSuggestionType.Value, - field, - value: prefix ?? '', - }), - { before: hasStartedValueLiteral ? '' : ' "', after: '" ' } - ); - - case EQLToken.Value: - return [ - ...withWhitespace([']'], { after: '\n\t' }), - ...withWhitespace(['and', 'or']), - ]; - } - - return []; - } - - private async getExternalSuggestions( - request: EQLCodeEditorSuggestionRequest - ): Promise { - if (this.callback) { - return this.callback(request); - } - return []; - } - - getCompletions( - _: Editor, - session: IEditSession, - position: { row: number; column: number }, - prefix: string | undefined, - cb: (err: Error | null, suggestions?: EQLCodeEditorSuggestion[]) => void - ) { - this.getCompletionsAsync(session, position, prefix) - .then((suggestions) => { - cb( - null, - suggestions.map((sugg) => { - const suggestion = - typeof sugg === 'string' - ? { value: sugg, score: 1000 } - : { score: 1000, ...sugg }; - - return suggestion; - }) - ); - }) - .catch(cb); - } - - setSuggestionCb(cb?: EQLCodeEditorSuggestionCallback) { - this.callback = cb; - } -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_highlight_rules.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_highlight_rules.ts deleted file mode 100644 index 8d04036451bb0..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_highlight_rules.ts +++ /dev/null @@ -1,145 +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 'brace/ext/language_tools'; -import { acequire } from 'brace'; -import { EQLToken } from './tokens'; - -const TextHighlightRules = acequire( - 'ace/mode/text_highlight_rules' -).TextHighlightRules; - -export class EQLHighlightRules extends TextHighlightRules { - constructor() { - super(); - - const fieldNameOrValueRegex = /((?:[^\s]+)|(?:".*?"))/; - const operatorRegex = /(:|==|>|>=|<|<=|!=)/; - - const sequenceItemEnd = { - token: EQLToken.SequenceItemEnd, - regex: /(\])/, - next: 'start', - }; - - this.$rules = { - start: [ - { - token: EQLToken.Sequence, - regex: /(sequence by)/, - next: 'field', - }, - { - token: EQLToken.SequenceItemStart, - regex: /(\[)/, - next: 'sequence_item', - }, - { - token: EQLToken.Until, - regex: /(until)/, - next: 'start', - }, - ], - field: [ - { - token: EQLToken.Field, - regex: fieldNameOrValueRegex, - next: 'start', - }, - ], - sequence_item: [ - { - token: EQLToken.EventType, - regex: fieldNameOrValueRegex, - next: 'where', - }, - ], - sequence_item_end: [sequenceItemEnd], - where: [ - { - token: EQLToken.Where, - regex: /(where)/, - next: 'condition', - }, - ], - condition: [ - { - token: EQLToken.BoolCondition, - regex: /(true|false)/, - next: 'sequence_item_end', - }, - { - token: EQLToken.Field, - regex: fieldNameOrValueRegex, - next: 'comparison_operator', - }, - ], - comparison_operator: [ - { - token: EQLToken.Operator, - regex: operatorRegex, - next: 'value_or_value_list', - }, - ], - value_or_value_list: [ - { - token: EQLToken.Value, - regex: /("([^"]+)")|([\d+\.]+)|(true|false|null)/, - next: 'logical_operator_or_sequence_item_end', - }, - { - token: EQLToken.InOperator, - regex: /(in)/, - next: 'value_list', - }, - ], - logical_operator_or_sequence_item_end: [ - { - token: EQLToken.LogicalOperator, - regex: /(and|or|not)/, - next: 'condition', - }, - sequenceItemEnd, - ], - value_list: [ - { - token: EQLToken.ValueListStart, - regex: /(\()/, - next: 'value_list_item', - }, - ], - value_list_item: [ - { - token: EQLToken.Value, - regex: fieldNameOrValueRegex, - next: 'comma', - }, - ], - comma: [ - { - token: EQLToken.Comma, - regex: /,/, - next: 'value_list_item_or_end', - }, - ], - value_list_item_or_end: [ - { - token: EQLToken.Value, - regex: fieldNameOrValueRegex, - next: 'comma', - }, - { - token: EQLToken.ValueListEnd, - regex: /\)/, - next: 'logical_operator_or_sequence_item_end', - }, - ], - }; - - this.normalizeRules(); - } -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_mode.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_mode.ts deleted file mode 100644 index 36f923b3210c0..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/eql_mode.ts +++ /dev/null @@ -1,24 +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 { TextMode as TextModeInterface, acequire } from 'brace'; -import { EQL_MODE_NAME } from './constants'; -import { EQLHighlightRules } from './eql_highlight_rules'; - -type ITextMode = new () => TextModeInterface; - -const TextMode = acequire('ace/mode/text').Mode as ITextMode; - -export class EQLMode extends TextMode { - HighlightRules: typeof EQLHighlightRules; - $id: string; - constructor() { - super(); - this.$id = EQL_MODE_NAME; - this.HighlightRules = EQLHighlightRules; - } -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/index.tsx b/x-pack/plugins/apm/public/components/shared/eql_code_editor/index.tsx deleted file mode 100644 index 8a8cd1b0dff41..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/index.tsx +++ /dev/null @@ -1,54 +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 'brace/ext/language_tools'; -import { last } from 'lodash'; -import React, { useRef } from 'react'; -import { EuiCodeEditor } from '@kbn/es-ui-shared-plugin/public'; -import { EQLCodeEditorCompleter } from './completer'; -import { EQL_THEME_NAME } from './constants'; -import { EQLMode } from './eql_mode'; -import './theme'; -import { EQLCodeEditorProps } from './types'; - -export function EQLCodeEditor(props: EQLCodeEditorProps) { - const { - showGutter = false, - setOptions, - getSuggestions, - ...restProps - } = props; - - const completer = useRef(new EQLCodeEditorCompleter()); - const eqlMode = useRef(new EQLMode()); - - completer.current.setSuggestionCb(getSuggestions); - - const options = { - enableBasicAutocompletion: true, - enableLiveAutocompletion: true, - wrap: true, - ...setOptions, - }; - - return ( -
- { - if (editor) { - editor.editor.completers = [completer.current]; - } - }} - {...restProps} - /> -
- ); -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/lazily_loaded_code_editor.tsx b/x-pack/plugins/apm/public/components/shared/eql_code_editor/lazily_loaded_code_editor.tsx deleted file mode 100644 index 3432331aaa062..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/lazily_loaded_code_editor.tsx +++ /dev/null @@ -1,39 +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 { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui'; -import { once } from 'lodash'; -import React, { useEffect, useState } from 'react'; -import { EQLCodeEditorProps } from './types'; - -const loadEqlCodeEditor = once(() => import('.').then((m) => m.EQLCodeEditor)); - -type EQLCodeEditorComponentType = Awaited>; - -export function LazilyLoadedEQLCodeEditor(props: EQLCodeEditorProps) { - const [EQLCodeEditor, setEQLCodeEditor] = useState< - EQLCodeEditorComponentType | undefined - >(); - - useEffect(() => { - loadEqlCodeEditor().then((editor) => { - setEQLCodeEditor(() => { - return editor; - }); - }); - }, []); - - return EQLCodeEditor ? ( - - ) : ( - - - - - - ); -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/theme.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/theme.ts deleted file mode 100644 index 2dfbecf63f428..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/theme.ts +++ /dev/null @@ -1,91 +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 { euiLightVars as theme } from '@kbn/ui-theme'; -import { EQL_THEME_NAME } from './constants'; - -// @ts-expect-error -ace.define( - EQL_THEME_NAME, - ['require', 'exports', 'module', 'ace/lib/dom'], - function (acequire: any, exports: any) { - exports.isDark = false; - exports.cssClass = 'ace-eql'; - exports.cssText = ` - .ace-eql .ace_scroller { - background-color: transparent; - } - .ace-eql .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); - } - .ace-eql .ace_placeholder { - color: ${theme.euiTextSubduedColor}; - padding: 0; - } - .ace-eql .ace_sequence, - .ace-eql .ace_where, - .ace-eql .ace_until { - color: ${theme.euiColorDarkShade}; - } - .ace-eql .ace_sequence_item_start, - .ace-eql .ace_sequence_item_end, - .ace-eql .ace_operator, - .ace-eql .ace_logical_operator { - color: ${theme.euiColorMediumShade}; - } - .ace-eql .ace_value, - .ace-eql .ace_bool_condition { - color: ${theme.euiColorAccent}; - } - .ace-eql .ace_event_type, - .ace-eql .ace_field { - color: ${theme.euiColorPrimaryText}; - } - // .ace-eql .ace_gutter { - // color: #333; - // } - .ace-eql .ace_print-margin { - width: 1px; - background: #e8e8e8; - } - .ace-eql .ace_fold { - background-color: #6B72E6; - } - .ace-eql .ace_cursor { - color: black; - } - .ace-eql .ace_invisible { - color: rgb(191, 191, 191); - } - .ace-eql .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); - } - .ace-eql.ace_multiselect .ace_selection.ace_start { - box-shadow: 0 0 3px 0px white; - } - .ace-eql .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); - } - .ace-eql .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); - } - .ace-eql .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); - } - .ace-eql .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); - } - .ace-eql .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; - }`; - - const dom = acequire('../lib/dom'); - dom.importCssString(exports.cssText, exports.cssClass); - } -); diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/tokens.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/tokens.ts deleted file mode 100644 index 5525d8318afaf..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/tokens.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum EQLToken { - Sequence = 'eql.sequence', - SequenceItemStart = 'eql.sequence_item_start', - SequenceItemEnd = 'eql.sequence_item_end', - Until = 'eql.until', - Field = 'eql.field', - EventType = 'eql.event_type', - Where = 'eql.where', - BoolCondition = 'eql.bool_condition', - Operator = 'eql.operator', - Value = 'eql.value', - LogicalOperator = 'eql.logical_operator', - InOperator = 'eql.in_operator', - ValueListStart = 'eql.value_list_start', - ValueListItem = 'eql.value_list_item', - ValueListEnd = 'eql.value_list_end', - Comma = 'eql.comma', -} diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/types.ts b/x-pack/plugins/apm/public/components/shared/eql_code_editor/types.ts deleted file mode 100644 index 250cda155ea18..0000000000000 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/types.ts +++ /dev/null @@ -1,33 +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 { EuiCodeEditorProps } from '@kbn/es-ui-shared-plugin/public'; -import { EQLCodeEditorSuggestionType } from './constants'; - -export type EQLCodeEditorSuggestion = - | string - | { value: string; score?: number }; - -export type EQLCodeEditorSuggestionRequest = - | { - type: - | EQLCodeEditorSuggestionType.EventType - | EQLCodeEditorSuggestionType.Field; - } - | { type: EQLCodeEditorSuggestionType.Value; field: string; value: string }; - -export type EQLCodeEditorSuggestionCallback = ( - request: EQLCodeEditorSuggestionRequest -) => Promise; - -export type EQLCodeEditorProps = Omit< - EuiCodeEditorProps, - 'mode' | 'theme' | 'setOptions' -> & { - getSuggestions?: EQLCodeEditorSuggestionCallback; - setOptions?: EuiCodeEditorProps['setOptions']; -}; diff --git a/x-pack/plugins/apm/public/components/shared/monaco_code_editor/index.tsx b/x-pack/plugins/apm/public/components/shared/monaco_code_editor/index.tsx new file mode 100644 index 0000000000000..ce6beaec758ad --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/monaco_code_editor/index.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { CodeEditor } from '@kbn/kibana-react-plugin/public'; +import { monaco } from '@kbn/monaco'; + +interface Props { + value: string; + onChange: (val: string) => void; +} + +export function EQLCodeEditor({ value, onChange }: Props) { + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts index 9b50bdd350a3f..8f230ba94abe8 100644 --- a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts +++ b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.ts @@ -49,7 +49,7 @@ export const getSections = ({ basePath: IBasePath; location: Location; apmRouter: ApmRouter; - infraLocators: InfraLocators; + infraLocators?: InfraLocators; infraLinksAvailable: boolean; profilingLocators?: ProfilingLocators; rangeFrom: string; @@ -60,7 +60,7 @@ export const getSections = ({ const hostName = transaction.host?.hostname; const podId = transaction.kubernetes?.pod?.uid; const containerId = transaction.container?.id; - const { nodeLogsLocator, logsLocator } = infraLocators; + const { nodeLogsLocator, logsLocator } = infraLocators ?? {}; const time = Math.round(transaction.timestamp.us / 1000); const infraMetricsQuery = getInfraMetricsQuery(transaction); @@ -79,94 +79,102 @@ export const getSections = ({ )}`, }); - const podActions: Action[] = [ - { - key: 'podLogs', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showPodLogsLinkLabel', - { defaultMessage: 'Pod logs' } - ), - href: nodeLogsLocator.getRedirectUrl({ - nodeId: podId!, - nodeType: 'pod', - time, - }), - condition: !!podId, - }, - { - key: 'podMetrics', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showPodMetricsLinkLabel', - { defaultMessage: 'Pod metrics' } - ), - href: getInfraHref({ - app: 'metrics', - basePath, - path: `/link-to/pod-detail/${podId}`, - query: infraMetricsQuery, - }), - condition: !!podId, - }, - ]; + const podActions: Action[] = nodeLogsLocator + ? [ + { + key: 'podLogs', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showPodLogsLinkLabel', + { defaultMessage: 'Pod logs' } + ), + href: nodeLogsLocator.getRedirectUrl({ + nodeId: podId!, + nodeType: 'pod', + time, + }), + condition: !!podId, + }, + { + key: 'podMetrics', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showPodMetricsLinkLabel', + { defaultMessage: 'Pod metrics' } + ), + href: getInfraHref({ + app: 'metrics', + basePath, + path: `/link-to/pod-detail/${podId}`, + query: infraMetricsQuery, + }), + condition: !!podId, + }, + ] + : []; - const containerActions: Action[] = [ - { - key: 'containerLogs', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showContainerLogsLinkLabel', - { defaultMessage: 'Container logs' } - ), - href: nodeLogsLocator.getRedirectUrl({ - nodeId: containerId!, - nodeType: 'container', - time, - }), - condition: !!containerId, - }, - { - key: 'containerMetrics', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showContainerMetricsLinkLabel', - { defaultMessage: 'Container metrics' } - ), - href: getInfraHref({ - app: 'metrics', - basePath, - path: `/link-to/container-detail/${containerId}`, - query: infraMetricsQuery, - }), - condition: !!containerId, - }, - ]; + const containerActions: Action[] = nodeLogsLocator + ? [ + { + key: 'containerLogs', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showContainerLogsLinkLabel', + { defaultMessage: 'Container logs' } + ), + href: nodeLogsLocator.getRedirectUrl({ + nodeId: containerId!, + nodeType: 'container', + time, + }), + condition: !!containerId, + }, + { + key: 'containerMetrics', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showContainerMetricsLinkLabel', + { defaultMessage: 'Container metrics' } + ), + href: getInfraHref({ + app: 'metrics', + basePath, + path: `/link-to/container-detail/${containerId}`, + query: infraMetricsQuery, + }), + condition: !!containerId, + }, + ] + : []; const hostActions: Action[] = [ - { - key: 'hostLogs', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showHostLogsLinkLabel', - { defaultMessage: 'Host logs' } - ), - href: nodeLogsLocator.getRedirectUrl({ - nodeId: hostName!, - nodeType: 'host', - time, - }), - condition: !!hostName, - }, - { - key: 'hostMetrics', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showHostMetricsLinkLabel', - { defaultMessage: 'Host metrics' } - ), - href: getInfraHref({ - app: 'metrics', - basePath, - path: `/link-to/host-detail/${hostName}`, - query: infraMetricsQuery, - }), - condition: !!hostName, - }, + ...(nodeLogsLocator + ? [ + { + key: 'hostLogs', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showHostLogsLinkLabel', + { defaultMessage: 'Host logs' } + ), + href: nodeLogsLocator.getRedirectUrl({ + nodeId: hostName!, + nodeType: 'host', + time, + }), + condition: !!hostName, + }, + { + key: 'hostMetrics', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showHostMetricsLinkLabel', + { defaultMessage: 'Host metrics' } + ), + href: getInfraHref({ + app: 'metrics', + basePath, + path: `/link-to/host-detail/${hostName}`, + query: infraMetricsQuery, + }), + condition: !!hostName, + }, + ] + : []), { key: 'hostProfilingFlamegraph', label: i18n.translate( @@ -205,20 +213,22 @@ export const getSections = ({ }, ]; - const logActions: Action[] = [ - { - key: 'traceLogs', - label: i18n.translate( - 'xpack.apm.transactionActionMenu.showTraceLogsLinkLabel', - { defaultMessage: 'Trace logs' } - ), - href: logsLocator.getRedirectUrl({ - filter: `trace.id:"${transaction.trace.id}" OR (not trace.id:* AND "${transaction.trace.id}")`, - time, - }), - condition: true, - }, - ]; + const logActions: Action[] = logsLocator + ? [ + { + key: 'traceLogs', + label: i18n.translate( + 'xpack.apm.transactionActionMenu.showTraceLogsLinkLabel', + { defaultMessage: 'Trace logs' } + ), + href: logsLocator.getRedirectUrl({ + filter: `trace.id:"${transaction.trace.id}" OR (not trace.id:* AND "${transaction.trace.id}")`, + time, + }), + condition: true, + }, + ] + : []; const uptimeActions: Action[] = [ { @@ -273,7 +283,7 @@ export const getSections = ({ const sectionRecord: SectionRecord = { observability: [ - ...(infraLinksAvailable + ...(infraLinksAvailable && infraLocators ? [ { key: 'podDetails', @@ -329,19 +339,26 @@ export const getSections = ({ ] : []), - { - key: 'traceDetails', - title: i18n.translate('xpack.apm.transactionActionMenu.trace.title', { - defaultMessage: 'Trace details', - }), - subtitle: i18n.translate( - 'xpack.apm.transactionActionMenu.trace.subtitle', - { - defaultMessage: 'View trace logs to get further details.', - } - ), - actions: logActions, - }, + ...(infraLocators + ? [ + { + key: 'traceDetails', + title: i18n.translate( + 'xpack.apm.transactionActionMenu.trace.title', + { + defaultMessage: 'Trace details', + } + ), + subtitle: i18n.translate( + 'xpack.apm.transactionActionMenu.trace.subtitle', + { + defaultMessage: 'View trace logs to get further details.', + } + ), + actions: logActions, + }, + ] + : []), { key: 'statusDetails', title: i18n.translate('xpack.apm.transactionActionMenu.status.title', { diff --git a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/transaction_action_menu.tsx b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/transaction_action_menu.tsx index e888cec54f11a..14cae53ba28cf 100644 --- a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/transaction_action_menu.tsx +++ b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/transaction_action_menu.tsx @@ -125,11 +125,7 @@ function ActionMenuSections({ transaction?: Transaction; profilingLocators?: ProfilingLocators; }) { - const { - core, - uiActions, - infra: { locators }, - } = useApmPluginContext(); + const { core, uiActions, infra } = useApmPluginContext(); const location = useLocation(); const apmRouter = useApmRouter(); @@ -151,7 +147,7 @@ function ActionMenuSections({ basePath: core.http.basePath, location, apmRouter, - infraLocators: locators, + infraLocators: infra?.locators, infraLinksAvailable, profilingLocators, rangeFrom, diff --git a/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx b/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx index a04573a2d743e..66e7bfd514d86 100644 --- a/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/unified_search_bar/index.tsx @@ -22,7 +22,7 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWith import { OnRefreshChangeProps } from '@elastic/eui/src/components/date_picker/types'; import { UIProcessorEvent } from '../../../../common/processor_event'; import { TimePickerTimeDefaults } from '../date_picker/typings'; -import { ApmPluginStartDeps } from '../../../plugin'; +import { ApmPluginStartDeps, ApmServices } from '../../../plugin'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { useApmDataView } from '../../../hooks/use_apm_data_view'; import { useProcessorEvent } from '../../../hooks/use_processor_event'; @@ -36,6 +36,8 @@ import { toBoolean, toNumber, } from '../../../context/url_params_context/helpers'; +import { getKueryFields } from '../../../../common/utils/get_kuery_fields'; +import { SearchQueryActions } from '../../../services/telemetry'; export const DEFAULT_REFRESH_INTERVAL = 60000; @@ -138,11 +140,12 @@ export function UnifiedSearchBar({ }, core, } = useApmPluginContext(); - const { services } = useKibana(); + const { services } = useKibana(); const { data: { query: { queryString: queryStringService, timefilter: timeFilterService }, }, + telemetry, } = services; const { @@ -241,6 +244,7 @@ export function UnifiedSearchBar({ payload: { dateRange: TimeRange; query?: Query }, isUpdate?: boolean ) => { + let action = SearchQueryActions.Submit; if (dataView == null) { return; } @@ -256,6 +260,9 @@ export function UnifiedSearchBar({ if (!res) { return; } + const kueryFields = getKueryFields([ + fromKueryExpression(query?.query as string), + ]); const existingQueryParams = toQuery(location.search); const updatedQueryWithTime = { @@ -274,8 +281,14 @@ export function UnifiedSearchBar({ search: fromQuery(newSearchParams), }); } else { + action = SearchQueryActions.Refresh; onRefresh(); } + telemetry.reportSearchQuerySubmitted({ + kueryFields, + action, + timerange: `${rangeFrom} - ${rangeTo}`, + }); } catch (e) { console.log('Invalid kuery syntax'); // eslint-disable-line no-console } diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index 2447892d09e33..800fb6bf123cd 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -82,7 +82,7 @@ import { getLazyAPMPolicyCreateExtension } from './components/fleet_integration/ import { getLazyAPMPolicyEditExtension } from './components/fleet_integration/lazy_apm_policy_edit_extension'; import { featureCatalogueEntry } from './feature_catalogue_entry'; import { APMServiceDetailLocator } from './locator/service_detail_locator'; - +import { ITelemetryClient, TelemetryService } from './services/telemetry'; export type ApmPluginSetup = ReturnType; export type ApmPluginStart = void; @@ -106,6 +106,10 @@ export interface ApmPluginSetupDeps { profiling?: ProfilingPluginSetup; } +export interface ApmServices { + telemetry: ITelemetryClient; +} + export interface ApmPluginStartDeps { alerting?: AlertingPluginPublicStart; charts?: ChartsPluginStart; @@ -124,7 +128,7 @@ export interface ApmPluginStartDeps { fieldFormats?: FieldFormatsStart; security?: SecurityPluginStart; spaces?: SpacesPluginStart; - infra: InfraClientStartExports; + infra?: InfraClientStartExports; dataViews: DataViewsPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; storage: IStorageWrapper; @@ -181,16 +185,17 @@ const apmTutorialTitle = i18n.translate( ); export class ApmPlugin implements Plugin { + private telemetry: TelemetryService; constructor( private readonly initializerContext: PluginInitializerContext ) { this.initializerContext = initializerContext; + this.telemetry = new TelemetryService(); } public setup(core: CoreSetup, plugins: ApmPluginSetupDeps) { const config = this.initializerContext.config.get(); const pluginSetupDeps = plugins; - const { featureFlags } = config; if (pluginSetupDeps.home) { @@ -273,6 +278,8 @@ export class ApmPlugin implements Plugin { }; }; + this.telemetry.setup({ analytics: core.analytics }); + // Registers a status check callback for the tutorial to call and verify if the APM integration is installed on fleet. pluginSetupDeps.home?.tutorials.registerCustomStatusCheck( 'apm_fleet_server_status_check', @@ -332,6 +339,9 @@ export class ApmPlugin implements Plugin { const { observabilityRuleTypeRegistry } = plugins.observability; + // Register APM telemetry based events + const telemetry = this.telemetry.start(); + core.application.register({ id: 'apm', title: 'APM', @@ -388,7 +398,6 @@ export class ApmPlugin implements Plugin { import('./application'), core.getStartServices(), ]); - return renderApp({ coreStart, pluginsSetup: pluginSetupDeps, @@ -396,6 +405,9 @@ export class ApmPlugin implements Plugin { config, pluginsStart: pluginsStart as ApmPluginStartDeps, observabilityRuleTypeRegistry, + apmServices: { + telemetry, + }, }); }, }); diff --git a/x-pack/plugins/apm/public/components/shared/eql_code_editor/constants.ts b/x-pack/plugins/apm/public/services/telemetry/index.ts similarity index 55% rename from x-pack/plugins/apm/public/components/shared/eql_code_editor/constants.ts rename to x-pack/plugins/apm/public/services/telemetry/index.ts index 5fe28cb602c49..c7cc9eb577e38 100644 --- a/x-pack/plugins/apm/public/components/shared/eql_code_editor/constants.ts +++ b/x-pack/plugins/apm/public/services/telemetry/index.ts @@ -5,11 +5,6 @@ * 2.0. */ -export const EQL_MODE_NAME = 'ace/mode/eql'; -export const EQL_THEME_NAME = 'ace/theme/eql'; - -export enum EQLCodeEditorSuggestionType { - EventType = 'eventType', - Field = 'field', - Value = 'value', -} +export * from './telemetry_client'; +export * from './telemetry_service'; +export * from './types'; diff --git a/x-pack/plugins/apm/public/services/telemetry/telemetry_client.ts b/x-pack/plugins/apm/public/services/telemetry/telemetry_client.ts new file mode 100644 index 0000000000000..a462acaff24f8 --- /dev/null +++ b/x-pack/plugins/apm/public/services/telemetry/telemetry_client.ts @@ -0,0 +1,29 @@ +/* + * 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 { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; +import { + TelemetryEventTypes, + ITelemetryClient, + SearchQuerySubmittedParams, +} from './types'; + +export class TelemetryClient implements ITelemetryClient { + constructor(private analytics: AnalyticsServiceSetup) {} + + public reportSearchQuerySubmitted = ({ + kueryFields, + timerange, + action, + }: SearchQuerySubmittedParams) => { + this.analytics.reportEvent(TelemetryEventTypes.SEARCH_QUERY_SUBMITTED, { + kueryFields, + timerange, + action, + }); + }; +} diff --git a/x-pack/plugins/apm/public/services/telemetry/telemetry_events.ts b/x-pack/plugins/apm/public/services/telemetry/telemetry_events.ts new file mode 100644 index 0000000000000..e4f4878342133 --- /dev/null +++ b/x-pack/plugins/apm/public/services/telemetry/telemetry_events.ts @@ -0,0 +1,36 @@ +/* + * 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 { TelemetryEventTypes, TelemetryEvent } from './types'; + +const searchQuerySubmittedEventType: TelemetryEvent = { + eventType: TelemetryEventTypes.SEARCH_QUERY_SUBMITTED, + schema: { + kueryFields: { + type: 'array', + items: { + type: 'text', + _meta: { + description: 'The kuery fields used in the search', + }, + }, + }, + timerange: { + type: 'text', + _meta: { + description: 'The timerange of the search', + }, + }, + action: { + type: 'keyword', + _meta: { + description: 'The action performed (e.g., submit, refresh)', + }, + }, + }, +}; + +export const apmTelemetryEventBasedTypes = [searchQuerySubmittedEventType]; diff --git a/x-pack/plugins/apm/public/services/telemetry/telemetry_service.test.ts b/x-pack/plugins/apm/public/services/telemetry/telemetry_service.test.ts new file mode 100644 index 0000000000000..71068a042f6f1 --- /dev/null +++ b/x-pack/plugins/apm/public/services/telemetry/telemetry_service.test.ts @@ -0,0 +1,43 @@ +/* + * 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 { coreMock } from '@kbn/core/server/mocks'; +import { apmTelemetryEventBasedTypes } from './telemetry_events'; +import { TelemetryService } from './telemetry_service'; +import { SearchQueryActions, TelemetryEventTypes } from './types'; + +describe('TelemetryService', () => { + const service = new TelemetryService(); + + const mockCoreStart = coreMock.createSetup(); + service.setup({ analytics: mockCoreStart.analytics }); + + it('should register all events', () => { + expect(mockCoreStart.analytics.registerEventType).toHaveBeenCalledTimes( + apmTelemetryEventBasedTypes.length + ); + }); + + it('should report search query event with the properties', async () => { + const telemetry = service.start(); + + telemetry.reportSearchQuerySubmitted({ + kueryFields: ['service.name', 'span.id'], + action: SearchQueryActions.Submit, + timerange: 'now-15h-now', + }); + + expect(mockCoreStart.analytics.reportEvent).toHaveBeenCalledTimes(1); + expect(mockCoreStart.analytics.reportEvent).toHaveBeenCalledWith( + TelemetryEventTypes.SEARCH_QUERY_SUBMITTED, + { + kueryFields: ['service.name', 'span.id'], + action: SearchQueryActions.Submit, + timerange: 'now-15h-now', + } + ); + }); +}); diff --git a/x-pack/plugins/apm/public/services/telemetry/telemetry_service.ts b/x-pack/plugins/apm/public/services/telemetry/telemetry_service.ts new file mode 100644 index 0000000000000..7ff4228eb821c --- /dev/null +++ b/x-pack/plugins/apm/public/services/telemetry/telemetry_service.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; +import { + TelemetryServiceSetupParams, + ITelemetryClient, + TelemetryEventParams, +} from './types'; +import { apmTelemetryEventBasedTypes } from './telemetry_events'; +import { TelemetryClient } from './telemetry_client'; + +/** + * Service that interacts with the Core's analytics module + */ +export class TelemetryService { + constructor(private analytics: AnalyticsServiceSetup | null = null) {} + + public setup({ analytics }: TelemetryServiceSetupParams) { + this.analytics = analytics; + + apmTelemetryEventBasedTypes.forEach((eventConfig) => + analytics.registerEventType(eventConfig) + ); + } + + public start(): ITelemetryClient { + if (!this.analytics) { + throw new Error( + 'The TelemetryService.setup() method has not been invoked, be sure to call it during the plugin setup.' + ); + } + + return new TelemetryClient(this.analytics); + } +} diff --git a/x-pack/plugins/apm/public/services/telemetry/types.ts b/x-pack/plugins/apm/public/services/telemetry/types.ts new file mode 100644 index 0000000000000..11a8a6f225f27 --- /dev/null +++ b/x-pack/plugins/apm/public/services/telemetry/types.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RootSchema } from '@kbn/analytics-client'; +import type { AnalyticsServiceSetup } from '@kbn/core/public'; + +export interface TelemetryServiceSetupParams { + analytics: AnalyticsServiceSetup; +} + +export enum SearchQueryActions { + Submit = 'submit', + Refresh = 'refresh', +} +export interface SearchQuerySubmittedParams { + kueryFields: string[]; + timerange: string; + action: SearchQueryActions; +} + +export type TelemetryEventParams = SearchQuerySubmittedParams; + +export interface ITelemetryClient { + reportSearchQuerySubmitted(params: SearchQuerySubmittedParams): void; +} + +export enum TelemetryEventTypes { + SEARCH_QUERY_SUBMITTED = 'Search Query Submitted', +} + +export interface TelemetryEvent { + eventType: TelemetryEventTypes.SEARCH_QUERY_SUBMITTED; + schema: RootSchema; +} diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts index b5d361777b602..e43fda17a951c 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts @@ -931,7 +931,7 @@ export const apmSchema: MakeSchemaFrom = { type: 'long', _meta: { description: - 'Total number of shards for span and trasnaction indices', + 'Total number of shards for span and transaction indices', }, }, }, @@ -941,8 +941,7 @@ export const apmSchema: MakeSchemaFrom = { count: { type: 'long', _meta: { - description: - 'Total number of transaction and span documents overall', + description: 'Total number of metric documents overall', }, }, }, @@ -950,7 +949,8 @@ export const apmSchema: MakeSchemaFrom = { size_in_bytes: { type: 'long', _meta: { - description: 'Size of the index in byte units overall.', + description: + 'Size of the metric indicess in byte units overall.', }, }, }, diff --git a/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts b/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts index aec76a75fb944..24b76edb4d887 100644 --- a/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts +++ b/x-pack/plugins/apm/server/lib/helpers/get_infra_metric_indices.ts @@ -15,6 +15,9 @@ export async function getInfraMetricIndices({ infraPlugin: Required; savedObjectsClient: SavedObjectsClientContract; }): Promise { + if (!infraPlugin) { + throw new Error('Infra Plugin needs to be setup'); + } const infra = await infraPlugin.start(); const infraMetricIndices = await infra.getMetricIndices(savedObjectsClient); diff --git a/x-pack/plugins/apm/server/routes/infrastructure/route.ts b/x-pack/plugins/apm/server/routes/infrastructure/route.ts index 151ed589396ce..4117a43ce1e3f 100644 --- a/x-pack/plugins/apm/server/routes/infrastructure/route.ts +++ b/x-pack/plugins/apm/server/routes/infrastructure/route.ts @@ -5,6 +5,7 @@ * 2.0. */ import * as t from 'io-ts'; +import Boom from '@hapi/boom'; import { createApmServerRoute } from '../apm_routes/create_apm_server_route'; import { getApmEventClient } from '../../lib/helpers/get_apm_event_client'; import { environmentRt, kueryRt, rangeRt } from '../default_api_types'; @@ -29,9 +30,12 @@ const infrastructureRoute = createApmServerRoute({ hostNames: string[]; podNames: string[]; }> => { + if (!resources.plugins.infra) { + throw Boom.notFound(); + } + const apmEventClient = await getApmEventClient(resources); const infraMetricsClient = createInfraMetricsClient(resources); - const { params } = resources; const { diff --git a/x-pack/plugins/apm/server/routes/services/route.ts b/x-pack/plugins/apm/server/routes/services/route.ts index e13c7564a3fff..4ac0a37b3d10d 100644 --- a/x-pack/plugins/apm/server/routes/services/route.ts +++ b/x-pack/plugins/apm/server/routes/services/route.ts @@ -239,7 +239,6 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ options: { tags: ['access:apm'] }, handler: async (resources): Promise => { const apmEventClient = await getApmEventClient(resources); - const infraMetricsClient = createInfraMetricsClient(resources); const { params } = resources; const { serviceName } = params.path; const { start, end } = params.query; @@ -251,7 +250,8 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ end, }); - if (serviceMetadataDetails?.container?.ids) { + if (serviceMetadataDetails?.container?.ids && resources.plugins.infra) { + const infraMetricsClient = createInfraMetricsClient(resources); const containerMetadata = await getServiceOverviewContainerMetadata({ infraMetricsClient, containerIds: serviceMetadataDetails.container.ids, @@ -748,7 +748,6 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({ (ServiceInstanceContainerMetadataDetails | {}) > => { const apmEventClient = await getApmEventClient(resources); - const infraMetricsClient = createInfraMetricsClient(resources); const { params } = resources; const { serviceName, serviceNodeName } = params.path; const { start, end } = params.query; @@ -762,7 +761,11 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({ end, }); - if (serviceInstanceMetadataDetails?.container?.id) { + if ( + serviceInstanceMetadataDetails?.container?.id && + resources.plugins.infra + ) { + const infraMetricsClient = createInfraMetricsClient(resources); const containerMetadata = await getServiceInstanceContainerMetadata({ infraMetricsClient, containerId: serviceInstanceMetadataDetails.container.id, diff --git a/x-pack/plugins/apm/server/types.ts b/x-pack/plugins/apm/server/types.ts index 054861a082b44..ec3fb5b80e130 100644 --- a/x-pack/plugins/apm/server/types.ts +++ b/x-pack/plugins/apm/server/types.ts @@ -75,7 +75,7 @@ export interface APMPluginSetupDependencies { licensing: LicensingPluginSetup; observability: ObservabilityPluginSetup; ruleRegistry: RuleRegistryPluginSetupContract; - infra: InfraPluginSetup; + infra?: InfraPluginSetup; dataViews: {}; share: SharePluginSetup; diff --git a/x-pack/plugins/apm/tsconfig.json b/x-pack/plugins/apm/tsconfig.json index 1b06fa44a8dd5..fe805744ad11d 100644 --- a/x-pack/plugins/apm/tsconfig.json +++ b/x-pack/plugins/apm/tsconfig.json @@ -61,7 +61,6 @@ "@kbn/rule-data-utils", "@kbn/core-lifecycle-browser", "@kbn/shared-ux-page-kibana-template", - "@kbn/es-ui-shared-plugin", "@kbn/es-types", "@kbn/analytics", "@kbn/rison", @@ -96,7 +95,10 @@ "@kbn/unified-field-list", "@kbn/discover-plugin", "@kbn/observability-ai-assistant-plugin", - "@kbn/apm-data-access-plugin" + "@kbn/apm-data-access-plugin", + "@kbn/core-analytics-server", + "@kbn/analytics-client", + "@kbn/monaco" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx index 696c4b0cef011..419bf9a886f57 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/data_visualizer_stats_table.tsx @@ -485,7 +485,7 @@ export const DataVisualizerTable = ({ itemIdToExpandedRowMap={itemIdToExpandedRowMap} isSelectable={false} onTableChange={onTableChange} - data-test-subj={'dataVisualizerTable'} + data-test-subj={`dataVisualizerTable-${loading ? 'loading' : 'loaded'}`} rowProps={(item) => ({ 'data-test-subj': `dataVisualizerRow row-${item.fieldName}`, })} diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts index 87e88e3555b18..e4ba7c1ee9050 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts @@ -19,6 +19,7 @@ import { mlTimefilterRefresh$, useTimefilter } from '@kbn/ml-date-picker'; import useObservable from 'react-use/lib/useObservable'; import type { KibanaExecutionContext } from '@kbn/core-execution-context-common'; import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; import { useTimeBuckets } from '../../common/hooks/use_time_buckets'; import { DATA_VISUALIZER_GRID_EMBEDDABLE_TYPE } from '../embeddables/grid_embeddable/constants'; import { filterFields } from '../../common/components/fields_stats_grid/filter_fields'; @@ -61,8 +62,9 @@ export const useDataVisualizerGridData = ( savedRandomSamplerPreference?: RandomSamplerOption, onUpdate?: (params: Dictionary) => void ) => { + const loadIndexDataStartTime = useRef(window.performance.now()); const { services } = useDataVisualizerKibana(); - const { uiSettings, data, security, executionContext } = services; + const { uiSettings, data, security, executionContext, analytics } = services; const parentExecutionContext = useObservable(executionContext?.context$); @@ -499,6 +501,21 @@ export const useDataVisualizerGridData = ( // eslint-disable-next-line react-hooks/exhaustive-deps }, [overallStats, showEmptyFields]); + useEffect(() => { + if (combinedProgress === 100 && loadIndexDataStartTime.current !== undefined) { + const loadIndexDataDuration = window.performance.now() - loadIndexDataStartTime.current; + + // Set this to undefined so reporting the metric gets triggered only once. + loadIndexDataStartTime.current = undefined; + + reportPerformanceMetricEvent(analytics, { + eventName: 'dataVisualizerDataLoaded', + duration: loadIndexDataDuration, + }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [combinedProgress]); + const configs = useMemo( () => { const fieldStats = strategyResponse.fieldStats; diff --git a/x-pack/plugins/data_visualizer/public/plugin.ts b/x-pack/plugins/data_visualizer/public/plugin.ts index 38ebe18091e03..05b06c484322a 100644 --- a/x-pack/plugins/data_visualizer/public/plugin.ts +++ b/x-pack/plugins/data_visualizer/public/plugin.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CoreSetup, CoreStart } from '@kbn/core/public'; +import type { AnalyticsServiceStart, CoreSetup, CoreStart } from '@kbn/core/public'; import { ChartsPluginStart } from '@kbn/charts-plugin/public'; import type { CloudStart } from '@kbn/cloud-plugin/public'; import type { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; @@ -42,6 +42,7 @@ export interface DataVisualizerSetupDependencies { discover: DiscoverSetup; } export interface DataVisualizerStartDependencies { + analytics: AnalyticsServiceStart; data: DataPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; fileUpload: FileUploadPluginStart; diff --git a/x-pack/plugins/data_visualizer/tsconfig.json b/x-pack/plugins/data_visualizer/tsconfig.json index 5221ef48b5efc..5d50d27043b91 100644 --- a/x-pack/plugins/data_visualizer/tsconfig.json +++ b/x-pack/plugins/data_visualizer/tsconfig.json @@ -68,7 +68,8 @@ "@kbn/ml-string-hash", "@kbn/ml-random-sampler-utils", "@kbn/data-service", - "@kbn/core-notifications-browser" + "@kbn/core-notifications-browser", + "@kbn/ebt-tools" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.test.tsx new file mode 100644 index 0000000000000..215860c9d475f --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.test.tsx @@ -0,0 +1,96 @@ +/* + * 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 type { AgentPolicy, PackagePolicy } from '../../../../../../common/types'; + +import { createFleetTestRendererMock } from '../../../../../mock'; + +import { AgentPolicyActionMenu } from './actions_menu'; + +describe('AgentPolicyActionMenu', () => { + const baseAgentPolicy: AgentPolicy = { + id: 'test', + is_managed: false, + is_protected: false, + name: 'test-agent-policy', + namespace: 'default', + package_policies: [] as PackagePolicy[], + revision: 1, + status: 'active', + updated_at: new Date().toISOString(), + updated_by: 'test', + }; + + describe('delete action', () => { + it('is enabled when a managed package policy is not present', () => { + const testRenderer = createFleetTestRendererMock(); + const agentPolicyWithStandardPackagePolicy: AgentPolicy = { + ...baseAgentPolicy, + package_policies: [ + { + id: 'test-package-policy', + is_managed: false, + created_at: new Date().toISOString(), + created_by: 'test', + enabled: true, + inputs: [], + name: 'test-package-policy', + namespace: 'default', + policy_id: 'test', + revision: 1, + updated_at: new Date().toISOString(), + updated_by: 'test', + }, + ], + }; + + const result = testRenderer.render( + + ); + + const agentActionsButton = result.getByTestId('agentActionsBtn'); + agentActionsButton.click(); + + const deleteButton = result.getByTestId('agentPolicyActionMenuDeleteButton'); + expect(deleteButton).not.toHaveAttribute('disabled'); + }); + + it('is disabled when a managed package policy is present', () => { + const testRenderer = createFleetTestRendererMock(); + const agentPolicyWithManagedPackagePolicy: AgentPolicy = { + ...baseAgentPolicy, + package_policies: [ + { + id: 'test-package-policy', + is_managed: true, + created_at: new Date().toISOString(), + created_by: 'test', + enabled: true, + inputs: [], + name: 'test-package-policy', + namespace: 'default', + policy_id: 'test', + revision: 1, + updated_at: new Date().toISOString(), + updated_by: 'test', + }, + ], + }; + + const result = testRenderer.render( + + ); + + const agentActionsButton = result.getByTestId('agentActionsBtn'); + agentActionsButton.click(); + + const deleteButton = result.getByTestId('agentPolicyActionMenuDeleteButton'); + expect(deleteButton).toHaveAttribute('disabled'); + }); + }); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx index 16efc77f25fe1..fa97cf08f6d91 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/actions_menu.tsx @@ -18,10 +18,11 @@ import { } from '../../../components'; import { FLEET_SERVER_PACKAGE } from '../../../constants'; -import { ExperimentalFeaturesService } from '../../../../../services/experimental_features'; +import { policyHasFleetServer, ExperimentalFeaturesService } from '../../../services'; import { AgentPolicyYamlFlyout } from './agent_policy_yaml_flyout'; import { AgentPolicyCopyProvider } from './agent_policy_copy_provider'; +import { AgentPolicyDeleteProvider } from './agent_policy_delete_provider'; export const AgentPolicyActionMenu = memo<{ agentPolicy: AgentPolicy; @@ -55,6 +56,10 @@ export const AgentPolicyActionMenu = memo<{ [agentPolicy] ); + const hasManagedPackagePolicy = + 'package_policies' in agentPolicy && + agentPolicy?.package_policies?.some((packagePolicy) => packagePolicy.is_managed); + const [isContextMenuOpen, setIsContextMenuOpen] = useState(false); const onContextMenuChange = useCallback( @@ -129,6 +134,35 @@ export const AgentPolicyActionMenu = memo<{ defaultMessage="Duplicate policy" /> , + + {(deleteAgentPolicyPrompt) => ( + + ) : undefined + } + icon="trash" + onClick={() => { + deleteAgentPolicyPrompt(agentPolicy.id); + }} + > + + + )} + , ]; if (agentTamperProtectionEnabled && !agentPolicy?.is_managed) { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx index 49288da22c935..686934377fdf3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx @@ -13,7 +13,6 @@ import { EuiComboBox, EuiIconTip, EuiCheckboxGroup, - EuiButton, EuiLink, EuiFieldNumber, EuiFieldText, @@ -41,10 +40,9 @@ import { useStartServices, useConfig, useGetAgentPolicies, useLicense } from '.. import { AgentPolicyPackageBadge } from '../../../../components'; import { UninstallCommandFlyout } from '../../../../../../components'; -import { AgentPolicyDeleteProvider } from '../agent_policy_delete_provider'; import type { ValidationResults } from '../agent_policy_validation'; -import { ExperimentalFeaturesService, policyHasFleetServer } from '../../../../services'; +import { ExperimentalFeaturesService } from '../../../../services'; import { policyHasEndpointSecurity as hasElasticDefend } from '../../../../../../../common/services'; @@ -60,7 +58,6 @@ interface Props { updateAgentPolicy: (u: Partial) => void; validation: ValidationResults; isEditing?: boolean; - onDelete?: () => void; } export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = ({ @@ -68,7 +65,6 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = updateAgentPolicy, validation, isEditing = false, - onDelete = () => {}, }) => { const { docLinks } = useStartServices(); const config = useConfig(); @@ -101,10 +97,6 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = // agent monitoring checkbox group can appear multiple times in the DOM, ids have to be unique to work correctly const monitoringCheckboxIdSuffix = Date.now(); - const hasManagedPackagePolicy = - 'package_policies' in agentPolicy && - agentPolicy?.package_policies?.some((packagePolicy) => packagePolicy.is_managed); - const { agentTamperProtectionEnabled } = ExperimentalFeaturesService.get(); const licenseService = useLicense(); const [isUninstallCommandFlyoutOpen, setIsUninstallCommandFlyoutOpen] = useState(false); @@ -725,57 +717,7 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = /> - {isEditing && 'id' in agentPolicy && !agentPolicy.is_managed ? ( - - - - } - description={ - <> - - - - {(deleteAgentPolicyPrompt) => { - return ( - - ) : undefined - } - > - deleteAgentPolicyPrompt(agentPolicy.id!, onDelete)} - isDisabled={hasManagedPackagePolicy} - > - - - - ); - }} - - - } - /> - ) : null} + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx index 7abeb00dfb65d..b3f06abf72e12 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_create_inline.tsx @@ -189,7 +189,6 @@ export const AgentPolicyCreateInlineForm: React.FunctionComponent = ({ updateAgentPolicy={updateNewAgentPolicy} validation={validation} isEditing={false} - onDelete={() => {}} /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx index e4720bad5a091..e3bf5fb72dfe3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx @@ -36,7 +36,6 @@ interface Props { updateSysMonitoring: (newValue: boolean) => void; validation: ValidationResults; isEditing?: boolean; - onDelete?: () => void; } export const AgentPolicyForm: React.FunctionComponent = ({ @@ -46,7 +45,6 @@ export const AgentPolicyForm: React.FunctionComponent = ({ updateSysMonitoring, validation, isEditing = false, - onDelete = () => {}, }) => { const generalSettingsWrapper = (children: JSX.Element[]) => ( = ({ updateAgentPolicy={updateAgentPolicy} validation={validation} isEditing={isEditing} - onDelete={onDelete} /> @@ -122,7 +119,6 @@ export const AgentPolicyForm: React.FunctionComponent = ({ updateAgentPolicy={updateAgentPolicy} validation={validation} isEditing={isEditing} - onDelete={onDelete} /> )} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_integration.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_integration.tsx index da7ca2f3e18ec..759c85b54a181 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_integration.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_integration.tsx @@ -102,7 +102,6 @@ export const AgentPolicyIntegrationForm: React.FunctionComponent = ({ updateAgentPolicy={updateAgentPolicy} validation={validation} isEditing={isEditing} - onDelete={onDelete} /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx index 0728a3d369d87..eb77e63fd2c82 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx @@ -6,7 +6,6 @@ */ import React, { memo, useMemo, useState } from 'react'; -import { useHistory } from 'react-router-dom'; import styled from 'styled-components'; import { pick } from 'lodash'; import { @@ -22,7 +21,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import type { AgentPolicy } from '../../../../../types'; import { - useLink, useStartServices, useAuthz, sendUpdateAgentPolicy, @@ -69,8 +67,6 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( const { agents: { enabled: isFleetEnabled }, } = useConfig(); - const history = useHistory(); - const { getPath } = useLink(); const hasFleetAllPrivileges = useAuthz().fleet.all; const refreshAgentPolicy = useAgentPolicyRefresh(); const [agentPolicy, setAgentPolicy] = useState({ @@ -173,9 +169,6 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( updateSysMonitoring={(newValue) => setWithSysMonitoring(newValue)} validation={validation} isEditing={true} - onDelete={() => { - history.push(getPath('policies_list')); - }} /> {hasChanges ? ( diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.test.ts index 7458f49ed826d..755b472a06771 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.test.ts @@ -47,6 +47,35 @@ describe('test transform_utils', () => { ]); }); + test('return transform alias settings when input is an array of object', () => { + const aliasSettings = [ + { alias: 'alias1', move_on_creation: true }, + { alias: 'alias2' }, + { alias: 'alias3', move_on_creation: false }, + ]; + expect(getDestinationIndexAliases(aliasSettings)).toStrictEqual([ + { alias: 'alias1', move_on_creation: true }, + { alias: 'alias2', move_on_creation: false }, + { alias: 'alias3', move_on_creation: false }, + ]); + + expect( + getDestinationIndexAliases([ + ...aliasSettings, + undefined, + {}, + { invalid_object: true }, + null, + 'alias3.all', + ]) + ).toStrictEqual([ + { alias: 'alias1', move_on_creation: true }, + { alias: 'alias2', move_on_creation: false }, + { alias: 'alias3', move_on_creation: false }, + { alias: 'alias3.all', move_on_creation: false }, + ]); + }); + test('return transform alias settings when input is a string', () => { expect(getDestinationIndexAliases('alias1.latest')).toStrictEqual([ { alias: 'alias1.latest', move_on_creation: true }, diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.ts index a0dac305e23a8..8a24e6fb78149 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform_utils.ts @@ -13,16 +13,15 @@ interface TransformAliasSetting { // ensuring that the alias points at only one index (i.e.: the destination index of the current transform). move_on_creation?: boolean; } +function isTransformAliasSetting(arg: unknown): arg is TransformAliasSetting { + return isPopulatedObject(arg, ['alias']) && typeof arg.alias === 'string'; +} export const getDestinationIndexAliases = (aliasSettings: unknown): TransformAliasSetting[] => { let aliases: TransformAliasSetting[] = []; if (!aliasSettings) return aliases; - // Can be in form of { - // 'alias1': null, - // 'alias2': { move_on_creation: false } - // } if (isPopulatedObject(aliasSettings)) { Object.keys(aliasSettings).forEach((alias) => { if (aliasSettings.hasOwnProperty(alias) && typeof alias === 'string') { @@ -31,11 +30,16 @@ export const getDestinationIndexAliases = (aliasSettings: unknown): TransformAli } }); } + if (Array.isArray(aliasSettings)) { aliases = aliasSettings.reduce((acc, alias) => { if (typeof alias === 'string') { acc.push({ alias, move_on_creation: alias.endsWith('.latest') ? true : false }); } + + if (isTransformAliasSetting(alias)) { + acc.push({ alias: alias.alias, move_on_creation: alias.move_on_creation ?? false }); + } return acc; }, []); } diff --git a/x-pack/plugins/grokdebugger/server/index.js b/x-pack/plugins/grokdebugger/server/index.js index 360d42321afaa..418959762f9ab 100644 --- a/x-pack/plugins/grokdebugger/server/index.js +++ b/x-pack/plugins/grokdebugger/server/index.js @@ -5,8 +5,10 @@ * 2.0. */ -import { Plugin } from './plugin'; +import { Plugin, config } from './plugin'; -export function plugin(initializerContext) { - return new Plugin(initializerContext); +export function plugin() { + return new Plugin(); } + +export { config }; diff --git a/x-pack/plugins/grokdebugger/server/plugin.js b/x-pack/plugins/grokdebugger/server/plugin.js index 58644e2faa2a4..f591608d5bed2 100644 --- a/x-pack/plugins/grokdebugger/server/plugin.js +++ b/x-pack/plugins/grokdebugger/server/plugin.js @@ -5,13 +5,15 @@ * 2.0. */ -import { schema } from '@kbn/config-schema'; +import { offeringBasedSchema, schema } from '@kbn/config-schema'; import { KibanaFramework } from './lib/kibana_framework'; import { registerGrokdebuggerRoutes } from './routes/api/grokdebugger'; export const config = { schema: schema.object({ - enabled: schema.boolean({ defaultValue: true }), + enabled: offeringBasedSchema({ + serverless: schema.boolean({ defaultValue: true }), + }), }), }; diff --git a/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx index 0e485de1e7775..97d092fc36b26 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx @@ -16,10 +16,14 @@ import { uiSettingsServiceMock, themeServiceMock, executionContextServiceMock, + applicationServiceMock, + fatalErrorsServiceMock, + httpServiceMock, } from '@kbn/core/public/mocks'; import { GlobalFlyout } from '@kbn/es-ui-shared-plugin/public'; +import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/server/mocks'; import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public'; - +import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; import { settingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; import { MAJOR_VERSION } from '../../../common'; import { AppContextProvider } from '../../../public/application/app_context'; @@ -52,15 +56,23 @@ setUiMetricService(services.uiMetricService); const appDependencies = { services, core: { - getUrlForApp: () => {}, + getUrlForApp: applicationServiceMock.createStartContract().getUrlForApp, executionContext: executionContextServiceMock.createStartContract(), + http: httpServiceMock.createSetupContract(), + application: applicationServiceMock.createStartContract(), + fatalErrors: fatalErrorsServiceMock.createSetupContract(), + }, + plugins: { + usageCollection: usageCollectionPluginMock.createSetupContract(), + isFleetEnabled: false, + share: sharePluginMock.createStartContract(), }, - plugins: {}, // Default stateful configuration config: { enableLegacyTemplates: true, enableIndexActions: true, enableIndexStats: true, + enableIndexDetailsPage: false, }, } as any; diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.helpers.ts index a92df925be1a6..24cf015e3918d 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.helpers.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.helpers.ts @@ -76,6 +76,11 @@ export interface IndexDetailsPageTestBed extends TestBed { indexStatsTabExists: () => boolean; isWarningDisplayed: () => boolean; }; + overview: { + indexStatsContentExists: () => boolean; + indexDetailsContentExists: () => boolean; + addDocCodeBlockExists: () => boolean; + }; }; } @@ -116,6 +121,18 @@ export const setup = async ( return find('indexDetailsContent').text(); }; + const overview = { + indexStatsContentExists: () => { + return exists('overviewTabIndexStats'); + }, + indexDetailsContentExists: () => { + return exists('overviewTabIndexDetails'); + }, + addDocCodeBlockExists: () => { + return exists('codeBlockControlsPanel'); + }, + }; + const mappings = { getCodeBlockContent: () => { return find('indexDetailsMappingsCodeBlock').text(); @@ -258,6 +275,7 @@ export const setup = async ( getActiveTabContent, mappings, settings, + overview, clickBackToIndicesButton, discoverLinkExists, contextMenu, diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx index 62fe47b2529d4..78a9369222477 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx @@ -186,9 +186,24 @@ describe('', () => { expect(header).toEqual(testIndexName); }); - it('defaults to overview tab', () => { - const tabContent = testBed.actions.getActiveTabContent(); - expect(tabContent).toEqual('Overview'); + describe('Overview tab', () => { + it('renders index details', () => { + expect(testBed.actions.overview.indexDetailsContentExists()).toBe(true); + expect(testBed.actions.overview.indexStatsContentExists()).toBe(true); + expect(testBed.actions.overview.addDocCodeBlockExists()).toBe(true); + }); + + it('hides index stats from detail panels if enableIndexStats===false', async () => { + await act(async () => { + testBed = await setup(httpSetup, { + config: { enableIndexStats: false }, + }); + }); + testBed.component.update(); + + expect(testBed.actions.overview.indexDetailsContentExists()).toBe(true); + expect(testBed.actions.overview.indexStatsContentExists()).toBe(false); + }); }); it('documents tab', async () => { diff --git a/x-pack/plugins/index_management/kibana.jsonc b/x-pack/plugins/index_management/kibana.jsonc index 47171db66450d..250fde111d29b 100644 --- a/x-pack/plugins/index_management/kibana.jsonc +++ b/x-pack/plugins/index_management/kibana.jsonc @@ -19,7 +19,8 @@ "optionalPlugins": [ "security", "usageCollection", - "fleet" + "fleet", + "cloud" ], "requiredBundles": [ "kibanaReact", diff --git a/x-pack/plugins/index_management/public/application/app_context.tsx b/x-pack/plugins/index_management/public/application/app_context.tsx index fcedba9a1b941..f23baeb342c00 100644 --- a/x-pack/plugins/index_management/public/application/app_context.tsx +++ b/x-pack/plugins/index_management/public/application/app_context.tsx @@ -18,10 +18,12 @@ import { DocLinksStart, IUiSettingsClient, ExecutionContextStart, + HttpSetup, } from '@kbn/core/public'; -import { SharePluginStart } from '@kbn/share-plugin/public'; +import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { SettingsStart } from '@kbn/core-ui-settings-browser'; +import type { CloudSetup } from '@kbn/cloud-plugin/public'; import { ExtensionsService } from '../services'; import { UiMetricService, NotificationService, HttpService } from './services'; @@ -33,10 +35,13 @@ export interface AppDependencies { getUrlForApp: ApplicationStart['getUrlForApp']; executionContext: ExecutionContextStart; application: ApplicationStart; + http: HttpSetup; }; plugins: { usageCollection: UsageCollectionSetup; isFleetEnabled: boolean; + share: SharePluginStart; + cloud?: CloudSetup; }; services: { uiMetricService: UiMetricService; diff --git a/x-pack/plugins/index_management/public/application/mount_management_section.ts b/x-pack/plugins/index_management/public/application/mount_management_section.ts index df723e21ae287..10caf3bcc5a57 100644 --- a/x-pack/plugins/index_management/public/application/mount_management_section.ts +++ b/x-pack/plugins/index_management/public/application/mount_management_section.ts @@ -11,6 +11,7 @@ import { CoreSetup, CoreStart } from '@kbn/core/public'; import { ManagementAppMountParams } from '@kbn/management-plugin/public'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; +import { CloudSetup } from '@kbn/cloud-plugin/public'; import { UIM_APP_NAME } from '../../common/constants'; import { PLUGIN } from '../../common/constants/plugin'; import { ExtensionsService } from '../services'; @@ -57,6 +58,7 @@ export async function mountManagementSection({ enableLegacyTemplates = true, enableIndexDetailsPage = false, enableIndexStats = true, + cloud, }: { coreSetup: CoreSetup; usageCollection: UsageCollectionSetup; @@ -68,6 +70,7 @@ export async function mountManagementSection({ enableLegacyTemplates?: boolean; enableIndexDetailsPage?: boolean; enableIndexStats?: boolean; + cloud?: CloudSetup; }) { const { element, setBreadcrumbs, history, theme$ } = params; const [core, startDependencies] = await coreSetup.getStartServices(); @@ -79,6 +82,7 @@ export async function mountManagementSection({ uiSettings, executionContext, settings, + http, } = core; const { url } = startDependencies.share; @@ -98,10 +102,13 @@ export async function mountManagementSection({ getUrlForApp: application.getUrlForApp, executionContext, application, + http, }, plugins: { usageCollection, isFleetEnabled, + share: startDependencies.share, + cloud, }, services: { httpService, diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page.tsx b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page.tsx index 17cbeb7649449..33378fc138c04 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page.tsx @@ -30,6 +30,7 @@ import { DetailsPageError } from './details_page_error'; import { ManageIndexButton } from './manage_index_button'; import { DetailsPageStats } from './details_page_stats'; import { DetailsPageMappings } from './details_page_mappings'; +import { DetailsPageOverview } from './details_page_overview'; import { DetailsPageSettings } from './details_page_settings'; export enum IndexDetailsSection { @@ -189,7 +190,7 @@ export const DetailsPage: React.FunctionComponent<
Overview
} + render={() => } /> = ({ indexDetails }) => { + const { + name, + status, + documents, + documents_deleted: documentsDeleted, + primary, + replica, + aliases, + } = indexDetails; + const { config, core, plugins } = useAppContext(); + + const [selectedLanguage, setSelectedLanguage] = useState(curlDefinition); + + const elasticsearchURL = useMemo(() => { + return plugins.cloud?.elasticsearchUrl ?? 'https://your_deployment_url'; + }, [plugins.cloud]); + + const codeSnippetArguments: LanguageDefinitionSnippetArguments = { + url: elasticsearchURL, + apiKey: 'your_api_key', + indexName: name, + }; + + return ( + <> + + {config.enableIndexStats && ( + + + + + + + + + + + + + + + + )} + + + + + {primary && ( + + + + )} + + {replica && ( + + + + )} + + + + + + + + + + + + + + +

+ {i18n.translate('xpack.idxMgmt.indexDetails.overviewTab.addMoreDataTitle', { + defaultMessage: 'Add more data to this index', + })} +

+
+ + + + + +

+ {i18n.translate('xpack.idxMgmt.indexDetails.overviewTab.addMoreDataDescription', { + defaultMessage: + 'Keep adding more documents to your already created index using the API', + })} +

+
+
+
+ + + + +
+ + ); +}; diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/index.ts b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/index.ts new file mode 100644 index 0000000000000..e3f5b65bdcadf --- /dev/null +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/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 { DetailsPageOverview } from './details_page_overview'; diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/languages.ts b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/languages.ts new file mode 100644 index 0000000000000..838efe28580c0 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_overview/languages.ts @@ -0,0 +1,179 @@ +/* + * 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 { Languages, LanguageDefinition } from '@kbn/search-api-panels'; +import { i18n } from '@kbn/i18n'; + +const INDEX_NAME_PLACEHOLDER = 'index_name'; + +export const curlDefinition: LanguageDefinition = { + id: Languages.CURL, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.cURL', { + defaultMessage: 'cURL', + }), + iconType: 'curl.svg', + languageStyling: 'shell', + ingestDataIndex: ({ apiKey, indexName, url }) => `curl -X POST ${url}/_bulk?pretty \\ + -H "Authorization: ApiKey ${apiKey}" \\ + -H "Content-Type: application/json" \\ + -d' +{ "index" : { "_index" : "${indexName ?? INDEX_NAME_PLACEHOLDER}" } } +{"name": "foo", "title": "bar" } +`, +}; + +export const javascriptDefinition: LanguageDefinition = { + id: Languages.JAVASCRIPT, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.javascript', { + defaultMessage: 'JavaScript', + }), + iconType: 'javascript.svg', + ingestDataIndex: ({ + apiKey, + url, + indexName, + }) => `const { Client } = require('@elastic/elasticsearch'); +const client = new Client({ + node: '${url}', + auth: { + apiKey: '${apiKey}' + } +}); +const dataset = [ + {'name': 'foo', 'title': 'bar'}, +]; + +// Index with the bulk helper +const result = await client.helpers.bulk({ + datasource: dataset, + onDocument (doc) { + return { index: { _index: '${indexName ?? 'index_name'}' }}; + } +}); +console.log(result); +`, +}; + +export const goDefinition: LanguageDefinition = { + id: Languages.GO, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.go', { + defaultMessage: 'Go', + }), + iconType: 'go.svg', + ingestDataIndex: ({ apiKey, url, indexName }) => `import ( + "context" + "fmt" + "log" + "strings" +​ + "github.com/elastic/elasticsearch-serverless-go" +) +​ +func main() { + cfg := elasticsearch.Config{ + Address: "${url}", + APIKey: "${apiKey}", + } + es, err := elasticsearch.NewClient(cfg) + if err != nil { + log.Fatalf("Error creating the client: %s", err) + } + res, err := es.Bulk(). + Index("${indexName}"). + Raw(strings.NewReader(\` +{ "index": { "_id": "1"}} +{"name": "foo", "title": "bar"}\n\`)). + Do(context.Background()) + ​ + fmt.Println(res, err) +}`, +}; + +export const pythonDefinition: LanguageDefinition = { + id: Languages.PYTHON, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.python', { + defaultMessage: 'Python', + }), + iconType: 'python.svg', + ingestDataIndex: ({ apiKey, url, indexName }) => `from elasticsearch import Elasticsearch + +client = Elasticsearch( + "${url}", + api_key="${apiKey}" +) + +documents = [ + {"index": {"_index": "${indexName ?? INDEX_NAME_PLACEHOLDER}"}}, + {"name": "foo", "title": "bar"}, +] + +client.bulk(operations=documents) +`, +}; + +export const phpDefinition: LanguageDefinition = { + id: Languages.PHP, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.php', { + defaultMessage: 'PHP', + }), + iconType: 'php.svg', + ingestDataIndex: ({ apiKey, url, indexName }) => `$client = ClientBuilder::create() + ->setHosts(['${url}']) + ->setApiKey('${apiKey}') + ->build(); + +$params = [ +'body' => [ +[ +'index' => [ +'_index' => '${indexName ?? INDEX_NAME_PLACEHOLDER}', +'_id' => '1', +], +], +[ +'name' => 'foo', +'title' => 'bar', +], +], +]; + +$response = $client->bulk($params); +echo $response->getStatusCode(); +echo (string) $response->getBody(); +`, +}; + +export const rubyDefinition: LanguageDefinition = { + id: Languages.RUBY, + name: i18n.translate('xpack.idxMgmt.indexDetails.languages.ruby', { + defaultMessage: 'Ruby', + }), + iconType: 'ruby.svg', + ingestDataIndex: ({ apiKey, url, indexName }) => `client = ElasticsearchServerless::Client.new( + api_key: '${apiKey}', + url: '${url}' +) + +documents = [ + { index: { _index: '${ + indexName ?? INDEX_NAME_PLACEHOLDER + }', data: {name: "foo", "title": "bar"} } }, +] +client.bulk(body: documents) +`, +}; + +const languageDefinitionRecords: Partial> = { + [Languages.CURL]: curlDefinition, + [Languages.PYTHON]: pythonDefinition, + [Languages.JAVASCRIPT]: javascriptDefinition, + [Languages.PHP]: phpDefinition, + [Languages.GO]: goDefinition, + [Languages.RUBY]: rubyDefinition, +}; + +export const languageDefinitions: LanguageDefinition[] = Object.values(languageDefinitionRecords); diff --git a/x-pack/plugins/index_management/public/assets/curl.svg b/x-pack/plugins/index_management/public/assets/curl.svg new file mode 100644 index 0000000000000..e922b12283f7d --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/curl.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/x-pack/plugins/index_management/public/assets/go.svg b/x-pack/plugins/index_management/public/assets/go.svg new file mode 100644 index 0000000000000..715978f645771 --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/go.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/x-pack/plugins/index_management/public/assets/javascript.svg b/x-pack/plugins/index_management/public/assets/javascript.svg new file mode 100644 index 0000000000000..6d514f5448c50 --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/javascript.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/x-pack/plugins/index_management/public/assets/php.svg b/x-pack/plugins/index_management/public/assets/php.svg new file mode 100644 index 0000000000000..df4ae0ccc1863 --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/php.svg @@ -0,0 +1,3 @@ + + + diff --git a/x-pack/plugins/index_management/public/assets/python.svg b/x-pack/plugins/index_management/public/assets/python.svg new file mode 100644 index 0000000000000..bd8a27810c575 --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/python.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/index_management/public/assets/ruby.svg b/x-pack/plugins/index_management/public/assets/ruby.svg new file mode 100644 index 0000000000000..55d2d7eea4f45 --- /dev/null +++ b/x-pack/plugins/index_management/public/assets/ruby.svg @@ -0,0 +1,3 @@ + + + diff --git a/x-pack/plugins/index_management/public/plugin.ts b/x-pack/plugins/index_management/public/plugin.ts index 401c37770fd79..33006b7b21cde 100644 --- a/x-pack/plugins/index_management/public/plugin.ts +++ b/x-pack/plugins/index_management/public/plugin.ts @@ -45,7 +45,7 @@ export class IndexMgmtUIPlugin { } = this.ctx.config.get(); if (isIndexManagementUiEnabled) { - const { fleet, usageCollection, management } = plugins; + const { fleet, usageCollection, management, cloud } = plugins; const kibanaVersion = new SemVer(this.ctx.env.packageInfo.version); management.sections.section.data.registerApp({ id: PLUGIN.id, @@ -64,6 +64,7 @@ export class IndexMgmtUIPlugin { enableLegacyTemplates, enableIndexDetailsPage, enableIndexStats, + cloud, }); }, }); diff --git a/x-pack/plugins/index_management/public/types.ts b/x-pack/plugins/index_management/public/types.ts index 7ca83e70b5e0f..78519e9452402 100644 --- a/x-pack/plugins/index_management/public/types.ts +++ b/x-pack/plugins/index_management/public/types.ts @@ -7,7 +7,8 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import { ManagementSetup } from '@kbn/management-plugin/public'; -import { SharePluginStart } from '@kbn/share-plugin/public'; +import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; +import { CloudSetup } from '@kbn/cloud-plugin/public'; import { ExtensionsSetup, PublicApiServiceSetup } from './services'; export interface IndexManagementPluginSetup { @@ -19,6 +20,8 @@ export interface SetupDependencies { fleet?: unknown; usageCollection: UsageCollectionSetup; management: ManagementSetup; + share: SharePluginSetup; + cloud?: CloudSetup; } export interface StartDependencies { diff --git a/x-pack/plugins/index_management/tsconfig.json b/x-pack/plugins/index_management/tsconfig.json index 2df96ae23c47a..90514823c5ac0 100644 --- a/x-pack/plugins/index_management/tsconfig.json +++ b/x-pack/plugins/index_management/tsconfig.json @@ -36,6 +36,8 @@ "@kbn/core-ui-settings-browser", "@kbn/kibana-utils-plugin", "@kbn/core-http-browser", + "@kbn/search-api-panels", + "@kbn/cloud-plugin", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx index 340c00b9f48cc..6375a5032d365 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx @@ -19,8 +19,8 @@ import { EuiToolTip, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { TimeUnitChar } from '@kbn/observability-plugin/common/utils/formatters/duration'; import { ForLastExpression, @@ -149,8 +149,8 @@ export const Expressions: React.FC = (props) => { ); const onFilterChange = useCallback( - (filter: any) => { - setRuleParams('filterQueryText', filter || ''); + (filter: string) => { + setRuleParams('filterQueryText', filter ?? ''); try { setRuleParams( 'filterQuery', @@ -257,7 +257,7 @@ export const Expressions: React.FC = (props) => { preFillAlertCriteria(); } - if (!ruleParams.filterQuery) { + if (ruleParams.filterQuery === undefined) { preFillAlertFilter(); } @@ -268,7 +268,7 @@ export const Expressions: React.FC = (props) => { return ( <> - +

= (props) => { />

- - - +
+ +
- - - - +
+
+
+ {ruleParams.criteria && ruleParams.criteria.map((e, idx) => { return ( @@ -315,7 +315,7 @@ export const Expressions: React.FC = (props) => { ); })} - +
= (props) => { onChangeWindowSize={updateTimeSize} onChangeWindowUnit={updateTimeUnit} /> - +
= (props) => {
- + = (props) => { onChange={(e) => setRuleParams('alertOnNoData', e.target.checked)} /> - + = (props) => { fullWidth display="rowCompressed" > - {(metadata && ( + {metadata ? ( - )) || ( + ) : ( = (props) => { )} - + ); }; @@ -415,21 +415,21 @@ interface ExpressionRowProps { fields: DerivedIndexPattern['fields']; } -const NonCollapsibleExpression = euiStyled.div` +const NonCollapsibleExpressionCss = css` margin-left: 28px; `; -const StyledExpressionRow = euiStyled(EuiFlexGroup)` +const StyledExpressionRowCss = css` display: flex; flex-wrap: wrap; margin: 0 -4px; `; -const StyledExpression = euiStyled.div` +const StyledExpressionCss = css` padding: 0 4px; `; -const StyledHealth = euiStyled(EuiHealth)` +const StyledHealthCss = css` margin-left: 4px; `; @@ -588,8 +588,8 @@ export const ExpressionRow: React.FC = (props) => { - - + +
= (props) => { customMetric={customMetric} fields={fields} /> - +
{!displayWarningThreshold && criticalThresholdExpression} -
+ {displayWarningThreshold && ( <> - + {criticalThresholdExpression} - + - - - + + + {warningThresholdExpression} - + - + = (props) => { )} iconSize="s" color="text" - iconType={'minusInCircleFilled'} + iconType="minusInCircleFilled" onClick={toggleWarningThreshold} /> - + )} {!displayWarningThreshold && ( <> {' '} - - + + = (props) => { defaultMessage="Add warning threshold" /> - + )}
@@ -674,15 +674,23 @@ export const ExpressionRow: React.FC = (props) => { aria-label={i18n.translate('xpack.infra.metrics.alertFlyout.removeCondition', { defaultMessage: 'Remove condition', })} - color={'danger'} - iconType={'trash'} + color="danger" + iconType="trash" onClick={() => remove(expressionId)} /> )} - {isExpanded ?
{children}
: null} - + {isExpanded ? ( +
+ {children} +
+ ) : null} + ); }; @@ -697,7 +705,7 @@ const ThresholdElement: React.FC<{ }> = ({ updateComparator, updateThreshold, threshold, metric, comparator, errors }) => { return ( <> - +
- +
{metric && (
- {metricUnit[metric]?.label || ''} + {metricUnit[metric]?.label || ''}
)} diff --git a/x-pack/plugins/infra/public/common/visualizations/constants.ts b/x-pack/plugins/infra/public/common/visualizations/constants.ts index d24f937770d31..1ad738cb02706 100644 --- a/x-pack/plugins/infra/public/common/visualizations/constants.ts +++ b/x-pack/plugins/infra/public/common/visualizations/constants.ts @@ -20,7 +20,7 @@ import { diskWriteThroughput, diskSpaceAvailability, diskSpaceAvailable, - diskSpaceUsage, + diskUsage, logRate, normalizedLoad1m, load1m, @@ -58,7 +58,7 @@ export const hostLensFormulas = { diskWriteThroughput, diskSpaceAvailability, diskSpaceAvailable, - diskSpaceUsage, + diskUsage, hostCount, logRate, normalizedLoad1m, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_kpi_charts.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_kpi_charts.ts index a781a0404eb0c..b911eadbc6583 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_kpi_charts.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_kpi_charts.ts @@ -97,15 +97,15 @@ export const hostKPICharts: KPIChartProps[] = [ }, { id: 'diskSpaceUsage', - title: i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title', { - defaultMessage: 'Disk Space Usage', + title: i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.kpi.diskUsage.title', { + defaultMessage: 'Disk Usage', }), layers: { data: { - ...hostLensFormulas.diskSpaceUsage, - format: hostLensFormulas.diskSpaceUsage.format + ...hostLensFormulas.diskUsage, + format: hostLensFormulas.diskUsage.format ? { - ...hostLensFormulas.diskSpaceUsage.format, + ...hostLensFormulas.diskUsage.format, params: { decimals: 1, }, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_metric_charts.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_metric_charts.ts index 5da21aba45c33..8a116bdb40ce8 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_metric_charts.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/host_metric_charts.ts @@ -9,7 +9,7 @@ import { diskSpaceUsageAvailable, diskThroughputReadWrite, diskIOReadWrite, - diskSpaceUsageByMountPoint, + diskUsageByMountPoint, } from '../metric_charts/disk'; import { logRate } from '../metric_charts/log'; import { memoryUsage, memoryUsageBreakdown } from '../metric_charts/memory'; @@ -22,7 +22,7 @@ export const hostMetricFlyoutCharts: XYConfig[] = [ normalizedLoad1m, logRate, diskSpaceUsageAvailable, - diskSpaceUsageByMountPoint, + diskUsageByMountPoint, diskThroughputReadWrite, diskIOReadWrite, rxTx, @@ -37,7 +37,7 @@ export const hostMetricChartsFullPage: XYConfig[] = [ loadBreakdown, logRate, diskSpaceUsageAvailable, - diskSpaceUsageByMountPoint, + diskUsageByMountPoint, diskThroughputReadWrite, diskIOReadWrite, rxTx, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/disk.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/disk.ts index 8d2daa435fbdc..b6c20c7abaa20 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/disk.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/disk.ts @@ -14,22 +14,22 @@ const TOP_VALUES_SIZE = 5; export const diskSpaceUsageAvailable: XYConfig = { id: 'diskSpaceUsageAvailable', - title: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskSpace', { - defaultMessage: 'Disk Space', + title: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskUsage', { + defaultMessage: 'Disk Usage', }), layers: [ { data: [ { - ...hostLensFormulas.diskSpaceUsage, - label: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskSpace.label.used', { + ...hostLensFormulas.diskUsage, + label: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskUsage.label.used', { defaultMessage: 'Used', }), }, { ...hostLensFormulas.diskSpaceAvailability, label: i18n.translate( - 'xpack.infra.assetDetails.metricsCharts.diskSpace.label.available', + 'xpack.infra.assetDetails.metricsCharts.diskUsage.label.available', { defaultMessage: 'Available', } @@ -49,17 +49,17 @@ export const diskSpaceUsageAvailable: XYConfig = { dataViewOrigin: 'metrics', }; -export const diskSpaceUsageByMountPoint: XYConfig = { - id: 'DiskSpaceUsageByMountPoint', - title: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskSpaceByMountingPoint', { - defaultMessage: 'Disk Space by Mount Point', +export const diskUsageByMountPoint: XYConfig = { + id: 'DiskUsageByMountPoint', + title: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskUsageByMountingPoint', { + defaultMessage: 'Disk Usage by Mount Point', }), layers: [ { data: [ { - ...hostLensFormulas.diskSpaceUsage, - label: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskSpace.label.used', { + ...hostLensFormulas.diskUsage, + label: i18n.translate('xpack.infra.assetDetails.metricsCharts.diskUsage.label.used', { defaultMessage: 'Used', }), }, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/hosts_view/hosts_metric_charts.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/hosts_view/hosts_metric_charts.ts index 78ea831ff2c5d..eee6ffca3ab2a 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/hosts_view/hosts_metric_charts.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/hosts_view/hosts_metric_charts.ts @@ -83,12 +83,12 @@ export const hostsMetricCharts: Array< }, { id: 'diskSpaceUsed', - title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceUsed', { - defaultMessage: 'Disk Space Usage', + title: i18n.translate('xpack.infra.hostsViewPage.tabs.metricsCharts.diskUsage', { + defaultMessage: 'Disk Usage', }), layers: [ { - data: [hostLensFormulas.diskSpaceUsage], + data: [hostLensFormulas.diskUsage], options: XY_LAYER_OPTIONS, type: 'visualization', }, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_space_usage.ts b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_usage.ts similarity index 84% rename from x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_space_usage.ts rename to x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_usage.ts index 24143b58c81e6..c45ebac82a9e8 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_space_usage.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/disk_usage.ts @@ -7,8 +7,8 @@ import type { FormulaValueConfig } from '@kbn/lens-embeddable-utils'; -export const diskSpaceUsage: FormulaValueConfig = { - label: 'Disk Space Usage', +export const diskUsage: FormulaValueConfig = { + label: 'Disk Usage', value: 'average(system.filesystem.used.pct)', format: { id: 'percent', diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts index 0635992ba1792..0b39cda885b4c 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts @@ -19,7 +19,7 @@ export { diskReadThroughput } from './disk_read_throughput'; export { diskWriteThroughput } from './disk_write_throughput'; export { diskSpaceAvailability } from './disk_space_availability'; export { diskSpaceAvailable } from './disk_space_available'; -export { diskSpaceUsage } from './disk_space_usage'; +export { diskUsage } from './disk_usage'; export { hostCount } from './host_count'; export { logRate } from './log_rate'; export { normalizedLoad1m } from './normalized_load_1m'; diff --git a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts index 05e17c16eb929..b6e35dbf51773 100644 --- a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts +++ b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts @@ -6,42 +6,42 @@ */ import { i18n } from '@kbn/i18n'; -import { type AssetDetailsProps, FlyoutTabIds, type Tab } from '../../../types'; +import { type AssetDetailsProps, ContentTabIds, type Tab } from '../../../types'; const links: AssetDetailsProps['links'] = ['alertRule', 'nodeDetails', 'apmServices']; const tabs: Tab[] = [ { - id: FlyoutTabIds.OVERVIEW, + id: ContentTabIds.OVERVIEW, name: i18n.translate('xpack.infra.nodeDetails.tabs.overview.title', { defaultMessage: 'Overview', }), }, { - id: FlyoutTabIds.LOGS, + id: ContentTabIds.LOGS, name: i18n.translate('xpack.infra.nodeDetails.tabs.logs', { defaultMessage: 'Logs', }), }, { - id: FlyoutTabIds.METADATA, + id: ContentTabIds.METADATA, name: i18n.translate('xpack.infra.metrics.nodeDetails.tabs.metadata', { defaultMessage: 'Metadata', }), }, { - id: FlyoutTabIds.PROCESSES, + id: ContentTabIds.PROCESSES, name: i18n.translate('xpack.infra.metrics.nodeDetails.tabs.processes', { defaultMessage: 'Processes', }), }, { - id: FlyoutTabIds.ANOMALIES, + id: ContentTabIds.ANOMALIES, name: i18n.translate('xpack.infra.nodeDetails.tabs.anomalies', { defaultMessage: 'Anomalies', }), }, { - id: FlyoutTabIds.LINK_TO_APM, + id: ContentTabIds.LINK_TO_APM, name: i18n.translate('xpack.infra.infra.nodeDetails.apmTabLabel', { defaultMessage: 'APM', }), diff --git a/x-pack/plugins/infra/public/components/asset_details/constants.ts b/x-pack/plugins/infra/public/components/asset_details/constants.ts index 726f47450d0cc..cdd5b95082158 100644 --- a/x-pack/plugins/infra/public/components/asset_details/constants.ts +++ b/x-pack/plugins/infra/public/components/asset_details/constants.ts @@ -8,3 +8,5 @@ export const ASSET_DETAILS_FLYOUT_COMPONENT_NAME = 'infraAssetDetailsFlyout'; export const METRIC_CHART_HEIGHT = 300; export const APM_HOST_FILTER_FIELD = 'host.hostname'; + +export const ASSET_DETAILS_URL_STATE_KEY = 'assetDetails'; diff --git a/x-pack/plugins/infra/public/components/asset_details/content/content.tsx b/x-pack/plugins/infra/public/components/asset_details/content/content.tsx index c9d622cf01493..0cf51f1fff3d7 100644 --- a/x-pack/plugins/infra/public/components/asset_details/content/content.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/content/content.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { DatePicker } from '../date_picker/date_picker'; import { useTabSwitcherContext } from '../hooks/use_tab_switcher'; import { Anomalies, Metadata, Processes, Osquery, Logs, Overview } from '../tabs'; -import { FlyoutTabIds } from '../types'; +import { ContentTabIds } from '../types'; export const Content = () => { return ( @@ -18,31 +18,31 @@ export const Content = () => { - + - + - + - + - + - + @@ -50,11 +50,11 @@ export const Content = () => { ); }; -const DatePickerWrapper = ({ visibleFor }: { visibleFor: FlyoutTabIds[] }) => { +const DatePickerWrapper = ({ visibleFor }: { visibleFor: ContentTabIds[] }) => { const { activeTabId } = useTabSwitcherContext(); return ( - diff --git a/x-pack/plugins/observability/kibana.jsonc b/x-pack/plugins/observability/kibana.jsonc index a88f6543871e4..5064e06b156e0 100644 --- a/x-pack/plugins/observability/kibana.jsonc +++ b/x-pack/plugins/observability/kibana.jsonc @@ -8,6 +8,7 @@ "browser": true, "configPath": ["xpack", "observability"], "requiredPlugins": [ + "aiops", "alerting", "cases", "charts", diff --git a/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.test.tsx b/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.test.tsx index e540572e67bc5..2e035cdcf8fb8 100644 --- a/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.test.tsx +++ b/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.test.tsx @@ -39,6 +39,12 @@ jest.mock('../../../utils/kibana_react', () => ({ services: { ...mockCoreMock.createStart(), charts: mockedChartStartContract, + aiops: { + EmbeddableChangePointChart: jest.fn(), + }, + data: { + search: jest.fn(), + }, }, }), })); @@ -47,6 +53,7 @@ describe('AlertDetailsAppSection', () => { const queryClient = new QueryClient(); const mockedSetAlertSummaryFields = jest.fn(); const ruleLink = 'ruleLink'; + const renderComponent = () => { return render( @@ -69,7 +76,7 @@ describe('AlertDetailsAppSection', () => { it('should render rule and alert data', async () => { const result = renderComponent(); - expect((await result.findByTestId('thresholdRuleAppSection')).children.length).toBe(3); + expect((await result.findByTestId('thresholdAlertOverviewSection')).children.length).toBe(3); expect(result.getByTestId('thresholdRule-2000-2500')).toBeTruthy(); }); @@ -92,9 +99,9 @@ describe('AlertDetailsAppSection', () => { it('should render annotations', async () => { const mockedExpressionChart = jest.fn(() =>
); (ExpressionChart as jest.Mock).mockImplementation(mockedExpressionChart); - renderComponent(); + const alertDetailsAppSectionComponent = renderComponent(); - expect(mockedExpressionChart).toHaveBeenCalledTimes(3); + expect(alertDetailsAppSectionComponent.getAllByTestId('ExpressionChart').length).toBe(3); expect(mockedExpressionChart.mock.calls[0]).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx b/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx index cd5915eb3ef03..95367577ccb22 100644 --- a/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx +++ b/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx @@ -5,28 +5,32 @@ * 2.0. */ -import { DataViewBase } from '@kbn/es-query'; +import moment from 'moment'; +import { DataViewBase, Query } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import React, { useEffect, useMemo } from 'react'; -import moment from 'moment'; +import React, { useEffect, useMemo, useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiPanel, EuiSpacer, + EuiTabbedContent, + EuiTabbedContentTab, EuiText, EuiTitle, useEuiTheme, } from '@elastic/eui'; import { ALERT_END, ALERT_START, ALERT_EVALUATION_VALUES } from '@kbn/rule-data-utils'; -import { Rule } from '@kbn/alerting-plugin/common'; +import { Rule, RuleTypeParams } from '@kbn/alerting-plugin/common'; import { AlertAnnotation, getPaddedAlertTimeRange, AlertActiveTimeRangeAnnotation, } from '@kbn/observability-alert-details'; +import { DataView } from '@kbn/data-views-plugin/common'; +import type { TimeRange } from '@kbn/es-query'; import { useKibana } from '../../../utils/kibana_react'; import { metricValueFormatter } from '../../../../common/threshold_rule/metric_value_formatter'; import { AlertSummaryField, TopAlert } from '../../..'; @@ -36,20 +40,17 @@ import { ExpressionChart } from './expression_chart'; import { TIME_LABELS } from './criterion_preview_chart/criterion_preview_chart'; import { Threshold } from './threshold'; import { MetricsExplorerChartType } from '../hooks/use_metrics_explorer_options'; -import { MetricThresholdRuleTypeParams } from '../types'; +import { AlertParams, MetricExpression, MetricThresholdRuleTypeParams } from '../types'; // TODO Use a generic props for app sections https://github.com/elastic/kibana/issues/152690 -export type MetricThresholdRule = Rule< - MetricThresholdRuleTypeParams & { - filterQuery?: string; - groupBy?: string | string[]; - } ->; +export type MetricThresholdRule = Rule; export type MetricThresholdAlert = TopAlert; const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD HH:mm'; const ALERT_START_ANNOTATION_ID = 'alert_start_annotation'; const ALERT_TIME_RANGE_ANNOTATION_ID = 'alert_time_range_annotation'; +const OVERVIEW_TAB_ID = 'overview'; +const RELATED_EVENTS_TAB_ID = 'relatedEvents'; interface AppSectionProps { alert: MetricThresholdAlert; @@ -65,17 +66,12 @@ export default function AlertDetailsAppSection({ ruleLink, setAlertSummaryFields, }: AppSectionProps) { - const { uiSettings, charts } = useKibana().services; + const { uiSettings, charts, aiops, data } = useKibana().services; + const { EmbeddableChangePointChart } = aiops; const { euiTheme } = useEuiTheme(); - - // TODO Use rule data view - const derivedIndexPattern = useMemo( - () => ({ - fields: [], - title: 'unknown-index', - }), - [] - ); + const [dataView, setDataView] = useState(); + const [, setDataViewError] = useState(); + const ruleParams = rule.params as RuleTypeParams & AlertParams; const chartProps = { theme: charts.theme.useChartsTheme(), baseTheme: charts.theme.useChartsBaseTheme(), @@ -116,63 +112,143 @@ export default function AlertDetailsAppSection({ ]); }, [alert, rule, ruleLink, setAlertSummaryFields]); - return !!rule.params.criteria ? ( - - {rule.params.criteria.map((criterion, index) => ( - - - -

- {criterion.aggType.toUpperCase()}{' '} - {'metric' in criterion ? criterion.metric : undefined} -

-
- - - - - - - - metricValueFormatter(d, 'metric' in criterion ? criterion.metric : undefined) - } - title={i18n.translate( - 'xpack.observability.threshold.rule.alertDetailsAppSection.thresholdTitle', - { - defaultMessage: 'Threshold breached', - } - )} - comparator={criterion.comparator} + const derivedIndexPattern = useMemo( + () => ({ + fields: dataView?.fields || [], + title: dataView?.getIndexPattern() || 'unknown-index', + }), + [dataView] + ); + + useEffect(() => { + const initDataView = async () => { + const ruleSearchConfiguration = ruleParams.searchConfiguration; + try { + const createdSearchSource = await data.search.searchSource.create(ruleSearchConfiguration); + setDataView(createdSearchSource.getField('index')); + } catch (error) { + setDataViewError(error); + } + }; + + initDataView(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [data.search.searchSource]); + + const relatedEventsTimeRange = (criterion: MetricExpression): TimeRange => { + return { + from: moment(alert.start) + .subtract((criterion.timeSize ?? 5) * 2, criterion.timeUnit ?? 'minutes') + .toISOString(), + to: moment(alert.lastUpdated).toISOString(), + mode: 'absolute', + }; + }; + + const overviewTab = !!ruleParams.criteria ? ( + <> + + + {ruleParams.criteria.map((criterion, index) => ( + + + +

+ {criterion.aggType.toUpperCase()}{' '} + {'metric' in criterion ? criterion.metric : undefined} +

+
+ + -
- - + + + + + metricValueFormatter(d, 'metric' in criterion ? criterion.metric : undefined) + } + title={i18n.translate( + 'xpack.observability.threshold.rule.alertDetailsAppSection.thresholdTitle', + { + defaultMessage: 'Threshold breached', + } + )} + comparator={criterion.comparator} + /> + + + + + +
+
+ ))} +
+ + ) : null; + + const relatedEventsTab = !!ruleParams.criteria ? ( + <> + + + {ruleParams.criteria.map((criterion, criterionIndex) => + criterion.metrics?.map( + (metric, metricIndex) => + dataView && + dataView.id && ( + - - - - - ))} - + ) + ) + )} + + ) : null; + + const tabs: EuiTabbedContentTab[] = [ + { + id: OVERVIEW_TAB_ID, + name: i18n.translate('xpack.observability.threshold.alertDetails.tab.overviewLabel', { + defaultMessage: 'Overview', + }), + 'data-test-subj': 'overviewTab', + content: overviewTab, + }, + { + id: RELATED_EVENTS_TAB_ID, + name: i18n.translate('xpack.observability.threshold.alertDetails.tab.relatedEventsLabel', { + defaultMessage: 'Related Events', + }), + 'data-test-subj': 'relatedEventsTab', + content: relatedEventsTab, + }, + ]; + + return ; } diff --git a/x-pack/plugins/observability/public/components/threshold/components/validation.tsx b/x-pack/plugins/observability/public/components/threshold/components/validation.tsx index 8917e8dac2f35..4f5c818d7943d 100644 --- a/x-pack/plugins/observability/public/components/threshold/components/validation.tsx +++ b/x-pack/plugins/observability/public/components/threshold/components/validation.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { SerializedSearchSourceFields } from '@kbn/data-plugin/common'; +import { Query, SerializedSearchSourceFields } from '@kbn/data-plugin/common'; import { buildEsQuery, fromKueryExpression } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { ValidationResult } from '@kbn/triggers-actions-ui-plugin/public'; @@ -28,11 +28,9 @@ const isCustomMetricExpressionParams = ( export function validateMetricThreshold({ criteria, searchConfiguration, - filterQuery, }: { criteria: MetricExpressionParams[]; searchConfiguration: SerializedSearchSourceFields; - filterQuery?: string; }): ValidationResult { const validationResult = { errors: {} }; const errors: { @@ -67,9 +65,13 @@ export function validateMetricThreshold({ ]; } - if (filterQuery) { + if (searchConfiguration && searchConfiguration.query) { try { - buildEsQuery(undefined, [{ query: filterQuery, language: 'kuery' }], []); + buildEsQuery( + undefined, + [{ query: (searchConfiguration.query as Query).query, language: 'kuery' }], + [] + ); } catch (e) { errors.filterQuery = [ i18n.translate('xpack.observability.threshold.rule.alertFlyout.error.invalidFilterQuery', { diff --git a/x-pack/plugins/observability/public/components/threshold/mocks/metric_threshold_rule.ts b/x-pack/plugins/observability/public/components/threshold/mocks/metric_threshold_rule.ts index 98f20b455267e..478d27484df0d 100644 --- a/x-pack/plugins/observability/public/components/threshold/mocks/metric_threshold_rule.ts +++ b/x-pack/plugins/observability/public/components/threshold/mocks/metric_threshold_rule.ts @@ -84,7 +84,13 @@ export const buildMetricThresholdRule = ( metric: 'system.memory.used.pct', }, ], - filterQuery: 'host.hostname: Users-System.local and service.type: system', + searchConfiguration: { + query: { + query: 'host.hostname: Users-System.local and service.type: system', + language: 'kuery', + }, + index: 'mockedIndex', + }, groupBy: ['host.hostname'], }, monitoring: { diff --git a/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.test.tsx b/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.test.tsx index 9a4091ee1ca29..e81e695f8cef9 100644 --- a/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.test.tsx +++ b/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.test.tsx @@ -44,9 +44,14 @@ describe('Expression', () => { const ruleParams = { criteria: [], groupBy: undefined, - filterQuery: '', sourceId: 'default', - searchConfiguration: {}, + searchConfiguration: { + index: 'mockedIndex', + query: { + query: '', + language: 'kuery', + }, + }, }; const wrapper = mountWithIntl( @@ -90,7 +95,7 @@ describe('Expression', () => { }; const { ruleParams } = await setup(currentOptions); expect(ruleParams.groupBy).toBe('host.hostname'); - expect(ruleParams.filterQuery).toBe('foo'); + expect(ruleParams.searchConfiguration.query.query).toBe('foo'); expect(ruleParams.criteria).toEqual([ { metric: 'system.load.1', @@ -114,7 +119,6 @@ describe('Expression', () => { it('should show an error message when searchSource throws an error', async () => { const currentOptions = { groupBy: 'host.hostname', - filterQuery: 'foo', metrics: [ { aggregation: 'avg', field: 'system.load.1' }, { aggregation: 'cardinality', field: 'system.cpu.user.pct' }, @@ -154,7 +158,6 @@ describe('Expression', () => { it('should show no timestamp error when selected data view does not have a timeField', async () => { const currentOptions = { groupBy: 'host.hostname', - filterQuery: 'foo', metrics: [ { aggregation: 'avg', field: 'system.load.1' }, { aggregation: 'cardinality', field: 'system.cpu.user.pct' }, diff --git a/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx b/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx index a34f526860772..1e25865147290 100644 --- a/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx +++ b/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx @@ -22,7 +22,7 @@ import { EuiTitle, EuiToolTip, } from '@elastic/eui'; -import { ISearchSource } from '@kbn/data-plugin/common'; +import { ISearchSource, Query } from '@kbn/data-plugin/common'; import { DataView } from '@kbn/data-views-plugin/common'; import { DataViewBase } from '@kbn/es-query'; import { DataViewSelectPopover } from '@kbn/stack-alerts-plugin/public'; @@ -41,7 +41,6 @@ import { TimeUnitChar } from '../../../common/utils/formatters/duration'; import { AlertContextMeta, AlertParams, MetricExpression } from './types'; import { ExpressionChart } from './components/expression_chart'; import { ExpressionRow } from './components/expression_row'; -import { RuleFlyoutKueryBar } from '../rule_kql_filter/kuery_bar'; import { MetricsExplorerGroupBy } from './components/group_by'; import { MetricsExplorerOptions } from './hooks/use_metrics_explorer_options'; @@ -63,7 +62,15 @@ export const defaultExpression = { // eslint-disable-next-line import/no-default-export export default function Expressions(props: Props) { const { setRuleParams, ruleParams, errors, metadata, onChangeMetaData } = props; - const { data, dataViews, dataViewEditor, docLinks } = useKibana().services; + const { + data, + dataViews, + dataViewEditor, + docLinks, + unifiedSearch: { + ui: { SearchBar }, + }, + } = useKibana().services; const [timeSize, setTimeSize] = useState(1); const [timeUnit, setTimeUnit] = useState('m'); @@ -83,7 +90,7 @@ export default function Expressions(props: Props) { const initSearchSource = async () => { let initialSearchConfiguration = ruleParams.searchConfiguration; - if (!ruleParams.searchConfiguration) { + if (!ruleParams.searchConfiguration || !ruleParams.searchConfiguration.index) { const newSearchSource = data.search.searchSource.createEmpty(); newSearchSource.setField('query', data.query.queryString.getDefaultQuery()); const defaultDataView = await data.dataViews.getDefaultDataView(); @@ -98,7 +105,12 @@ export default function Expressions(props: Props) { const createdSearchSource = await data.search.searchSource.create( initialSearchConfiguration ); - setRuleParams('searchConfiguration', initialSearchConfiguration); + setRuleParams('searchConfiguration', { + ...initialSearchConfiguration, + ...(ruleParams.searchConfiguration?.query && { + query: ruleParams.searchConfiguration.query, + }), + }); setSearchSource(createdSearchSource); setDataView(createdSearchSource.getField('index')); @@ -129,6 +141,30 @@ export default function Expressions(props: Props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [data.search.searchSource, data.dataViews, dataView]); + useEffect(() => { + if (ruleParams.criteria && ruleParams.criteria.length) { + setTimeSize(ruleParams.criteria[0].timeSize); + setTimeUnit(ruleParams.criteria[0].timeUnit); + } else { + preFillAlertCriteria(); + } + + if (!ruleParams.filterQuery) { + preFillAlertFilter(); + } + + if (!ruleParams.groupBy) { + preFillAlertGroupBy(); + } + + if (typeof ruleParams.alertOnNoData === 'undefined') { + setRuleParams('alertOnNoData', true); + } + if (typeof ruleParams.alertOnGroupDisappear === 'undefined') { + setRuleParams('alertOnGroupDisappear', true); + } + }, [metadata]); // eslint-disable-line react-hooks/exhaustive-deps + const options = useMemo(() => { if (metadata?.currentOptions?.metrics) { return metadata.currentOptions as MetricsExplorerOptions; @@ -189,10 +225,10 @@ export default function Expressions(props: Props) { ); const onFilterChange = useCallback( - (filter: any) => { - setRuleParams('filterQuery', filter); + ({ query }: { query?: Query }) => { + setRuleParams('searchConfiguration', { ...ruleParams.searchConfiguration, query }); }, - [setRuleParams] + [setRuleParams, ruleParams.searchConfiguration] ); /* eslint-disable-next-line react-hooks/exhaustive-deps */ @@ -262,15 +298,27 @@ export default function Expressions(props: Props) { const preFillAlertFilter = useCallback(() => { const md = metadata; if (md && md.currentOptions?.filterQuery) { - setRuleParams('filterQuery', md.currentOptions.filterQuery); + setRuleParams('searchConfiguration', { + ...ruleParams.searchConfiguration, + query: { + query: md.currentOptions.filterQuery, + language: 'kuery', + }, + }); } else if (md && md.currentOptions?.groupBy && md.series) { const { groupBy } = md.currentOptions; - const filter = Array.isArray(groupBy) + const query = Array.isArray(groupBy) ? groupBy.map((field, index) => `${field}: "${md.series?.keys?.[index]}"`).join(' and ') : `${groupBy}: "${md.series.id}"`; - setRuleParams('filterQuery', filter); + setRuleParams('searchConfiguration', { + ...ruleParams.searchConfiguration, + query: { + query, + language: 'kuery', + }, + }); } - }, [metadata, setRuleParams]); + }, [metadata, setRuleParams, ruleParams.searchConfiguration]); const preFillAlertGroupBy = useCallback(() => { const md = metadata; @@ -279,30 +327,6 @@ export default function Expressions(props: Props) { } }, [metadata, setRuleParams]); - useEffect(() => { - if (ruleParams.criteria && ruleParams.criteria.length) { - setTimeSize(ruleParams.criteria[0].timeSize); - setTimeUnit(ruleParams.criteria[0].timeUnit); - } else { - preFillAlertCriteria(); - } - - if (!ruleParams.filterQuery) { - preFillAlertFilter(); - } - - if (!ruleParams.groupBy) { - preFillAlertGroupBy(); - } - - if (typeof ruleParams.alertOnNoData === 'undefined') { - setRuleParams('alertOnNoData', true); - } - if (typeof ruleParams.alertOnGroupDisappear === 'undefined') { - setRuleParams('alertOnGroupDisappear', true); - } - }, [metadata]); // eslint-disable-line react-hooks/exhaustive-deps - const hasGroupBy = useMemo( () => ruleParams.groupBy && ruleParams.groupBy.length > 0, [ruleParams.groupBy] @@ -358,9 +382,9 @@ export default function Expressions(props: Props) { } const placeHolder = i18n.translate( - 'xpack.observability.threshold.rule.homePage.toolbar.kqlSearchFieldPlaceholder', + 'xpack.observability.threshold.rule.alertFlyout.searchBar.placeholder', { - defaultMessage: 'Search for infrastructure data… (e.g. host.name:host-1)', + defaultMessage: 'Search for observability data… (e.g. host.name:host-1)', } ); @@ -399,13 +423,27 @@ export default function Expressions(props: Props) { - + {errors.filterQuery && ( + + {errors.filterQuery} + + )}
@@ -447,7 +485,7 @@ export default function Expressions(props: Props) { diff --git a/x-pack/plugins/observability/public/components/threshold/types.ts b/x-pack/plugins/observability/public/components/threshold/types.ts index 92d64ab2378bc..6336c3f292677 100644 --- a/x-pack/plugins/observability/public/components/threshold/types.ts +++ b/x-pack/plugins/observability/public/components/threshold/types.ts @@ -175,4 +175,6 @@ export interface InventoryMetricConditions { export interface MetricThresholdRuleTypeParams extends RuleTypeParams { criteria: MetricExpressionParams[]; + searchConfiguration: SerializedSearchSourceFields; + groupBy?: string | string[]; } diff --git a/x-pack/plugins/observability/public/plugin.mock.tsx b/x-pack/plugins/observability/public/plugin.mock.tsx index e30d5254e7a07..be663d15e444d 100644 --- a/x-pack/plugins/observability/public/plugin.mock.tsx +++ b/x-pack/plugins/observability/public/plugin.mock.tsx @@ -9,6 +9,7 @@ import { mockCasesContract } from '@kbn/cases-plugin/public/mocks'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { contentManagementMock } from '@kbn/content-management-plugin/public/mocks'; +import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; const triggersActionsUiStartMock = { createStart() { @@ -102,6 +103,7 @@ export const observabilityPublicPluginsStartMock = { dataViewEditor: dataViewEditor.createStart(), lens: null, discover: null, + unifiedSearch: unifiedSearchPluginMock.createStartContract(), }; }, }; diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 77407c9bd25e8..8b7b3ce386c34 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -56,6 +56,7 @@ import { ObservabilityAIAssistantPluginSetup, ObservabilityAIAssistantPluginStart, } from '@kbn/observability-ai-assistant-plugin/public'; +import { AiopsPluginStart } from '@kbn/aiops-plugin/public/types'; import { RulesLocatorDefinition } from './locators/rules'; import { RuleDetailsLocatorDefinition } from './locators/rule_details'; import { SloDetailsLocatorDefinition } from './locators/slo_details'; @@ -137,6 +138,7 @@ export interface ObservabilityPublicPluginsStart { unifiedSearch: UnifiedSearchPublicPluginStart; home?: HomePublicPluginStart; cloud?: CloudStart; + aiops: AiopsPluginStart; } export type ObservabilityPublicStart = ReturnType; diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/lib/evaluate_rule.ts b/x-pack/plugins/observability/server/lib/rules/threshold/lib/evaluate_rule.ts index 6300515059614..31b86eb73beea 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/lib/evaluate_rule.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/lib/evaluate_rule.ts @@ -5,22 +5,22 @@ * 2.0. */ -import { ElasticsearchClient } from '@kbn/core/server'; import moment from 'moment'; +import { ElasticsearchClient } from '@kbn/core/server'; import type { Logger } from '@kbn/logging'; import { MetricExpressionParams } from '../../../../../common/threshold_rule/types'; import { isCustom } from './metric_expression_params'; -import { getIntervalInSeconds } from '../utils'; +import { AdditionalContext, getIntervalInSeconds } from '../utils'; +import { SearchConfigurationType } from '../threshold_executor'; import { CUSTOM_EQUATION_I18N, DOCUMENT_COUNT_I18N } from '../messages'; import { createTimerange } from './create_timerange'; import { getData } from './get_data'; import { checkMissingGroups, MissingGroupsRecord } from './check_missing_group'; -import { AdditionalContext } from '../utils'; export interface EvaluatedRuleParams { criteria: MetricExpressionParams[]; groupBy: string | undefined | string[]; - filterQuery?: string; + searchConfiguration: SearchConfigurationType; } export type Evaluation = Omit & { @@ -46,7 +46,7 @@ export const evaluateRule = async >> => { - const { criteria, groupBy, filterQuery } = params; + const { criteria, groupBy, searchConfiguration } = params; return Promise.all( criteria.map(async (criterion) => { @@ -66,7 +66,7 @@ export const evaluateRule = async ; export type MetricThresholdRuleParams = Record; export type MetricThresholdRuleTypeState = RuleTypeState & { lastRunTimestamp?: number; missingGroups?: Array; groupBy?: string | string[]; + searchConfiguration?: SearchConfigurationType; }; export type MetricThresholdAlertState = AlertState; // no specific instance state used @@ -156,10 +159,13 @@ export const createMetricThresholdExecutor = ({ // For backwards-compatibility, interpret undefined alertOnGroupDisappear as true const alertOnGroupDisappear = _alertOnGroupDisappear !== false; const compositeSize = config.thresholdRule.groupByPageSize; - const filterQueryIsSame = isEqual(state.filterQuery, params.filterQuery); + const queryIsSame = isEqual( + state.searchConfiguration?.query.query, + params.searchConfiguration.query.query + ); const groupByIsSame = isEqual(state.groupBy, params.groupBy); const previousMissingGroups = - alertOnGroupDisappear && filterQueryIsSame && groupByIsSame && state.missingGroups + alertOnGroupDisappear && queryIsSame && groupByIsSame && state.missingGroups ? state.missingGroups : []; @@ -356,7 +362,7 @@ export const createMetricThresholdExecutor = ({ lastRunTimestamp: startedAt.valueOf(), missingGroups: [...nextMissingGroups], groupBy: params.groupBy, - filterQuery: params.filterQuery, + searchConfiguration: params.searchConfiguration, }, }; }; diff --git a/x-pack/plugins/observability/server/lib/rules/threshold/types.ts b/x-pack/plugins/observability/server/lib/rules/threshold/types.ts index d98a59bd50b9b..40115fdeb9c80 100644 --- a/x-pack/plugins/observability/server/lib/rules/threshold/types.ts +++ b/x-pack/plugins/observability/server/lib/rules/threshold/types.ts @@ -4,8 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { schema } from '@kbn/config-schema'; import * as rt from 'io-ts'; import { ML_ANOMALY_THRESHOLD } from '@kbn/ml-anomaly-utils/anomaly_threshold'; +import { validateKQLStringFilter } from './utils'; import { Aggregators, Comparator } from '../../../../common/threshold_rule/types'; import { TimeUnitChar } from '../../../../common'; @@ -71,3 +73,13 @@ export interface AlertExecutionDetails { alertId: string; executionId: string; } + +export const searchConfigurationSchema = schema.object({ + index: schema.string(), + query: schema.object({ + language: schema.string({ + validate: validateKQLStringFilter, + }), + query: schema.string(), + }), +}); diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index 73543b3a89453..35137bbddb002 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -85,6 +85,7 @@ "@kbn/deeplinks-analytics", "@kbn/observability-ai-assistant-plugin", "@kbn/osquery-plugin", + "@kbn/aiops-plugin", "@kbn/content-management-plugin" ], "exclude": [ diff --git a/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts b/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts new file mode 100644 index 0000000000000..0178aca04c344 --- /dev/null +++ b/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts @@ -0,0 +1,358 @@ +/* + * 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. + */ + +describe('[Logs onboarding] Custom logs - configure step', () => { + describe('logFilePaths', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + }); + + it('Users shouldnt be able to continue if logFilePaths is empty', () => { + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .should('not.have.text'); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + 'be.disabled' + ); + }); + + it('Users should be able to continue if logFilePaths is not empty', () => { + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + 'not.be.disabled' + ); + }); + + it('Users can add multiple logFilePaths', () => { + cy.getByTestSubj('obltOnboardingCustomLogsAddFilePath').first().click(); + cy.getByTestSubj('obltOnboardingLogFilePath-0').should('exist'); + cy.getByTestSubj('obltOnboardingLogFilePath-1').should('exist'); + }); + + it('Users can delete logFilePaths', () => { + cy.getByTestSubj('obltOnboardingCustomLogsAddFilePath').first().click(); + cy.get('*[data-test-subj^="obltOnboardingLogFilePath-"]').should( + 'have.length', + 2 + ); + + cy.getByTestSubj('obltOnboardingLogFilePathDelete-1').click(); + cy.get('*[data-test-subj^="obltOnboardingLogFilePath-"]').should( + 'have.length', + 1 + ); + }); + + describe('when users fill logFilePaths', () => { + it('datasetname and integration name are auto generated if it is the first path', () => { + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName').should( + 'have.value', + 'myLogs' + ); + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName').should( + 'have.value', + 'myLogs' + ); + }); + + it('datasetname and integration name are not generated if it is not the first path', () => { + cy.getByTestSubj('obltOnboardingCustomLogsAddFilePath').first().click(); + cy.getByTestSubj('obltOnboardingLogFilePath-1') + .find('input') + .first() + .type('myLogs.log'); + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName').should( + 'be.empty' + ); + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName').should( + 'be.empty' + ); + }); + }); + }); + + describe('serviceName', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + }); + + it('should be optional allowing user to continue if it is empty', () => { + cy.getByTestSubj('obltOnboardingCustomLogsServiceName').should( + 'not.have.text' + ); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should('be.enabled'); + }); + }); + + describe('advancedSettings', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + }); + + it('Users should expand the content when clicking it', () => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + + cy.getByTestSubj('obltOnboardingCustomLogsNamespace').should( + 'be.visible' + ); + cy.getByTestSubj('obltOnboardingCustomLogsCustomConfig').should( + 'be.visible' + ); + }); + + it('Users should hide the content when clicking it', () => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + + cy.getByTestSubj('obltOnboardingCustomLogsNamespace').should( + 'not.be.visible' + ); + cy.getByTestSubj('obltOnboardingCustomLogsCustomConfig').should( + 'not.be.visible' + ); + }); + + describe('Namespace', () => { + beforeEach(() => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + }); + + afterEach(() => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + }); + + it('Users should see a default namespace', () => { + cy.getByTestSubj('obltOnboardingCustomLogsNamespace').should( + 'have.value', + 'default' + ); + }); + + it('Users should not be able to continue if they do not specify a namespace', () => { + cy.getByTestSubj('obltOnboardingCustomLogsNamespace').clear(); + + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + 'be.disabled' + ); + }); + }); + + describe('customConfig', () => { + beforeEach(() => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + }); + + afterEach(() => { + cy.getByTestSubj('obltOnboardingCustomLogsAdvancedSettings').click(); + }); + + it('should be optional allowing user to continue if it is empty', () => { + cy.getByTestSubj('obltOnboardingCustomLogsCustomConfig').should( + 'not.have.text' + ); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + 'be.enabled' + ); + }); + }); + }); + + describe('integrationName', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + }); + + it('Users should not be able to continue if they do not specify an integrationName', () => { + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName').clear(); + + // https://github.com/elastic/kibana/issues/165778 + // cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + // 'be.disabled' + // ); + }); + + it('value will contain _ instead of special chars', () => { + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName') + .clear() + .type('hello$world'); + + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName').should( + 'have.value', + 'hello_world' + ); + }); + + it('value will be invalid if it is not lowercase', () => { + cy.getByTestSubj('obltOnboardingCustomLogsIntegrationsName') + .clear() + .type('H3llowOrld'); + + cy.contains('An integration name should be lowercase.'); + }); + }); + + describe('datasetName', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('myLogs.log'); + }); + + it('Users should not be able to continue if they do not specify a datasetName', () => { + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName').clear(); + + cy.getByTestSubj('obltOnboardingCustomLogsContinue').should( + 'be.disabled' + ); + }); + + it('value will contain _ instead of special chars', () => { + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName') + .clear() + .type('hello$world'); + + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName').should( + 'have.value', + 'hello_world' + ); + }); + + it('value will be invalid if it is not lowercase', () => { + cy.getByTestSubj('obltOnboardingCustomLogsDatasetName') + .clear() + .type('H3llowOrld'); + + cy.contains('A dataset name should be lowercase.'); + }); + }); + + describe('custom integration', () => { + const CUSTOM_INTEGRATION_NAME = 'mylogs'; + + beforeEach(() => { + cy.deleteIntegration(CUSTOM_INTEGRATION_NAME); + }); + + describe('when user is missing privileges', () => { + beforeEach(() => { + cy.loginAsViewerUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type(`${CUSTOM_INTEGRATION_NAME}.log`); + + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + }); + + it('installation fails', () => { + cy.getByTestSubj('obltOnboardingCustomIntegrationUnauthorized').should( + 'exist' + ); + }); + }); + + describe('when user has proper privileges', () => { + beforeEach(() => { + cy.loginAsEditorUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type(`${CUSTOM_INTEGRATION_NAME}.log`); + + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + }); + + afterEach(() => { + cy.deleteIntegration(CUSTOM_INTEGRATION_NAME); + }); + + it('installation succeed and user is redirected install elastic agent step', () => { + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + + cy.url().should( + 'include', + '/app/observabilityOnboarding/customLogs/installElasticAgent' + ); + }); + }); + + it('installation fails if integration already exists', () => { + cy.loginAsEditorUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.installCustomIntegration(CUSTOM_INTEGRATION_NAME); + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type(`${CUSTOM_INTEGRATION_NAME}.log`); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + + cy.contains( + 'Failed to create the integration as an installation with the name mylogs already exists.' + ); + }); + + describe('when an error occurred on creation', () => { + before(() => { + cy.intercept('/api/fleet/epm/custom_integrations', { + statusCode: 500, + body: { + message: 'Internal error', + }, + }); + + cy.loginAsEditorUser(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type(`${CUSTOM_INTEGRATION_NAME}.log`); + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + }); + + it('user should see the error displayed', () => { + cy.getByTestSubj('obltOnboardingCustomIntegrationUnknownError').should( + 'exist' + ); + }); + }); + }); +}); diff --git a/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/install_elastic_agent.cy.ts b/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/install_elastic_agent.cy.ts new file mode 100644 index 0000000000000..c0175455efa8f --- /dev/null +++ b/x-pack/plugins/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/install_elastic_agent.cy.ts @@ -0,0 +1,634 @@ +/* + * 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. + */ + +describe('[Logs onboarding] Custom logs - install elastic agent', () => { + const CUSTOM_INTEGRATION_NAME = 'mylogs'; + + const configureCustomLogs = ( + loginFn = () => cy.loginAsLogMonitoringUser() + ) => { + loginFn(); + cy.visitKibana('/app/observabilityOnboarding/customLogs'); + + cy.deleteIntegration(CUSTOM_INTEGRATION_NAME); + + cy.getByTestSubj('obltOnboardingLogFilePath-0') + .find('input') + .first() + .type('mylogs.log'); + + cy.getByTestSubj('obltOnboardingCustomLogsContinue').click(); + }; + + describe('custom integration', () => { + beforeEach(() => { + configureCustomLogs(() => cy.loginAsEditorUser()); + }); + + it('Users should be able to see the custom integration success callout', () => { + cy.getByTestSubj('obltOnboardingCustomIntegrationInstalled').should( + 'be.visible' + ); + }); + }); + + describe('ApiKey generation', () => { + describe('when user is missing privileges', () => { + beforeEach(() => { + configureCustomLogs(() => cy.loginAsEditorUser()); + }); + + it('apiKey is not generated', () => { + cy.getByTestSubj('obltOnboardingLogsApiKeyCreationNoPrivileges').should( + 'exist' + ); + }); + }); + + describe('when user has proper privileges', () => { + beforeEach(() => { + configureCustomLogs(); + }); + + it('apiKey is generated', () => { + cy.getByTestSubj('obltOnboardingLogsApiKeyCreated').should('exist'); + }); + }); + + describe('when an error occurred on creation', () => { + before(() => { + cy.intercept('/internal/observability_onboarding/logs/flow', { + statusCode: 500, + body: { + message: 'Internal error', + }, + }); + + configureCustomLogs(); + }); + + it('apiKey is not generated', () => { + cy.getByTestSubj('obltOnboardingLogsApiKeyCreationFailed').should( + 'exist' + ); + }); + }); + }); + + describe('Install the Elastic Agent step', () => { + beforeEach(() => { + cy.intercept('POST', '/internal/observability_onboarding/logs/flow').as( + 'createOnboardingFlow' + ); + configureCustomLogs(); + }); + + describe('When user select Linux OS', () => { + it('Auto download config to host is disabled by default', () => { + cy.get('.euiButtonGroup').contains('Linux').click(); + cy.getByTestSubj('obltOnboardingInstallElasticAgentAutoDownloadConfig') + .should('be.enabled') + .should('not.be.checked'); + }); + + it('Installation script is shown', () => { + cy.getByTestSubj('obltOnboardingInstallElasticAgentStep') + .get('.euiCodeBlock') + .should('exist'); + }); + }); + + describe('When user select Mac OS', () => { + beforeEach(() => { + cy.get('.euiButtonGroup').contains('MacOS').click(); + }); + + it('Auto download config to host is disabled by default', () => { + cy.getByTestSubj('obltOnboardingInstallElasticAgentAutoDownloadConfig') + .should('be.enabled') + .should('not.be.checked'); + }); + + it('Installation script is shown', () => { + cy.getByTestSubj('obltOnboardingInstallElasticAgentStep') + .get('.euiCodeBlock') + .should('exist'); + }); + }); + + describe('When user select Windows OS', () => { + beforeEach(() => { + cy.get('.euiButtonGroup').contains('Windows').click(); + }); + + it('Auto download config to host is disabled by default', () => { + cy.getByTestSubj('obltOnboardingInstallElasticAgentAutoDownloadConfig') + .should('be.disabled') + .should('not.be.checked'); + }); + + it('A link to the documentation is shown instead of installation script', () => { + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentWindowsDocsLink' + ).should('exist'); + + cy.getByTestSubj('obltOnboardingInstallElasticAgentStep') + .get('.euiCodeBlock') + .should('not.exist'); + }); + }); + + describe('When Auto download config', () => { + describe('is selected', () => { + it('autoDownloadConfig flag is added to installation script', () => { + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentAutoDownloadConfig' + ) + .first() + .click(); + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentAutoDownloadConfigCallout' + ).should('exist'); + cy.getByTestSubj('obltOnboardingInstallElasticAgentStep') + .get('.euiCodeBlock') + .should('contain', 'autoDownloadConfig=1'); + }); + + it('Download config button is disabled', () => { + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentAutoDownloadConfig' + ) + .first() + .click(); + cy.getByTestSubj( + 'obltOnboardingConfigureElasticAgentStepDownloadConfig' + ).should('be.disabled'); + }); + }); + + it('is not selected autoDownloadConfig flag is not added to installation script', () => { + cy.getByTestSubj('obltOnboardingInstallElasticAgentStep') + .get('.euiCodeBlock') + .should('not.contain', 'autoDownloadConfig=1'); + }); + }); + + describe('When user executes the installation script in the host', () => { + let onboardingId: string; + + describe('updates on steps are shown in the flow', () => { + beforeEach(() => { + cy.wait('@createOnboardingFlow') + .its('response.body') + .then((body) => { + onboardingId = body.onboardingId; + }); + }); + + describe('Download elastic Agent step', () => { + it('shows a loading callout when elastic agent is downloading', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'loading' + ); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Downloading Elastic Agent') + .should('exist'); + }); + + it('shows a success callout when elastic agent is downloaded', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains('Elastic Agent downloaded') + .should('exist'); + }); + + it('shows a danger callout when elastic agent was not downloaded', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'danger' + ); + cy.getByTestSubj('obltOnboardingStepStatus-danger') + .contains('Download Elastic Agent') + .should('exist'); + }); + }); + + describe('Extract elastic Agent step', () => { + beforeEach(() => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + }); + + it('shows a loading callout when elastic agent is extracting', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'loading' + ); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Extracting Elastic Agent') + .should('exist'); + }); + + it('shows a success callout when elastic agent is extracted', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'complete' + ); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains('Elastic Agent extracted') + .should('exist'); + }); + + it('shows a danger callout when elastic agent was not extracted', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'danger' + ); + cy.getByTestSubj('obltOnboardingStepStatus-danger') + .contains('Extract Elastic Agent') + .should('exist'); + }); + }); + + describe('Install elastic Agent step', () => { + beforeEach(() => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'complete' + ); + }); + + it('shows a loading callout when elastic agent is installing', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'loading' + ); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Installing Elastic Agent') + .should('exist'); + }); + + it('shows a success callout when elastic agent is installed', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'complete' + ); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains('Elastic Agent installed') + .should('exist'); + }); + + it('shows a danger callout when elastic agent was not installed', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'danger' + ); + cy.getByTestSubj('obltOnboardingStepStatus-danger') + .contains('Install Elastic Agent') + .should('exist'); + }); + }); + + describe('Check elastic Agent status step', () => { + beforeEach(() => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'complete' + ); + }); + + it('shows a loading callout when getting elastic agent status', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-status', + 'loading' + ); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Connecting to the Elastic Agent') + .should('exist'); + }); + + it('shows a success callout when elastic agent status is healthy', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-status', + 'complete' + ); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains('Connected to the Elastic Agent') + .should('exist'); + }); + + it('shows a warning callout when elastic agent status is not healthy', () => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-status', + 'warning' + ); + cy.getByTestSubj('obltOnboardingStepStatus-warning') + .contains('Connect to the Elastic Agent') + .should('exist'); + }); + }); + }); + }); + }); + + describe('Configure Elastic Agent step', () => { + let onboardingId: string; + + beforeEach(() => { + cy.intercept('POST', '/internal/observability_onboarding/logs/flow').as( + 'createOnboardingFlow' + ); + configureCustomLogs(); + cy.wait('@createOnboardingFlow') + .its('response.body') + .then((body) => { + onboardingId = body.onboardingId; + }); + }); + + describe('When user select Linux OS', () => { + beforeEach(() => { + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentAutoDownloadConfig' + ).click(); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus(onboardingId, 'ea-extract', 'complete'); + cy.updateInstallationStepStatus(onboardingId, 'ea-install', 'complete'); + cy.updateInstallationStepStatus(onboardingId, 'ea-status', 'complete'); + }); + + it('shows loading callout when config is being downloaded to the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'loading'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-loading"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Downloading Elastic Agent config') + .should('exist'); + }); + + it('shows success callout when the configuration has been written to the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'complete'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-complete"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains( + 'Elastic Agent config written to /opt/Elastic/Agent/elastic-agent.yml' + ) + .should('exist'); + }); + + it('shows warning callout when the configuration was not written in the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'warning'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-warning"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-warning') + .contains('Configure the agent') + .should('exist'); + }); + }); + + describe('When user select Mac OS', () => { + beforeEach(() => { + cy.get('.euiButtonGroup').contains('MacOS').click(); + cy.getByTestSubj( + 'obltOnboardingInstallElasticAgentAutoDownloadConfig' + ).click(); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus(onboardingId, 'ea-extract', 'complete'); + cy.updateInstallationStepStatus(onboardingId, 'ea-install', 'complete'); + cy.updateInstallationStepStatus(onboardingId, 'ea-status', 'complete'); + }); + + it('shows loading callout when config is being downloaded to the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'loading'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-loading"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-loading') + .contains('Downloading Elastic Agent config') + .should('exist'); + }); + + it('shows success callout when the configuration has been written to the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'complete'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-complete"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-complete') + .contains( + 'Elastic Agent config written to /Library/Elastic/Agent/elastic-agent.yml' + ) + .should('exist'); + }); + + it('shows warning callout when the configuration was not written in the host', () => { + cy.updateInstallationStepStatus(onboardingId, 'ea-config', 'warning'); + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-warning"]' + ).should('exist'); + cy.getByTestSubj('obltOnboardingStepStatus-warning') + .contains('Configure the agent') + .should('exist'); + }); + }); + + describe('When user select Windows', () => { + beforeEach(() => { + cy.get('.euiButtonGroup').contains('Windows').click(); + }); + + it('step is disabled', () => { + cy.get( + '[data-test-subj="obltOnboardingConfigureElasticAgentStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-disabled"]' + ).should('exist'); + }); + }); + }); + + describe('Check logs step', () => { + let onboardingId: string; + + beforeEach(() => { + cy.intercept('POST', '/internal/observability_onboarding/logs/flow').as( + 'createOnboardingFlow' + ); + configureCustomLogs(); + cy.wait('@createOnboardingFlow') + .its('response.body') + .then((body) => { + onboardingId = body.onboardingId; + }); + }); + + describe('When user select Linux OS or MacOS', () => { + describe('When configure Elastic Agent step is not finished', () => { + beforeEach(() => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'complete' + ); + cy.updateInstallationStepStatus(onboardingId, 'ea-status', 'loading'); + }); + + it('check logs is not triggered', () => { + cy.get( + '[data-test-subj="obltOnboardingCheckLogsStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-incomplete"]' + ).should('exist'); + cy.get('.euiStep__title') + .contains('Ship logs to Elastic Observability') + .should('exist'); + }); + }); + + describe('When configure Elastic Agent step has finished', () => { + beforeEach(() => { + cy.updateInstallationStepStatus( + onboardingId, + 'ea-download', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-extract', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-install', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-status', + 'complete' + ); + cy.updateInstallationStepStatus( + onboardingId, + 'ea-config', + 'complete' + ); + }); + + it('shows loading callout when logs are being checked', () => { + cy.get( + '[data-test-subj="obltOnboardingCheckLogsStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-loading"]' + ).should('exist'); + cy.get('.euiStep__title') + .contains('Waiting for logs to be shipped...') + .should('exist'); + }); + }); + }); + + describe('When user select Windows', () => { + beforeEach(() => { + cy.get('.euiButtonGroup').contains('Windows').click(); + }); + + it('step is disabled', () => { + cy.get( + '[data-test-subj="obltOnboardingCheckLogsStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-disabled"]' + ).should('exist'); + }); + }); + }); + + describe('When logs are being shipped', () => { + beforeEach(() => { + cy.intercept('GET', '**/progress', { + status: 200, + body: { + progress: { + 'ea-download': { status: 'complete' }, + 'ea-extract': { status: 'complete' }, + 'ea-install': { status: 'complete' }, + 'ea-status': { status: 'complete' }, + 'ea-config': { status: 'complete' }, + 'logs-ingest': { status: 'complete' }, + }, + }, + }).as('checkOnboardingProgress'); + configureCustomLogs(); + }); + + it('shows success callout when logs has arrived to elastic', () => { + cy.wait('@checkOnboardingProgress'); + cy.get( + '[data-test-subj="obltOnboardingCheckLogsStep"] .euiStep__titleWrapper [class$="euiStepNumber-s-complete"]' + ).should('exist'); + cy.get('.euiStep__title') + .contains('Logs are being shipped!') + .should('exist'); + }); + + it('when user clicks on Explore Logs it navigates to discover', () => { + cy.wait('@checkOnboardingProgress'); + cy.getByTestSubj('obltOnboardingExploreLogs').should('exist').click(); + cy.url().should('include', '/app/discover'); + + cy.get('button[title="logs-*"]').should('exist'); + }); + }); +}); diff --git a/x-pack/plugins/observability_onboarding/e2e/cypress/support/commands.ts b/x-pack/plugins/observability_onboarding/e2e/cypress/support/commands.ts index ddceaf3325bfa..f4a30e896c8db 100644 --- a/x-pack/plugins/observability_onboarding/e2e/cypress/support/commands.ts +++ b/x-pack/plugins/observability_onboarding/e2e/cypress/support/commands.ts @@ -96,6 +96,30 @@ Cypress.Commands.add( } ); +Cypress.Commands.add('installCustomIntegration', (integrationName: string) => { + const kibanaUrl = Cypress.env('KIBANA_URL'); + + cy.request({ + log: false, + method: 'POST', + url: `${kibanaUrl}/api/fleet/epm/custom_integrations`, + body: { + force: true, + integrationName, + datasets: [ + { name: 'access', type: 'logs' }, + { name: 'error', type: 'metrics' }, + { name: 'warning', type: 'logs' }, + ], + }, + headers: { + 'kbn-xsrf': 'e2e_test', + 'Elastic-Api-Version': '2023-10-31', + }, + auth: { user: 'editor', pass: 'changeme' }, + }); +}); + Cypress.Commands.add('deleteIntegration', (integrationName: string) => { const kibanaUrl = Cypress.env('KIBANA_URL'); @@ -107,8 +131,9 @@ Cypress.Commands.add('deleteIntegration', (integrationName: string) => { 'kbn-xsrf': 'e2e_test', }, auth: { user: 'editor', pass: 'changeme' }, + failOnStatusCode: false, }).then((response) => { - const status = response.body.item.status; + const status = response.body.item?.status; if (status === 'installed') { cy.request({ log: false, diff --git a/x-pack/plugins/observability_onboarding/e2e/cypress/support/types.d.ts b/x-pack/plugins/observability_onboarding/e2e/cypress/support/types.d.ts index 6b5695d159d76..dbc28bb442bb9 100644 --- a/x-pack/plugins/observability_onboarding/e2e/cypress/support/types.d.ts +++ b/x-pack/plugins/observability_onboarding/e2e/cypress/support/types.d.ts @@ -17,6 +17,7 @@ declare namespace Cypress { loginAsElastic(): Cypress.Chainable>; getByTestSubj(selector: string): Chainable>; visitKibana(url: string, rangeFrom?: string, rangeTo?: string): void; + installCustomIntegration(integrationName: string): void; deleteIntegration(integrationName: string): void; updateInstallationStepStatus( onboardingId: string, diff --git a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/configure_logs.tsx b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/configure_logs.tsx index cb17a5fa68a4d..798614365d6b0 100644 --- a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/configure_logs.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/configure_logs.tsx @@ -174,7 +174,6 @@ export function ConfigureLogs() { items={[ , {isCreatingIntegration ? i18n.translate( @@ -230,7 +230,10 @@ export function ConfigureLogs() { > <> {logFilePaths.map((filepath, index) => ( -
+
{index > 0 && } @@ -249,10 +252,10 @@ export function ConfigureLogs() { {index > 0 && ( removeLogFilePath(index)} + data-test-subj={`obltOnboardingLogFilePathDelete-${index}`} /> )} @@ -269,9 +272,9 @@ export function ConfigureLogs() { > {i18n.translate( 'xpack.observability_onboarding.configureLogs.logFile.addRow', @@ -320,7 +323,6 @@ export function ConfigureLogs() { } > setServiceName(event.target.value)} + data-test-subj="obltOnboardingCustomLogsServiceName" /> @@ -357,6 +360,7 @@ export function ConfigureLogs() { defaultMessage: 'Advanced settings', } )} + data-test-subj="obltOnboardingCustomLogsAdvancedSettings" > setNamespace(event.target.value)} + data-test-subj="obltOnboardingCustomLogsNamespace" /> @@ -461,11 +465,11 @@ export function ConfigureLogs() { } > setCustomConfigurations(event.target.value) } + data-test-subj="obltOnboardingCustomLogsCustomConfig" /> @@ -526,7 +530,6 @@ export function ConfigureLogs() { error={integrationNameError} > setIntegrationNameTouched(true)} + data-test-subj="obltOnboardingCustomLogsIntegrationsName" /> setDatasetNameTouched(true)} + data-test-subj="obltOnboardingCustomLogsDatasetName" /> @@ -624,13 +628,23 @@ const getIntegrationErrorCallout = (integrationError: IntegrationError) => { } ); return ( - +

{authorizationDescription}

); case 'UnknownError': return ( - +

{integrationError.message}

); diff --git a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/install_elastic_agent.tsx b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/install_elastic_agent.tsx index 041ec786697c0..2457d75d4f543 100644 --- a/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/install_elastic_agent.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/app/custom_logs/wizard/install_elastic_agent.tsx @@ -211,7 +211,11 @@ export function InstallElasticAgent() { : stepStatus === 'complete' ? CHECK_LOGS_LABELS.completed : CHECK_LOGS_LABELS.incomplete; - return { title, status: stepStatus }; + return { + title, + status: stepStatus, + 'data-test-subj': 'obltOnboardingCheckLogsStep', + }; } return { title: CHECK_LOGS_LABELS.incomplete, @@ -245,7 +249,7 @@ export function InstallElasticAgent() {
@@ -395,7 +400,7 @@ const CHECK_LOGS_LABELS = { ), loading: i18n.translate( 'xpack.observability_onboarding.installElasticAgent.progress.logsIngest.loadingTitle', - { defaultMessage: 'Waiting for Logs to be shipped...' } + { defaultMessage: 'Waiting for logs to be shipped...' } ), completed: i18n.translate( 'xpack.observability_onboarding.installElasticAgent.progress.logsIngest.completedTitle', diff --git a/x-pack/plugins/observability_shared/public/hooks/use_link_props.ts b/x-pack/plugins/observability_shared/public/hooks/use_link_props.ts index f230a7097cf6d..cea6bd835b985 100644 --- a/x-pack/plugins/observability_shared/public/hooks/use_link_props.ts +++ b/x-pack/plugins/observability_shared/public/hooks/use_link_props.ts @@ -19,6 +19,7 @@ export interface LinkDescriptor { pathname?: string; hash?: string; search?: Search; + state?: unknown; } export interface LinkProps { @@ -31,7 +32,7 @@ export interface Options { } export const useLinkProps = ( - { app, pathname, hash, search }: LinkDescriptor, + { app, pathname, hash, search, state }: LinkDescriptor, options: Options = {} ): LinkProps => { validateParams({ app, pathname, hash, search }); @@ -77,7 +78,7 @@ export const useLinkProps = ( const navigate = () => { if (navigateToApp) { const navigationPath = mergedHash ? `#${mergedHash}` : mergedPathname; - navigateToApp(app, { path: navigationPath ? navigationPath : undefined }); + navigateToApp(app, { path: navigationPath ? navigationPath : undefined, state }); } }; @@ -94,7 +95,7 @@ export const useLinkProps = ( navigate(); } }; - }, [navigateToApp, mergedHash, mergedPathname, app, prompt]); + }, [prompt, navigateToApp, mergedHash, mergedPathname, app, state]); return { href, diff --git a/x-pack/plugins/painless_lab/server/index.ts b/x-pack/plugins/painless_lab/server/index.ts index b94cccf8480cf..d81147ed9e395 100644 --- a/x-pack/plugins/painless_lab/server/index.ts +++ b/x-pack/plugins/painless_lab/server/index.ts @@ -5,9 +5,21 @@ * 2.0. */ -import { PluginInitializerContext } from '@kbn/core/server'; +import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; +import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server'; import { PainlessLabServerPlugin } from './plugin'; +export const configSchema = schema.object({ + enabled: offeringBasedSchema({ + serverless: schema.boolean({ defaultValue: true }), + }), +}); +export type ConfigType = TypeOf; + +export const config: PluginConfigDescriptor = { + schema: configSchema, +}; + export const plugin = (ctx: PluginInitializerContext) => { return new PainlessLabServerPlugin(ctx); }; diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx index 118c78e290759..3aa6ea6513484 100644 --- a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx @@ -16,9 +16,41 @@ import { SearchBar } from '@kbn/unified-search-plugin/public'; import type { QueryBarComponentProps } from '.'; import { QueryBar } from '.'; +import type { DataViewFieldMap } from '@kbn/data-views-plugin/common'; +import { createStubDataView } from '@kbn/data-views-plugin/common/data_view.stub'; +import { fields } from '@kbn/data-views-plugin/common/mocks'; +import { useKibana } from '../../lib/kibana'; + +const getMockIndexPattern = () => ({ + ...createStubDataView({ + spec: { + id: '1234', + title: 'logstash-*', + fields: ((): DataViewFieldMap => { + const fieldMap: DataViewFieldMap = Object.create(null); + for (const field of fields) { + fieldMap[field.name] = { ...field }; + } + return fieldMap; + })(), + }, + }), +}); + const mockUiSettingsForFilterManager = coreMock.createStart().uiSettings; +jest.mock('../../lib/kibana'); describe('QueryBar ', () => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + data: { + dataViews: { + create: jest.fn().mockResolvedValue(getMockIndexPattern()), + clearInstanceCache: jest.fn(), + }, + }, + }, + }); const mockOnChangeQuery = jest.fn(); const mockOnSubmitQuery = jest.fn(); const mockOnSavedQuery = jest.fn(); @@ -52,10 +84,10 @@ describe('QueryBar ', () => { mockOnSavedQuery.mockClear(); }); - test('check if we format the appropriate props to QueryBar', () => { - const wrapper = mount( - - { + await act(async () => { + const wrapper = await getWrapper( + { onSubmitQuery={mockOnSubmitQuery} onSavedQuery={mockOnSavedQuery} /> - - ); - const { - customSubmitButton, - timeHistory, - onClearSavedQuery, - onFiltersUpdated, - onQueryChange, - onQuerySubmit, - onSaved, - onSavedQueryUpdated, - ...searchBarProps - } = wrapper.find(SearchBar).props(); + ); - expect(searchBarProps).toEqual({ - dataTestSubj: undefined, - dateRangeFrom: 'now/d', - dateRangeTo: 'now/d', - displayStyle: undefined, - filters: [], - indexPatterns: [ - { - fields: [ - { - aggregatable: true, - name: '@timestamp', - searchable: true, - type: 'date', - }, - { - aggregatable: true, - name: '@version', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.ephemeral_id', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.hostname', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.id', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test1', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test2', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test3', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test4', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test5', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test6', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test7', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'agent.test8', - searchable: true, - type: 'string', - }, - { - aggregatable: true, - name: 'host.name', - searchable: true, - type: 'string', - }, - { - aggregatable: false, - name: 'nestedField.firstAttributes', - searchable: true, - type: 'string', - }, - { - aggregatable: false, - name: 'nestedField.secondAttributes', - searchable: true, - type: 'string', - }, - ], - title: 'filebeat-*,auditbeat-*,packetbeat-*', - }, - ], - isLoading: false, - isRefreshPaused: true, - query: { - language: 'kuery', - query: 'here: query', - }, - refreshInterval: undefined, - savedQuery: undefined, - showAutoRefreshOnly: false, - showDatePicker: false, - showFilterBar: true, - showQueryInput: true, - showSaveQuery: true, - showSubmitButton: false, + await waitFor(() => { + wrapper.update(); + const { + customSubmitButton, + timeHistory, + onClearSavedQuery, + onFiltersUpdated, + onQueryChange, + onQuerySubmit, + onSaved, + onSavedQueryUpdated, + ...searchBarProps + } = wrapper.find(SearchBar).props(); + expect((searchBarProps?.indexPatterns ?? [{ id: 'unknown' }])[0].id).toEqual( + getMockIndexPattern().id + ); + }); }); }); @@ -294,7 +208,6 @@ describe('QueryBar ', () => { const onSubmitQueryRef = searchBarProps.onQuerySubmit; const onSavedQueryRef = searchBarProps.onSavedQueryUpdated; wrapper.setProps({ onSavedQuery: jest.fn() }); - wrapper.update(); expect(onSavedQueryRef).not.toEqual(wrapper.find(SearchBar).props().onSavedQueryUpdated); expect(onChangedQueryRef).toEqual(wrapper.find(SearchBar).props().onQueryChange); diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx b/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx index d86f3de10b549..aea4874f9a2ef 100644 --- a/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { memo, useMemo, useCallback } from 'react'; +import React, { memo, useMemo, useCallback, useState, useEffect } from 'react'; import deepEqual from 'fast-deep-equal'; import type { DataViewBase, Filter, Query, TimeRange } from '@kbn/es-query'; @@ -16,6 +16,8 @@ import type { SearchBarProps } from '@kbn/unified-search-plugin/public'; import { SearchBar } from '@kbn/unified-search-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { useKibana } from '../../lib/kibana'; + export interface QueryBarComponentProps { dataTestSubj?: string; dateRangeFrom?: string; @@ -36,6 +38,9 @@ export interface QueryBarComponentProps { isDisabled?: boolean; } +export const isDataView = (obj: unknown): obj is DataView => + obj != null && typeof obj === 'object' && Object.hasOwn(obj, 'getName'); + export const QueryBar = memo( ({ dateRangeFrom, @@ -56,6 +61,8 @@ export const QueryBar = memo( displayStyle, isDisabled, }) => { + const { data } = useKibana().services; + const [dataView, setDataView] = useState(); const onQuerySubmit = useCallback( (payload: { dateRange: TimeRange; query?: Query }) => { if (payload.query != null && !deepEqual(payload.query, filterQuery)) { @@ -102,16 +109,32 @@ export const QueryBar = memo( [filterManager] ); - const indexPatterns = useMemo(() => [indexPattern], [indexPattern]); - const timeHistory = useMemo(() => new TimeHistory(new Storage(localStorage)), []); + useEffect(() => { + if (isDataView(indexPattern)) { + setDataView(indexPattern); + } else { + const createDataView = async () => { + const dv = await data.dataViews.create({ title: indexPattern.title }); + setDataView(dv); + }; + createDataView(); + } + return () => { + if (dataView?.id) { + data.dataViews.clearInstanceCache(dataView?.id); + } + }; + }, [data.dataViews, dataView?.id, indexPattern]); + const timeHistory = useMemo(() => new TimeHistory(new Storage(localStorage)), []); + const arrDataView = useMemo(() => (dataView != null ? [dataView] : []), [dataView]); return ( = ({ = ({ = ({ > { ), diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts index f623d4ee2f7db..ea83a8f3a1a23 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts @@ -284,7 +284,7 @@ export const RESPONSE_TITLE = i18n.translate( ); export const RESPONSE_EMPTY = i18n.translate('xpack.securitySolution.flyout.response.empty', { - defaultMessage: 'This alert did not generate an external notification.', + defaultMessage: 'There are no response actions defined for this event.', }); export const TECHNICAL_PREVIEW_TITLE = i18n.translate( diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx index b4f4e3ffc67d3..403731566ef3f 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx @@ -17,6 +17,8 @@ import { import { getExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_item_schema.mock'; import { act } from '@testing-library/react-hooks'; +const apiVersion = '2023-10-31'; + describe('Bulk delete artifact hook', () => { let result: ReturnType; @@ -56,6 +58,7 @@ describe('Bulk delete artifact hook', () => { expect(onSuccessMock).toHaveBeenCalledTimes(1); expect(fakeHttpServices.delete).toHaveBeenCalledTimes(2); expect(fakeHttpServices.delete).toHaveBeenNthCalledWith(1, '/api/exception_lists/items', { + version: apiVersion, query: { id: 'fakeId-1', item_id: undefined, @@ -63,6 +66,7 @@ describe('Bulk delete artifact hook', () => { }, }); expect(fakeHttpServices.delete).toHaveBeenNthCalledWith(2, '/api/exception_lists/items', { + version: apiVersion, query: { id: undefined, item_id: 'fakeId-2', diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx index 57a1f77243b5d..5db9734c61f9f 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx @@ -17,6 +17,8 @@ import { import { getExceptionListItemSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_item_schema.mock'; import { act } from '@testing-library/react-hooks'; +const apiVersion = '2023-10-31'; + describe('Bulk update artifact hook', () => { let result: ReturnType; @@ -57,9 +59,11 @@ describe('Bulk update artifact hook', () => { expect(fakeHttpServices.put).toHaveBeenCalledTimes(2); expect(fakeHttpServices.put).toHaveBeenNthCalledWith(1, '/api/exception_lists/items', { body: JSON.stringify(ExceptionsListApiClient.cleanExceptionsBeforeUpdate(exceptionItem1)), + version: apiVersion, }); expect(fakeHttpServices.put).toHaveBeenNthCalledWith(2, '/api/exception_lists/items', { body: JSON.stringify(ExceptionsListApiClient.cleanExceptionsBeforeUpdate(exceptionItem2)), + version: apiVersion, }); }); }); diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx index a40ad85dff53c..853ea0df96a3d 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx @@ -54,6 +54,7 @@ describe('Create artifact hook', () => { expect(onSuccessMock).toHaveBeenCalledTimes(1); expect(fakeHttpServices.post).toHaveBeenCalledTimes(1); expect(fakeHttpServices.post).toHaveBeenCalledWith('/api/exception_lists/items', { + version: '2023-10-31', body: JSON.stringify(exceptionItem), }); }); diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx index f717546be7ead..9473a50fa8a33 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx @@ -54,6 +54,7 @@ describe('Delete artifact hook', () => { expect(onSuccessMock).toHaveBeenCalledTimes(1); expect(fakeHttpServices.delete).toHaveBeenCalledTimes(1); expect(fakeHttpServices.delete).toHaveBeenCalledWith('/api/exception_lists/items', { + version: '2023-10-31', query: { id: 'fakeId', namespace_type: 'agnostic', diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx index dc444e75816c0..86acf7944b258 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx @@ -49,6 +49,7 @@ describe('Get artifact hook', () => { expect(result.data).toBe(apiResponse); expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); expect(fakeHttpServices.get).toHaveBeenCalledWith('/api/exception_lists/items', { + version: '2023-10-31', query: { item_id: 'fakeId', namespace_type: 'agnostic', diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx index d7d68e82c9d3e..8f6e5c4353206 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx @@ -68,6 +68,7 @@ describe('List artifact hook', () => { expect(result.data).toBe(apiResponse); expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); expect(fakeHttpServices.get).toHaveBeenCalledWith('/api/exception_lists/items/_find', { + version: '2023-10-31', query: { filter: '((exception-list-agnostic.attributes.tags:"policy:policy-1" OR exception-list-agnostic.attributes.tags:"policy:all")) AND ((exception-list-agnostic.attributes.field-1:(*test*) OR exception-list-agnostic.attributes.field-1.field-2:(*test*) OR exception-list-agnostic.attributes.field-2:(*test*)))', diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx index f0e8abd533fce..310e4d0e1830e 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx @@ -62,6 +62,7 @@ describe('Summary artifact hook', () => { expect(result.data).toBe(apiResponse); expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); expect(fakeHttpServices.get).toHaveBeenCalledWith('/api/exception_lists/summary', { + version: '2023-10-31', query: { filter: '((exception-list-agnostic.attributes.tags:"policy:policy-1" OR exception-list-agnostic.attributes.tags:"policy:all")) AND ((exception-list-agnostic.attributes.field-1:(*test*) OR exception-list-agnostic.attributes.field-1.field-2:(*test*) OR exception-list-agnostic.attributes.field-2:(*test*)))', diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx index 8a718ec6a292e..14607a33f2098 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx @@ -54,6 +54,7 @@ describe('Update artifact hook', () => { expect(onSuccessMock).toHaveBeenCalledTimes(1); expect(fakeHttpServices.put).toHaveBeenCalledTimes(1); expect(fakeHttpServices.put).toHaveBeenCalledWith('/api/exception_lists/items', { + version: '2023-10-31', body: JSON.stringify(ExceptionsListApiClient.cleanExceptionsBeforeUpdate(exceptionItem)), }); }); diff --git a/x-pack/plugins/security_solution/public/management/links.test.ts b/x-pack/plugins/security_solution/public/management/links.test.ts index 28d3c727ce2a4..6a8c5525b8d58 100644 --- a/x-pack/plugins/security_solution/public/management/links.test.ts +++ b/x-pack/plugins/security_solution/public/management/links.test.ts @@ -115,6 +115,7 @@ describe('links', () => { }); describe('Host Isolation Exception', () => { + const apiVersion = '2023-10-31'; it('should return HIE if user has access permission (licensed)', async () => { (calculateEndpointAuthz as jest.Mock).mockReturnValue( getEndpointAuthzInitialStateMock({ canAccessHostIsolationExceptions: true }) @@ -154,6 +155,7 @@ describe('links', () => { expect(filteredLinks).toEqual(getLinksWithout(SecurityPageName.hostIsolationExceptions)); expect(fakeHttpServices.get).toHaveBeenCalledWith('/api/exception_lists/items/_find', { + version: apiVersion, query: expect.objectContaining({ list_id: [ENDPOINT_ARTIFACT_LISTS.hostIsolationExceptions.id], }), @@ -174,6 +176,7 @@ describe('links', () => { expect(filteredLinks).toEqual(links); expect(fakeHttpServices.get).toHaveBeenCalledWith('/api/exception_lists/items/_find', { + version: apiVersion, query: expect.objectContaining({ list_id: [ENDPOINT_ARTIFACT_LISTS.hostIsolationExceptions.id], }), diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts index 7fd2718b45c18..a69e54bf7776d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts @@ -57,7 +57,7 @@ export class EventFiltersApiClient extends ExceptionsListApiClient { const result: string[] = await this.getHttp().post( resolvePathVariables(SUGGESTIONS_ROUTE, { suggestion_type: 'eventFilters' }), { - version: '2023-10-31', + version: this.version, body: JSON.stringify(body), } ); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx index 034c723c1111f..c3930506bb081 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx @@ -110,6 +110,7 @@ describe.each(listType)('Policy details %s artifact delete modal', (type) => { }) ), path: '/api/exception_lists/items', + version: '2023-10-31', }); }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx index c93776ef0abac..48d133cd41f29 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx @@ -28,8 +28,11 @@ import { cleanEventFilterToUpdate } from '../../../../event_filters/service/serv import { EventFiltersApiClient } from '../../../../event_filters/service/api_client'; import { POLICY_ARTIFACT_FLYOUT_LABELS } from './translations'; +const apiVersion = '2023-10-31'; + const getDefaultQueryParameters = (customFilter: string | undefined = '') => ({ path: '/api/exception_lists/items/_find', + version: apiVersion, query: { filter: customFilter, list_id: ['endpoint_event_filters'], @@ -217,6 +220,7 @@ describe('Policy details artifacts flyout', () => { // verify the request with the new tag await waitFor(() => { expect(mockedApi.responseProvider.eventFiltersUpdateOne).toHaveBeenCalledWith({ + version: apiVersion, body: JSON.stringify( getCleanedExceptionWithNewTags(exceptions.data[0], testTags, policy) ), @@ -244,6 +248,7 @@ describe('Policy details artifacts flyout', () => { await waitFor(() => { // first exception expect(mockedApi.responseProvider.eventFiltersUpdateOne).toHaveBeenCalledWith({ + version: apiVersion, body: JSON.stringify( getCleanedExceptionWithNewTags(exceptions.data[0], testTags, policy) ), @@ -251,6 +256,7 @@ describe('Policy details artifacts flyout', () => { }); // second exception expect(mockedApi.responseProvider.eventFiltersUpdateOne).toHaveBeenCalledWith({ + version: apiVersion, body: JSON.stringify( getCleanedExceptionWithNewTags(exceptions.data[0], testTags, policy) ), diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx index 2d5e74439f0f6..1ad26fd171c28 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx @@ -25,6 +25,7 @@ import { EventFiltersApiClient } from '../../../../event_filters/service/api_cli const endpointGenerator = new EndpointDocGenerator('seed'); const getDefaultQueryParameters = (customFilter: string | undefined = '') => ({ path: '/api/exception_lists/items/_find', + version: '2023-10-31', query: { filter: customFilter, list_id: ['endpoint_event_filters'], diff --git a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts b/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts index 4439ac771fda3..213b8da54dcd0 100644 --- a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts +++ b/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts @@ -32,6 +32,8 @@ const getQueryParams = () => ({ sortOrder: 'asc', }); +const apiVersion = '2023-10-31'; + describe('Exceptions List Api Client', () => { let fakeCoreStart: jest.Mocked; let fakeHttpServices: jest.Mocked; @@ -136,6 +138,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); const expectedQueryParams = getQueryParams(); expect(fakeHttpServices.get).toHaveBeenCalledWith(`${EXCEPTION_LIST_ITEM_URL}/_find`, { + version: apiVersion, query: { page: expectedQueryParams.page, per_page: expectedQueryParams.perPage, @@ -156,6 +159,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); expect(fakeHttpServices.get).toHaveBeenCalledWith(EXCEPTION_LIST_ITEM_URL, { + version: apiVersion, query: { item_id: fakeItemId, id: undefined, @@ -175,6 +179,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.post).toHaveBeenCalledTimes(1); expect(fakeHttpServices.post).toHaveBeenCalledWith(EXCEPTION_LIST_ITEM_URL, { + version: apiVersion, body: JSON.stringify(exceptionItem), }); }); @@ -202,6 +207,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.put).toHaveBeenCalledTimes(1); expect(fakeHttpServices.put).toHaveBeenCalledWith(EXCEPTION_LIST_ITEM_URL, { + version: apiVersion, body: JSON.stringify(ExceptionsListApiClient.cleanExceptionsBeforeUpdate(exceptionItem)), }); }); @@ -214,6 +220,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.delete).toHaveBeenCalledTimes(1); expect(fakeHttpServices.delete).toHaveBeenCalledWith(EXCEPTION_LIST_ITEM_URL, { + version: apiVersion, query: { item_id: fakeItemId, id: undefined, @@ -230,6 +237,7 @@ describe('Exceptions List Api Client', () => { expect(fakeHttpServices.get).toHaveBeenCalledTimes(1); expect(fakeHttpServices.get).toHaveBeenCalledWith(`${EXCEPTION_LIST_URL}/summary`, { + version: apiVersion, query: { filter: fakeQklFilter, list_id: getFakeListId(), @@ -248,6 +256,7 @@ describe('Exceptions List Api Client', () => { await expect(exceptionsListApiClientInstance.hasData()).resolves.toBe(true); expect(fakeHttpServices.get).toHaveBeenCalledWith(`${EXCEPTION_LIST_ITEM_URL}/_find`, { + version: apiVersion, query: expect.objectContaining({ page: 1, per_page: 1, diff --git a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts b/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts index 4576fa74e5386..8716f4bee93ab 100644 --- a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts +++ b/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts @@ -43,9 +43,11 @@ export class ExceptionsListApiClient { T extends CreateExceptionListItemSchema | UpdateExceptionListItemSchema >( item: T - ) => T + ) => T, + public readonly version?: string ) { this.ensureListExists = this.createExceptionList(); + this.version = version ?? '2023-10-31'; } /** @@ -184,6 +186,7 @@ export class ExceptionsListApiClient { const result = await this.http.get( `${EXCEPTION_LIST_ITEM_URL}/_find`, { + version: this.version, query: { page, per_page: perPage, @@ -214,6 +217,7 @@ export class ExceptionsListApiClient { await this.ensureListExists; let result = await this.http.get(EXCEPTION_LIST_ITEM_URL, { + version: this.version, query: { id, item_id: itemId, @@ -243,6 +247,7 @@ export class ExceptionsListApiClient { } return this.http.post(EXCEPTION_LIST_ITEM_URL, { + version: this.version, body: JSON.stringify(transformedException), }); } @@ -260,6 +265,7 @@ export class ExceptionsListApiClient { } return this.http.put(EXCEPTION_LIST_ITEM_URL, { + version: this.version, body: JSON.stringify( ExceptionsListApiClient.cleanExceptionsBeforeUpdate(transformedException) ), @@ -277,6 +283,7 @@ export class ExceptionsListApiClient { await this.ensureListExists; return this.http.delete(EXCEPTION_LIST_ITEM_URL, { + version: this.version, query: { id, item_id: itemId, @@ -292,6 +299,7 @@ export class ExceptionsListApiClient { async summary(filter?: string): Promise { await this.ensureListExists; return this.http.get(`${EXCEPTION_LIST_URL}/summary`, { + version: this.version, query: { filter, list_id: this.listId, diff --git a/x-pack/plugins/serverless_search/kibana.jsonc b/x-pack/plugins/serverless_search/kibana.jsonc index bcf4cc540df14..f50f595bbf48d 100644 --- a/x-pack/plugins/serverless_search/kibana.jsonc +++ b/x-pack/plugins/serverless_search/kibana.jsonc @@ -18,10 +18,8 @@ "dashboard", "devTools", "discover", - "grokdebugger", "management", "ml", - "painlessLab", "searchprofiler", "security", "serverless", diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.tsx index a01ebdb941eda..d39346ab2b1b2 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx @@ -52,7 +52,7 @@ export const ElasticsearchOverview = () => { const [selectedLanguage, setSelectedLanguage] = useState(javascriptDefinition); const [clientApiKey, setClientApiKey] = useState(API_KEY_PLACEHOLDER); - const { application, cloud, http, userProfile, share } = useKibanaServices(); + const { application, cloud, http, user, share } = useKibanaServices(); const elasticsearchURL = useMemo(() => { return cloud?.elasticsearchUrl ?? ELASTICSEARCH_URL_PLACEHOLDER; @@ -73,7 +73,7 @@ export const ElasticsearchOverview = () => { - + diff --git a/x-pack/plugins/serverless_search/public/application/hooks/use_kibana.tsx b/x-pack/plugins/serverless_search/public/application/hooks/use_kibana.tsx index 3a11ee645ffad..48df795609213 100644 --- a/x-pack/plugins/serverless_search/public/application/hooks/use_kibana.tsx +++ b/x-pack/plugins/serverless_search/public/application/hooks/use_kibana.tsx @@ -9,12 +9,12 @@ import { CloudStart } from '@kbn/cloud-plugin/public'; import type { CoreStart } from '@kbn/core/public'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import { useKibana as useKibanaBase } from '@kbn/kibana-react-plugin/public'; -import { GetUserProfileResponse, UserProfileData } from '@kbn/security-plugin/common'; +import { AuthenticatedUser } from '@kbn/security-plugin/common'; export interface ServerlessSearchContext { cloud: CloudStart; share: SharePluginStart; - userProfile: GetUserProfileResponse; + user?: AuthenticatedUser; } type ServerlessSearchKibanaContext = CoreStart & ServerlessSearchContext; diff --git a/x-pack/plugins/serverless_search/public/plugin.ts b/x-pack/plugins/serverless_search/public/plugin.ts index c3faeb15f4384..6bd5b384fd581 100644 --- a/x-pack/plugins/serverless_search/public/plugin.ts +++ b/x-pack/plugins/serverless_search/public/plugin.ts @@ -8,6 +8,7 @@ import { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import { i18n } from '@kbn/i18n'; import { appIds } from '@kbn/management-cards-navigation'; +import { AuthenticatedUser } from '@kbn/security-plugin/common'; import { createServerlessSearchSideNavComponent as createComponent } from './layout/nav'; import { docLinks } from '../common/doc_links'; import { @@ -41,10 +42,15 @@ export class ServerlessSearchPlugin const [coreStart, services] = await core.getStartServices(); const { security } = services; docLinks.setDocLinks(coreStart.docLinks.links); + let user: AuthenticatedUser | undefined; + try { + const response = await security.authc.getCurrentUser(); + user = response; + } catch { + user = undefined; + } - const userProfile = await security.userProfiles.getCurrent(); - - return await renderApp(element, coreStart, { userProfile, ...services }); + return await renderApp(element, coreStart, { user, ...services }); }, }); @@ -58,12 +64,9 @@ export class ServerlessSearchPlugin async mount({ element }: AppMountParameters) { const { renderApp } = await import('./application/connectors'); const [coreStart, services] = await core.getStartServices(); - const { security } = services; - docLinks.setDocLinks(coreStart.docLinks.links); - const userProfile = await security.userProfiles.getCurrent(); - - return await renderApp(element, coreStart, { userProfile, ...services }); + docLinks.setDocLinks(coreStart.docLinks.links); + return await renderApp(element, coreStart, { ...services }); }, }); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx index 5a26839a7b284..5cc79bdf3503d 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/esql_query_expression.tsx @@ -150,7 +150,7 @@ export const EsqlQueryExpression: React.FC<
diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx index a2d45c78de9c9..63d0b0d36fe53 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/query_form_type_chooser.tsx @@ -73,13 +73,13 @@ export const QueryFormTypeChooser: React.FC = ({ label: i18n.translate( 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.esqlFormTypeLabel', { - defaultMessage: 'ESQL', + defaultMessage: 'ES|QL', } ), description: i18n.translate( 'xpack.stackAlerts.esQuery.ui.selectQueryFormType.esqlFormTypeDescription', { - defaultMessage: 'Use ESQL to define a text-based query.', + defaultMessage: 'Use ES|QL to define a text-based query.', } ), }); diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts index f43adeab3a3a8..90df11eb0c557 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.test.ts @@ -289,7 +289,7 @@ describe('expression params validation', () => { searchType: SearchType.esqlQuery, } as EsQueryRuleParams; expect(validateExpression(initialParams).errors.esqlQuery.length).toBeGreaterThan(0); - expect(validateExpression(initialParams).errors.esqlQuery[0]).toBe(`ESQL query is required.`); + expect(validateExpression(initialParams).errors.esqlQuery[0]).toBe(`ES|QL query is required.`); }); test('if esqlQuery timeField property is not defined should return proper error message', () => { diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts index 7d7c34a76927c..f2d1de5ef8695 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/validation.ts @@ -231,7 +231,7 @@ const validateEsqlQueryParams = (ruleParams: EsQueryRuleParams({ method: 'POST', diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts index 6adb6e092d56f..8c63e0e0ac7f0 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts @@ -113,7 +113,7 @@ describe('ruleType', () => { "name": "index", }, Object { - "description": "ESQL query field used to fetch data from Elasticsearch.", + "description": "ES|QL query field used to fetch data from Elasticsearch.", "name": "esqlQuery", }, ], diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts index d0f7f7b816d8e..fc70403b174d3 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.ts @@ -134,7 +134,7 @@ export function getRuleType( const actionVariableEsqlQueryLabel = i18n.translate( 'xpack.stackAlerts.esQuery.actionVariableContextEsqlQueryLabel', { - defaultMessage: 'ESQL query field used to fetch data from Elasticsearch.', + defaultMessage: 'ES|QL query field used to fetch data from Elasticsearch.', } ); 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 8e517ada4ddca..c643f616e5eb3 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -4796,7 +4796,7 @@ "total": { "type": "long", "_meta": { - "description": "Total number of shards for span and trasnaction indices" + "description": "Total number of shards for span and transaction indices" } } } @@ -4810,7 +4810,7 @@ "count": { "type": "long", "_meta": { - "description": "Total number of transaction and span documents overall" + "description": "Total number of metric documents overall" } } } @@ -4820,7 +4820,7 @@ "size_in_bytes": { "type": "long", "_meta": { - "description": "Size of the index in byte units overall." + "description": "Size of the metric indicess in byte units overall." } } } diff --git a/x-pack/plugins/threat_intelligence/cypress/cypress.config.ts b/x-pack/plugins/threat_intelligence/cypress/cypress.config.ts index fd438bf8c4d2c..611e00f08686e 100644 --- a/x-pack/plugins/threat_intelligence/cypress/cypress.config.ts +++ b/x-pack/plugins/threat_intelligence/cypress/cypress.config.ts @@ -38,6 +38,8 @@ export default defineCypressConfig({ viewportHeight: 946, viewportWidth: 1680, env: { + grepFilterSpecs: true, + grepTags: '@ess', protocol: 'http', hostname: 'localhost', configport: '5601', @@ -45,6 +47,10 @@ export default defineCypressConfig({ e2e: { baseUrl: 'http://localhost:5601', experimentalMemoryManagement: true, - specPattern: './cypress/e2e/**/*.cy.ts', + setupNodeEvents(on, config) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@cypress/grep/src/plugin')(config); + return config; + }, }, }); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/block_list.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/block_list.cy.ts index ffe13397e0ebb..63f58acf99484 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/block_list.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/block_list.cy.ts @@ -35,7 +35,7 @@ const FIRST_BLOCK_LIST_NEW_DESCRIPTION = 'the first description'; const SECOND_BLOCK_LIST_NEW_NAME = 'second blocklist entry'; const SECOND_BLOCK_LIST_NEW_DESCRIPTION = 'the second description'; -describe('Block list with invalid indicators', () => { +describe('Block list with invalid indicators', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/invalid_indicators_data'); login(); @@ -56,7 +56,7 @@ describe('Block list with invalid indicators', () => { }); }); -describe('Block list interactions', () => { +describe('Block list interactions', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/indicators_data'); login(); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/cases.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/cases.cy.ts index 39dffd2da0a32..18caadc01319d 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/cases.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/cases.cy.ts @@ -32,7 +32,7 @@ import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; const THREAT_INTELLIGENCE = '/app/security/threat_intelligence/indicators'; -describe('Cases with invalid indicators', () => { +describe('Cases with invalid indicators', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/invalid_indicators_data'); login(); @@ -58,7 +58,7 @@ describe('Cases with invalid indicators', () => { }); }); -describe('Cases interactions', () => { +describe('Cases interactions', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/indicators_data'); login(); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/empty_page.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/empty_page.cy.ts index ddb688ff6b7c1..b7c6083480c38 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/empty_page.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/empty_page.cy.ts @@ -14,7 +14,7 @@ import { const THREAT_INTEL_PATH = '/app/security/threat_intelligence/'; -describe('Empty Page', () => { +describe('Empty Page', { tags: '@ess' }, () => { beforeEach(() => { login(); visit(THREAT_INTEL_PATH); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/indicators.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/indicators.cy.ts index 3b7e360813c0e..cbb95e9a610f1 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/indicators.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/indicators.cy.ts @@ -56,7 +56,7 @@ const THREAT_INTELLIGENCE = '/app/security/threat_intelligence/indicators'; const URL_WITH_CONTRADICTORY_FILTERS = '/app/security/threat_intelligence/indicators?indicators=(filterQuery:(language:kuery,query:%27%27),filters:!((%27$state%27:(store:appState),meta:(alias:!n,disabled:!f,index:%27%27,key:threat.indicator.type,negate:!f,params:(query:file),type:phrase),query:(match_phrase:(threat.indicator.type:file))),(%27$state%27:(store:appState),meta:(alias:!n,disabled:!f,index:%27%27,key:threat.indicator.type,negate:!f,params:(query:url),type:phrase),query:(match_phrase:(threat.indicator.type:url)))),timeRange:(from:now/d,to:now/d))'; -describe('Invalid Indicators', () => { +describe('Invalid Indicators', { tags: '@ess' }, () => { describe('verify the grid loads even with missing fields', () => { beforeEach(() => { esArchiverLoad('threat_intelligence/invalid_indicators_data'); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/query_bar.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/query_bar.cy.ts index 379147b900a47..9ee37105d1bc0 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/query_bar.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/query_bar.cy.ts @@ -31,7 +31,7 @@ import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; const THREAT_INTELLIGENCE = '/app/security/threat_intelligence/indicators'; -describe('Indicators query bar interaction', () => { +describe('Indicators query bar interaction', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/indicators_data'); login(); diff --git a/x-pack/plugins/threat_intelligence/cypress/e2e/timeline.cy.ts b/x-pack/plugins/threat_intelligence/cypress/e2e/timeline.cy.ts index 7c2fcdc2b98b2..51f87abcba5bd 100644 --- a/x-pack/plugins/threat_intelligence/cypress/e2e/timeline.cy.ts +++ b/x-pack/plugins/threat_intelligence/cypress/e2e/timeline.cy.ts @@ -26,7 +26,7 @@ import { login, visit } from '../tasks/login'; const THREAT_INTELLIGENCE = '/app/security/threat_intelligence/indicators'; -describe('Timeline', () => { +describe('Timeline', { tags: '@ess' }, () => { beforeEach(() => { esArchiverLoad('threat_intelligence/indicators_data'); login(); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 804e6f38ef412..156217309ca03 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -16564,8 +16564,6 @@ "xpack.fleet.policyDetailsPackagePolicies.createFirstTitle": "Ajouter votre première intégration", "xpack.fleet.policyForm.deletePolicyActionText": "Supprimer la stratégie", "xpack.fleet.policyForm.deletePolicyActionText.disabled": "La politique d'agent avec les politiques de package géré ne peut pas être supprimée.", - "xpack.fleet.policyForm.deletePolicyGroupDescription": "Les données existantes ne sont pas supprimées.", - "xpack.fleet.policyForm.deletePolicyGroupTitle": "Supprimer la stratégie", "xpack.fleet.policyForm.generalSettingsGroupDescription": "Attribuez un nom et ajoutez une description à votre stratégie d'agent.", "xpack.fleet.policyForm.generalSettingsGroupTitle": "Paramètres généraux", "xpack.fleet.renameAgentTags.errorNotificationTitle": "La balise n’a pas pu être renommée", @@ -18663,7 +18661,6 @@ "xpack.infra.assetDetailsEmbeddable.displayName": "Détails de ressource", "xpack.infra.assetDetailsEmbeddable.title": "Détails de ressource", "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "Utilisation CPU", - "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "Utilisation de l’espace disque", "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "Utilisation mémoire", "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "Charge normalisée", "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "Moyenne", @@ -18770,7 +18767,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.tx": "Nombre d'octets envoyés par seconde sur les interfaces publiques des hôtes.", "xpack.infra.hostsViewPage.table.addFilter": "Ajouter un filtre", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "Utilisation CPU (moy.)", - "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "Utilisation de l’espace disque (moy.)", "xpack.infra.hostsViewPage.table.memoryFreeColumnHeader": "Sans mémoire (moy.)", "xpack.infra.hostsViewPage.table.memoryUsageColumnHeader": "Utilisation de la mémoire (moy.)", "xpack.infra.hostsViewPage.table.nameColumnHeader": "Nom", @@ -18796,7 +18792,6 @@ "xpack.infra.hostsViewPage.tabs.metricsCharts.diskIOWrite": "Entrées et sorties par seconde en écriture sur le disque", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskReadThroughput": "Rendement de lecture du disque", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceAvailable": "Espace disque disponible", - "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceUsed": "Utilisation de l’espace disque", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskWriteThroughput": "Rendement d’écriture du disque", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryFree": "Sans mémoire", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryUsage": "Utilisation mémoire", @@ -23930,17 +23925,11 @@ "xpack.ml.entityFilter.addFilterTooltip": "Ajouter un filtre", "xpack.ml.entityFilter.removeFilterTooltip": "Supprimer le filtre", "xpack.ml.logRateAnalysis.pageHeader": "Expliquer les pics de taux de log", - "xpack.ml.explorer.addToDashboard.anomalyCharts.dashboardsTitle": "Ajouter des graphiques d'anomalies aux tableaux de bord", "xpack.ml.explorer.addToDashboard.anomalyCharts.maxSeriesToPlotLabel": "Nombre maximal de séries à tracer", - "xpack.ml.explorer.addToDashboard.cancelButtonLabel": "Annuler", - "xpack.ml.explorer.addToDashboard.selectDashboardsLabel": "Sélectionner les tableaux de bord :", - "xpack.ml.explorer.addToDashboard.swimlanes.dashboardsTitle": "Ajouter un couloir à un tableau de bord", - "xpack.ml.explorer.addToDashboard.swimlanes.selectSwimlanesLabel": "Sélectionner la vue de couloir :", "xpack.ml.explorer.addToDashboardLabel": "Ajouter au tableau de bord", "xpack.ml.explorer.annotationsErrorCallOutTitle": "Une erreur s'est produite lors du chargement des annotations :", "xpack.ml.explorer.annotationsErrorTitle": "Annotations", "xpack.ml.explorer.anomalies.actionsAriaLabel": "Actions", - "xpack.ml.explorer.anomalies.actionsPopoverLabel": "Graphiques d'anomalies", "xpack.ml.explorer.anomalies.addToDashboardLabel": "Ajouter au tableau de bord", "xpack.ml.explorer.anomaliesTitle": "Anomalies", "xpack.ml.explorer.anomalyTimelinePopoverAdvancedExplanation": "Les scores d'anomalies affichés dans chaque section d'Anomaly Explorer (Explorateur d'anomalies) peuvent varier légèrement. Cette disparité s'explique par le fait que, pour chaque tâche, sont consignés les résultats de groupe, les résultats de groupe généraux, les résultats d'influenceur et les résultats d'enregistrements. Les scores d'anomalies sont générés pour chaque type de résultat. Le couloir général affiche le score maximal des groupes globaux pour chaque bloc. Lorsque vous affichez un couloir par tâche, il montre le score maximal du groupe dans chaque bloc. Lorsque vous choisissez l'affichage par influenceur, il montre le score maximal d'influenceur dans chaque bloc.", @@ -23962,10 +23951,6 @@ "xpack.ml.explorer.charts.viewInMapsLabel": "Afficher", "xpack.ml.explorer.charts.viewLabel": "Afficher", "xpack.ml.explorer.clearSelectionLabel": "Effacer la sélection", - "xpack.ml.explorer.dashboardsTable.actionsHeader": "Actions", - "xpack.ml.explorer.dashboardsTable.descriptionColumnHeader": "Description", - "xpack.ml.explorer.dashboardsTable.editActionName": "Ajouter au tableau de bord", - "xpack.ml.explorer.dashboardsTable.titleColumnHeader": "Titre", "xpack.ml.explorer.distributionChart.anomalyScoreLabel": "score d'anomalies", "xpack.ml.explorer.distributionChart.entityLabel": "entité", "xpack.ml.explorer.distributionChart.typicalLabel": "typique", @@ -27693,7 +27678,6 @@ "xpack.observability.threshold.rule.createInventoryRuleButton": "Créer une règle d'inventaire", "xpack.observability.threshold.rule.createThresholdRuleButton": "Créer une règle de seuil", "xpack.observability.threshold.rule.groupByKeysActionVariableDescription": "Objet contenant les groupes qui fournissent les données", - "xpack.observability.threshold.rule.homePage.toolbar.kqlSearchFieldPlaceholder": "Rechercher des données d'infrastructure… (par exemple host.name:host-1)", "xpack.observability.threshold.rule.hostActionVariableDescription": "Objet hôte défini par ECS s'il est disponible dans la source.", "xpack.observability.threshold.rule.infrastructureDropdownMenu": "Infrastructure", "xpack.observability.threshold.rule.infrastructureDropdownTitle": "Règles d'infrastructure", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 93352cb7778af..56e41f2009d4a 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -16578,8 +16578,6 @@ "xpack.fleet.policyDetailsPackagePolicies.createFirstTitle": "最初の統合を追加", "xpack.fleet.policyForm.deletePolicyActionText": "ポリシーを削除", "xpack.fleet.policyForm.deletePolicyActionText.disabled": "管理されたパッケージポリシーのエージェントポリシーは削除できません。", - "xpack.fleet.policyForm.deletePolicyGroupDescription": "既存のデータは削除されません。", - "xpack.fleet.policyForm.deletePolicyGroupTitle": "ポリシーを削除", "xpack.fleet.policyForm.generalSettingsGroupDescription": "エージェントポリシーの名前と説明を選択してください。", "xpack.fleet.policyForm.generalSettingsGroupTitle": "一般設定", "xpack.fleet.renameAgentTags.errorNotificationTitle": "タグ名の変更が失敗しました", @@ -18677,7 +18675,6 @@ "xpack.infra.assetDetailsEmbeddable.displayName": "アセット詳細", "xpack.infra.assetDetailsEmbeddable.title": "アセット詳細", "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "CPU使用状況", - "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "ディスク容量使用状況", "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "メモリー使用状況", "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "正規化された負荷", "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "平均", @@ -18784,7 +18781,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.tx": "ホストのパブリックインターフェースで1秒間に送信したバイト数。", "xpack.infra.hostsViewPage.table.addFilter": "フィルターを追加します", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "CPU使用状況(平均)", - "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "ディスク容量使用状況(平均)", "xpack.infra.hostsViewPage.table.memoryFreeColumnHeader": "空きメモリー(平均)", "xpack.infra.hostsViewPage.table.memoryUsageColumnHeader": "メモリー使用状況(平均)", "xpack.infra.hostsViewPage.table.nameColumnHeader": "名前", @@ -18810,7 +18806,6 @@ "xpack.infra.hostsViewPage.tabs.metricsCharts.diskIOWrite": "ディスク書き込みIOPS", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskReadThroughput": "ディスク読み取りスループット", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceAvailable": "空きディスク容量", - "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceUsed": "ディスク容量使用状況", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskWriteThroughput": "ディスク書き込みスループット", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryFree": "空きメモリー", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryUsage": "メモリー使用状況", @@ -23930,17 +23925,11 @@ "xpack.ml.entityFilter.addFilterTooltip": "フィルターを追加します", "xpack.ml.entityFilter.removeFilterTooltip": "フィルターを削除", "xpack.ml.logRateAnalysis.pageHeader": "ログレートスパイクを説明", - "xpack.ml.explorer.addToDashboard.anomalyCharts.dashboardsTitle": "異常グラフをダッシュボードに追加", "xpack.ml.explorer.addToDashboard.anomalyCharts.maxSeriesToPlotLabel": "プロットする最大系列数", - "xpack.ml.explorer.addToDashboard.cancelButtonLabel": "キャンセル", - "xpack.ml.explorer.addToDashboard.selectDashboardsLabel": "ダッシュボードを選択:", - "xpack.ml.explorer.addToDashboard.swimlanes.dashboardsTitle": "スイムレーンをダッシュボードに追加", - "xpack.ml.explorer.addToDashboard.swimlanes.selectSwimlanesLabel": "スイムレーンビューを選択:", "xpack.ml.explorer.addToDashboardLabel": "ダッシュボードに追加", "xpack.ml.explorer.annotationsErrorCallOutTitle": "注釈の読み込み中にエラーが発生しました。", "xpack.ml.explorer.annotationsErrorTitle": "注釈", "xpack.ml.explorer.anomalies.actionsAriaLabel": "アクション", - "xpack.ml.explorer.anomalies.actionsPopoverLabel": "異常グラフ", "xpack.ml.explorer.anomalies.addToDashboardLabel": "ダッシュボードに追加", "xpack.ml.explorer.anomaliesTitle": "異常", "xpack.ml.explorer.anomalyTimelinePopoverAdvancedExplanation": "異常エクスプローラーの各セクションに表示される異常スコアは少し異なる場合があります。各ジョブではバケット結果、全体的なバケット結果、影響因子結果、レコード結果があるため、このような不一致が発生します。各タイプの結果の異常スコアが生成されます。全体的なスイムレーンは、各ブロックの最大全体バケットスコアの最大値を示します。ジョブでスイムレーンを表示するときには、各ブロックに最大バケットスコアが表示されます。影響因子別に表示するときには、各ブロックに最大影響因子スコアが表示されます。", @@ -23962,10 +23951,6 @@ "xpack.ml.explorer.charts.viewInMapsLabel": "表示", "xpack.ml.explorer.charts.viewLabel": "表示", "xpack.ml.explorer.clearSelectionLabel": "選択した項目をクリア", - "xpack.ml.explorer.dashboardsTable.actionsHeader": "アクション", - "xpack.ml.explorer.dashboardsTable.descriptionColumnHeader": "説明", - "xpack.ml.explorer.dashboardsTable.editActionName": "ダッシュボードに追加", - "xpack.ml.explorer.dashboardsTable.titleColumnHeader": "タイトル", "xpack.ml.explorer.distributionChart.anomalyScoreLabel": "異常スコア", "xpack.ml.explorer.distributionChart.entityLabel": "エンティティ", "xpack.ml.explorer.distributionChart.typicalLabel": "通常", @@ -27693,7 +27678,6 @@ "xpack.observability.threshold.rule.createInventoryRuleButton": "インベントリルールの作成", "xpack.observability.threshold.rule.createThresholdRuleButton": "しきい値ルールを作成", "xpack.observability.threshold.rule.groupByKeysActionVariableDescription": "データを報告しているグループを含むオブジェクト", - "xpack.observability.threshold.rule.homePage.toolbar.kqlSearchFieldPlaceholder": "インフラストラクチャーデータを検索…(例:host.name:host-1)", "xpack.observability.threshold.rule.hostActionVariableDescription": "ソースで使用可能な場合に、ECSで定義されたホストオブジェクト。", "xpack.observability.threshold.rule.infrastructureDropdownMenu": "インフラストラクチャー", "xpack.observability.threshold.rule.infrastructureDropdownTitle": "インフラストラクチャールール", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 78e6f5b54c600..4746ca5c8cf88 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -16578,8 +16578,6 @@ "xpack.fleet.policyDetailsPackagePolicies.createFirstTitle": "添加您的首个集成", "xpack.fleet.policyForm.deletePolicyActionText": "删除策略", "xpack.fleet.policyForm.deletePolicyActionText.disabled": "无法删除包含托管软件包策略的代理策略。", - "xpack.fleet.policyForm.deletePolicyGroupDescription": "现有数据将不会删除。", - "xpack.fleet.policyForm.deletePolicyGroupTitle": "删除策略", "xpack.fleet.policyForm.generalSettingsGroupDescription": "为您的代理策略选择名称和描述。", "xpack.fleet.policyForm.generalSettingsGroupTitle": "常规设置", "xpack.fleet.renameAgentTags.errorNotificationTitle": "标签重命名失败", @@ -18677,7 +18675,6 @@ "xpack.infra.assetDetailsEmbeddable.displayName": "资产详情", "xpack.infra.assetDetailsEmbeddable.title": "资产详情", "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "CPU 使用率", - "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "磁盘空间使用率", "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "内存利用率", "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "标准化负载", "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "平均值", @@ -18784,7 +18781,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.tx": "主机的公共接口上每秒发送的字节数。", "xpack.infra.hostsViewPage.table.addFilter": "添加筛选", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "CPU 使用率(平均值)", - "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "磁盘空间使用率(平均值)", "xpack.infra.hostsViewPage.table.memoryFreeColumnHeader": "可用内存(平均值)", "xpack.infra.hostsViewPage.table.memoryUsageColumnHeader": "内存使用率(平均值)", "xpack.infra.hostsViewPage.table.nameColumnHeader": "名称", @@ -18810,7 +18806,6 @@ "xpack.infra.hostsViewPage.tabs.metricsCharts.diskIOWrite": "磁盘写入 IOPS", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskReadThroughput": "磁盘读取吞吐量", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceAvailable": "可用磁盘空间", - "xpack.infra.hostsViewPage.tabs.metricsCharts.diskSpaceUsed": "磁盘空间使用率", "xpack.infra.hostsViewPage.tabs.metricsCharts.diskWriteThroughput": "磁盘写入吞吐量", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryFree": "可用内存", "xpack.infra.hostsViewPage.tabs.metricsCharts.memoryUsage": "内存利用率", @@ -23929,17 +23924,11 @@ "xpack.ml.entityFilter.addFilterTooltip": "添加筛选", "xpack.ml.entityFilter.removeFilterTooltip": "移除筛选", "xpack.ml.logRateAnalysis.pageHeader": "解释日志速率峰值", - "xpack.ml.explorer.addToDashboard.anomalyCharts.dashboardsTitle": "将异常图表添加到仪表板", "xpack.ml.explorer.addToDashboard.anomalyCharts.maxSeriesToPlotLabel": "要绘制的最大序列数目", - "xpack.ml.explorer.addToDashboard.cancelButtonLabel": "取消", - "xpack.ml.explorer.addToDashboard.selectDashboardsLabel": "选择仪表板:", - "xpack.ml.explorer.addToDashboard.swimlanes.dashboardsTitle": "将泳道添加到仪表板", - "xpack.ml.explorer.addToDashboard.swimlanes.selectSwimlanesLabel": "选择泳道视图:", "xpack.ml.explorer.addToDashboardLabel": "添加到仪表板", "xpack.ml.explorer.annotationsErrorCallOutTitle": "加载注释时发生错误:", "xpack.ml.explorer.annotationsErrorTitle": "标注", "xpack.ml.explorer.anomalies.actionsAriaLabel": "操作", - "xpack.ml.explorer.anomalies.actionsPopoverLabel": "异常图表", "xpack.ml.explorer.anomalies.addToDashboardLabel": "添加到仪表板", "xpack.ml.explorer.anomaliesTitle": "异常", "xpack.ml.explorer.anomalyTimelinePopoverAdvancedExplanation": "在 Anomaly Explorer 的每个部分中看到的异常分数可能略微不同。这种差异之所以发生,是因为每个作业都有存储桶结果、总体存储桶结果、影响因素结果和记录结果。每个结果类型都会生成异常分数。总体泳道显示每个块的最大总体存储桶分数。按作业查看泳道时,其在每个块中显示最大存储桶分数。按影响因素查看泳道时,其在每个块中显示最大影响因素分数。", @@ -23961,10 +23950,6 @@ "xpack.ml.explorer.charts.viewInMapsLabel": "查看", "xpack.ml.explorer.charts.viewLabel": "查看", "xpack.ml.explorer.clearSelectionLabel": "清除所选内容", - "xpack.ml.explorer.dashboardsTable.actionsHeader": "操作", - "xpack.ml.explorer.dashboardsTable.descriptionColumnHeader": "描述", - "xpack.ml.explorer.dashboardsTable.editActionName": "添加到仪表板", - "xpack.ml.explorer.dashboardsTable.titleColumnHeader": "标题", "xpack.ml.explorer.distributionChart.anomalyScoreLabel": "异常分数", "xpack.ml.explorer.distributionChart.entityLabel": "实体", "xpack.ml.explorer.distributionChart.typicalLabel": "典型", @@ -27691,7 +27676,6 @@ "xpack.observability.threshold.rule.createInventoryRuleButton": "创建库存规则", "xpack.observability.threshold.rule.createThresholdRuleButton": "创建阈值规则", "xpack.observability.threshold.rule.groupByKeysActionVariableDescription": "包含正报告数据的组的对象", - "xpack.observability.threshold.rule.homePage.toolbar.kqlSearchFieldPlaceholder": "搜索基础设施数据……(例如 host.name:host-1)", "xpack.observability.threshold.rule.hostActionVariableDescription": "ECS 定义的主机对象(如果在源中可用)。", "xpack.observability.threshold.rule.infrastructureDropdownMenu": "基础设施", "xpack.observability.threshold.rule.infrastructureDropdownTitle": "基础设施规则", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/notify_badge/translations.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/notify_badge/translations.tsx index ae215742bc403..db535acf1b3c9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/notify_badge/translations.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/notify_badge/translations.tsx @@ -10,14 +10,14 @@ import { i18n } from '@kbn/i18n'; export const SNOOZE_SUCCESS_MESSAGE = i18n.translate( 'xpack.triggersActionsUI.sections.rulesList.rulesListSnoozePanel.snoozeSuccess', { - defaultMessage: 'Rule successfully snoozed', + defaultMessage: 'Rules notification successfully snoozed', } ); export const UNSNOOZE_SUCCESS_MESSAGE = i18n.translate( 'xpack.triggersActionsUI.sections.rulesList.rulesListSnoozePanel.unsnoozeSuccess', { - defaultMessage: 'Rule successfully unsnoozed', + defaultMessage: 'Rules notification successfully unsnoozed', } ); diff --git a/x-pack/plugins/ux/kibana.jsonc b/x-pack/plugins/ux/kibana.jsonc index 26a2ab78a926a..22d912cbe4ab3 100644 --- a/x-pack/plugins/ux/kibana.jsonc +++ b/x-pack/plugins/ux/kibana.jsonc @@ -17,7 +17,6 @@ "observabilityShared", "observabilityAIAssistant", "embeddable", - "infra", "inspector", "apm" ], diff --git a/x-pack/test/api_integration/apis/ml/modules/get_module.ts b/x-pack/test/api_integration/apis/ml/modules/get_module.ts index 7c72f18f918e3..488714f13c399 100644 --- a/x-pack/test/api_integration/apis/ml/modules/get_module.ts +++ b/x-pack/test/api_integration/apis/ml/modules/get_module.ts @@ -49,7 +49,8 @@ export default ({ getService }: FtrProviderContext) => { return body; } - describe('get_module', function () { + // FLAKY: https://github.com/elastic/kibana/issues/164420 + describe.skip('get_module', function () { before(async () => { await ml.testResources.setKibanaTimeZoneToUTC(); }); diff --git a/x-pack/test/functional/apps/lens/group4/tsdb.ts b/x-pack/test/functional/apps/lens/group4/tsdb.ts index edbef46dc1f08..3200c7a073dc4 100644 --- a/x-pack/test/functional/apps/lens/group4/tsdb.ts +++ b/x-pack/test/functional/apps/lens/group4/tsdb.ts @@ -384,8 +384,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163971 - describe.skip('for rolled up metric (downsampled)', () => { + 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(); @@ -622,21 +621,21 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { { 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 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 }], diff --git a/x-pack/test/functional/apps/ml/data_visualizer/index_data_visualizer.ts b/x-pack/test/functional/apps/ml/data_visualizer/index_data_visualizer.ts index 15533e95e5873..794fad083be22 100644 --- a/x-pack/test/functional/apps/ml/data_visualizer/index_data_visualizer.ts +++ b/x-pack/test/functional/apps/ml/data_visualizer/index_data_visualizer.ts @@ -246,7 +246,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { lensMetricField.fieldName, 'legacyMtrVis' ); - await ml.navigation.browserBackTo('dataVisualizerTable'); + await ml.navigation.browserBackTo('dataVisualizerTableContainer'); } const lensNonMetricField = testData.expected.nonMetricFields?.find( (f) => f.type === ML_JOB_FIELD_TYPES.KEYWORD @@ -257,7 +257,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { lensNonMetricField.fieldName, 'legacyMtrVis' ); - await ml.navigation.browserBackTo('dataVisualizerTable'); + await ml.navigation.browserBackTo('dataVisualizerTableContainer'); } }); }); diff --git a/x-pack/test/functional/services/ml/anomaly_explorer.ts b/x-pack/test/functional/services/ml/anomaly_explorer.ts index b3353556b1cc6..cb183eee0c543 100644 --- a/x-pack/test/functional/services/ml/anomaly_explorer.ts +++ b/x-pack/test/functional/services/ml/anomaly_explorer.ts @@ -112,10 +112,15 @@ export function MachineLearningAnomalyExplorerProvider( await testSubjects.click(`mlAnomaliesTableEntityCellRemoveFilterButton-${influencerValue}`); }, - async openAddToDashboardControl() { + async openAddToDashboardControl(swimLaneType: SwimlaneType = 'overall') { await testSubjects.click('mlAnomalyTimelinePanelMenu'); await testSubjects.click('mlAnomalyTimelinePanelAddToDashboardButton'); - await testSubjects.existOrFail('mlAddToDashboardModal'); + if (swimLaneType === 'overall') { + await testSubjects.click('mlAnomalyTimelinePanelAddOverallToDashboardButton'); + } else { + await testSubjects.click('mlAnomalyTimelinePanelAddViewByToDashboardButton'); + } + await testSubjects.existOrFail('savedObjectSaveModal'); }, async attachSwimLaneToCase(swimLaneType: SwimlaneType = 'overall', params: CreateCaseParams) { @@ -132,14 +137,24 @@ export function MachineLearningAnomalyExplorerProvider( async addAndEditSwimlaneInDashboard(dashboardTitle: string) { await retry.tryForTime(30 * 1000, async () => { - await this.filterDashboardSearchWithSearchString(dashboardTitle); - await testSubjects.clickWhenNotDisabledWithoutRetry('~mlEmbeddableAddAndEditDashboard'); + const dashboardSelector = await testSubjects.find('add-to-dashboard-options'); + const label = await dashboardSelector.findByCssSelector( + `label[for="new-dashboard-option"]` + ); + await label.click(); + await testSubjects.click('confirmSaveSavedObjectButton'); + await retry.waitForWithTimeout('Save modal to disappear', 1000, () => + testSubjects + .missingOrFail('confirmSaveSavedObjectButton') + .then(() => true) + .catch(() => false) + ); // make sure the dashboard page actually loaded const dashboardItemCount = await dashboardPage.getSharedItemsCount(); expect(dashboardItemCount).to.not.eql(undefined); }); - // changing to the dashboard app might take sime time + // changing to the dashboard app might take some time const embeddable = await testSubjects.find('mlAnomalySwimlaneEmbeddableWrapper', 30 * 1000); const swimlane = await embeddable.findByClassName('mlSwimLaneContainer'); expect(await swimlane.isDisplayed()).to.eql( @@ -156,23 +171,6 @@ export function MachineLearningAnomalyExplorerProvider( await testSubjects.existOrFail('mlDashboardSelectionTable loaded', { timeout: 60 * 1000 }); }, - async filterDashboardSearchWithSearchString(filter: string, expectedRowCount: number = 1) { - await retry.tryForTime(20 * 1000, async () => { - await this.waitForDashboardsToLoad(); - const searchBarInput = await testSubjects.find('mlDashboardsSearchBox'); - await searchBarInput.clearValueWithKeyboard(); - await searchBarInput.type(filter); - await this.assertDashboardSearchInputValue(filter); - await this.waitForDashboardsToLoad(); - - const dashboardRows = await testSubjects.findAll('~mlDashboardSelectionTableRow', 2000); - expect(dashboardRows.length).to.eql( - expectedRowCount, - `Dashboard table should have ${expectedRowCount} rows, got ${dashboardRows.length}` - ); - }); - }, - async assertDashboardSearchInputValue(expectedSearchValue: string) { const searchBarInput = await testSubjects.find('mlDashboardsSearchBox'); const actualSearchValue = await searchBarInput.getAttribute('value'); @@ -232,6 +230,7 @@ export function MachineLearningAnomalyExplorerProvider( async attachAnomalyChartsToCase(params: CreateCaseParams) { await testSubjects.click('mlExplorerAnomalyPanelMenu'); await testSubjects.click('mlAnomalyAttachChartsToCasesButton'); + await testSubjects.click('mlAnomalyChartsSubmitAttachment'); await cases.create.createCaseFromModal(params); }, diff --git a/x-pack/test/functional/services/ml/data_visualizer_index_based.ts b/x-pack/test/functional/services/ml/data_visualizer_index_based.ts index 9fd49091300e4..09566d96f12b6 100644 --- a/x-pack/test/functional/services/ml/data_visualizer_index_based.ts +++ b/x-pack/test/functional/services/ml/data_visualizer_index_based.ts @@ -136,7 +136,7 @@ export function MachineLearningDataVisualizerIndexBasedProvider({ async assertDataVisualizerTableExist() { await retry.tryForTime(5000, async () => { - await testSubjects.existOrFail(`dataVisualizerTable`); + await testSubjects.existOrFail(`~dataVisualizerTable-loaded`); }); }, diff --git a/x-pack/test/functional/services/ml/data_visualizer_table.ts b/x-pack/test/functional/services/ml/data_visualizer_table.ts index dd9de598e3e51..ac6b1309d1d3d 100644 --- a/x-pack/test/functional/services/ml/data_visualizer_table.ts +++ b/x-pack/test/functional/services/ml/data_visualizer_table.ts @@ -24,7 +24,7 @@ export function MachineLearningDataVisualizerTableProvider( return new (class DataVisualizerTable { public async parseDataVisualizerTable() { - const table = await testSubjects.find('~dataVisualizerTable'); + const table = await testSubjects.find('~dataVisualizerTable-loaded'); const $ = await table.parseDomContent(); const rows = []; @@ -74,7 +74,7 @@ export function MachineLearningDataVisualizerTableProvider( } public rowSelector(fieldName: string, subSelector?: string) { - const row = `~dataVisualizerTable > ~row-${fieldName}`; + const row = `~dataVisualizerTableContainer > ~row-${fieldName}`; return !subSelector ? row : `${row} > ${subSelector}`; } @@ -102,7 +102,7 @@ export function MachineLearningDataVisualizerTableProvider( } public detailsSelector(fieldName: string, subSelector?: string) { - const row = `~dataVisualizerTable > ~dataVisualizerFieldExpandedRow-${fieldName}`; + const row = `~dataVisualizerTableContainer > ~dataVisualizerFieldExpandedRow-${fieldName}`; return !subSelector ? row : `${row} > ${subSelector}`; } @@ -566,7 +566,7 @@ export function MachineLearningDataVisualizerTableProvider( } public async ensureNumRowsPerPage(n: 10 | 25 | 50) { - const paginationButton = 'dataVisualizerTable > tablePaginationPopoverButton'; + const paginationButton = 'dataVisualizerTableContainer > tablePaginationPopoverButton'; await retry.tryForTime(10000, async () => { await testSubjects.existOrFail(paginationButton); await testSubjects.click(paginationButton); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts index 38dbc575ae494..efe2da04fea57 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts @@ -76,7 +76,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); - describe('status', () => { + // FLAKY: https://github.com/elastic/kibana/issues/166027 + describe.skip('status', () => { before(async () => { await cases.api.createNthRandomCases(2); await header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/monitoring_api_integration/apis/apm/index.ts b/x-pack/test/monitoring_api_integration/apis/apm/index.ts index dbbae596a7b59..0171da7e6b83a 100644 --- a/x-pack/test/monitoring_api_integration/apis/apm/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/apm/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('APM', () => { + before(() => installPackage(getService('supertest'), 'beat')); + loadTestFile(require.resolve('./overview')); loadTestFile(require.resolve('./instances')); }); diff --git a/x-pack/test/monitoring_api_integration/apis/beats/index.ts b/x-pack/test/monitoring_api_integration/apis/beats/index.ts index 01d2bc6a3c3d6..79d051835ec3a 100644 --- a/x-pack/test/monitoring_api_integration/apis/beats/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/beats/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Beats', () => { + before(() => installPackage(getService('supertest'), 'beat')); + loadTestFile(require.resolve('./overview')); loadTestFile(require.resolve('./beats')); loadTestFile(require.resolve('./beat')); diff --git a/x-pack/test/monitoring_api_integration/apis/elasticsearch/index.ts b/x-pack/test/monitoring_api_integration/apis/elasticsearch/index.ts index 8b43525fb03e2..cfcb7bf5570aa 100644 --- a/x-pack/test/monitoring_api_integration/apis/elasticsearch/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/elasticsearch/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Elasticsearch', () => { + before(() => installPackage(getService('supertest'), 'elasticsearch')); + loadTestFile(require.resolve('./ccr')); loadTestFile(require.resolve('./indices')); loadTestFile(require.resolve('./ml_jobs')); diff --git a/x-pack/test/monitoring_api_integration/apis/enterprisesearch/index.ts b/x-pack/test/monitoring_api_integration/apis/enterprisesearch/index.ts index 5942fde0fe95a..a7195e283232a 100644 --- a/x-pack/test/monitoring_api_integration/apis/enterprisesearch/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/enterprisesearch/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Enterprisesearch', () => { + before(() => installPackage(getService('supertest'), 'enterprisesearch')); + loadTestFile(require.resolve('./overview')); }); } diff --git a/x-pack/test/monitoring_api_integration/apis/kibana/index.ts b/x-pack/test/monitoring_api_integration/apis/kibana/index.ts index 24c5e6865021a..4409c5a871397 100644 --- a/x-pack/test/monitoring_api_integration/apis/kibana/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/kibana/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Kibana', () => { + before(() => installPackage(getService('supertest'), 'kibana')); + loadTestFile(require.resolve('./overview')); loadTestFile(require.resolve('./instances')); }); diff --git a/x-pack/test/monitoring_api_integration/apis/logstash/index.ts b/x-pack/test/monitoring_api_integration/apis/logstash/index.ts index 88a5980273ef5..bcde9e2cc5f31 100644 --- a/x-pack/test/monitoring_api_integration/apis/logstash/index.ts +++ b/x-pack/test/monitoring_api_integration/apis/logstash/index.ts @@ -6,9 +6,12 @@ */ import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { installPackage } from '../../packages'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('Logstash', () => { + before(() => installPackage(getService('supertest'), 'logstash')); + loadTestFile(require.resolve('./overview')); loadTestFile(require.resolve('./nodes')); loadTestFile(require.resolve('./pipelines')); diff --git a/x-pack/test/monitoring_api_integration/config.ts b/x-pack/test/monitoring_api_integration/config.ts index cd016afb6dcfd..786fde0bb1d30 100644 --- a/x-pack/test/monitoring_api_integration/config.ts +++ b/x-pack/test/monitoring_api_integration/config.ts @@ -7,8 +7,6 @@ import { FtrConfigProviderContext } from '@kbn/test'; -import { bundledPackagesLocation, getPackagesArgs } from './packages'; - export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts')); @@ -22,11 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { esTestCluster: xPackAPITestsConfig.get('esTestCluster'), kbnTestServer: { ...xPackAPITestsConfig.get('kbnTestServer'), - serverArgs: [ - ...xPackAPITestsConfig.get('kbnTestServer.serverArgs'), - `--xpack.fleet.developer.bundledPackageLocation=${bundledPackagesLocation}`, - ...getPackagesArgs(), - ], + serverArgs: [...xPackAPITestsConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/monitoring_api_integration/packages.ts b/x-pack/test/monitoring_api_integration/packages.ts index aaa11d8d0fe9e..284bba089a55c 100644 --- a/x-pack/test/monitoring_api_integration/packages.ts +++ b/x-pack/test/monitoring_api_integration/packages.ts @@ -6,6 +6,10 @@ */ import path from 'path'; +import { createReadStream } from 'fs'; +import type SuperTest from 'supertest'; + +type SupportedPackage = 'beat' | 'elasticsearch' | 'enterprisesearch' | 'logstash' | 'kibana'; const PACKAGES = [ { name: 'beat', version: '0.1.3' }, @@ -25,3 +29,26 @@ export const getPackagesArgs = (): string[] => { }; export const bundledPackagesLocation = path.join(path.dirname(__filename), '/fixtures/packages'); + +export function installPackage( + supertest: SuperTest.SuperTest, + packageName: SupportedPackage +) { + const pkg = PACKAGES.find(({ name }) => name === packageName); + const request = supertest + .post('/api/fleet/epm/packages') + .set('kbn-xsrf', 'xxx') + .set('content-type', 'application/zip'); + + return new Promise((resolve, reject) => { + createReadStream(path.join(bundledPackagesLocation, `${pkg!.name}-${pkg!.version}.zip`)) + .on('data', (chunk) => request.write(chunk)) + .on('end', () => { + request + .send() + .expect(200) + .then(() => resolve()) + .catch(reject); + }); + }); +} diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/es_query_rule.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/es_query_rule.ts index f6f41a61f1bb2..3a4cae246d46f 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/es_query_rule.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/es_query_rule.ts @@ -6,6 +6,7 @@ */ import { FtrProviderContext } from '../../../ftr_provider_context'; +import { esQueryRuleName } from '.'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); @@ -106,7 +107,63 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 1400, 1500 ); + // Create an email connector action + await testSubjects.click('.email-alerting-ActionTypeSelectOption'); + await testSubjects.scrollIntoView('addAlertActionButton'); + await commonScreenshots.takeScreenshot( + 'es-query-rule-action-query-matched', + screenshotDirectories, + 1400, + 1024 + ); + await testSubjects.click('messageAddVariableButton'); + await commonScreenshots.takeScreenshot( + 'es-query-rule-action-variables', + screenshotDirectories, + 1400, + 1024 + ); + await browser.pressKeys(browser.keys.ESCAPE); await testSubjects.click('cancelSaveRuleButton'); }); + + it('example elasticsearch query rule conditions and actions', async () => { + await pageObjects.common.navigateToApp('triggersActions'); + await pageObjects.header.waitUntilLoadingHasFinished(); + // Edit the rule that was created as part of startup + await testSubjects.setValue('ruleSearchField', esQueryRuleName); + await browser.pressKeys(browser.keys.ENTER); + const actionPanel = await testSubjects.find('collapsedItemActions'); + await actionPanel.click(); + const editRuleMenu = await testSubjects.find('editRule'); + await editRuleMenu.click(); + await pageObjects.header.waitUntilLoadingHasFinished(); + await commonScreenshots.takeScreenshot( + 'es-query-rule-conditions', + screenshotDirectories, + 1400, + 1700 + ); + /* Reposition so that the details are visible for the first action */ + await testSubjects.scrollIntoView('alertActionAccordion-0'); + await commonScreenshots.takeScreenshot( + 'es-query-rule-action-summary', + screenshotDirectories, + 1400, + 1024 + ); + /* Reposition so that the details are visible for the second action */ + await testSubjects.scrollIntoView('alertActionAccordion-1'); + await commonScreenshots.takeScreenshot( + 'es-query-rule-recovery-action', + screenshotDirectories, + 1400, + 1024 + ); + const cancelEditButton = await testSubjects.find('cancelSaveEditedRuleButton'); + await cancelEditButton.click(); + const confirmCancelButton = await testSubjects.find('confirmModalConfirmButton'); + await confirmCancelButton.click(); + }); }); } diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts index e4a2877173834..43596aa81d675 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts @@ -8,18 +8,34 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export const indexThresholdRuleName = 'kibana sites - low bytes'; -export const metricThresholdRuleName = 'network metric packets'; +export const esQueryRuleName = 'sample logs query rule'; export default function ({ loadTestFile, getService }: FtrProviderContext) { const browser = getService('browser'); const actions = getService('actions'); const rules = getService('rules'); + const emailConnectorName = 'Email connector 1'; + const validQueryJson = JSON.stringify({ + query: { + bool: { + filter: [ + { + term: { + 'host.keyword': 'www.elastic.co', + }, + }, + ], + }, + }, + }); describe('stack alerting', function () { let itRuleId: string; - let mtRuleId: string; + let esRuleId: string; let serverLogConnectorId: string; + let emailConnectorId: string; before(async () => { + // Create server log connector await browser.setWindowSize(1920, 1080); ({ id: serverLogConnectorId } = await actions.api.createConnector({ name: 'my-server-log-connector', @@ -27,6 +43,22 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { secrets: {}, connectorTypeId: '.server-log', })); + // Create email connector + ({ id: emailConnectorId } = await actions.api.createConnector({ + name: emailConnectorName, + config: { + service: 'other', + from: 'bob@example.com', + host: 'some.non.existent.com', + port: 25, + }, + secrets: { + user: 'bob', + password: 'supersecret', + }, + connectorTypeId: '.email', + })); + // Create index threshold rule ({ id: itRuleId } = await rules.api.createRule({ consumer: 'alerts', name: indexThresholdRuleName, @@ -57,35 +89,48 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { }, ], })); - ({ id: mtRuleId } = await rules.api.createRule({ - consumer: 'infrastructure', - name: metricThresholdRuleName, - notifyWhen: 'onActionGroupChange', + // Create Elasticsearch query rule + ({ id: esRuleId } = await rules.api.createRule({ + consumer: 'alerts', + name: esQueryRuleName, params: { - criteria: [ - { - aggType: 'max', - comparator: '>', - threshold: [0], - timeSize: 3, - timeUnit: 's', - metric: 'network.packets', - }, - ], - sourceId: 'default', - alertOnNoData: false, - alertOnGroupDisappear: false, - groupBy: ['network.name'], + index: ['kibana_sample_data_logs'], + timeField: '@timestamp', + timeWindowSize: 1, + timeWindowUnit: 'd', + thresholdComparator: '>', + threshold: [100], + size: 100, + esQuery: validQueryJson, }, - ruleTypeId: 'metrics.alert.threshold', - schedule: { interval: '1m' }, + ruleTypeId: '.es-query', + schedule: { interval: '1d' }, actions: [ { - group: 'metrics.threshold.fired', + group: 'query matched', + id: emailConnectorId, + frequency: { + throttle: '2d', + summary: true, + notify_when: 'onThrottleInterval', + }, + params: { + to: ['test@example.com'], + subject: 'Alert summary', + message: + 'The system has detected {{alerts.new.count}} new, {{alerts.ongoing.count}} ongoing, and {{alerts.recovered.count}} recovered alerts.', + }, + }, + { + group: 'recovered', id: serverLogConnectorId, + frequency: { + summary: false, + notify_when: 'onActionGroupChange', + }, params: { level: 'info', - message: 'Test Metric Threshold rule', + message: '{{alert.id}} has recovered.', }, }, ], @@ -94,7 +139,7 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { after(async () => { await rules.api.deleteRule(itRuleId); - await rules.api.deleteRule(mtRuleId); + await rules.api.deleteRule(esRuleId); await rules.api.deleteAllRules(); await actions.api.deleteConnector(serverLogConnectorId); await actions.api.deleteAllConnectors(); @@ -103,7 +148,6 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { loadTestFile(require.resolve('./es_query_rule')); loadTestFile(require.resolve('./index_threshold_rule')); loadTestFile(require.resolve('./list_view')); - loadTestFile(require.resolve('./metrics_threshold_rule')); loadTestFile(require.resolve('./tracking_containment_rule')); }); } diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/metrics_threshold_rule.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/metrics_threshold_rule.ts deleted file mode 100644 index e091ab4da27ed..0000000000000 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/metrics_threshold_rule.ts +++ /dev/null @@ -1,91 +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'; -import { metricThresholdRuleName } from '.'; - -export default function ({ getService, getPageObjects }: FtrProviderContext) { - const actions = getService('actions'); - const browser = getService('browser'); - const commonScreenshots = getService('commonScreenshots'); - const testSubjects = getService('testSubjects'); - const pageObjects = getPageObjects(['common', 'header']); - const screenshotDirectories = ['response_ops_docs', 'stack_alerting']; - const emailConnectorName = 'Email connector 1'; - - describe('metric threshold rule', function () { - let emailConnectorId: string; - before(async () => { - ({ id: emailConnectorId } = await actions.api.createConnector({ - name: emailConnectorName, - config: { - service: 'other', - from: 'bob@example.com', - host: 'some.non.existent.com', - port: 25, - }, - secrets: { - user: 'bob', - password: 'supersecret', - }, - connectorTypeId: '.email', - })); - }); - - after(async () => { - await actions.api.deleteConnector(emailConnectorId); - }); - - it('example metric threshold rule conditions and actions', async () => { - await pageObjects.common.navigateToApp('triggersActions'); - await pageObjects.header.waitUntilLoadingHasFinished(); - await testSubjects.setValue('ruleSearchField', metricThresholdRuleName); - await browser.pressKeys(browser.keys.ENTER); - const actionPanel = await testSubjects.find('collapsedItemActions'); - await actionPanel.click(); - const editRuleMenu = await testSubjects.find('editRule'); - await editRuleMenu.click(); - const expandExpression = await testSubjects.find('expandRow'); - await expandExpression.click(); - await pageObjects.header.waitUntilLoadingHasFinished(); - await commonScreenshots.takeScreenshot( - 'rule-flyout-rule-conditions', - screenshotDirectories, - 1400, - 1500 - ); - - const serverLogAction = await testSubjects.find('alertActionAccordion-0'); - const removeConnectorButton = await serverLogAction.findByCssSelector( - '[aria-label="Delete"]' - ); - await removeConnectorButton.click(); - - await testSubjects.click('.email-alerting-ActionTypeSelectOption'); - await testSubjects.scrollIntoView('addAlertActionButton'); - await commonScreenshots.takeScreenshot( - 'rule-flyout-action-details', - screenshotDirectories, - 1400, - 1024 - ); - await testSubjects.scrollIntoView('addAlertActionButton'); - await testSubjects.click('messageAddVariableButton'); - await commonScreenshots.takeScreenshot( - 'rule-flyout-action-variables', - screenshotDirectories, - 1400, - 1024 - ); - - const cancelEditButton = await testSubjects.find('cancelSaveEditedRuleButton'); - await cancelEditButton.click(); - const confirmCancelButton = await testSubjects.find('confirmModalConfirmButton'); - await confirmCancelButton.click(); - }); - }); -} diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts index f9aa9d08c2954..69227eb6a7c60 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts @@ -7,12 +7,11 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { DETECTIONS_RULE_MANAGEMENT_URL, ALERTS_URL } from '../../urls/navigation'; +import { DETECTIONS_RULE_MANAGEMENT_URL, ALERTS_URL, ruleDetailsUrl } from '../../urls/navigation'; import { getNewRule } from '../../objects/rule'; import { PAGE_TITLE } from '../../screens/common/page'; import { login, visitWithoutDateRange, waitForPageWithoutDateRange } from '../../tasks/login'; -import { goToRuleDetails } from '../../tasks/alerts_detection_rules'; import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; import { getCallOut, @@ -80,10 +79,9 @@ describe( context('On Rule Details page', () => { beforeEach(() => { - createRule(getNewRule({ rule_id: 'rule_testing' })); - loadPageAsPlatformEngineerUser(DETECTIONS_RULE_MANAGEMENT_URL); - waitForPageTitleToBeShown(); - goToRuleDetails(); + createRule(getNewRule({ rule_id: 'rule_testing' })).then((rule) => + loadPageAsPlatformEngineerUser(ruleDetailsUrl(rule.body.id)) + ); }); afterEach(() => { @@ -130,10 +128,9 @@ describe( context('On Rule Details page', () => { beforeEach(() => { - createRule(getNewRule({ rule_id: 'rule_testing' })); - loadPageAsPlatformEngineerUser(DETECTIONS_RULE_MANAGEMENT_URL); - waitForPageTitleToBeShown(); - goToRuleDetails(); + createRule(getNewRule({ rule_id: 'rule_testing' })).then((rule) => + loadPageAsPlatformEngineerUser(ruleDetailsUrl(rule.body.id)) + ); }); afterEach(() => { @@ -180,10 +177,9 @@ describe( context('On Rule Details page', () => { beforeEach(() => { - createRule(getNewRule({ rule_id: 'rule_testing' })); - loadPageAsPlatformEngineerUser(DETECTIONS_RULE_MANAGEMENT_URL); - waitForPageTitleToBeShown(); - goToRuleDetails(); + createRule(getNewRule({ rule_id: 'rule_testing' })).then((rule) => + loadPageAsPlatformEngineerUser(ruleDetailsUrl(rule.body.id)) + ); }); afterEach(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts index 2057a7db3363f..9ab88f2802be8 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts @@ -20,12 +20,11 @@ import { THREAT_DETAILS_ACCORDION, } from '../../screens/alerts_details'; import { TIMELINE_FIELD } from '../../screens/rule_details'; -import { goToRuleDetails } from '../../tasks/alerts_detection_rules'; import { expandFirstAlert, setEnrichmentDates, viewThreatIntelTab } from '../../tasks/alerts'; import { createRule } from '../../tasks/api_calls/rules'; import { openJsonView, openThreatIndicatorDetails } from '../../tasks/alerts_details'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../urls/navigation'; +import { ruleDetailsUrl } from '../../urls/navigation'; import { addsFieldsToTimeline } from '../../tasks/rule_details'; describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { @@ -35,7 +34,7 @@ describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless' cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); login(); - createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }); + disableExpandableFlyout(); }); @@ -46,8 +45,9 @@ describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless' beforeEach(() => { login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }).then( + (rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); }); // Skipped: https://github.com/elastic/kibana/issues/162818 @@ -159,12 +159,6 @@ describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless' cy.task('esArchiverLoad', { archiveName: 'threat_indicator2' }); }); - beforeEach(() => { - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - }); - after(() => { cy.task('esArchiverUnload', 'threat_indicator2'); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts index 0568037b5c693..30e0383ff3fa0 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts @@ -7,12 +7,11 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { DETECTIONS_RULE_MANAGEMENT_URL, ALERTS_URL } from '../../urls/navigation'; +import { DETECTIONS_RULE_MANAGEMENT_URL, ALERTS_URL, ruleDetailsUrl } from '../../urls/navigation'; import { getNewRule } from '../../objects/rule'; import { PAGE_TITLE } from '../../screens/common/page'; import { login, visitWithoutDateRange, waitForPageWithoutDateRange } from '../../tasks/login'; -import { goToRuleDetails } from '../../tasks/alerts_detection_rules'; import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; import { getCallOut, @@ -75,10 +74,9 @@ describe('Detections > Callouts', { tags: '@ess' }, () => { context('On Rule Details page', () => { beforeEach(() => { - createRule(getNewRule()); - loadPageAsReadOnlyUser(DETECTIONS_RULE_MANAGEMENT_URL); - waitForPageTitleToBeShown(); - goToRuleDetails(); + createRule(getNewRule()).then((rule) => + loadPageAsReadOnlyUser(ruleDetailsUrl(rule.body.id)) + ); }); afterEach(() => { @@ -126,10 +124,9 @@ describe('Detections > Callouts', { tags: '@ess' }, () => { context('On Rule Details page', () => { beforeEach(() => { - createRule(getNewRule()); - loadPageAsPlatformEngineer(DETECTIONS_RULE_MANAGEMENT_URL); - waitForPageTitleToBeShown(); - goToRuleDetails(); + createRule(getNewRule()).then((rule) => + loadPageAsPlatformEngineer(ruleDetailsUrl(rule.body.id)) + ); }); afterEach(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions.cy.ts index a4b15f68cdcb9..fef7df04844e6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions.cy.ts @@ -8,7 +8,7 @@ import { getIndexConnector } from '../../../objects/connector'; import { getSimpleCustomQueryRule } from '../../../objects/rule'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; +import { goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { deleteIndex, waitForNewDocumentToBeIndexed } from '../../../tasks/api_calls/elasticsearch'; import { cleanKibana, @@ -51,14 +51,15 @@ describe( const initialNumberOfDocuments = 0; const expectedJson = JSON.parse(actions.connectors[0].document); - it('Indexes a new document after the index action is triggered ', function () { + it('Indexes a new document after the index action is triggered', function () { visit(RULE_CREATION); fillDefineCustomRuleAndContinue(rule); fillAboutRuleAndContinue(rule); fillScheduleRuleAndContinue(rule); fillRuleAction(actions); createAndEnableRule(); - goToRuleDetails(); + + goToRuleDetailsOf(rule.name); /* When the rule is executed, the action is triggered. We wait for the new document to be indexed */ waitForNewDocumentToBeIndexed(index, initialNumberOfDocuments); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule.cy.ts index 7bb89b35ca83a..18455fb116734 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule.cy.ts @@ -73,11 +73,9 @@ import { import { deleteFirstRule, deleteRuleFromDetailsPage, - editFirstRule, expectManagementTableRules, getRulesManagementTableRows, - goToRuleDetails, - goToTheRuleDetailsOf, + goToRuleDetailsOf, selectRulesByName, } from '../../../tasks/alerts_detection_rules'; import { deleteSelectedRules } from '../../../tasks/rules_bulk_actions'; @@ -108,10 +106,14 @@ import { waitForAlertsToPopulate, } from '../../../tasks/create_new_rule'; import { saveEditedRule } from '../../../tasks/edit_rule'; -import { login, visit, visitSecurityDetectionRulesPage } from '../../../tasks/login'; +import { + login, + visit, + visitSecurityDetectionRulesPage, + visitWithoutDateRange, +} from '../../../tasks/login'; import { enablesRule, getDetails, waitForTheRuleToBeExecuted } from '../../../tasks/rule_details'; - -import { RULE_CREATION } from '../../../urls/navigation'; +import { ruleDetailsUrl, ruleEditUrl, RULE_CREATION } from '../../../urls/navigation'; describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => { beforeEach(() => { @@ -180,7 +182,7 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => }); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(ruleFields.ruleName); cy.log('Asserting rule details'); cy.get(RULE_NAME_HEADER).should('contain', ruleFields.ruleName); @@ -236,10 +238,15 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => describe('Custom detection rules deletion and edition', () => { context('Deletion', () => { + const TESTED_RULE_DATA = getNewRule({ + rule_id: 'rule1', + name: 'New Rule Test', + enabled: false, + max_signals: 500, + }); + beforeEach(() => { - createRule( - getNewRule({ rule_id: 'rule1', name: 'New Rule Test', enabled: false, max_signals: 500 }) - ); + createRule(TESTED_RULE_DATA); createRule( getNewOverrideRule({ rule_id: 'rule2', @@ -279,7 +286,7 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => it('Deletes more than one rule', () => { getRulesManagementTableRows().then((rules) => { - const rulesToDelete = ['New Rule Test', 'Override Rule'] as const; + const rulesToDelete = [TESTED_RULE_DATA.name, 'Override Rule'] as const; const initialNumberOfRules = rules.length; const numberOfRulesToBeDeleted = 2; const expectedNumberOfRulesAfterDeletion = @@ -316,7 +323,7 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => const initialNumberOfRules = rules.length; const expectedNumberOfRulesAfterDeletion = initialNumberOfRules - 1; - goToTheRuleDetailsOf('New Rule Test'); + goToRuleDetailsOf(TESTED_RULE_DATA.name); cy.intercept('POST', '/api/detection_engine/rules/_bulk_delete').as('deleteRule'); deleteRuleFromDetailsPage(); @@ -339,108 +346,119 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => }); context('Edition', () => { - const rule = getEditedRule(); - const expectedEditedtags = rule.tags?.join(''); - const expectedEditedIndexPatterns = rule.index; - - beforeEach(() => { - deleteConnectors(); - createRule(getExistingRule({ rule_id: 'rule1', enabled: true })); - login(); - visitSecurityDetectionRulesPage(); - }); - - it('Only modifies rule active status on enable/disable', () => { - enablesRule(); + const editedRuleData = getEditedRule(); + const expectedEditedTags = editedRuleData.tags?.join(''); + const expectedEditedIndexPatterns = editedRuleData.index; + + describe('on rule details page', () => { + beforeEach(() => { + deleteConnectors(); + login(); + createRule(getExistingRule({ rule_id: 'rule1', enabled: true })).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + }); - cy.intercept('GET', `/api/detection_engine/rules?id=*`).as('fetchRuleDetails'); + it('Only modifies rule active status on enable/disable', () => { + enablesRule(); - goToRuleDetails(); + cy.intercept('GET', `/api/detection_engine/rules?id=*`).as('fetchRuleDetails'); - cy.wait('@fetchRuleDetails').then(({ response }) => { - cy.wrap(response?.statusCode).should('eql', 200); + cy.wait('@fetchRuleDetails').then(({ response }) => { + cy.wrap(response?.statusCode).should('eql', 200); - cy.wrap(response?.body.max_signals).should('eql', getExistingRule().max_signals); - cy.wrap(response?.body.enabled).should('eql', false); + cy.wrap(response?.body.max_signals).should('eql', getExistingRule().max_signals); + cy.wrap(response?.body.enabled).should('eql', false); + }); }); }); - it('Allows a rule to be edited', () => { - const existingRule = getExistingRule(); + describe('on rule editing page', () => { + beforeEach(() => { + deleteConnectors(); + login(); + createRule(getExistingRule({ rule_id: 'rule1', enabled: true })).then((rule) => + visitWithoutDateRange(ruleEditUrl(rule.body.id)) + ); + }); - editFirstRule(); + it('Allows a rule to be edited', () => { + const existingRule = getExistingRule(); - // expect define step to populate - cy.get(CUSTOM_QUERY_INPUT).should('have.value', existingRule.query); + // expect define step to populate + cy.get(CUSTOM_QUERY_INPUT).should('have.value', existingRule.query); - cy.get(DEFINE_INDEX_INPUT).should('have.text', existingRule.index?.join('')); + cy.get(DEFINE_INDEX_INPUT).should('have.text', existingRule.index?.join('')); - goToAboutStepTab(); + goToAboutStepTab(); - // expect about step to populate - cy.get(RULE_NAME_INPUT).invoke('val').should('eql', existingRule.name); - cy.get(RULE_DESCRIPTION_INPUT).should('have.text', existingRule.description); - cy.get(TAGS_FIELD).should('have.text', existingRule.tags?.join('')); - cy.get(SEVERITY_DROPDOWN).should('have.text', 'High'); - cy.get(DEFAULT_RISK_SCORE_INPUT).invoke('val').should('eql', `${existingRule.risk_score}`); + // expect about step to populate + cy.get(RULE_NAME_INPUT).invoke('val').should('eql', existingRule.name); + cy.get(RULE_DESCRIPTION_INPUT).should('have.text', existingRule.description); + cy.get(TAGS_FIELD).should('have.text', existingRule.tags?.join('')); + cy.get(SEVERITY_DROPDOWN).should('have.text', 'High'); + cy.get(DEFAULT_RISK_SCORE_INPUT) + .invoke('val') + .should('eql', `${existingRule.risk_score}`); - goToScheduleStepTab(); + goToScheduleStepTab(); - // expect schedule step to populate - const interval = existingRule.interval; - const intervalParts = interval != null && interval.match(/[0-9]+|[a-zA-Z]+/g); - if (intervalParts) { - const [amount, unit] = intervalParts; - cy.get(SCHEDULE_INTERVAL_AMOUNT_INPUT).invoke('val').should('eql', amount); - cy.get(SCHEDULE_INTERVAL_UNITS_INPUT).invoke('val').should('eql', unit); - } else { - throw new Error('Cannot assert scheduling info on a rule without an interval'); - } + // expect schedule step to populate + const interval = existingRule.interval; + const intervalParts = interval != null && interval.match(/[0-9]+|[a-zA-Z]+/g); + if (intervalParts) { + const [amount, unit] = intervalParts; + cy.get(SCHEDULE_INTERVAL_AMOUNT_INPUT).invoke('val').should('eql', amount); + cy.get(SCHEDULE_INTERVAL_UNITS_INPUT).invoke('val').should('eql', unit); + } else { + throw new Error('Cannot assert scheduling info on a rule without an interval'); + } - goToActionsStepTab(); + goToActionsStepTab(); - addEmailConnectorAndRuleAction('test@example.com', 'Subject'); + addEmailConnectorAndRuleAction('test@example.com', 'Subject'); - cy.get(ACTIONS_SUMMARY_BUTTON).should('have.text', 'Summary of alerts'); - cy.get(ACTIONS_NOTIFY_WHEN_BUTTON).should('have.text', 'Per rule run'); + cy.get(ACTIONS_SUMMARY_BUTTON).should('have.text', 'Summary of alerts'); + cy.get(ACTIONS_NOTIFY_WHEN_BUTTON).should('have.text', 'Per rule run'); - goToAboutStepTab(); - cy.get(TAGS_CLEAR_BUTTON).click(); - fillAboutRule(getEditedRule()); + goToAboutStepTab(); + cy.get(TAGS_CLEAR_BUTTON).click(); + fillAboutRule(getEditedRule()); - cy.intercept('GET', '/api/detection_engine/rules?id*').as('getRule'); + cy.intercept('GET', '/api/detection_engine/rules?id*').as('getRule'); - saveEditedRule(); + saveEditedRule(); - cy.wait('@getRule').then(({ response }) => { - cy.wrap(response?.statusCode).should('eql', 200); - // ensure that editing rule does not modify max_signals - cy.wrap(response?.body.max_signals).should('eql', existingRule.max_signals); - }); + cy.wait('@getRule').then(({ response }) => { + cy.wrap(response?.statusCode).should('eql', 200); + // ensure that editing rule does not modify max_signals + cy.wrap(response?.body.max_signals).should('eql', existingRule.max_signals); + }); - cy.get(RULE_NAME_HEADER).should('contain', `${getEditedRule().name}`); - cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', getEditedRule().description); - cy.get(ABOUT_DETAILS).within(() => { - getDetails(SEVERITY_DETAILS).should('have.text', 'Medium'); - getDetails(RISK_SCORE_DETAILS).should('have.text', `${getEditedRule().risk_score}`); - getDetails(TAGS_DETAILS).should('have.text', expectedEditedtags); - }); - cy.get(INVESTIGATION_NOTES_TOGGLE).click(); - cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', getEditedRule().note); - cy.get(DEFINITION_DETAILS).within(() => { - getDetails(INDEX_PATTERNS_DETAILS).should( - 'have.text', - expectedEditedIndexPatterns?.join('') - ); - getDetails(CUSTOM_QUERY_DETAILS).should('have.text', getEditedRule().query); - getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); - getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); - }); - if (getEditedRule().interval) { - cy.get(SCHEDULE_DETAILS).within(() => { - getDetails(RUNS_EVERY_DETAILS).should('have.text', getEditedRule().interval); + cy.get(RULE_NAME_HEADER).should('contain', `${getEditedRule().name}`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', getEditedRule().description); + cy.get(ABOUT_DETAILS).within(() => { + getDetails(SEVERITY_DETAILS).should('have.text', 'Medium'); + getDetails(RISK_SCORE_DETAILS).should('have.text', `${getEditedRule().risk_score}`); + getDetails(TAGS_DETAILS).should('have.text', expectedEditedTags); }); - } + cy.get(INVESTIGATION_NOTES_TOGGLE).click(); + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', getEditedRule().note); + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(INDEX_PATTERNS_DETAILS).should( + 'have.text', + expectedEditedIndexPatterns?.join('') + ); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', getEditedRule().query); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); + }); + if (getEditedRule().interval) { + cy.get(SCHEDULE_DETAILS).within(() => { + getDetails(RUNS_EVERY_DETAILS).should('have.text', getEditedRule().interval); + }); + } + }); }); }); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule_data_view.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule_data_view.cy.ts index 2c2f44024e7a2..da838f54457c3 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule_data_view.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_query_rule_data_view.cy.ts @@ -50,7 +50,7 @@ import { import { getRulesManagementTableRows, - goToRuleDetails, + goToRuleDetailsOf, } from '../../../tasks/alerts_detection_rules'; import { postDataView } from '../../../tasks/common'; import { @@ -104,7 +104,7 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => cy.get(SEVERITY).should('have.text', 'High'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); @@ -160,7 +160,7 @@ describe('Custom query rules', { tags: ['@ess', '@brokenInServerless'] }, () => fillScheduleRuleAndContinue(rule); createRuleWithoutEnabling(); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(EDIT_RULE_SETTINGS_LINK).click(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_saved_query_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_saved_query_rule.cy.ts index fc9dd511aa21f..747725c88aaa3 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_saved_query_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/custom_saved_query_rule.cy.ts @@ -22,7 +22,7 @@ import { CUSTOM_QUERY_DETAILS, } from '../../../screens/rule_details'; -import { goToRuleDetails, editFirstRule } from '../../../tasks/alerts_detection_rules'; +import { editFirstRule, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { createSavedQuery, deleteSavedQueries } from '../../../tasks/api_calls/saved_queries'; import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; import { @@ -35,11 +35,16 @@ import { uncheckLoadQueryDynamically, } from '../../../tasks/create_new_rule'; import { saveEditedRule } from '../../../tasks/edit_rule'; -import { login, visit } from '../../../tasks/login'; +import { login, visit, visitWithoutDateRange } from '../../../tasks/login'; import { assertDetailsNotExist, getDetails } from '../../../tasks/rule_details'; import { createRule } from '../../../tasks/api_calls/rules'; -import { RULE_CREATION, SECURITY_DETECTIONS_RULES_URL } from '../../../urls/navigation'; +import { + ruleDetailsUrl, + ruleEditUrl, + RULE_CREATION, + SECURITY_DETECTIONS_RULES_URL, +} from '../../../urls/navigation'; const savedQueryName = 'custom saved query'; const savedQueryQuery = 'process.name: test'; @@ -86,7 +91,7 @@ describe('Custom saved_query rules', { tags: ['@ess', '@brokenInServerless'] }, cy.wrap(response?.body.type).should('equal', 'saved_query'); }); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); @@ -99,50 +104,59 @@ describe('Custom saved_query rules', { tags: ['@ess', '@brokenInServerless'] }, context('Non existent saved query', () => { const FAILED_TO_LOAD_ERROR = 'Failed to load the saved query'; - beforeEach(() => { - createRule(getSavedQueryRule({ saved_id: 'non-existent', query: undefined })); - visit(SECURITY_DETECTIONS_RULES_URL); - }); - it('Shows error toast on details page when saved query can not be loaded', function () { - goToRuleDetails(); - - cy.get(TOASTER).should('contain', FAILED_TO_LOAD_ERROR); - }); - it('Shows validation error on rule edit when saved query can not be loaded', function () { - editFirstRule(); + describe('on rule details page', () => { + beforeEach(() => { + createRule( + getSavedQueryRule({ + saved_id: 'non-existent', + query: undefined, + }) + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id))); + }); - cy.get(TOASTER).should('contain', FAILED_TO_LOAD_ERROR); + it('Shows error toast on details page when saved query can not be loaded', function () { + cy.get(TOASTER).should('contain', FAILED_TO_LOAD_ERROR); + }); }); - it('Allows to update saved_query rule with non-existent query', () => { - editFirstRule(); + describe('on rule editing page', () => { + beforeEach(() => { + createRule( + getSavedQueryRule({ + saved_id: 'non-existent', + query: undefined, + }) + ).then((rule) => visitWithoutDateRange(ruleEditUrl(rule.body.id))); + }); - cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).should('exist'); + it('Shows validation error on rule edit when saved query can not be loaded', function () { + cy.get(TOASTER).should('contain', FAILED_TO_LOAD_ERROR); + }); - cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); - saveEditedRule(); + it('Allows to update saved_query rule with non-existent query', () => { + cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).should('exist'); - cy.wait('@editedRule').then(({ response }) => { - // updated rule type shouldn't change - cy.wrap(response?.body.type).should('equal', 'saved_query'); - }); + cy.intercept('PUT', '/api/detection_engine/rules').as('editedRule'); + saveEditedRule(); - cy.get(DEFINE_RULE_PANEL_PROGRESS).should('not.exist'); + cy.wait('@editedRule').then(({ response }) => { + // updated rule type shouldn't change + cy.wrap(response?.body.type).should('equal', 'saved_query'); + }); - assertDetailsNotExist(SAVED_QUERY_NAME_DETAILS); - assertDetailsNotExist(SAVED_QUERY_DETAILS); + cy.get(DEFINE_RULE_PANEL_PROGRESS).should('not.exist'); + + assertDetailsNotExist(SAVED_QUERY_NAME_DETAILS); + assertDetailsNotExist(SAVED_QUERY_DETAILS); + }); }); }); context('Editing', () => { it('Allows to update query rule as saved_query rule type', () => { createSavedQuery(savedQueryName, savedQueryQuery); - createRule(getNewRule()); - - visit(SECURITY_DETECTIONS_RULES_URL); - - editFirstRule(); + createRule(getNewRule()).then((rule) => visitWithoutDateRange(ruleEditUrl(rule.body.id))); selectAndLoadSavedQuery(savedQueryName, savedQueryQuery); checkLoadQueryDynamically(); @@ -165,13 +179,11 @@ describe('Custom saved_query rules', { tags: ['@ess', '@brokenInServerless'] }, const expectedCustomTestQuery = 'random test query'; createSavedQuery(savedQueryName, savedQueryQuery).then((response) => { cy.log(JSON.stringify(response.body, null, 2)); - createRule(getSavedQueryRule({ saved_id: response.body.id, query: undefined })); + createRule(getSavedQueryRule({ saved_id: response.body.id, query: undefined })).then( + (rule) => visitWithoutDateRange(ruleEditUrl(rule.body.id)) + ); }); - visit(SECURITY_DETECTIONS_RULES_URL); - - editFirstRule(); - // query input should be disabled and has value of saved query getCustomQueryInput().should('have.value', savedQueryQuery).should('be.disabled'); @@ -192,11 +204,10 @@ describe('Custom saved_query rules', { tags: ['@ess', '@brokenInServerless'] }, it('Allows to update saved_query rule with non-existent query by adding custom query', () => { const expectedCustomTestQuery = 'random test query'; - createRule(getSavedQueryRule({ saved_id: 'non-existent', query: undefined })); + createRule(getSavedQueryRule({ saved_id: 'non-existent', query: undefined })).then((rule) => + visitWithoutDateRange(ruleEditUrl(rule.body.id)) + ); - visit(SECURITY_DETECTIONS_RULES_URL); - - editFirstRule(); uncheckLoadQueryDynamically(); // type custom query, ensure Load dynamically checkbox is absent, as rule can't be saved win non valid saved query @@ -216,7 +227,9 @@ describe('Custom saved_query rules', { tags: ['@ess', '@brokenInServerless'] }, it('Allows to update saved_query rule with non-existent query by selecting another saved query', () => { createSavedQuery(savedQueryName, savedQueryQuery); - createRule(getSavedQueryRule({ saved_id: 'non-existent', query: undefined })); + createRule(getSavedQueryRule({ saved_id: 'non-existent', query: undefined })).then((rule) => + visitWithoutDateRange(ruleEditUrl(rule.body.id)) + ); visit(SECURITY_DETECTIONS_RULES_URL); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts index a558ac6ccedb7..35957cc31938a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts @@ -42,11 +42,7 @@ import { } from '../../../screens/rule_details'; import { getDetails, waitForTheRuleToBeExecuted } from '../../../tasks/rule_details'; -import { - expectNumberOfRules, - goToRuleDetails, - goToTheRuleDetailsOf, -} from '../../../tasks/alerts_detection_rules'; +import { expectNumberOfRules, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; import { createAndEnableRule, @@ -97,7 +93,7 @@ describe('EQL rules', { tags: ['@ess', '@brokenInServerless'] }, () => { cy.get(SEVERITY).should('have.text', 'High'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); @@ -164,7 +160,7 @@ describe('EQL rules', { tags: ['@ess', '@brokenInServerless'] }, () => { fillAboutRuleAndContinue(rule); fillScheduleRuleAndContinue(rule); createAndEnableRule(); - goToTheRuleDetailsOf(rule.name); + goToRuleDetailsOf(rule.name); waitForTheRuleToBeExecuted(); waitForAlertsToPopulate(); 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 9e896fa6861fd..42dbf0ac0182e 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 @@ -59,15 +59,16 @@ import { investigateFirstAlertInTimeline } from '../../../tasks/alerts'; import { duplicateFirstRule, duplicateRuleFromMenu, - goToRuleDetails, checkDuplicatedRule, expectNumberOfRules, selectAllRules, + goToRuleDetailsOf, + disableAutoRefresh, } from '../../../tasks/alerts_detection_rules'; import { duplicateSelectedRulesWithExceptions } from '../../../tasks/rules_bulk_actions'; import { createRule } from '../../../tasks/api_calls/rules'; import { loadPrepackagedTimelineTemplates } from '../../../tasks/api_calls/timelines'; -import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { cleanKibana } from '../../../tasks/common'; import { createAndEnableRule, fillAboutRuleAndContinue, @@ -100,14 +101,18 @@ import { SCHEDULE_LOOKBACK_UNITS_INPUT, } from '../../../screens/create_new_rule'; import { goBackToRuleDetails } from '../../../tasks/edit_rule'; -import { login, visit, visitWithoutDateRange } from '../../../tasks/login'; +import { login, visitWithoutDateRange } from '../../../tasks/login'; import { goBackToRulesTable, getDetails, waitForTheRuleToBeExecuted, } from '../../../tasks/rule_details'; -import { DETECTIONS_RULE_MANAGEMENT_URL, RULE_CREATION } from '../../../urls/navigation'; +import { + DETECTIONS_RULE_MANAGEMENT_URL, + ruleDetailsUrl, + RULE_CREATION, +} from '../../../urls/navigation'; const DEFAULT_THREAT_MATCH_QUERY = '@timestamp >= "now-30d/d"'; @@ -121,21 +126,13 @@ describe('indicator match', { tags: ['@ess', '@brokenInServerless'] }, () => { const expectedNumberOfRules = 1; const expectedNumberOfAlerts = '1 alert'; - before(() => { + beforeEach(() => { cleanKibana(); cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); - }); - - beforeEach(() => { login(); }); - after(() => { - cy.task('esArchiverUnload', 'threat_indicator'); - cy.task('esArchiverUnload', 'suspicious_source_event'); - }); - describe('Creating new indicator match rules', () => { describe('Index patterns', () => { beforeEach(() => { @@ -430,11 +427,6 @@ describe('indicator match', { tags: ['@ess', '@brokenInServerless'] }, () => { }); describe('Generating signals', () => { - beforeEach(() => { - login(); - deleteAlertsAndRules(); - }); - it('Creates and enables a new Indicator Match rule', () => { const rule = getNewThreatIndicatorRule(); visitWithoutDateRange(RULE_CREATION); @@ -453,7 +445,7 @@ describe('indicator match', { tags: ['@ess', '@brokenInServerless'] }, () => { cy.get(SEVERITY).should('have.text', 'Critical'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); @@ -510,9 +502,10 @@ describe('indicator match', { tags: ['@ess', '@brokenInServerless'] }, () => { const accessibilityText = `Press enter for options, or press space to begin dragging.`; loadPrepackagedTimelineTemplates(); - createRule(getNewThreatIndicatorRule({ rule_id: 'rule_testing', enabled: true })); - visit(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + createRule(getNewThreatIndicatorRule({ rule_id: 'rule_testing', enabled: true })).then( + (rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + waitForAlertsToPopulate(); investigateFirstAlertInTimeline(); @@ -541,32 +534,46 @@ describe('indicator match', { tags: ['@ess', '@brokenInServerless'] }, () => { }); describe('Duplicates the indicator rule', () => { - beforeEach(() => { - login(); - deleteAlertsAndRules(); - createRule(getNewThreatIndicatorRule({ rule_id: 'rule_testing', enabled: true })); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); + const TESTED_RULE_DATA = getNewThreatIndicatorRule({ + name: 'Indicator rule duplicate test', + rule_id: 'rule_testing', + enabled: false, }); - it('Allows the rule to be duplicated from the table', () => { - duplicateFirstRule(); - goBackToRuleDetails(); - goBackToRulesTable(); - checkDuplicatedRule(); - }); + describe('on rule editing page', () => { + beforeEach(() => { + createRule(TESTED_RULE_DATA); + visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); + disableAutoRefresh(); + }); - it("Allows the rule to be duplicated from the table's bulk actions", () => { - selectAllRules(); - duplicateSelectedRulesWithExceptions(); - checkDuplicatedRule(); + it('Allows the rule to be duplicated from the table', () => { + duplicateFirstRule(); + goBackToRuleDetails(); + goBackToRulesTable(); + checkDuplicatedRule(TESTED_RULE_DATA.name); + }); + + it("Allows the rule to be duplicated from the table's bulk actions", () => { + selectAllRules(); + duplicateSelectedRulesWithExceptions(); + checkDuplicatedRule(`${TESTED_RULE_DATA.name} [Duplicate]`); + }); }); - it('Allows the rule to be duplicated from the edit screen', () => { - goToRuleDetails(); - duplicateRuleFromMenu(); - goBackToRuleDetails(); - goBackToRulesTable(); - checkDuplicatedRule(); + describe('on rule details page', () => { + beforeEach(() => { + createRule(getNewThreatIndicatorRule(TESTED_RULE_DATA)).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + }); + + it('Allows the rule to be duplicated', () => { + duplicateRuleFromMenu(); + goBackToRuleDetails(); + goBackToRulesTable(); + checkDuplicatedRule(`${TESTED_RULE_DATA.name} [Duplicate]`); + }); }); }); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/machine_learning_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/machine_learning_rule.cy.ts index e65764dff6203..f258ff6c804b7 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/machine_learning_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/machine_learning_rule.cy.ts @@ -40,7 +40,7 @@ import { } from '../../../screens/rule_details'; import { getDetails } from '../../../tasks/rule_details'; -import { expectNumberOfRules, goToRuleDetails } from '../../../tasks/alerts_detection_rules'; +import { expectNumberOfRules, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { cleanKibana } from '../../../tasks/common'; import { createAndEnableRule, @@ -86,7 +86,7 @@ describe('Detection rules, machine learning', { tags: ['@ess', '@brokenInServerl cy.get(SEVERITY).should('have.text', 'Critical'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(mlRule.name); cy.get(RULE_NAME_HEADER).should('contain', `${mlRule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', mlRule.description); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/new_terms_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/new_terms_rule.cy.ts index 2b840111b97bc..ffcda7468bb61 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/new_terms_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/new_terms_rule.cy.ts @@ -44,7 +44,7 @@ import { } from '../../../screens/rule_details'; import { getDetails, waitForTheRuleToBeExecuted } from '../../../tasks/rule_details'; -import { expectNumberOfRules, goToRuleDetails } from '../../../tasks/alerts_detection_rules'; +import { expectNumberOfRules, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; import { createAndEnableRule, @@ -94,7 +94,7 @@ describe('New Terms rules', { tags: ['@ess', '@brokenInServerless'] }, () => { cy.get(SEVERITY).should('have.text', 'High'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts index 4aa1bb9e56724..837d0621cbe6d 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts @@ -47,8 +47,8 @@ import { TIMESTAMP_OVERRIDE_DETAILS, } from '../../../screens/rule_details'; -import { expectNumberOfRules, goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { deleteAlertsAndRules } from '../../../tasks/common'; +import { expectNumberOfRules, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { createAndEnableRule, fillAboutRuleWithOverrideAndContinue, @@ -90,7 +90,7 @@ describe('Detection rules, override', { tags: ['@ess', '@brokenInServerless'] }, cy.get(SEVERITY).should('have.text', 'High'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/threshold_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/threshold_rule.cy.ts index 078be723c39ac..1f93d745884e0 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/threshold_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/threshold_rule.cy.ts @@ -44,7 +44,7 @@ import { } from '../../../screens/rule_details'; import { getDetails, waitForTheRuleToBeExecuted } from '../../../tasks/rule_details'; -import { expectNumberOfRules, goToRuleDetails } from '../../../tasks/alerts_detection_rules'; +import { expectNumberOfRules, goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; import { createAndEnableRule, @@ -92,7 +92,7 @@ describe('Detection rules, threshold', { tags: ['@ess', '@brokenInServerless'] } cy.get(SEVERITY).should('have.text', 'High'); cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - goToRuleDetails(); + goToRuleDetailsOf(rule.name); cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_duplicate_rules.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_duplicate_rules.cy.ts index b95741083a065..96dd999b6e95a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_duplicate_rules.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_duplicate_rules.cy.ts @@ -6,7 +6,7 @@ */ import { - goToTheRuleDetailsOf, + goToRuleDetailsOf, expectManagementTableRules, selectAllRules, disableAutoRefresh, @@ -117,7 +117,7 @@ describe( selectAllRules(); duplicateSelectedRulesWithExceptions(); expectManagementTableRules([`${RULE_NAME} [Duplicate]`]); - goToTheRuleDetailsOf(`${RULE_NAME} [Duplicate]`); + goToRuleDetailsOf(`${RULE_NAME} [Duplicate]`); goToExceptionsTab(); assertExceptionItemsExists(EXCEPTION_CARD_ITEM_NAME, [NON_EXPIRED_EXCEPTION_ITEM_NAME]); viewExpiredExceptionItems(); @@ -128,7 +128,7 @@ describe( selectAllRules(); duplicateSelectedRulesWithNonExpiredExceptions(); expectManagementTableRules([`${RULE_NAME} [Duplicate]`]); - goToTheRuleDetailsOf(`${RULE_NAME} [Duplicate]`); + goToRuleDetailsOf(`${RULE_NAME} [Duplicate]`); goToExceptionsTab(); assertExceptionItemsExists(EXCEPTION_CARD_ITEM_NAME, [NON_EXPIRED_EXCEPTION_ITEM_NAME]); viewExpiredExceptionItems(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules.cy.ts index 4b86a8344836c..6b2d3a530cca5 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules.cy.ts @@ -27,7 +27,7 @@ import { EUI_CHECKBOX, EUI_FILTER_SELECT_ITEM } from '../../../../../screens/com import { selectAllRules, - goToTheRuleDetailsOf, + goToRuleDetailsOf, testAllTagsBadges, testTagsBadge, testMultipleSelectedRulesLabel, @@ -401,7 +401,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } }); // check if rule has been updated - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); hasIndexPatterns(resultingIndexPatterns.join('')); }); }); @@ -440,7 +440,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } }); // check if rule has been updated - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); hasIndexPatterns(resultingIndexPatterns.join('')); }); }); @@ -496,7 +496,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } waitForBulkEditActionToFinish({ updatedCount: rulesToSelect.length }); // check if rule has been updated - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); hasIndexPatterns(indexPattersToWrite.join('')); }); @@ -521,7 +521,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } waitForBulkEditActionToFinish({ updatedCount: rulesToSelect.length }); // check if rule has been updated - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); hasIndexPatterns(resultingIndexPatterns.join('')); }); @@ -572,7 +572,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } waitForBulkEditActionToFinish({ updatedCount: rows.length }); // check if timeline template has been updated to selected one - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', timelineTemplateName); }); }); @@ -590,7 +590,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } waitForBulkEditActionToFinish({ updatedCount: rows.length }); // check if timeline template has been updated to selected one, by opening rule that have had timeline prior to editing - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', noneTimelineTemplate); }); }); @@ -627,7 +627,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } submitBulkEditForm(); waitForBulkEditActionToFinish({ updatedCount: rows.length }); - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); assertRuleScheduleValues({ interval: '20h', @@ -651,7 +651,7 @@ describe('Detection rules, bulk edit', { tags: ['@ess', '@brokenInServerless'] } submitBulkEditForm(); waitForBulkEditActionToFinish({ updatedCount: rows.length }); - goToTheRuleDetailsOf(RULE_NAME); + goToRuleDetailsOf(RULE_NAME); assertRuleScheduleValues({ interval: '1h', diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_data_view.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_data_view.cy.ts index 32e96dd8f3cfb..b8b26df371ed0 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_data_view.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_data_view.cy.ts @@ -13,8 +13,7 @@ import { import { DATA_VIEW_DETAILS, INDEX_PATTERNS_DETAILS } from '../../../../../screens/rule_details'; import { - goToRuleDetails, - goToTheRuleDetailsOf, + goToRuleDetailsOf, expectManagementTableRules, selectAllRules, getRulesManagementTableRows, @@ -57,6 +56,50 @@ describe( 'Bulk editing index patterns of rules with a data view only', { tags: ['@ess', '@brokenInServerless'] }, () => { + const TESTED_CUSTOM_QUERY_RULE_DATA = getNewRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + rule_id: '1', + name: 'New Rule Test 1', + enabled: false, + }); + const TESTED_CUSTOM_QUERY_RULE_DATA_2 = getNewRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + saved_id: 'mocked', + rule_id: '6', + name: 'New Rule Test 2', + enabled: false, + }); + const TESTED_EQL_RULE_DATA = getEqlRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + rule_id: '2', + name: 'New EQL Rule', + enabled: false, + }); + const TESTED_THREAT_INDICATOR_RULE_DATA = getNewThreatIndicatorRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + rule_id: '3', + name: 'Threat Indicator Rule Test', + enabled: false, + }); + const TESTED_THRESHOLD_RULE_DATA = getNewThresholdRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + rule_id: '4', + name: 'Threshold Rule', + enabled: false, + }); + const TESTED_TERMS_RULE_DATA = getNewTermsRule({ + index: undefined, + data_view_id: DATA_VIEW_ID, + rule_id: '5', + name: 'New Terms Rule', + enabled: false, + }); + before(() => { cleanKibana(); }); @@ -68,72 +111,23 @@ describe( postDataView(DATA_VIEW_ID); - createRule( - getNewRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - rule_id: '1', - name: 'New Rule Test 1', - enabled: false, - }) - ); - createRule( - getEqlRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - rule_id: '2', - name: 'New EQL Rule', - enabled: false, - }) - ); - createRule( - getNewThreatIndicatorRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - rule_id: '3', - name: 'Threat Indicator Rule Test', - enabled: false, - }) - ); - createRule( - getNewThresholdRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - rule_id: '4', - name: 'Threshold Rule', - enabled: false, - }) - ); - createRule( - getNewTermsRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - rule_id: '5', - name: 'New Terms Rule', - enabled: false, - }) - ); - createRule( - getNewRule({ - index: undefined, - data_view_id: DATA_VIEW_ID, - saved_id: 'mocked', - rule_id: '6', - name: 'New Rule Test 2', - enabled: false, - }) - ); + createRule(TESTED_CUSTOM_QUERY_RULE_DATA); + createRule(TESTED_EQL_RULE_DATA); + createRule(TESTED_THREAT_INDICATOR_RULE_DATA); + createRule(TESTED_THRESHOLD_RULE_DATA); + createRule(TESTED_TERMS_RULE_DATA); + createRule(TESTED_CUSTOM_QUERY_RULE_DATA_2); visitSecurityDetectionRulesPage(); disableAutoRefresh(); expectManagementTableRules([ - 'New Rule Test 1', - 'New EQL Rule', - 'Threat Indicator Rule Test', - 'Threshold Rule', - 'New Terms Rule', - 'New Rule Test 2', + TESTED_CUSTOM_QUERY_RULE_DATA.name, + TESTED_EQL_RULE_DATA.name, + TESTED_THREAT_INDICATOR_RULE_DATA.name, + TESTED_THRESHOLD_RULE_DATA.name, + TESTED_TERMS_RULE_DATA.name, + TESTED_CUSTOM_QUERY_RULE_DATA_2.name, ]); }); @@ -151,7 +145,7 @@ describe( }); // check if rule still has data view and index patterns field does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA.name); getDetails(DATA_VIEW_DETAILS).contains(DATA_VIEW_ID); assertDetailsNotExist(INDEX_PATTERNS_DETAILS); }); @@ -174,7 +168,7 @@ describe( waitForBulkEditActionToFinish({ updatedCount: rows.length }); // check if rule has been updated with index patterns and data view does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA.name); hasIndexPatterns(expectedIndexPatterns.join('')); assertDetailsNotExist(DATA_VIEW_DETAILS); }); @@ -195,7 +189,7 @@ describe( }); // check if rule still has data view and index patterns field does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA.name); getDetails(DATA_VIEW_DETAILS).contains(DATA_VIEW_ID); assertDetailsNotExist(INDEX_PATTERNS_DETAILS); }); @@ -215,7 +209,7 @@ describe( waitForBulkEditActionToFinish({ updatedCount: rows.length }); // check if rule has been overwritten with index patterns and data view does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA.name); hasIndexPatterns(expectedIndexPatterns.join('')); assertDetailsNotExist(DATA_VIEW_DETAILS); }); @@ -239,7 +233,7 @@ describe( }); // check if rule still has data view and index patterns field does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA.name); getDetails(DATA_VIEW_DETAILS).contains(DATA_VIEW_ID); }); }); @@ -250,6 +244,18 @@ describe( 'Bulk editing index patterns of rules with index patterns and rules with a data view', { tags: ['@ess', '@brokenInServerless'] }, () => { + const TESTED_CUSTOM_QUERY_RULE_DATA_WITH_DATAVIEW = getNewRule({ + name: 'with dataview', + index: [], + data_view_id: DATA_VIEW_ID, + rule_id: '1', + }); + const TESTED_CUSTOM_QUERY_RULE_DATA_WITHOUT_DATAVIEW = getNewRule({ + name: 'no data view', + index: ['test-index-1-*'], + rule_id: '2', + }); + before(() => { cleanKibana(); }); @@ -261,10 +267,8 @@ describe( postDataView(DATA_VIEW_ID); - createRule( - getNewRule({ name: 'with dataview', index: [], data_view_id: DATA_VIEW_ID, rule_id: '1' }) - ); - createRule(getNewRule({ name: 'no data view', index: ['test-index-1-*'], rule_id: '2' })); + createRule(TESTED_CUSTOM_QUERY_RULE_DATA_WITH_DATAVIEW); + createRule(TESTED_CUSTOM_QUERY_RULE_DATA_WITHOUT_DATAVIEW); visitSecurityDetectionRulesPage(); disableAutoRefresh(); @@ -286,7 +290,7 @@ describe( }); // check if rule still has data view and index patterns field does not exist - goToTheRuleDetailsOf('with dataview'); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA_WITH_DATAVIEW.name); getDetails(DATA_VIEW_DETAILS).contains(DATA_VIEW_ID); assertDetailsNotExist(INDEX_PATTERNS_DETAILS); }); @@ -304,7 +308,7 @@ describe( }); // check if rule still has data view and index patterns field does not exist - goToRuleDetails(); + goToRuleDetailsOf(TESTED_CUSTOM_QUERY_RULE_DATA_WITH_DATAVIEW.name); assertDetailsNotExist(DATA_VIEW_DETAILS); }); } diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_persistent_state.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_persistent_state.cy.ts index 30c35ba44288a..d2b2f93200e26 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_persistent_state.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rules_table/rules_table_persistent_state.cy.ts @@ -21,7 +21,6 @@ import { filterByCustomRules, filterBySearchTerm, filterByTags, - goToRuleDetails, expectFilterSearchTerm, expectFilterByTags, expectFilterByCustomRules, @@ -35,6 +34,7 @@ import { expectFilterByPrebuiltRules, expectFilterByEnabledRules, expectManagementTableRules, + goToRuleDetailsOf, } from '../../../../tasks/alerts_detection_rules'; import { createRule } from '../../../../tasks/api_calls/rules'; import { @@ -228,7 +228,7 @@ describe('Rules table: persistent state', { tags: ['@ess', '@serverless'] }, () changeRulesTableState(); goToTablePage(2); - goToRuleDetails(); + goToRuleDetailsOf('rule 6'); cy.go('back'); expectRulesManagementTab(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts index 4cacc2ddeb24b..552f1c4f109e9 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts @@ -22,6 +22,7 @@ import { exportValueList, waitForListsIndex, deleteValueLists, + KNOWN_VALUE_LIST_FILES, } from '../../../tasks/lists'; import { VALUE_LISTS_TABLE, @@ -39,7 +40,11 @@ describe('value lists', () => { describe('management modal', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { beforeEach(() => { login(); - deleteValueLists([TEXT_LIST_FILE_NAME, IPS_LIST_FILE_NAME, CIDRS_LIST_FILE_NAME]); + deleteValueLists([ + KNOWN_VALUE_LIST_FILES.TEXT, + KNOWN_VALUE_LIST_FILES.IPs, + KNOWN_VALUE_LIST_FILES.CIDRs, + ]); createListsIndex(); visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); waitForListsIndex(); @@ -59,52 +64,52 @@ describe('value lists', () => { it('creates a "keyword" list from an uploaded file', () => { selectValueListType('keyword'); - selectValueListsFile(TEXT_LIST_FILE_NAME); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); uploadValueList(); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).to.contain(TEXT_LIST_FILE_NAME); + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); expect($row.text()).to.contain('Keywords'); }); }); it('creates a "text" list from an uploaded file', () => { selectValueListType('text'); - selectValueListsFile(TEXT_LIST_FILE_NAME); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); uploadValueList(); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).to.contain(TEXT_LIST_FILE_NAME); + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); expect($row.text()).to.contain('Text'); }); }); it('creates a "ip" list from an uploaded file', () => { selectValueListType('ip'); - selectValueListsFile(IPS_LIST_FILE_NAME); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); uploadValueList(); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).to.contain(IPS_LIST_FILE_NAME); + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.IPs); expect($row.text()).to.contain('IP addresses'); }); }); it('creates a "ip_range" list from an uploaded file', () => { selectValueListType('ip_range'); - selectValueListsFile(CIDRS_LIST_FILE_NAME); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); uploadValueList(); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).to.contain(CIDRS_LIST_FILE_NAME); + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); expect($row.text()).to.contain('IP ranges'); }); }); @@ -113,46 +118,46 @@ describe('value lists', () => { // Flaky in serverless tests describe('delete list types', { tags: ['@brokenInServerless'] }, () => { it('deletes a "keyword" list from an uploaded file', () => { - importValueList(TEXT_LIST_FILE_NAME, 'keyword'); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); openValueListsModal(); - deleteValueListsFile(TEXT_LIST_FILE_NAME); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).not.to.contain(TEXT_LIST_FILE_NAME); + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); }); }); it('deletes a "text" list from an uploaded file', () => { - importValueList(TEXT_LIST_FILE_NAME, 'text'); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); openValueListsModal(); - deleteValueListsFile(TEXT_LIST_FILE_NAME); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).not.to.contain(TEXT_LIST_FILE_NAME); + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); }); }); it('deletes a "ip" from an uploaded file', () => { - importValueList(IPS_LIST_FILE_NAME, 'ip'); + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); openValueListsModal(); - deleteValueListsFile(IPS_LIST_FILE_NAME); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).not.to.contain(IPS_LIST_FILE_NAME); + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.IPs); }); }); it('deletes a "ip_range" from an uploaded file', () => { - importValueList(CIDRS_LIST_FILE_NAME, 'ip_range', ['192.168.100.0']); + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); openValueListsModal(); - deleteValueListsFile(CIDRS_LIST_FILE_NAME); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); cy.get(VALUE_LISTS_TABLE) .find(VALUE_LISTS_ROW) .should(($row) => { - expect($row.text()).not.to.contain(CIDRS_LIST_FILE_NAME); + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); }); }); }); @@ -160,10 +165,10 @@ describe('value lists', () => { // Flaky in serverless tests describe('export list types', { tags: ['@brokenInServerless'] }, () => { it('exports a "keyword" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${TEXT_LIST_FILE_NAME}`).as( + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( 'exportList' ); - importValueList(TEXT_LIST_FILE_NAME, 'keyword'); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); // Importing value lists includes bulk creation of list items with refresh=wait_for // While it should wait for data update and return after that it's not always a case with bulk operations. @@ -175,7 +180,7 @@ describe('value lists', () => { exportValueList(); cy.wait('@exportList').then(({ response }) => { - cy.fixture(TEXT_LIST_FILE_NAME).then((list: string) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { const [lineOne, lineTwo] = list.split('\n'); expect(response?.body).to.contain(lineOne); expect(response?.body).to.contain(lineTwo); @@ -184,10 +189,10 @@ describe('value lists', () => { }); it('exports a "text" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${TEXT_LIST_FILE_NAME}`).as( + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( 'exportList' ); - importValueList(TEXT_LIST_FILE_NAME, 'text'); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); // Importing value lists includes bulk creation of list items with refresh=wait_for // While it should wait for data update and return after that it's not always a case with bulk operations. @@ -199,7 +204,7 @@ describe('value lists', () => { exportValueList(); cy.wait('@exportList').then(({ response }) => { - cy.fixture(TEXT_LIST_FILE_NAME).then((list: string) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { const [lineOne, lineTwo] = list.split('\n'); expect(response?.body).to.contain(lineOne); expect(response?.body).to.contain(lineTwo); @@ -208,10 +213,10 @@ describe('value lists', () => { }); it('exports a "ip" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${IPS_LIST_FILE_NAME}`).as( + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.IPs}`).as( 'exportList' ); - importValueList(IPS_LIST_FILE_NAME, 'ip'); + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); // Importing value lists includes bulk creation of list items with refresh=wait_for // While it should wait for data update and return after that it's not always a case with bulk operations. @@ -222,7 +227,7 @@ describe('value lists', () => { openValueListsModal(); exportValueList(); cy.wait('@exportList').then(({ response }) => { - cy.fixture(IPS_LIST_FILE_NAME).then((list: string) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.IPs).then((list: string) => { const [lineOne, lineTwo] = list.split('\n'); expect(response?.body).to.contain(lineOne); expect(response?.body).to.contain(lineTwo); @@ -231,10 +236,10 @@ describe('value lists', () => { }); it('exports a "ip_range" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${CIDRS_LIST_FILE_NAME}`).as( + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.CIDRs}`).as( 'exportList' ); - importValueList(CIDRS_LIST_FILE_NAME, 'ip_range', ['192.168.100.0']); + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); // Importing value lists includes bulk creation of list items with refresh=wait_for // While it should wait for data update and return after that it's not always a case with bulk operations. @@ -245,7 +250,7 @@ describe('value lists', () => { openValueListsModal(); exportValueList(); cy.wait('@exportList').then(({ response }) => { - cy.fixture(CIDRS_LIST_FILE_NAME).then((list: string) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.CIDRs).then((list: string) => { const [lineOne] = list.split('\n'); expect(response?.body).to.contain(lineOne); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts index e9c07294e62d3..3ca8b633e6564 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/endpoint_exceptions.cy.ts @@ -15,10 +15,9 @@ import { } from '../../../tasks/alerts'; import { login, visitWithoutDateRange } from '../../../tasks/login'; import { getEndpointRule } from '../../../objects/rule'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { createRule } from '../../../tasks/api_calls/rules'; import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; import { addExceptionEntryFieldValueAndSelectSuggestion, addExceptionEntryFieldValueValue, @@ -51,10 +50,12 @@ describe.skip( cy.task('esArchiverResetKibana'); login(); deleteAlertsAndRules(); + cy.task('esArchiverLoad', { archiveName: 'endpoint' }); - createRule(getEndpointRule()); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + createRule(getEndpointRule()).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + waitForTheRuleToBeExecuted(); waitForAlertsToPopulate(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/auto_populate_with_alert_data.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/auto_populate_with_alert_data.cy.ts index 14d002b96b7b4..afd1f6c36e29b 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/auto_populate_with_alert_data.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/auto_populate_with_alert_data.cy.ts @@ -7,7 +7,6 @@ import { LOADING_INDICATOR } from '../../../../screens/security_header'; import { getEndpointRule } from '../../../../objects/rule'; import { createRule } from '../../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../../tasks/alerts_detection_rules'; import { addExceptionFromFirstAlert, expandFirstAlert, @@ -27,7 +26,7 @@ import { import { login, visitWithoutDateRange } from '../../../../tasks/login'; import { goToExceptionsTab } from '../../../../tasks/rule_details'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../../urls/navigation'; import { deleteAlertsAndRules } from '../../../../tasks/common'; import { ADD_AND_BTN, @@ -52,9 +51,10 @@ describe.skip( cy.task('esArchiverResetKibana'); cy.task('esArchiverLoad', { archiveName: 'endpoint' }); login(); - createRule(getEndpointRule()); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + createRule(getEndpointRule()).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + waitForAlertsToPopulate(); }); after(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/closing_all_matching_alerts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/closing_all_matching_alerts.cy.ts index 9c4a575dccb4e..f85e572160796 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/closing_all_matching_alerts.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/alerts_table_flow/rule_exceptions/closing_all_matching_alerts.cy.ts @@ -12,8 +12,7 @@ import { } from '../../../../tasks/alerts'; import { deleteAlertsAndRules, postDataView } from '../../../../tasks/common'; import { login, visitWithoutDateRange } from '../../../../tasks/login'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../../urls/navigation'; -import { goToRuleDetails } from '../../../../tasks/alerts_detection_rules'; +import { ruleDetailsUrl } from '../../../../urls/navigation'; import { createRule } from '../../../../tasks/api_calls/rules'; import { getNewRule } from '../../../../objects/rule'; import { LOADING_INDICATOR } from '../../../../screens/security_header'; @@ -29,7 +28,6 @@ import { // See https://github.com/elastic/kibana/issues/163967 describe('Close matching Alerts ', () => { - const newRule = getNewRule(); const ITEM_NAME = 'Sample Exception Item'; beforeEach(() => { @@ -40,15 +38,15 @@ describe('Close matching Alerts ', () => { login(); postDataView('exceptions-*'); - createRule({ - ...newRule, - query: 'agent.name:*', - data_view_id: 'exceptions-*', - interval: '10s', - rule_id: 'rule_testing', - }); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + createRule( + getNewRule({ + query: 'agent.name:*', + data_view_id: 'exceptions-*', + interval: '10s', + rule_id: 'rule_testing', + }) + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id))); + waitForAlertsToPopulate(); }); after(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/flyout_validation.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/flyout_validation.cy.ts index e11cace87d8e8..04ef2368a7e1c 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/flyout_validation.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/flyout_validation.cy.ts @@ -10,7 +10,6 @@ import { getNewRule } from '../../../objects/rule'; import { RULE_STATUS } from '../../../screens/create_new_rule'; import { createRule } from '../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { login, visitWithoutDateRange } from '../../../tasks/login'; import { openExceptionFlyoutFromEmptyViewerPrompt, @@ -47,8 +46,8 @@ import { FIELD_INPUT_PARENT, } from '../../../screens/exceptions'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; -import { reload } from '../../../tasks/common'; +import { ruleDetailsUrl } from '../../../urls/navigation'; +import { deleteAlertsAndRules, reload } from '../../../tasks/common'; import { createExceptionList, createExceptionListItem, @@ -75,7 +74,11 @@ describe.skip('Exceptions flyout', { tags: ['@ess', '@serverless'] }, () => { // Comment the Conflicts here as they are skipped // cy.task('esArchiverLoad',{ archiveName: 'conflicts_1' }); // cy.task('esArchiverLoad',{ archiveName: 'conflicts_2' }); + }); + + beforeEach(() => { login(); + deleteAlertsAndRules(); createExceptionList(getExceptionList(), getExceptionList().list_id).then((response) => createRule( getNewRule({ @@ -90,18 +93,9 @@ describe.skip('Exceptions flyout', { tags: ['@ess', '@serverless'] }, () => { }, ], }) - ) + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions'))) ); - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - }); - - beforeEach(() => { - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); cy.get(RULE_STATUS).should('have.text', '—'); - goToExceptionsTab(); }); after(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/multiple_conditions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/multiple_conditions.cy.ts index e1e396af156b5..2cf577d41e167 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/multiple_conditions.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/multiple_conditions.cy.ts @@ -8,12 +8,8 @@ import { getNewRule } from '../../../objects/rule'; import { createRule } from '../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { login, visitWithoutDateRange } from '../../../tasks/login'; -import { - openExceptionFlyoutFromEmptyViewerPrompt, - goToExceptionsTab, -} from '../../../tasks/rule_details'; +import { openExceptionFlyoutFromEmptyViewerPrompt } from '../../../tasks/rule_details'; import { addExceptionFlyoutItemName, addTwoAndedConditions, @@ -26,7 +22,8 @@ import { EXCEPTION_ITEM_VIEWER_CONTAINER, } from '../../../screens/exceptions'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; +import { deleteAlertsAndRules } from '../../../tasks/common'; // FLAKY: https://github.com/elastic/kibana/issues/165651 // FLAKY: https://github.com/elastic/kibana/issues/165734 @@ -38,6 +35,7 @@ describe( beforeEach(() => { cy.task('esArchiverResetKibana'); login(); + deleteAlertsAndRules(); // At least create Rule with exceptions_list to be able to view created exceptions createRule({ ...getNewRule(), @@ -45,15 +43,13 @@ describe( index: ['exceptions*'], exceptions_list: [], rule_id: '2', - }); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - goToExceptionsTab(); + }).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions'))); }); after(() => { cy.task('esArchiverUnload', 'exceptions'); }); + const exceptionName = 'My item name'; it('Use multipe AND conditions and validate it generates one exception', () => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/use_value_list.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/use_value_list.cy.ts index b1e2c81b4c420..0969b53d8cee6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/use_value_list.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/entry/use_value_list.cy.ts @@ -12,26 +12,19 @@ import { addExceptionFlyoutItemName, submitNewExceptionItem, } from '../../../tasks/exceptions'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; -import { - goToExceptionsTab, - openExceptionFlyoutFromEmptyViewerPrompt, -} from '../../../tasks/rule_details'; -import { VALUE_LISTS_TABLE, VALUE_LISTS_ROW } from '../../../screens/lists'; +import { openExceptionFlyoutFromEmptyViewerPrompt } from '../../../tasks/rule_details'; import { getNewRule } from '../../../objects/rule'; import { cleanKibana } from '../../../tasks/common'; import { login, visitWithoutDateRange } from '../../../tasks/login'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { DETECTIONS_RULE_MANAGEMENT_URL, ruleDetailsUrl } from '../../../urls/navigation'; import { createListsIndex, waitForListsIndex, waitForValueListsModalToBeLoaded, - selectValueListType, - selectValueListsFile, - uploadValueList, openValueListsModal, deleteValueListsFile, - closeValueListsModal, + importValueList, + KNOWN_VALUE_LIST_FILES, } from '../../../tasks/lists'; import { createRule } from '../../../tasks/api_calls/rules'; import { @@ -55,21 +48,22 @@ describe( 'Use Value list in exception entry', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - before(() => { + beforeEach(() => { cleanKibana(); login(); - cy.task('esArchiverLoad', { archiveName: 'exceptions' }); - createRule({ - ...getNewRule(), - query: 'user.name:*', - index: ['exceptions*'], - exceptions_list: [], - rule_id: '2', - }); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - }); - beforeEach(() => { createListsIndex(); + cy.task('esArchiverLoad', { archiveName: 'exceptions' }); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); + + createRule( + getNewRule({ + query: 'user.name:*', + index: ['exceptions*'], + exceptions_list: [], + rule_id: '2', + enabled: false, + }) + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions'))); }); afterEach(() => { @@ -80,24 +74,6 @@ describe( const ITEM_NAME = 'Exception item with value list'; const ITEM_FIELD = 'agent.name'; - goToRulesAndOpenValueListModal(); - - // Add new value list of type keyword - const listName = 'value_list.txt'; - selectValueListType('keyword'); - selectValueListsFile(listName); - uploadValueList(); - - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(listName); - expect($row.text()).to.contain('Keywords'); - }); - closeValueListsModal(); - goToRuleDetails(); - goToExceptionsTab(); - // open add exception modal openExceptionFlyoutFromEmptyViewerPrompt(); @@ -107,7 +83,7 @@ describe( addExceptionEntryFieldValue(ITEM_FIELD, 0); addExceptionEntryOperatorValue('is in list', 0); - addExceptionEntryFieldMatchIncludedValue('value_list.txt', 0); + addExceptionEntryFieldMatchIncludedValue(KNOWN_VALUE_LIST_FILES.TEXT, 0); // The Close all alerts that match attributes in this exception option is disabled cy.get(CLOSE_ALERTS_CHECKBOX).should('exist'); @@ -128,7 +104,7 @@ describe( // Go back to value list to delete the existing one goToRulesAndOpenValueListModal(); - deleteValueListsFile(listName); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); // Toast should be shown because of exception reference cy.get(EXCEPTIONS_TABLE_MODAL).should('exist'); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts index f3b84ebb98f7a..170530f8c8045 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts @@ -8,13 +8,12 @@ import { getNewRule } from '../../../objects/rule'; import { createRule } from '../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { login, visitWithoutDateRange } from '../../../tasks/login'; import { - goToEndpointExceptionsTab, openEditException, openExceptionFlyoutFromEmptyViewerPrompt, searchForExceptionItem, + waitForPageToBeLoaded as waitForRuleDetailsPageToBeLoaded, } from '../../../tasks/rule_details'; import { addExceptionConditions, @@ -26,7 +25,7 @@ import { submitNewExceptionItem, } from '../../../tasks/exceptions'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; import { deleteAlertsAndRules } from '../../../tasks/common'; import { NO_EXCEPTIONS_EXIST_PROMPT, @@ -42,156 +41,190 @@ import { EXCEPTION_CARD_ITEM_CONDITIONS, FIELD_INPUT_PARENT, } from '../../../screens/exceptions'; -import { createEndpointExceptionList } from '../../../tasks/api_calls/exceptions'; +import { + createEndpointExceptionList, + createEndpointExceptionListItem, +} from '../../../tasks/api_calls/exceptions'; // FLAKY: https://github.com/elastic/kibana/issues/165736 describe( 'Add endpoint exception from rule details', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, + { tags: ['@ess', '@brokenInServerless'] }, () => { const ITEM_NAME = 'Sample Exception List Item'; + const NEW_ITEM_NAME = 'Exception item-EDITED'; + const ITEM_FIELD = 'event.code'; + const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type'; - before(() => { + beforeEach(() => { cy.task('esArchiverResetKibana'); cy.task('esArchiverLoad', { archiveName: 'auditbeat' }); login(); deleteAlertsAndRules(); - // create rule with exception - createEndpointExceptionList<{ - id: string; - list_id: string; - type: - | 'detection' - | 'rule_default' - | 'endpoint' - | 'endpoint_trusted_apps' - | 'endpoint_events' - | 'endpoint_host_isolation_exceptions' - | 'endpoint_blocklists'; - namespace_type: 'agnostic' | 'single'; - }>().then((response) => { - createRule( - getNewRule({ - query: 'event.code:*', - index: ['auditbeat*'], - exceptions_list: [ - { - id: response.body.id, - list_id: response.body.list_id, - type: response.body.type, - namespace_type: response.body.namespace_type, - }, - ], - rule_id: '2', - }) - ); - }); }); - beforeEach(() => { - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - goToEndpointExceptionsTab(); - }); - - after(() => { + afterEach(() => { cy.task('esArchiverUnload', 'auditbeat'); }); - it('creates an exception item', () => { - // when no exceptions exist, empty component shows with action to add exception - cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('exist'); + describe('without exception items', () => { + beforeEach(() => { + createEndpointExceptionList().then((response) => { + createRule( + getNewRule({ + query: 'event.code:*', + index: ['auditbeat*'], + exceptions_list: [ + { + id: response.body.id, + list_id: response.body.list_id, + type: response.body.type, + namespace_type: response.body.namespace_type, + }, + ], + rule_id: '2', + enabled: false, + }) + ).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'endpoint_exceptions')) + ); + }); + }); - // open add exception modal - openExceptionFlyoutFromEmptyViewerPrompt(); + it('creates an exception item', () => { + // when no exceptions exist, empty component shows with action to add exception + cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('exist'); - // submit button is disabled if no paramerters were added - cy.get(CONFIRM_BTN).should('have.attr', 'disabled'); + // open add exception modal + openExceptionFlyoutFromEmptyViewerPrompt(); - // for endpoint exceptions, must specify OS - selectOs('windows'); + // submit button is disabled if no paramerters were added + cy.get(CONFIRM_BTN).should('have.attr', 'disabled'); - // add exception item conditions - addExceptionConditions({ - field: 'event.code', - operator: 'is', - values: ['foo'], - }); + // for endpoint exceptions, must specify OS + selectOs('windows'); + + // add exception item conditions + addExceptionConditions({ + field: 'event.code', + operator: 'is', + values: ['foo'], + }); - // Name is required so want to check that submit is still disabled - cy.get(CONFIRM_BTN).should('have.attr', 'disabled'); + // Name is required so want to check that submit is still disabled + cy.get(CONFIRM_BTN).should('have.attr', 'disabled'); - // add exception item name - addExceptionFlyoutItemName(ITEM_NAME); + // add exception item name + addExceptionFlyoutItemName(ITEM_NAME); - // Option to add to rule or add to list should NOT appear - cy.get(ADD_TO_RULE_OR_LIST_SECTION).should('not.exist'); + // Option to add to rule or add to list should NOT appear + cy.get(ADD_TO_RULE_OR_LIST_SECTION).should('not.exist'); - // not testing close alert functionality here, just ensuring that the options appear as expected - cy.get(CLOSE_SINGLE_ALERT_CHECKBOX).should('not.exist'); - cy.get(CLOSE_ALERTS_CHECKBOX).should('exist'); + // not testing close alert functionality here, just ensuring that the options appear as expected + cy.get(CLOSE_SINGLE_ALERT_CHECKBOX).should('not.exist'); + cy.get(CLOSE_ALERTS_CHECKBOX).should('exist'); - // submit - submitNewExceptionItem(); + // submit + submitNewExceptionItem(); - // new exception item displays - cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + // new exception item displays + cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + }); }); - it('edits an endpoint exception item', () => { - const NEW_ITEM_NAME = 'Exception item-EDITED'; - const ITEM_FIELD = 'event.code'; - const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type'; + describe('with exception items', () => { + beforeEach(() => { + createEndpointExceptionList().then((response) => { + createEndpointExceptionListItem({ + comments: [], + description: 'Exception list item', + entries: [ + { + field: ITEM_FIELD, + operator: 'included', + type: 'match', + value: 'foo', + }, + ], + name: ITEM_NAME, + tags: [], + type: 'simple', + os_types: ['windows'], + }); + + createRule( + getNewRule({ + name: 'Rule with exceptions', + query: 'event.code:*', + index: ['auditbeat*'], + exceptions_list: [ + { + id: response.body.id, + list_id: response.body.list_id, + type: response.body.type, + namespace_type: response.body.namespace_type, + }, + ], + rule_id: '2', + enabled: false, + }) + ).then((rule) => { + visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'endpoint_exceptions')); + waitForRuleDetailsPageToBeLoaded('Rule with exceptions'); + }); + }); + }); - // displays existing exception items - cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); - cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('not.exist'); - cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', ITEM_NAME); - cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ` ${ITEM_FIELD}IS foo`); + it('edits an endpoint exception item', () => { + // displays existing exception items + cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('not.exist'); + cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', ITEM_NAME); + cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ` ${ITEM_FIELD}IS foo`); - // open edit exception modal - openEditException(); + // open edit exception modal + openEditException(); - // edit exception item name - editExceptionFlyoutItemName(NEW_ITEM_NAME); + // edit exception item name + editExceptionFlyoutItemName(NEW_ITEM_NAME); - // check that the existing item's field is being populated - cy.get(EXCEPTION_ITEM_CONTAINER) - .eq(0) - .find(FIELD_INPUT_PARENT) - .eq(0) - .should('have.text', ITEM_FIELD); - cy.get(VALUES_INPUT).should('have.text', 'foo'); + // check that the existing item's field is being populated + cy.get(EXCEPTION_ITEM_CONTAINER) + .eq(0) + .find(FIELD_INPUT_PARENT) + .eq(0) + .should('have.text', ITEM_FIELD); + cy.get(VALUES_INPUT).should('have.text', 'foo'); - // edit conditions - editException(FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD, 0, 0); + // edit conditions + editException(FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD, 0, 0); - // submit - submitEditedExceptionItem(); + // submit + submitEditedExceptionItem(); - // new exception item displays - cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + // new exception item displays + cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); - // check that updates stuck - cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', NEW_ITEM_NAME); - cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.typeIS foo'); - }); + // check that updates stuck + cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', NEW_ITEM_NAME); + cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.typeIS foo'); + }); - it('allows user to search for items', () => { - cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + it('allows user to search for items', () => { + cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); - // can search for an exception value - searchForExceptionItem('foo'); + // can search for an exception value + searchForExceptionItem('foo'); - // new exception item displays - cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); + // new exception item displays + cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); - // displays empty search result view if no matches found - searchForExceptionItem('abc'); + // displays empty search result view if no matches found + searchForExceptionItem('abc'); - // new exception item displays - cy.get(NO_EXCEPTIONS_SEARCH_RESULTS_PROMPT).should('exist'); + // new exception item displays + cy.get(NO_EXCEPTIONS_SEARCH_RESULTS_PROMPT).should('exist'); + }); }); } ); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception.cy.ts index 18537145ec582..11f5a58679404 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception.cy.ts @@ -10,7 +10,6 @@ import { getNewRule } from '../../../objects/rule'; import { ALERTS_COUNT, EMPTY_ALERT_TABLE } from '../../../screens/alerts'; import { createRule } from '../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { goToClosedAlertsOnRuleDetailsPage, goToOpenedAlertsOnRuleDetailsPage, @@ -37,7 +36,7 @@ import { submitEditedExceptionItem, submitNewExceptionItem, } from '../../../tasks/exceptions'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; import { deleteAlertsAndRules } from '../../../tasks/common'; import { NO_EXCEPTIONS_EXIST_PROMPT, @@ -67,35 +66,25 @@ describe('Add/edit exception from rule details', { tags: ['@ess', '@brokenInServ before(() => { cy.task('esArchiverResetKibana'); cy.task('esArchiverLoad', { archiveName: 'exceptions' }); - login(); }); after(() => { cy.task('esArchiverUnload', 'exceptions'); }); + beforeEach(() => { + login(); + deleteAlertsAndRules(); + + const exceptionList = getExceptionList(); + deleteExceptionList(exceptionList.list_id, exceptionList.namespace_type); + }); + describe('existing list and items', () => { const exceptionList = getExceptionList(); beforeEach(() => { - deleteAlertsAndRules(); - deleteExceptionList(exceptionList.list_id, exceptionList.namespace_type); // create rule with exceptions createExceptionList(exceptionList, exceptionList.list_id).then((response) => { - createRule( - getNewRule({ - query: 'agent.name:*', - index: ['exceptions*'], - exceptions_list: [ - { - id: response.body.id, - list_id: exceptionList.list_id, - type: exceptionList.type, - namespace_type: exceptionList.namespace_type, - }, - ], - rule_id: '2', - }) - ); createExceptionListItem(exceptionList.list_id, { list_id: exceptionList.list_id, item_id: 'simple_list_item', @@ -113,12 +102,23 @@ describe('Add/edit exception from rule details', { tags: ['@ess', '@brokenInServ }, ], }); - }); - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - goToExceptionsTab(); + createRule( + getNewRule({ + query: 'agent.name:*', + index: ['exceptions*'], + exceptions_list: [ + { + id: response.body.id, + list_id: exceptionList.list_id, + type: exceptionList.type, + namespace_type: exceptionList.namespace_type, + }, + ], + rule_id: '2', + }) + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions'))); + }); }); it('Edits an exception item', () => { @@ -245,7 +245,6 @@ describe('Add/edit exception from rule details', { tags: ['@ess', '@brokenInServ describe('rule without existing exceptions', () => { beforeEach(() => { - deleteAlertsAndRules(); createRule( getNewRule({ query: 'agent.name:*', @@ -253,11 +252,7 @@ describe('Add/edit exception from rule details', { tags: ['@ess', '@brokenInServ interval: '10s', rule_id: 'rule_testing', }) - ); - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - goToExceptionsTab(); + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions'))); }); afterEach(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception_data_view.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception_data_view.cy.ts index 229cfce25b9fa..a1e3e17db597f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception_data_view.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_exception_data_view.cy.ts @@ -8,7 +8,6 @@ import { getNewRule } from '../../../objects/rule'; import { ALERTS_COUNT, EMPTY_ALERT_TABLE } from '../../../screens/alerts'; import { createRule } from '../../../tasks/api_calls/rules'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { goToClosedAlertsOnRuleDetailsPage, goToOpenedAlertsOnRuleDetailsPage, @@ -28,7 +27,7 @@ import { waitForTheRuleToBeExecuted, } from '../../../tasks/rule_details'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; import { postDataView, deleteAlertsAndRules } from '../../../tasks/common'; import { NO_EXCEPTIONS_EXIST_PROMPT, @@ -60,6 +59,7 @@ describe( }); beforeEach(() => { + login(); deleteAlertsAndRules(); createRule( getNewRule({ @@ -68,10 +68,7 @@ describe( interval: '10s', rule_id: 'rule_testing', }) - ); - login(); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); + ).then((rule) => visitWithoutDateRange(ruleDetailsUrl(rule.body.id))); waitForAlertsToPopulate(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/read_only_view.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/read_only_view.cy.ts index 6ecb3c1e40602..d6e5637e17379 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/read_only_view.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/read_only_view.cy.ts @@ -11,7 +11,7 @@ import { getNewRule } from '../../../objects/rule'; import { createRule } from '../../../tasks/api_calls/rules'; import { login, visitSecurityDetectionRulesPage } from '../../../tasks/login'; import { goToExceptionsTab, goToAlertsTab } from '../../../tasks/rule_details'; -import { goToTheRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; +import { goToRuleDetailsOf } from '../../../tasks/alerts_detection_rules'; import { deleteAlertsAndRules } from '../../../tasks/common'; import { NO_EXCEPTIONS_EXIST_PROMPT, @@ -55,7 +55,7 @@ describe('Exceptions viewer read only', { tags: '@ess' }, () => { login(ROLES.reader); visitSecurityDetectionRulesPage(ROLES.reader); - goToTheRuleDetailsOf('Test exceptions rule'); + goToRuleDetailsOf('Test exceptions rule'); goToExceptionsTab(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts index e0f932d81ac88..c5cf8a5de9421 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine'; import { getNewRule } from '../../../objects/rule'; import { login, visitWithoutDateRange } from '../../../tasks/login'; import { createRule } from '../../../tasks/api_calls/rules'; @@ -19,7 +20,7 @@ import { submitNewExceptionItem, deleteFirstExceptionItemInListDetailPage, } from '../../../tasks/exceptions'; -import { DETECTIONS_RULE_MANAGEMENT_URL, EXCEPTIONS_URL } from '../../../urls/navigation'; +import { EXCEPTIONS_URL, ruleDetailsUrl } from '../../../urls/navigation'; import { CONFIRM_BTN, @@ -29,8 +30,6 @@ import { EXECPTION_ITEM_CARD_HEADER_TITLE, EMPTY_EXCEPTIONS_VIEWER, } from '../../../screens/exceptions'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; -import { goToExceptionsTab } from '../../../tasks/rule_details'; import { addExceptionListFromSharedExceptionListHeaderMenu, createSharedExceptionList, @@ -43,19 +42,17 @@ describe( 'Add, edit and delete exception', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - before(() => { + beforeEach(() => { cy.task('esArchiverResetKibana'); cy.task('esArchiverLoad', { archiveName: 'exceptions' }); + createRule(getNewRule()).as('createdRule'); - createRule(getNewRule()); - }); - - beforeEach(() => { login(); visitWithoutDateRange(EXCEPTIONS_URL); waitForExceptionsTableToBeLoaded(); }); - after(() => { + + afterEach(() => { cy.task('esArchiverUnload', 'exceptions'); }); @@ -87,11 +84,10 @@ describe( submitNewExceptionItem(); - // Navigate to Rule page - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); - - goToExceptionsTab(); + // Navigate to Rule details page + cy.get>('@createdRule').then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id, 'rule_exceptions')) + ); // Only one Exception should generated cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/pagination/pagination.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/pagination/pagination.cy.ts index 1e7f7d7514404..f7257d4666d69 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/pagination/pagination.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/pagination/pagination.cy.ts @@ -20,7 +20,8 @@ import { ALL_HOSTS_TABLE } from '../../../screens/hosts/all_hosts'; import { ALL_USERS_TABLE } from '../../../screens/users/all_users'; import { goToTablePage, sortFirstTableColumn } from '../../../tasks/table_pagination'; -describe('Pagination', { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/165968 +describe('Pagination', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { describe('Host uncommon processes table)', () => { before(() => { cy.task('esArchiverLoad', { archiveName: 'host_uncommon_processes' }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts index 1604d1fdbe692..de204fd08f62e 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts @@ -29,12 +29,12 @@ import { cleanKibana } from '../../../tasks/common'; import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; import { login, visit, visitWithoutDateRange } from '../../../tasks/login'; import { getNewRule, getUnmappedRule } from '../../../objects/rule'; -import { ALERTS_URL } from '../../../urls/navigation'; +import { ALERTS_URL, ruleDetailsUrl } from '../../../urls/navigation'; import { tablePageSelector } from '../../../screens/table_pagination'; import { ALERTS_TABLE_COUNT } from '../../../screens/timeline'; import { ALERT_SUMMARY_SEVERITY_DONUT_CHART } from '../../../screens/alerts'; import { getLocalstorageEntryAsObject } from '../../../helpers/common'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; +import { waitForPageToBeLoaded as waitForRuleDetailsPageToBeLoaded } from '../../../tasks/rule_details'; describe('Alert details flyout', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { describe('Basic functions', () => { @@ -179,8 +179,13 @@ describe('Alert details flyout', { tags: ['@ess', '@serverless', '@brokenInServe }); describe('Localstorage management', () => { + const ARCHIVED_RULE_ID = '7015a3e2-e4ea-11ed-8c11-49608884878f'; + const ARCHIVED_RULE_NAME = 'Endpoint Security'; + before(() => { cleanKibana(); + + // It just imports an alert without a rule but rule details page should work anyway cy.task('esArchiverLoad', { archiveName: 'query_alert', useCreate: true, docsOnly: true }); }); @@ -230,7 +235,10 @@ describe('Alert details flyout', { tags: ['@ess', '@serverless', '@brokenInServe it('should remove the flyout state from localstorage when navigating away without closing the flyout', () => { cy.get(OVERVIEW_RULE).should('be.visible'); - goToRuleDetails(); + + visitWithoutDateRange(ruleDetailsUrl(ARCHIVED_RULE_ID)); + waitForRuleDetailsPageToBeLoaded(ARCHIVED_RULE_NAME); + const localStorageCheck = () => cy.getAllLocalStorage().then((storage) => { const securityDataTable = getLocalstorageEntryAsObject(storage, 'securityDataTable'); @@ -242,7 +250,10 @@ describe('Alert details flyout', { tags: ['@ess', '@serverless', '@brokenInServe it('should not reopen the flyout when navigating away from the alerts page and returning to it', () => { cy.get(OVERVIEW_RULE).should('be.visible'); - goToRuleDetails(); + + visitWithoutDateRange(ruleDetailsUrl(ARCHIVED_RULE_ID)); + waitForRuleDetailsPageToBeLoaded(ARCHIVED_RULE_NAME); + visit(ALERTS_URL); cy.get(OVERVIEW_RULE).should('not.exist'); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts index d57ab19a0f4fe..6b869268fa15b 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts @@ -9,14 +9,13 @@ import { getBuildingBlockRule } from '../../../objects/rule'; import { OVERVIEW_ALERTS_HISTOGRAM_EMPTY } from '../../../screens/overview'; import { HIGHLIGHTED_ROWS_IN_TABLE } from '../../../screens/rule_details'; import { OVERVIEW } from '../../../screens/security_header'; -import { goToRuleDetails } from '../../../tasks/alerts_detection_rules'; import { createRule } from '../../../tasks/api_calls/rules'; import { cleanKibana } from '../../../tasks/common'; import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; import { login, visitWithoutDateRange } from '../../../tasks/login'; import { waitForTheRuleToBeExecuted } from '../../../tasks/rule_details'; import { navigateFromHeaderTo } from '../../../tasks/security_header'; -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; +import { ruleDetailsUrl } from '../../../urls/navigation'; const EXPECTED_NUMBER_OF_ALERTS = 5; @@ -26,19 +25,21 @@ describe( () => { before(() => { cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' }); - cleanKibana(); - login(); - }); - beforeEach(() => { - createRule(getBuildingBlockRule()); }); + after(() => { cy.task('esArchiverUnload', 'auditbeat_big'); }); + beforeEach(() => { + cleanKibana(); + login(); + createRule(getBuildingBlockRule()).then((rule) => + visitWithoutDateRange(ruleDetailsUrl(rule.body.id)) + ); + }); + it('Alerts should be visible on the Rule Detail page and not visible on the Overview page', () => { - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - goToRuleDetails(); waitForTheRuleToBeExecuted(); // Check that generated events are visible on the Details page diff --git a/x-pack/test/security_solution_cypress/cypress/objects/rule.ts b/x-pack/test/security_solution_cypress/cypress/objects/rule.ts index 586a4188b84b1..13ff441e64ee5 100644 --- a/x-pack/test/security_solution_cypress/cypress/objects/rule.ts +++ b/x-pack/test/security_solution_cypress/cypress/objects/rule.ts @@ -491,8 +491,6 @@ export const indicatorRuleMatchingDoc = { matchedIndex: 'logs-ti_abusech.malware', }; -export const duplicatedRuleName = `${getNewThreatIndicatorRule().name} [Duplicate]`; - export const getSeveritiesOverride = (): string[] => ['Low', 'Medium', 'High', 'Critical']; export const getEditedRule = (): QueryRuleCreateProps => diff --git a/x-pack/test/security_solution_cypress/cypress/support/e2e.js b/x-pack/test/security_solution_cypress/cypress/support/e2e.js index 477c2606153b7..4335470845f9b 100644 --- a/x-pack/test/security_solution_cypress/cypress/support/e2e.js +++ b/x-pack/test/security_solution_cypress/cypress/support/e2e.js @@ -25,6 +25,10 @@ import './commands'; import 'cypress-real-events/support'; import registerCypressGrep from '@cypress/grep'; +before(() => { + cy.task('esArchiverLoad', { archiveName: 'auditbeat' }); +}); + registerCypressGrep(); Cypress.on('uncaught:exception', () => { diff --git a/x-pack/test/security_solution_cypress/cypress/support/es_archiver.ts b/x-pack/test/security_solution_cypress/cypress/support/es_archiver.ts index 0b1bc1cb68de8..6fcbebf0a377e 100644 --- a/x-pack/test/security_solution_cypress/cypress/support/es_archiver.ts +++ b/x-pack/test/security_solution_cypress/cypress/support/es_archiver.ts @@ -28,7 +28,7 @@ export const esArchiver = ( const kbnClient = new KbnClient({ log, - url: config.env.CYPRESS_BASE_URL as string, + url: config.env.BASE_URL as string, ...(config.env.ELASTICSEARCH_URL.includes('https') ? { certificateAuthorities: [Fs.readFileSync(CA_CERT_PATH)] } : {}), diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/alerts_detection_rules.ts b/x-pack/test/security_solution_cypress/cypress/tasks/alerts_detection_rules.ts index 5f66f5513ed17..cb920e8093be1 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/alerts_detection_rules.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/alerts_detection_rules.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { duplicatedRuleName } from '../objects/rule'; import { COLLAPSED_ACTION_BTN, CUSTOM_RULES_BTN, @@ -107,8 +106,8 @@ export const duplicateRuleFromMenu = () => { * Check that the duplicated rule is on the table * and it is disabled (default) */ -export const checkDuplicatedRule = () => { - cy.contains(RULE_NAME, duplicatedRuleName) +export const checkDuplicatedRule = (ruleName: string): void => { + cy.contains(RULE_NAME, ruleName) .parents(RULES_ROW) .find(RULE_SWITCH) .should('have.attr', 'aria-checked', 'false'); @@ -193,14 +192,7 @@ export const filterByDisabledRules = () => { cy.get(DISABLED_RULES_BTN).click(); }; -/** - * @deprecated use goToTheRuleDetailsOf - */ -export const goToRuleDetails = () => { - cy.get(RULE_NAME).first().click(); -}; - -export const goToTheRuleDetailsOf = (ruleName: string) => { +export const goToRuleDetailsOf = (ruleName: string) => { cy.contains(RULE_NAME, ruleName).click(); cy.get(PAGE_CONTENT_SPINNER).should('be.visible'); @@ -502,7 +494,7 @@ export const closeErrorToast = () => { }; export const goToEditRuleActionsSettingsOf = (name: string) => { - goToTheRuleDetailsOf(name); + goToRuleDetailsOf(name); goToRuleEditSettings(); // wait until first step loads completely. Otherwise cypress stuck at the first edit page cy.get(EDIT_SUBMIT_BUTTON).should('be.enabled'); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/exceptions.ts b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/exceptions.ts index 622e311fa0fd1..2d5bf00b3c381 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/exceptions.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/exceptions.ts @@ -5,19 +5,29 @@ * 2.0. */ +import { CreateEndpointListItemResponse } from '@kbn/lists-plugin/common/api'; import type { ExceptionListSchema, ExceptionListItemSchema, + CreateEndpointListItemSchema, } from '@kbn/securitysolution-io-ts-list-types'; +import { ENDPOINT_LIST_ITEM_URL, ENDPOINT_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ExceptionList, ExceptionListItem, RuleExceptionItem } from '../../objects/exception'; import { rootRequest } from '../common'; -export const createEndpointExceptionList = () => - rootRequest({ +export const createEndpointExceptionList = () => + rootRequest({ method: 'POST', - url: '/api/endpoint_list', + url: ENDPOINT_LIST_URL, + headers: { 'kbn-xsrf': 'cypress-creds', 'x-elastic-internal-origin': 'security-solution' }, + }); + +export const createEndpointExceptionListItem = (item: CreateEndpointListItemSchema) => + rootRequest({ + method: 'POST', + url: ENDPOINT_LIST_ITEM_URL, + body: item, headers: { 'kbn-xsrf': 'cypress-creds', 'x-elastic-internal-origin': 'security-solution' }, - failOnStatusCode: false, }); export const createExceptionList = ( diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/lists.ts b/x-pack/test/security_solution_cypress/cypress/tasks/lists.ts index e9dd3d882b429..fcae40e1e8549 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/lists.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/lists.ts @@ -15,6 +15,12 @@ import { VALUE_LIST_TYPE_SELECTOR, } from '../screens/lists'; +export const KNOWN_VALUE_LIST_FILES = { + TEXT: 'value_list.txt', + IPs: 'ip_list.txt', + CIDRs: 'cidr_list.txt', +}; + export const createListsIndex = () => { cy.request({ method: 'POST', diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts b/x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts index 871cbcb82ab7a..b18905b443679 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts @@ -106,8 +106,8 @@ export const goToEndpointExceptionsTab = () => { }; export const openEditException = (index = 0) => { - cy.get(EXCEPTION_ITEM_ACTIONS_BUTTON).eq(index).click({ force: true }); - cy.get(EDIT_EXCEPTION_BTN).eq(index).click({ force: true }); + cy.get(EXCEPTION_ITEM_ACTIONS_BUTTON).eq(index).click(); + cy.get(EDIT_EXCEPTION_BTN).eq(index).click(); }; export const removeException = () => { diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/rule_snoozing.ts b/x-pack/test/security_solution_cypress/cypress/tasks/rule_snoozing.ts index 35b98d9404591..33ade4482951a 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/rule_snoozing.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/rule_snoozing.ts @@ -36,7 +36,7 @@ export function snoozeRule(duration: SnoozeDuration): void { } export function expectSnoozeSuccessToast(): void { - cy.get(TOASTER).should('contain', 'Rule successfully snoozed'); + cy.get(TOASTER).should('contain', 'Rules notification successfully snoozed'); } export function expectSnoozeErrorToast(): void { @@ -72,7 +72,7 @@ export function unsnoozeRule(): void { } export function expectUnsnoozeSuccessToast(): void { - cy.get(TOASTER).should('contain', 'Rule successfully unsnoozed'); + cy.get(TOASTER).should('contain', 'Rules notification successfully unsnoozed'); } export function expectRuleUnsnoozed(): void { diff --git a/x-pack/test/security_solution_cypress/cypress/tsconfig.json b/x-pack/test/security_solution_cypress/cypress/tsconfig.json index ff1d9c7551f75..e24946f40a3ff 100644 --- a/x-pack/test/security_solution_cypress/cypress/tsconfig.json +++ b/x-pack/test/security_solution_cypress/cypress/tsconfig.json @@ -1,21 +1,10 @@ { "extends": "../../../../tsconfig.base.json", - "include": [ - "**/*", - "fixtures/**/*.json" - ], - "exclude": [ - "target/**/*" - ], + "include": ["**/*", "fixtures/**/*.json"], + "exclude": ["target/**/*"], "compilerOptions": { "outDir": "target/types", - "types": [ - "cypress", - "cypress-file-upload", - "cypress-real-events", - "cypress-recurse", - "node", - ], + "types": ["cypress", "cypress-file-upload", "cypress-real-events", "cypress-recurse", "node"] }, "kbn_references": [ "@kbn/securitysolution-io-ts-alerting-types", @@ -46,5 +35,7 @@ "@kbn/dev-utils", "@kbn/expandable-flyout", "@kbn/config-schema", + "@kbn/lists-plugin", + "@kbn/securitysolution-list-constants" ] } diff --git a/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts b/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts index aa13d43a23ab6..eca48ae6fafff 100644 --- a/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts +++ b/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts @@ -57,7 +57,10 @@ export const DISCOVER_WITH_FILTER_URL = export const DISCOVER_WITH_PINNED_FILTER_URL = "/app/discover#/?_g=(filters:!(('$state':(store:globalState),meta:(alias:!n,disabled:!f,index:security-solution-default,key:host.name,negate:!f,params:(query:test-host),type:phrase),query:(match_phrase:(host.name:test-host)))),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:security-solution-default,interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))"; -export const ruleDetailsUrl = (ruleId: string) => `app/security/rules/id/${ruleId}`; +export const ruleDetailsUrl = ( + ruleId: string, + section?: 'alerts' | 'rule_exceptions' | 'endpoint_exceptions' | 'execution_results' +) => `app/security/rules/id/${ruleId}${section ? `/${section}` : ''}`; export const detectionsRuleDetailsUrl = (ruleId: string) => `app/security/detections/rules/id/${ruleId}`; diff --git a/x-pack/test/security_solution_cypress/runner.ts b/x-pack/test/security_solution_cypress/runner.ts index 9514e63a12634..6e70f9364eff2 100644 --- a/x-pack/test/security_solution_cypress/runner.ts +++ b/x-pack/test/security_solution_cypress/runner.ts @@ -15,17 +15,9 @@ export async function SecuritySolutionConfigurableCypressTestRunner({ getService, }: FtrProviderContext) { const config = getService('config'); - const esArchiver = getService('esArchiver'); - - await esArchiver.load('x-pack/test/security_solution_cypress/es_archives/auditbeat'); return { FORCE_COLOR: '1', - CYPRESS_BASE_URL: Url.format(config.get('servers.kibana')), - CYPRESS_ELASTICSEARCH_URL: Url.format(config.get('servers.elasticsearch')), - CYPRESS_ELASTICSEARCH_USERNAME: config.get('servers.elasticsearch.username'), - CYPRESS_ELASTICSEARCH_PASSWORD: config.get('servers.elasticsearch.password'), - baseUrl: Url.format(config.get('servers.kibana')), BASE_URL: Url.format(config.get('servers.kibana')), ELASTICSEARCH_URL: Url.format(config.get('servers.elasticsearch')), ELASTICSEARCH_USERNAME: config.get('servers.elasticsearch.username'), diff --git a/x-pack/test_serverless/api_integration/services/index.ts b/x-pack/test_serverless/api_integration/services/index.ts index 06e7c33fd7099..14ecca6d1f768 100644 --- a/x-pack/test_serverless/api_integration/services/index.ts +++ b/x-pack/test_serverless/api_integration/services/index.ts @@ -14,6 +14,7 @@ import { SvlCommonApiServiceProvider } from './svl_common_api'; import { AlertingApiProvider } from './alerting_api'; import { SamlToolsProvider } from './saml_tools'; import { DataViewApiProvider } from './data_view_api'; +import { SvlCasesServiceProvider } from './svl_cases'; export const services = { ...xpackApiIntegrationServices, @@ -23,6 +24,7 @@ export const services = { alertingApi: AlertingApiProvider, samlTools: SamlToolsProvider, dataViewApi: DataViewApiProvider, + svlCases: SvlCasesServiceProvider, }; export type InheritedFtrProviderContext = GenericFtrProviderContext; diff --git a/x-pack/test_serverless/api_integration/services/svl_cases/api.ts b/x-pack/test_serverless/api_integration/services/svl_cases/api.ts new file mode 100644 index 0000000000000..474a92c317e9f --- /dev/null +++ b/x-pack/test_serverless/api_integration/services/svl_cases/api.ts @@ -0,0 +1,233 @@ +/* + * 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 SuperTest from 'supertest'; +import { CASES_URL } from '@kbn/cases-plugin/common'; +import { Case, CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; +import type { CasePostRequest } from '@kbn/cases-plugin/common/types/api'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; +import { CasesFindResponse } from '@kbn/cases-plugin/common/types/api'; +import { kbnTestConfig, kibanaTestSuperuserServerless } from '@kbn/test'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export function SvlCasesApiServiceProvider({ getService }: FtrProviderContext) { + const kbnServer = getService('kibanaServer'); + const supertest = getService('supertest'); + + interface User { + username: string; + password: string; + description?: string; + roles: string[]; + } + + const superUser: User = { + username: 'superuser', + password: 'superuser', + roles: ['superuser'], + }; + + const defaultUser = { + email: null, + full_name: null, + username: kbnTestConfig.getUrlParts(kibanaTestSuperuserServerless).username, + }; + + /** + * A null filled user will occur when the security plugin is disabled + */ + const nullUser = { email: null, full_name: null, username: null }; + + const findCommon = { + page: 1, + per_page: 20, + total: 0, + count_open_cases: 0, + count_closed_cases: 0, + count_in_progress_cases: 0, + }; + + const findCasesResp: CasesFindResponse = { + ...findCommon, + cases: [], + }; + + return { + setupAuth({ + apiCall, + headers, + auth, + }: { + apiCall: SuperTest.Test; + headers: Record; + auth?: { user: User; space: string | null } | null; + }): SuperTest.Test { + if (!Object.hasOwn(headers, 'Cookie') && auth != null) { + return apiCall.auth(auth.user.username, auth.user.password); + } + + return apiCall; + }, + + getSpaceUrlPrefix(spaceId: string | undefined | null) { + return spaceId && spaceId !== 'default' ? `/s/${spaceId}` : ``; + }, + + async deleteAllCaseItems() { + await Promise.all([ + this.deleteCasesByESQuery(), + this.deleteCasesUserActions(), + this.deleteComments(), + this.deleteConfiguration(), + this.deleteMappings(), + ]); + }, + + async deleteCasesUserActions(): Promise { + await kbnServer.savedObjects.clean({ types: ['cases-user-actions'] }); + }, + + async deleteCasesByESQuery(): Promise { + await kbnServer.savedObjects.clean({ types: ['cases'] }); + }, + + async deleteComments(): Promise { + await kbnServer.savedObjects.clean({ types: ['cases-comments'] }); + }, + + async deleteConfiguration(): Promise { + await kbnServer.savedObjects.clean({ types: ['cases-configure'] }); + }, + + async deleteMappings(): Promise { + await kbnServer.savedObjects.clean({ types: ['cases-connector-mappings'] }); + }, + + /** + * Return a request for creating a case. + */ + getPostCaseRequest(owner: string, req?: Partial): CasePostRequest { + return { + ...this.getPostCaseReq(owner), + ...req, + }; + }, + + postCaseResp(owner: string, id?: string | null, req?: CasePostRequest): Partial { + const request = req ?? this.getPostCaseReq(owner); + return { + ...request, + ...(id != null ? { id } : {}), + comments: [], + duration: null, + severity: request.severity ?? CaseSeverity.LOW, + totalAlerts: 0, + totalComment: 0, + closed_by: null, + created_by: defaultUser, + external_service: null, + status: CaseStatuses.open, + updated_by: null, + category: null, + }; + }, + + async createCase( + params: CasePostRequest, + expectedHttpCode: number = 200, + auth: { user: User; space: string | null } | null = { user: superUser, space: null }, + headers: Record = {} + ): Promise { + const apiCall = supertest.post(`${CASES_URL}`); + + this.setupAuth({ apiCall, headers, auth }); + + const response = await apiCall + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .set(headers) + .send(params) + .expect(expectedHttpCode); + + return response.body; + }, + + async findCases({ + query = {}, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, + }: { + query?: Record; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; + }): Promise { + const { body: res } = await supertest + .get(`${this.getSpaceUrlPrefix(auth.space)}${CASES_URL}/_find`) + .auth(auth.user.username, auth.user.password) + .query({ sortOrder: 'asc', ...query }) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .send() + .expect(expectedHttpCode); + + return res; + }, + + async getCase({ + caseId, + includeComments = false, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, + }: { + caseId: string; + includeComments?: boolean; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; + }): Promise { + const { body: theCase } = await supertest + .get( + `${this.getSpaceUrlPrefix( + auth?.space + )}${CASES_URL}/${caseId}?includeComments=${includeComments}` + ) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .auth(auth.user.username, auth.user.password) + .expect(expectedHttpCode); + + return theCase; + }, + + getFindCasesResp() { + return findCasesResp; + }, + + getPostCaseReq(owner: string): CasePostRequest { + return { + description: 'This is a brand new case of a bad meanie defacing data', + title: 'Super Bad Observability Issue', + tags: ['defacement'], + severity: CaseSeverity.LOW, + connector: { + id: 'none', + name: 'none', + type: ConnectorTypes.none, + fields: null, + }, + settings: { + syncAlerts: true, + }, + owner, + assignees: [], + }; + }, + + getNullUser() { + return nullUser; + }, + }; +} diff --git a/x-pack/test_serverless/api_integration/services/svl_cases/index.ts b/x-pack/test_serverless/api_integration/services/svl_cases/index.ts new file mode 100644 index 0000000000000..31b372e7442b3 --- /dev/null +++ b/x-pack/test_serverless/api_integration/services/svl_cases/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../ftr_provider_context'; + +import { SvlCasesApiServiceProvider } from './api'; +import { SvlCasesOmitServiceProvider } from './omit'; + +export function SvlCasesServiceProvider(context: FtrProviderContext) { + const api = SvlCasesApiServiceProvider(context); + const omit = SvlCasesOmitServiceProvider(context); + + return { + api, + omit, + }; +} diff --git a/x-pack/test_serverless/api_integration/services/svl_cases/omit.ts b/x-pack/test_serverless/api_integration/services/svl_cases/omit.ts new file mode 100644 index 0000000000000..94ce0a479fffc --- /dev/null +++ b/x-pack/test_serverless/api_integration/services/svl_cases/omit.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Case, Attachment } from '@kbn/cases-plugin/common/types/domain'; +import { omit } from 'lodash'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export function SvlCasesOmitServiceProvider({}: FtrProviderContext) { + interface CommonSavedObjectAttributes { + id?: string | null; + created_at?: string | null; + updated_at?: string | null; + version?: string | null; + [key: string]: unknown; + } + + const savedObjectCommonAttributes = ['created_at', 'updated_at', 'version', 'id']; + + return { + removeServerGeneratedPropertiesFromObject( + object: T, + keys: K[] + ): Omit { + return omit(object, keys); + }, + + removeServerGeneratedPropertiesFromSavedObject( + attributes: T, + keys: Array = [] + ): Omit { + return this.removeServerGeneratedPropertiesFromObject(attributes, [ + ...savedObjectCommonAttributes, + ...keys, + ]); + }, + + removeServerGeneratedPropertiesFromCase(theCase: Case): Partial { + return this.removeServerGeneratedPropertiesFromSavedObject(theCase, ['closed_at']); + }, + + removeServerGeneratedPropertiesFromComments( + comments: Attachment[] | undefined + ): Array> | undefined { + return comments?.map((comment) => { + return this.removeServerGeneratedPropertiesFromSavedObject(comment, []); + }); + }, + }; +} diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_views/es_errors/errors.js b/x-pack/test_serverless/api_integration/test_suites/common/data_views/es_errors/errors.js index ddbc88cce8045..f8556727d9c17 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_views/es_errors/errors.js +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_views/es_errors/errors.js @@ -22,7 +22,8 @@ export default function ({ getService }) { const es = getService('es'); const esArchiver = getService('esArchiver'); - describe('index_patterns/* error handler', () => { + // FLAKY: https://github.com/elastic/kibana/issues/165944 + describe.skip('index_patterns/* error handler', () => { let indexNotFoundError; let docNotFoundError; before(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/conflicts.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/conflicts.ts index d1d08c1e88832..a358bb8a3d469 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/conflicts.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/conflicts.ts @@ -16,7 +16,8 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const svlCommonApi = getService('svlCommonApi'); - describe('conflicts', () => { + // FLAKY: https://github.com/elastic/kibana/issues/165972 + describe.skip('conflicts', () => { before(() => esArchiver.load('test/api_integration/fixtures/es_archiver/index_patterns/conflicts') ); diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/params.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/params.ts index 035ca1af4b5a8..66aa266810530 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/params.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_views/fields_for_wildcard_route/params.ts @@ -16,7 +16,8 @@ export default function ({ getService }: FtrProviderContext) { const randomness = getService('randomness'); const svlCommonApi = getService('svlCommonApi'); - describe('params', () => { + // FLAKY https://github.com/elastic/kibana/issues/165942 + describe.skip('params', () => { before(() => esArchiver.load('test/api_integration/fixtures/es_archiver/index_patterns/basic_index') ); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts index 6f88c0ded2fdd..c28247b3cea0b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts @@ -7,34 +7,34 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { - findCases, - createCase, - deleteAllCaseItems, - postCaseReq, - findCasesResp, -} from './helpers/api'; export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - const es = getService('es'); + const svlCases = getService('svlCases'); + + let findCasesResp: any; + let postCaseReq: any; describe('find_cases', () => { + before(async () => { + findCasesResp = svlCases.api.getFindCasesResp(); + postCaseReq = svlCases.api.getPostCaseReq('observability'); + }); + afterEach(async () => { - await deleteAllCaseItems(es); + await svlCases.api.deleteAllCaseItems(); }); it('should return empty response', async () => { - const cases = await findCases({ supertest }); + const cases = await svlCases.api.findCases({}); expect(cases).to.eql(findCasesResp); }); it('should return cases', async () => { - const a = await createCase(supertest, postCaseReq); - const b = await createCase(supertest, postCaseReq); - const c = await createCase(supertest, postCaseReq); + const a = await svlCases.api.createCase(postCaseReq); + const b = await svlCases.api.createCase(postCaseReq); + const c = await svlCases.api.createCase(postCaseReq); - const cases = await findCases({ supertest }); + const cases = await svlCases.api.findCases({}); expect(cases).to.eql({ ...findCasesResp, @@ -45,12 +45,14 @@ export default ({ getService }: FtrProviderContext): void => { }); it('returns empty response when trying to find cases with owner as cases', async () => { - const cases = await findCases({ supertest, query: { owner: 'cases' } }); + const cases = await svlCases.api.findCases({ query: { owner: 'cases' } }); expect(cases).to.eql(findCasesResp); }); it('returns empty response when trying to find cases with owner as securitySolution', async () => { - const cases = await findCases({ supertest, query: { owner: 'securitySolution' } }); + const cases = await svlCases.api.findCases({ + query: { owner: 'securitySolution' }, + }); expect(cases).to.eql(findCasesResp); }); }); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts index fffc529d2df30..d1f601f709af2 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts @@ -8,30 +8,26 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { - getCase, - createCase, - deleteCasesByESQuery, - getPostCaseRequest, - postCaseResp, -} from './helpers/api'; -import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - const es = getService('es'); + const svlCases = getService('svlCases'); describe('get_case', () => { afterEach(async () => { - await deleteCasesByESQuery(es); + await svlCases.api.deleteCasesByESQuery(); }); it('should return a case', async () => { - const postedCase = await createCase(supertest, getPostCaseRequest()); - const theCase = await getCase({ supertest, caseId: postedCase.id, includeComments: true }); + const postedCase = await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('observability') + ); + const theCase = await svlCases.api.getCase({ + caseId: postedCase.id, + includeComments: true, + }); - const data = removeServerGeneratedPropertiesFromCase(theCase); - expect(data).to.eql(postCaseResp()); + const data = svlCases.omit.removeServerGeneratedPropertiesFromCase(theCase); + expect(data).to.eql(svlCases.api.postCaseResp('observability')); expect(data.comments?.length).to.eql(0); }); }); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts deleted file mode 100644 index 33cbdf07bf602..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts +++ /dev/null @@ -1,247 +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 { Client } from '@elastic/elasticsearch'; -import type SuperTest from 'supertest'; -import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server/src/saved_objects_index_pattern'; -import { CASES_URL } from '@kbn/cases-plugin/common'; -import { Case, CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; -import type { CasePostRequest } from '@kbn/cases-plugin/common/types/api'; -import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; -import { CasesFindResponse } from '@kbn/cases-plugin/common/types/api'; - -export interface User { - username: string; - password: string; - description?: string; - roles: string[]; -} - -export const superUser: User = { - username: 'superuser', - password: 'superuser', - roles: ['superuser'], -}; - -export const setupAuth = ({ - apiCall, - headers, - auth, -}: { - apiCall: SuperTest.Test; - headers: Record; - auth?: { user: User; space: string | null } | null; -}): SuperTest.Test => { - if (!Object.hasOwn(headers, 'Cookie') && auth != null) { - return apiCall.auth(auth.user.username, auth.user.password); - } - - return apiCall; -}; - -export const getSpaceUrlPrefix = (spaceId: string | undefined | null) => { - return spaceId && spaceId !== 'default' ? `/s/${spaceId}` : ``; -}; - -export const deleteAllCaseItems = async (es: Client) => { - await Promise.all([ - deleteCasesByESQuery(es), - deleteCasesUserActions(es), - deleteComments(es), - deleteConfiguration(es), - deleteMappings(es), - ]); -}; - -export const deleteCasesUserActions = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-user-actions', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteCasesByESQuery = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteComments = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-comments', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteConfiguration = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-configure', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteMappings = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-connector-mappings', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const defaultUser = { email: null, full_name: null, username: 'elastic_serverless' }; -/** - * A null filled user will occur when the security plugin is disabled - */ -export const nullUser = { email: null, full_name: null, username: null }; - -export const postCaseReq: CasePostRequest = { - description: 'This is a brand new case of a bad meanie defacing data', - title: 'Super Bad Observability Issue', - tags: ['defacement'], - severity: CaseSeverity.LOW, - connector: { - id: 'none', - name: 'none', - type: ConnectorTypes.none, - fields: null, - }, - settings: { - syncAlerts: true, - }, - owner: 'observability', - assignees: [], -}; - -/** - * Return a request for creating a case. - */ -export const getPostCaseRequest = (req?: Partial): CasePostRequest => ({ - ...postCaseReq, - ...req, -}); - -export const postCaseResp = ( - id?: string | null, - req: CasePostRequest = postCaseReq -): Partial => ({ - ...req, - ...(id != null ? { id } : {}), - comments: [], - duration: null, - severity: req.severity ?? CaseSeverity.LOW, - totalAlerts: 0, - totalComment: 0, - closed_by: null, - created_by: defaultUser, - external_service: null, - status: CaseStatuses.open, - updated_by: null, - category: null, -}); - -const findCommon = { - page: 1, - per_page: 20, - total: 0, - count_open_cases: 0, - count_closed_cases: 0, - count_in_progress_cases: 0, -}; - -export const findCasesResp: CasesFindResponse = { - ...findCommon, - cases: [], -}; - -export const createCase = async ( - supertest: SuperTest.SuperTest, - params: CasePostRequest, - expectedHttpCode: number = 200, - auth: { user: User; space: string | null } | null = { user: superUser, space: null }, - headers: Record = {} -): Promise => { - const apiCall = supertest.post(`${CASES_URL}`); - - setupAuth({ apiCall, headers, auth }); - - const response = await apiCall - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .set(headers) - .send(params) - .expect(expectedHttpCode); - - return response.body; -}; - -export const findCases = async ({ - supertest, - query = {}, - expectedHttpCode = 200, - auth = { user: superUser, space: null }, -}: { - supertest: SuperTest.SuperTest; - query?: Record; - expectedHttpCode?: number; - auth?: { user: User; space: string | null }; -}): Promise => { - const { body: res } = await supertest - .get(`${getSpaceUrlPrefix(auth.space)}${CASES_URL}/_find`) - .auth(auth.user.username, auth.user.password) - .query({ sortOrder: 'asc', ...query }) - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .send() - .expect(expectedHttpCode); - - return res; -}; - -export const getCase = async ({ - supertest, - caseId, - includeComments = false, - expectedHttpCode = 200, - auth = { user: superUser, space: null }, -}: { - supertest: SuperTest.SuperTest; - caseId: string; - includeComments?: boolean; - expectedHttpCode?: number; - auth?: { user: User; space: string | null }; -}): Promise => { - const { body: theCase } = await supertest - .get( - `${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/${caseId}?includeComments=${includeComments}` - ) - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .auth(auth.user.username, auth.user.password) - .expect(expectedHttpCode); - - return theCase; -}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts deleted file mode 100644 index b25506bfaebea..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts +++ /dev/null @@ -1,49 +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 { Case, Attachment } from '@kbn/cases-plugin/common/types/domain'; -import { omit } from 'lodash'; - -interface CommonSavedObjectAttributes { - id?: string | null; - created_at?: string | null; - updated_at?: string | null; - version?: string | null; - [key: string]: unknown; -} - -const savedObjectCommonAttributes = ['created_at', 'updated_at', 'version', 'id']; - -export const removeServerGeneratedPropertiesFromObject = ( - object: T, - keys: K[] -): Omit => { - return omit(object, keys); -}; -export const removeServerGeneratedPropertiesFromSavedObject = < - T extends CommonSavedObjectAttributes ->( - attributes: T, - keys: Array = [] -): Omit => { - return removeServerGeneratedPropertiesFromObject(attributes, [ - ...savedObjectCommonAttributes, - ...keys, - ]); -}; - -export const removeServerGeneratedPropertiesFromCase = (theCase: Case): Partial => { - return removeServerGeneratedPropertiesFromSavedObject(theCase, ['closed_at']); -}; - -export const removeServerGeneratedPropertiesFromComments = ( - comments: Attachment[] | undefined -): Array> | undefined => { - return comments?.map((comment) => { - return removeServerGeneratedPropertiesFromSavedObject(comment, []); - }); -}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts index 2bb37149c007f..01cf60d424f90 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts @@ -9,22 +9,19 @@ import expect from '@kbn/expect'; import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { deleteCasesByESQuery, createCase, getPostCaseRequest } from './helpers/api'; export default ({ getService }: FtrProviderContext): void => { - const es = getService('es'); - const supertest = getService('supertest'); + const svlCases = getService('svlCases'); describe('post_case', () => { afterEach(async () => { - await deleteCasesByESQuery(es); + await svlCases.api.deleteCasesByESQuery(); }); it('should create a case', async () => { expect( - await createCase( - supertest, - getPostCaseRequest({ + await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('observability', { connector: { id: '123', name: 'Jira', @@ -39,9 +36,8 @@ export default ({ getService }: FtrProviderContext): void => { it('should throw 403 when create a case with securitySolution as owner', async () => { expect( - await createCase( - supertest, - getPostCaseRequest({ + await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('observability', { owner: 'securitySolution', }), 403 @@ -51,9 +47,8 @@ export default ({ getService }: FtrProviderContext): void => { it('should throw 403 when create a case with cases as owner', async () => { expect( - await createCase( - supertest, - getPostCaseRequest({ + await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('observability', { owner: 'cases', }), 403 diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts index 07283119aea2f..ee44874a67fac 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts @@ -8,35 +8,34 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { - findCases, - createCase, - deleteAllCaseItems, - findCasesResp, - postCaseReq, -} from './helpers/api'; - export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - const es = getService('es'); + const svlCases = getService('svlCases'); + + let findCasesResp: any; + let postCaseReq: any; describe('find_cases', () => { describe('basic tests', () => { + before(async () => { + findCasesResp = svlCases.api.getFindCasesResp(); + postCaseReq = svlCases.api.getPostCaseReq('securitySolution'); + }); + afterEach(async () => { - await deleteAllCaseItems(es); + await svlCases.api.deleteAllCaseItems(); }); it('should return empty response', async () => { - const cases = await findCases({ supertest }); + const cases = await svlCases.api.findCases({}); expect(cases).to.eql(findCasesResp); }); it('should return cases', async () => { - const a = await createCase(supertest, postCaseReq); - const b = await createCase(supertest, postCaseReq); - const c = await createCase(supertest, postCaseReq); + const a = await svlCases.api.createCase(postCaseReq); + const b = await svlCases.api.createCase(postCaseReq); + const c = await svlCases.api.createCase(postCaseReq); - const cases = await findCases({ supertest }); + const cases = await svlCases.api.findCases({}); expect(cases).to.eql({ ...findCasesResp, @@ -47,12 +46,14 @@ export default ({ getService }: FtrProviderContext): void => { }); it('returns empty response when trying to find cases with owner as cases', async () => { - const cases = await findCases({ supertest, query: { owner: 'cases' } }); + const cases = await svlCases.api.findCases({ query: { owner: 'cases' } }); expect(cases).to.eql(findCasesResp); }); it('returns empty response when trying to find cases with owner as observability', async () => { - const cases = await findCases({ supertest, query: { owner: 'observability' } }); + const cases = await svlCases.api.findCases({ + query: { owner: 'observability' }, + }); expect(cases).to.eql(findCasesResp); }); }); diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts index c8dd9ec867514..719841ff28ab5 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts @@ -8,30 +8,25 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { - getCase, - createCase, - deleteCasesByESQuery, - getPostCaseRequest, - postCaseResp, -} from './helpers/api'; -import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; - export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - const es = getService('es'); + const svlCases = getService('svlCases'); describe('get_case', () => { afterEach(async () => { - await deleteCasesByESQuery(es); + await svlCases.api.deleteCasesByESQuery(); }); it('should return a case', async () => { - const postedCase = await createCase(supertest, getPostCaseRequest()); - const theCase = await getCase({ supertest, caseId: postedCase.id, includeComments: true }); + const postedCase = await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('securitySolution') + ); + const theCase = await svlCases.api.getCase({ + caseId: postedCase.id, + includeComments: true, + }); - const data = removeServerGeneratedPropertiesFromCase(theCase); - expect(data).to.eql(postCaseResp()); + const data = svlCases.omit.removeServerGeneratedPropertiesFromCase(theCase); + expect(data).to.eql(svlCases.api.postCaseResp('securitySolution')); expect(data.comments?.length).to.eql(0); }); }); diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts deleted file mode 100644 index 0d1a889adeadc..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts +++ /dev/null @@ -1,247 +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 { Client } from '@elastic/elasticsearch'; -import type SuperTest from 'supertest'; -import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server/src/saved_objects_index_pattern'; -import { CASES_URL } from '@kbn/cases-plugin/common'; -import { Case, CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; -import type { CasePostRequest } from '@kbn/cases-plugin/common/types/api'; -import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; -import { CasesFindResponse } from '@kbn/cases-plugin/common/types/api'; - -export interface User { - username: string; - password: string; - description?: string; - roles: string[]; -} - -export const superUser: User = { - username: 'superuser', - password: 'superuser', - roles: ['superuser'], -}; - -export const setupAuth = ({ - apiCall, - headers, - auth, -}: { - apiCall: SuperTest.Test; - headers: Record; - auth?: { user: User; space: string | null } | null; -}): SuperTest.Test => { - if (!Object.hasOwn(headers, 'Cookie') && auth != null) { - return apiCall.auth(auth.user.username, auth.user.password); - } - - return apiCall; -}; - -export const getSpaceUrlPrefix = (spaceId: string | undefined | null) => { - return spaceId && spaceId !== 'default' ? `/s/${spaceId}` : ``; -}; - -export const deleteAllCaseItems = async (es: Client) => { - await Promise.all([ - deleteCasesByESQuery(es), - deleteCasesUserActions(es), - deleteComments(es), - deleteConfiguration(es), - deleteMappings(es), - ]); -}; - -export const deleteCasesUserActions = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-user-actions', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteCasesByESQuery = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteComments = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-comments', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteConfiguration = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-configure', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const deleteMappings = async (es: Client): Promise => { - await es.deleteByQuery({ - index: ALERTING_CASES_SAVED_OBJECT_INDEX, - q: 'type:cases-connector-mappings', - wait_for_completion: true, - refresh: true, - body: {}, - conflicts: 'proceed', - }); -}; - -export const defaultUser = { email: null, full_name: null, username: 'elastic_serverless' }; -/** - * A null filled user will occur when the security plugin is disabled - */ -export const nullUser = { email: null, full_name: null, username: null }; - -export const postCaseReq: CasePostRequest = { - description: 'This is a brand new case of a bad meanie defacing data', - title: 'Super Bad Observability Issue', - tags: ['defacement'], - severity: CaseSeverity.LOW, - connector: { - id: 'none', - name: 'none', - type: ConnectorTypes.none, - fields: null, - }, - settings: { - syncAlerts: true, - }, - owner: 'securitySolution', - assignees: [], -}; - -/** - * Return a request for creating a case. - */ -export const getPostCaseRequest = (req?: Partial): CasePostRequest => ({ - ...postCaseReq, - ...req, -}); - -export const postCaseResp = ( - id?: string | null, - req: CasePostRequest = postCaseReq -): Partial => ({ - ...req, - ...(id != null ? { id } : {}), - comments: [], - duration: null, - severity: req.severity ?? CaseSeverity.LOW, - totalAlerts: 0, - totalComment: 0, - closed_by: null, - created_by: defaultUser, - external_service: null, - status: CaseStatuses.open, - updated_by: null, - category: null, -}); - -const findCommon = { - page: 1, - per_page: 20, - total: 0, - count_open_cases: 0, - count_closed_cases: 0, - count_in_progress_cases: 0, -}; - -export const findCasesResp: CasesFindResponse = { - ...findCommon, - cases: [], -}; - -export const createCase = async ( - supertest: SuperTest.SuperTest, - params: CasePostRequest, - expectedHttpCode: number = 200, - auth: { user: User; space: string | null } | null = { user: superUser, space: null }, - headers: Record = {} -): Promise => { - const apiCall = supertest.post(`${CASES_URL}`); - - setupAuth({ apiCall, headers, auth }); - - const { body: theCase } = await apiCall - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .set(headers) - .send(params) - .expect(expectedHttpCode); - - return theCase; -}; - -export const findCases = async ({ - supertest, - query = {}, - expectedHttpCode = 200, - auth = { user: superUser, space: null }, -}: { - supertest: SuperTest.SuperTest; - query?: Record; - expectedHttpCode?: number; - auth?: { user: User; space: string | null }; -}): Promise => { - const { body: res } = await supertest - .get(`${getSpaceUrlPrefix(auth.space)}${CASES_URL}/_find`) - .auth(auth.user.username, auth.user.password) - .query({ sortOrder: 'asc', ...query }) - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .send() - .expect(expectedHttpCode); - - return res; -}; - -export const getCase = async ({ - supertest, - caseId, - includeComments = false, - expectedHttpCode = 200, - auth = { user: superUser, space: null }, -}: { - supertest: SuperTest.SuperTest; - caseId: string; - includeComments?: boolean; - expectedHttpCode?: number; - auth?: { user: User; space: string | null }; -}): Promise => { - const { body: theCase } = await supertest - .get( - `${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/${caseId}?includeComments=${includeComments}` - ) - .set('kbn-xsrf', 'foo') - .set('x-elastic-internal-origin', 'foo') - .auth(auth.user.username, auth.user.password) - .expect(expectedHttpCode); - - return theCase; -}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts deleted file mode 100644 index b25506bfaebea..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts +++ /dev/null @@ -1,49 +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 { Case, Attachment } from '@kbn/cases-plugin/common/types/domain'; -import { omit } from 'lodash'; - -interface CommonSavedObjectAttributes { - id?: string | null; - created_at?: string | null; - updated_at?: string | null; - version?: string | null; - [key: string]: unknown; -} - -const savedObjectCommonAttributes = ['created_at', 'updated_at', 'version', 'id']; - -export const removeServerGeneratedPropertiesFromObject = ( - object: T, - keys: K[] -): Omit => { - return omit(object, keys); -}; -export const removeServerGeneratedPropertiesFromSavedObject = < - T extends CommonSavedObjectAttributes ->( - attributes: T, - keys: Array = [] -): Omit => { - return removeServerGeneratedPropertiesFromObject(attributes, [ - ...savedObjectCommonAttributes, - ...keys, - ]); -}; - -export const removeServerGeneratedPropertiesFromCase = (theCase: Case): Partial => { - return removeServerGeneratedPropertiesFromSavedObject(theCase, ['closed_at']); -}; - -export const removeServerGeneratedPropertiesFromComments = ( - comments: Attachment[] | undefined -): Array> | undefined => { - return comments?.map((comment) => { - return removeServerGeneratedPropertiesFromSavedObject(comment, []); - }); -}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts index 1d49545c3d53a..77917915d4bcc 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts @@ -9,22 +9,18 @@ import expect from '@kbn/expect'; import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { deleteCasesByESQuery, createCase, getPostCaseRequest, postCaseResp } from './helpers/api'; -import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; export default ({ getService }: FtrProviderContext): void => { - const es = getService('es'); - const supertest = getService('supertest'); + const svlCases = getService('svlCases'); describe('post_case', () => { afterEach(async () => { - await deleteCasesByESQuery(es); + await svlCases.api.deleteCasesByESQuery(); }); it('should create a case', async () => { - const postedCase = await createCase( - supertest, - getPostCaseRequest({ + const postedCase = await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('securitySolution', { connector: { id: '123', name: 'Jira', @@ -33,12 +29,13 @@ export default ({ getService }: FtrProviderContext): void => { }, }) ); - const data = removeServerGeneratedPropertiesFromCase(postedCase); + const data = svlCases.omit.removeServerGeneratedPropertiesFromCase(postedCase); expect(data).to.eql( - postCaseResp( + svlCases.api.postCaseResp( + 'securitySolution', null, - getPostCaseRequest({ + svlCases.api.getPostCaseRequest('securitySolution', { connector: { id: '123', name: 'Jira', @@ -52,9 +49,8 @@ export default ({ getService }: FtrProviderContext): void => { it('should throw 403 when trying to create a case with observability as owner', async () => { expect( - await createCase( - supertest, - getPostCaseRequest({ + await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('securitySolution', { owner: 'observability', }), 403 @@ -64,9 +60,8 @@ export default ({ getService }: FtrProviderContext): void => { it('should throw 403 when trying to create a case with cases as owner', async () => { expect( - await createCase( - supertest, - getPostCaseRequest({ + await svlCases.api.createCase( + svlCases.api.getPostCaseRequest('securitySolution', { owner: 'cases', }), 403 diff --git a/x-pack/test_serverless/functional/test_suites/common/sample_data.ts b/x-pack/test_serverless/functional/test_suites/common/sample_data.ts new file mode 100644 index 0000000000000..a127ce0ee3e1d --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/sample_data.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['settings', 'common', 'header', 'home']); + + describe('Sample data in serverless', function () { + it('Sample data loads', async () => { + await PageObjects.home.addSampleDataSet('ecommerce'); + const ecommerce = await PageObjects.home.isSampleDataSetInstalled('ecommerce'); + expect(ecommerce).toBe(true); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts index d4dfdca15e82d..668bbd4436cec 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts @@ -53,7 +53,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); - describe('status', () => { + // FLAKY: https://github.com/elastic/kibana/issues/166027 + describe.skip('status', () => { createNCasesBeforeDeleteAllAfter(2, getPageObject, getService); it('change the status of cases to in-progress correctly', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/app.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/app.ts index 6a9d76a9b594c..d78fc15fed8a8 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/app.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/app.ts @@ -10,7 +10,8 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['observabilityLogExplorer', 'svlCommonNavigation']); - describe('Application', () => { + // FLAKY: https://github.com/elastic/kibana/issues/165943 + describe.skip('Application', () => { it('is shown in the global search', async () => { await PageObjects.observabilityLogExplorer.navigateTo(); await PageObjects.svlCommonNavigation.search.showSearch(); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/columns_selection.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/columns_selection.ts index 92ccb09a27f00..05edfb9a29350 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/columns_selection.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/columns_selection.ts @@ -16,7 +16,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['discover', 'observabilityLogExplorer']); - describe('Columns selection initialization and update', () => { + // FLAKY: https://github.com/elastic/kibana/issues/165915 + // FLAKY: https://github.com/elastic/kibana/issues/165916 + describe.skip('Columns selection initialization and update', () => { before(async () => { await esArchiver.load( 'x-pack/test/functional/es_archives/observability_log_explorer/data_streams' 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 5652843c3fc0c..2715685d21a2d 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 @@ -14,7 +14,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'observabilityLogExplorer']); - describe('DatasetSelection initialization and update', () => { + // 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 log datasets" selection', async () => { await PageObjects.observabilityLogExplorer.navigateTo(); 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 038e28a442c24..65207e6e3aafc 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 @@ -13,7 +13,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['discover', 'observabilityLogExplorer', 'timePicker']); - describe('Header menu', () => { + // Failing: See https://github.com/elastic/kibana/issues/165839 + describe.skip('Header menu', () => { before(async () => { await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await esArchiver.load( diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/list_view.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/list_view.ts index e05c16551982b..2ee92cfac87a9 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/list_view.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/list_view.ts @@ -53,7 +53,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); - describe('status', () => { + // FLAKY: https://github.com/elastic/kibana/issues/166027 + describe.skip('status', () => { createNCasesBeforeDeleteAllAfter(2, getPageObject, getService); it('change the status of cases to in-progress correctly', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts index 695336b7734fb..998ad9a2096c9 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts @@ -15,7 +15,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const browser = getService('browser'); - describe('navigation', function () { + // FLAKY: https://github.com/elastic/kibana/issues/165629 + describe.skip('navigation', function () { before(async () => { await svlSecNavigation.navigateToLandingPage(); });