diff --git a/.buildkite/ftr_oblt_stateful_configs.yml b/.buildkite/ftr_oblt_stateful_configs.yml
index 6f0cb38be3a62..7655ce6de38cf 100644
--- a/.buildkite/ftr_oblt_stateful_configs.yml
+++ b/.buildkite/ftr_oblt_stateful_configs.yml
@@ -30,7 +30,6 @@ enabled:
- x-pack/test/api_integration/apis/metrics_ui/config.ts
- x-pack/test/api_integration/apis/osquery/config.ts
- x-pack/test/api_integration/apis/synthetics/config.ts
- - x-pack/test/api_integration/apis/slos/config.ts
- x-pack/test/api_integration/apis/uptime/config.ts
- x-pack/test/api_integration/apis/entity_manager/config.ts
- x-pack/test/apm_api_integration/basic/config.ts
diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml
index c3532be5a8b47..834db3ce9849e 100644
--- a/.buildkite/ftr_security_serverless_configs.yml
+++ b/.buildkite/ftr_security_serverless_configs.yml
@@ -1,17 +1,17 @@
disabled:
# Base config files, only necessary to inform config finding script
- - x-pack/test_serverless/functional/test_suites/security/cypress/security_config.base.ts
- - x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts
- x-pack/test/security_solution_api_integration/config/serverless/config.base.ts
- x-pack/test/security_solution_api_integration/config/serverless/config.base.essentials.ts
- x-pack/test/security_solution_api_integration/config/serverless/config.base.edr_workflows.ts
+ - x-pack/test/defend_workflows_cypress/serverless_config.base.ts
+ - x-pack/test/osquery_cypress/serverless_config.base.ts
# Cypress configs, for now these are still run manually
- x-pack/test/defend_workflows_cypress/serverless_config.ts
- x-pack/test/osquery_cypress/serverless_cli_config.ts
- - x-pack/test_serverless/functional/test_suites/security/cypress/security_config.ts
- x-pack/test/security_solution_cypress/serverless_config.ts
+
# Playwright
- x-pack/test/security_solution_playwright/serverless_config.ts
@@ -42,13 +42,23 @@ disabled:
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/trial_license_complete_tier/configs/serverless.config.ts
- - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/date_numeric_types/basic_license_essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/date_types/basic_license_essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/float/basic_license_essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/integer/basic_license_essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/double/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/ips/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/keyword/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/long/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/text/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/workflows/basic_license_essentials_tier/configs/serverless.config.ts
- - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/esql/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/general_logic/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/indicator_match/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/machine_learning/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/new_terms/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/query/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/threshold/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_gaps/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/configs/serverless.config.ts
@@ -80,6 +90,9 @@ disabled:
- x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/exception_lists_items/trial_license_complete_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/authorization/exceptions/lists/essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/authorization/exceptions/common/essentials_tier/configs/serverless.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/authorization/exceptions/items/essentials_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/lists_items/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/explore/hosts/trial_license_complete_tier/configs/serverless.config.ts
- x-pack/test/security_solution_api_integration/test_suites/explore/network/trial_license_complete_tier/configs/serverless.config.ts
diff --git a/.buildkite/ftr_security_stateful_configs.yml b/.buildkite/ftr_security_stateful_configs.yml
index aa37c6f52fb8c..8f780e081b11f 100644
--- a/.buildkite/ftr_security_stateful_configs.yml
+++ b/.buildkite/ftr_security_stateful_configs.yml
@@ -30,13 +30,23 @@ enabled:
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/actions/trial_license_complete_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/trial_license_complete_tier/configs/ess.config.ts
- - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/date_numeric_types/basic_license_essentials_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/date_types/basic_license_essentials_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/float/basic_license_essentials_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/integer/basic_license_essentials_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/double/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/ips/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/keyword/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/long/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/operators_data_types/text/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/exceptions/workflows/basic_license_essentials_tier/configs/ess.config.ts
- - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/esql/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/general_logic/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/indicator_match/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/machine_learning/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/new_terms/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/query/trial_license_complete_tier/configs/ess.config.ts
+ - x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/threshold/trial_license_complete_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_gaps/trial_license_complete_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/basic_license_essentials_tier/configs/ess.config.ts
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_creation/trial_license_complete_tier/configs/ess.config.ts
diff --git a/.buildkite/pipeline-utils/agent_images.ts b/.buildkite/pipeline-utils/agent_images.ts
index cfe93ba67a1f4..c99b46f4bfd4e 100644
--- a/.buildkite/pipeline-utils/agent_images.ts
+++ b/.buildkite/pipeline-utils/agent_images.ts
@@ -59,7 +59,7 @@ const expandAgentQueue = (queueName: string = 'n2-4-spot') => {
const additionalProps =
{
spot: { preemptible: true },
- virt: { localSsdInterface: 'nvme', enableNestedVirtualization: true, localSsds: 1 },
+ virt: { enableNestedVirtualization: true },
}[addition] || {};
return {
diff --git a/.buildkite/pipelines/artifacts.yml b/.buildkite/pipelines/artifacts.yml
index b6f873ad2bd14..4765077287615 100644
--- a/.buildkite/pipelines/artifacts.yml
+++ b/.buildkite/pipelines/artifacts.yml
@@ -21,8 +21,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
timeout_in_minutes: 30
retry:
@@ -37,8 +35,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
timeout_in_minutes: 30
retry:
@@ -53,8 +49,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
timeout_in_minutes: 30
retry:
@@ -68,8 +62,6 @@ steps:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-2
timeout_in_minutes: 30
retry:
@@ -83,8 +75,6 @@ steps:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-2
timeout_in_minutes: 30
retry:
@@ -111,8 +101,6 @@ steps:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-2
timeout_in_minutes: 30
retry:
@@ -129,8 +117,6 @@ steps:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-2
timeout_in_minutes: 60
if: "build.env('RELEASE_BUILD') == null || build.env('RELEASE_BUILD') == '' || build.env('RELEASE_BUILD') == 'false'"
@@ -156,7 +142,5 @@ steps:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-2
timeout_in_minutes: 30
diff --git a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml
index 8a2ec890d5e9f..85ce702580dbb 100644
--- a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml
+++ b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml
@@ -206,8 +206,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
depends_on: build
timeout_in_minutes: 60
diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml
index 3705a2c902642..a7825e01a3b22 100644
--- a/.buildkite/pipelines/on_merge.yml
+++ b/.buildkite/pipelines/on_merge.yml
@@ -39,7 +39,20 @@ steps:
provider: gcp
machineType: n2-highcpu-8
preemptible: true
- key: quick_checks
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
+ - command: .buildkite/scripts/steps/checks.sh
+ label: 'Checks'
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-2
+ preemptible: true
timeout_in_minutes: 60
retry:
automatic:
@@ -54,7 +67,6 @@ steps:
provider: gcp
machineType: n2-standard-16
preemptible: true
- key: linting
timeout_in_minutes: 60
retry:
automatic:
@@ -69,8 +81,37 @@ steps:
provider: gcp
machineType: n2-standard-32
preemptible: true
- key: linting_with_types
- timeout_in_minutes: 90
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
+ - command: .buildkite/scripts/steps/check_types.sh
+ label: 'Check Types'
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: c4-standard-4
+ diskType: 'hyperdisk-balanced'
+ preemptible: true
+ spotZones: us-central1-a,us-central1-b,us-central1-c
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
+ - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh
+ label: 'Check OAS Snapshot'
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 60
retry:
automatic:
- exit_status: '-1'
@@ -136,11 +177,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 2
retry:
@@ -156,11 +192,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 4
retry:
@@ -176,11 +207,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 6
retry:
@@ -196,11 +222,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 5
retry:
@@ -216,11 +237,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 6
retry:
@@ -236,11 +252,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 1
retry:
@@ -256,11 +267,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 2
retry:
@@ -276,11 +282,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 2
retry:
@@ -296,11 +297,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 6
retry:
@@ -316,11 +312,6 @@ steps:
provider: gcp
machineType: n2-standard-4
preemptible: true
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 8
retry:
@@ -335,14 +326,7 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
timeout_in_minutes: 60
parallelism: 20
retry:
@@ -353,59 +337,12 @@ steps:
- command: '.buildkite/scripts/steps/functional/on_merge_unsupported_ftrs.sh'
label: Trigger unsupported ftr tests
timeout_in_minutes: 10
- depends_on:
- - build
- - quick_checks
- - linting
- - linting_with_types
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
machineType: n2-standard-2
- - command: .buildkite/scripts/steps/checks.sh
- label: 'Checks'
- agents:
- image: family/kibana-ubuntu-2004
- imageProject: elastic-images-prod
- provider: gcp
- machineType: n2-standard-2
- preemptible: true
- timeout_in_minutes: 60
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- - command: .buildkite/scripts/steps/check_types.sh
- label: 'Check Types'
- agents:
- image: family/kibana-ubuntu-2004
- imageProject: elastic-images-prod
- provider: gcp
- machineType: n2-standard-4
- preemptible: true
- timeout_in_minutes: 70
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh
- label: 'Check OAS Snapshot'
- agents:
- image: family/kibana-ubuntu-2004
- imageProject: elastic-images-prod
- provider: gcp
- machineType: n2-standard-2
- preemptible: true
- timeout_in_minutes: 60
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- command: .buildkite/scripts/steps/storybooks/build_and_upload.sh
label: 'Build Storybooks'
agents:
diff --git a/.buildkite/pipelines/pointer_compression.yml b/.buildkite/pipelines/pointer_compression.yml
index 41598b3faed1f..29f0b75ca4184 100644
--- a/.buildkite/pipelines/pointer_compression.yml
+++ b/.buildkite/pipelines/pointer_compression.yml
@@ -362,8 +362,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
depends_on:
- build
@@ -381,8 +379,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
depends_on:
- build
diff --git a/.buildkite/pipelines/pull_request/apm_cypress.yml b/.buildkite/pipelines/pull_request/apm_cypress.yml
index 9d2cca6d9d452..97935cc3489d1 100644
--- a/.buildkite/pipelines/pull_request/apm_cypress.yml
+++ b/.buildkite/pipelines/pull_request/apm_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
parallelism: 1 # TODO: Set parallelism when apm_cypress handles it
retry:
diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml
index fdc80e6cb8595..e7b593f464b54 100644
--- a/.buildkite/pipelines/pull_request/base.yml
+++ b/.buildkite/pipelines/pull_request/base.yml
@@ -32,6 +32,18 @@ steps:
- exit_status: '-1'
limit: 3
+ - command: .buildkite/scripts/steps/checks.sh
+ label: 'Checks'
+ key: checks
+ agents:
+ machineType: n2-standard-2
+ preemptible: true
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
- command: .buildkite/scripts/steps/lint.sh
label: 'Linting'
agents:
@@ -50,7 +62,33 @@ steps:
machineType: n2-standard-32
preemptible: true
key: linting_with_types
- timeout_in_minutes: 90
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
+ - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh
+ label: 'Check OAS Snapshot'
+ agents:
+ machineType: n2-standard-4
+ preemptible: true
+ key: check_oas_snapshot
+ timeout_in_minutes: 60
+ retry:
+ automatic:
+ - exit_status: '-1'
+ limit: 3
+
+ - command: .buildkite/scripts/steps/check_types.sh
+ label: 'Check Types'
+ agents:
+ machineType: c4-standard-4
+ diskType: 'hyperdisk-balanced'
+ preemptible: true
+ spotZones: us-central1-a,us-central1-b,us-central1-c
+ key: check_types
+ timeout_in_minutes: 60
retry:
automatic:
- exit_status: '-1'
@@ -85,41 +123,6 @@ steps:
- exit_status: '*'
limit: 1
- - command: .buildkite/scripts/steps/check_types.sh
- label: 'Check Types'
- agents:
- machineType: n2-standard-4
- preemptible: true
- key: check_types
- timeout_in_minutes: 70
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- - command: .buildkite/scripts/steps/checks.sh
- label: 'Checks'
- key: checks
- agents:
- machineType: n2-standard-2
- preemptible: true
- timeout_in_minutes: 60
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh
- label: 'Check OAS Snapshot'
- agents:
- machineType: n2-standard-2
- preemptible: true
- timeout_in_minutes: 60
- retry:
- automatic:
- - exit_status: '-1'
- limit: 3
-
- command: .buildkite/scripts/steps/api_docs/build_api_docs.sh
label: 'Build API Docs'
agents:
diff --git a/.buildkite/pipelines/pull_request/deploy_cloud.yml b/.buildkite/pipelines/pull_request/deploy_cloud.yml
index e82d1ef2e494c..565c5af3bb0c1 100644
--- a/.buildkite/pipelines/pull_request/deploy_cloud.yml
+++ b/.buildkite/pipelines/pull_request/deploy_cloud.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 30
soft_fail: true
retry:
diff --git a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml
index 42aaf59b1c1f2..05fc218080cd4 100644
--- a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml
+++ b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
artifact_paths:
- 'x-pack/plugins/observability_solution/exploratory_view/e2e/.journeys/**/*'
diff --git a/.buildkite/pipelines/pull_request/fips.yml b/.buildkite/pipelines/pull_request/fips.yml
index 3fa0ed9bd2062..4f906e4420c8f 100644
--- a/.buildkite/pipelines/pull_request/fips.yml
+++ b/.buildkite/pipelines/pull_request/fips.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
soft_fail: true
retry:
diff --git a/.buildkite/pipelines/pull_request/fleet_cypress.yml b/.buildkite/pipelines/pull_request/fleet_cypress.yml
index 071106209caaa..50912cc16e5a8 100644
--- a/.buildkite/pipelines/pull_request/fleet_cypress.yml
+++ b/.buildkite/pipelines/pull_request/fleet_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 50
parallelism: 6
retry:
diff --git a/.buildkite/pipelines/pull_request/inventory_cypress.yml b/.buildkite/pipelines/pull_request/inventory_cypress.yml
index b1a8b999f09f2..3cd96de506288 100644
--- a/.buildkite/pipelines/pull_request/inventory_cypress.yml
+++ b/.buildkite/pipelines/pull_request/inventory_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
parallelism: 1
retry:
diff --git a/.buildkite/pipelines/pull_request/kbn_handlebars.yml b/.buildkite/pipelines/pull_request/kbn_handlebars.yml
index ad338ec425a04..187058d238682 100644
--- a/.buildkite/pipelines/pull_request/kbn_handlebars.yml
+++ b/.buildkite/pipelines/pull_request/kbn_handlebars.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 5
retry:
automatic:
diff --git a/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml b/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml
index d0afe1cd138da..b0d438064d51e 100644
--- a/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml
+++ b/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
retry:
automatic:
diff --git a/.buildkite/pipelines/pull_request/profiling_cypress.yml b/.buildkite/pipelines/pull_request/profiling_cypress.yml
index 2b86cffe75fa6..8ed98a4fbc736 100644
--- a/.buildkite/pipelines/pull_request/profiling_cypress.yml
+++ b/.buildkite/pipelines/pull_request/profiling_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
parallelism: 2
retry:
diff --git a/.buildkite/pipelines/pull_request/response_ops.yml b/.buildkite/pipelines/pull_request/response_ops.yml
index a5c9b27ee7ecf..9ac20e86f6660 100644
--- a/.buildkite/pipelines/pull_request/response_ops.yml
+++ b/.buildkite/pipelines/pull_request/response_ops.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
parallelism: 9
retry:
diff --git a/.buildkite/pipelines/pull_request/response_ops_cases.yml b/.buildkite/pipelines/pull_request/response_ops_cases.yml
index 994fbb6c4963a..27289c864e2c1 100644
--- a/.buildkite/pipelines/pull_request/response_ops_cases.yml
+++ b/.buildkite/pipelines/pull_request/response_ops_cases.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 120
retry:
automatic:
diff --git a/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml b/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml
index 6b87f41d585f8..9f9b606dced1d 100644
--- a/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 1
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml b/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml
index 93fad6eecf167..e1ba84bf4f661 100644
--- a/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 1
retry:
@@ -24,8 +27,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 1
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml
index 1ba22d058e6c1..14d81aa9d3520 100644
--- a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml
@@ -3,14 +3,15 @@ steps:
label: '[Soft fail] Defend Workflows Cypress Tests, burning changed specs'
agents:
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
soft_fail: true
parallelism: 1
@@ -25,8 +26,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 1
retry:
@@ -41,8 +45,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 50
soft_fail: true
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
index ea7613fd81cba..28cc4f2812b5a 100644
--- a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml
@@ -3,14 +3,15 @@ steps:
label: 'Defend Workflows Cypress Tests'
agents:
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 20
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml b/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml
index f18d187aab9e7..8f3ed2dc2ff82 100644
--- a/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 5
retry:
@@ -24,8 +27,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 2
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml
index 16e1860a1453c..1ff0999d33afd 100644
--- a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 2
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/explore.yml b/.buildkite/pipelines/pull_request/security_solution/explore.yml
index 5fa4229e7dbde..749b480c5be50 100644
--- a/.buildkite/pipelines/pull_request/security_solution/explore.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/explore.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 2
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/investigations.yml b/.buildkite/pipelines/pull_request/security_solution/investigations.yml
index 469f6d7a2c159..3126aa00d0327 100644
--- a/.buildkite/pipelines/pull_request/security_solution/investigations.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/investigations.yml
@@ -7,12 +7,14 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 7
retry:
automatic:
- exit_status: '-1'
limit: 1
-
diff --git a/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml b/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml
index cb04f1559f3b1..55e5b7842f4f1 100644
--- a/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 8
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/playwright.yml b/.buildkite/pipelines/pull_request/security_solution/playwright.yml
index 98a939570b1be..af29f1e545ca2 100644
--- a/.buildkite/pipelines/pull_request/security_solution/playwright.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/playwright.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 1
retry:
diff --git a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml
index 887e1c8597af7..085df0f65eeb5 100644
--- a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml
+++ b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 4
retry:
@@ -24,8 +27,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
parallelism: 2
retry:
diff --git a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml
index 025c80809ab35..2cf1126cf1f5d 100644
--- a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml
+++ b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 30
artifact_paths:
- 'x-pack/plugins/observability_solution/slo/e2e/.journeys/**/*'
diff --git a/.buildkite/pipelines/pull_request/synthetics_plugin.yml b/.buildkite/pipelines/pull_request/synthetics_plugin.yml
index 0707650aa7c01..b4079b9fac307 100644
--- a/.buildkite/pipelines/pull_request/synthetics_plugin.yml
+++ b/.buildkite/pipelines/pull_request/synthetics_plugin.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
artifact_paths:
- 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*'
diff --git a/.buildkite/pipelines/pull_request/uptime_plugin.yml b/.buildkite/pipelines/pull_request/uptime_plugin.yml
index 33a529739ae6f..4c1e05d7476fd 100644
--- a/.buildkite/pipelines/pull_request/uptime_plugin.yml
+++ b/.buildkite/pipelines/pull_request/uptime_plugin.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
artifact_paths:
- 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*'
diff --git a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml
index 977701cc99485..4bade14464f35 100644
--- a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml
+++ b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml
@@ -7,8 +7,11 @@ steps:
depends_on:
- build
- quick_checks
+ - checks
- linting
- linting_with_types
+ - check_types
+ - check_oas_snapshot
timeout_in_minutes: 60
artifact_paths:
- 'x-pack/plugins/observability_solution/ux/e2e/.journeys/**/*'
diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml
index 5795c8f61f30f..5106d619f95e5 100644
--- a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml
+++ b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml
@@ -10,8 +10,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
@@ -32,8 +30,6 @@ steps:
# imageProject: elastic-images-prod
# provider: gcp
# enableNestedVirtualization: true
-# localSsds: 1
-# localSsdInterface: nvme
# machineType: n2-standard-4
# timeout_in_minutes: 120
# retry:
@@ -49,8 +45,6 @@ steps:
# imageProject: elastic-images-prod
# provider: gcp
# enableNestedVirtualization: true
-# localSsds: 1
-# localSsdInterface: nvme
# machineType: n2-standard-4
# timeout_in_minutes: 120
# retry:
@@ -66,8 +60,6 @@ steps:
# imageProject: elastic-images-prod
# provider: gcp
# enableNestedVirtualization: true
-# localSsds: 1
-# localSsdInterface: nvme
# machineType: n2-standard-4
# timeout_in_minutes: 120
# retry:
@@ -83,8 +75,6 @@ steps:
# imageProject: elastic-images-prod
# provider: gcp
# enableNestedVirtualization: true
-# localSsds: 1
-# localSsdInterface: nvme
# machineType: n2-standard-4
# timeout_in_minutes: 120
# retry:
@@ -100,8 +90,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 120
@@ -118,8 +106,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 120
@@ -136,8 +122,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 120
@@ -157,8 +141,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_detection_engine.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_detection_engine.yml
index e25c6dfef0e4b..2f6e329524c5d 100644
--- a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_detection_engine.yml
+++ b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_detection_engine.yml
@@ -1,12 +1,12 @@
steps:
- - group: "Cypress MKI - Detection Engine"
+ - group: 'Cypress MKI - Detection Engine'
key: cypress_test_detections_engine
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine
- label: "Cypress MKI - Detection Engine"
+ label: 'Cypress MKI - Detection Engine'
key: test_detection_engine
env:
- BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
+ BK_TEST_SUITE_KEY: 'serverless-cypress-detection-engine'
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -18,10 +18,10 @@ steps:
parallelism: 8
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions
- label: "Cypress MKI - Detection Engine - Exceptions"
+ label: 'Cypress MKI - Detection Engine - Exceptions'
key: test_detection_engine_exceptions
env:
- BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
+ BK_TEST_SUITE_KEY: 'serverless-cypress-detection-engine'
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -32,7 +32,7 @@ steps:
timeout_in_minutes: 300
parallelism: 6
- - group: "API MKI - Detection Engine - "
+ - group: 'API MKI - Detection Engine - '
key: api_test_detections_engine
steps:
- label: Running exception_lists_items:qa:serverless
@@ -47,7 +47,52 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:lists:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:lists:qa:serverless
+ key: exception_lists:auth:lists:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:common:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:common:qa:serverless
+ key: exception_lists:auth:common:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:items:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:items:qa:serverless
+ key: exception_lists:auth:items:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
limit: 2
- label: Running lists_items:qa:serverless
@@ -62,7 +107,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running user_roles:qa:serverless
@@ -77,7 +122,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running telemetry:qa:serverless
@@ -92,7 +137,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_workflows:essentials:qa:serverless
@@ -107,12 +152,57 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_operators_date_types:essentials:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_date_types:essentials:qa:serverless
+ key: exception_operators_date_types:essentials:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_operators_double:essentials:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_double:essentials:qa:serverless
+ key: exception_operators_double:essentials:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_operators_float:essentials:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_float:essentials:qa:serverless
+ key: exception_operators_float:essentials:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
limit: 2
- - label: Running exception_operators_date_numeric_types:essentials:qa:serverless
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_date_numeric_types:essentials:qa:serverless
- key: exception_operators_date_numeric_types:essentials:qa:serverless
+ - label: Running exception_operators_integer:essentials:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_integer:essentials:qa:serverless
+ key: exception_operators_integer:essentials:qa:serverless
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -122,7 +212,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_keyword:essentials:qa:serverless
@@ -137,7 +227,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_ips:essentials:qa:serverless
@@ -152,7 +242,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_long:essentials:qa:serverless
@@ -167,7 +257,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_text:essentials:qa:serverless
@@ -182,7 +272,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running actions:qa:serverless
@@ -197,7 +287,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running alerts:qa:serverless
@@ -212,7 +302,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running alerts:essentials:qa:serverless
@@ -227,12 +317,117 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:eql:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:eql:qa:serverless
+ key: rule_execution_logic:eql:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:esql:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:esql:qa:serverless
+ key: rule_execution_logic:esql:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:general_logic:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:general_logic:qa:serverless
+ key: rule_execution_logic:general_logic:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:indicator_match:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:indicator_match:qa:serverless
+ key: rule_execution_logic:indicator_match:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:machine_learning:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:machine_learning:qa:serverless
+ key: rule_execution_logic:machine_learning:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:new_terms:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:new_terms:qa:serverless
+ key: rule_execution_logic:new_terms:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:query:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:query:qa:serverless
+ key: rule_execution_logic:query:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ preemptible: true
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
limit: 2
- - label: Running rule_execution_logic:qa:serverless
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:qa:serverless
- key: rule_execution_logic:qa:serverless
+ - label: Running rule_execution_logic:threshold:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:threshold:qa:serverless
+ key: rule_execution_logic:threshold:qa:serverless
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -242,5 +437,5 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml
index e59ca507e4003..3d30e78583409 100644
--- a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml
+++ b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml
@@ -7,8 +7,6 @@ steps:
imageProject: elastic-images-prod
provider: gcp
enableNestedVirtualization: true
- localSsds: 1
- localSsdInterface: nvme
machineType: n2-standard-4
timeout_in_minutes: 300
parallelism: 1
diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_detection_engine.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_detection_engine.yml
index 90c90ae8a3a36..985a3e796d8fc 100644
--- a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_detection_engine.yml
+++ b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_detection_engine.yml
@@ -1,12 +1,12 @@
steps:
- - group: "Cypress MKI - Detection Engine"
+ - group: 'Cypress MKI - Detection Engine'
key: cypress_test_detections_engine
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine
- label: "Cypress MKI - Detection Engine"
+ label: 'Cypress MKI - Detection Engine'
key: test_detection_engine
env:
- BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
+ BK_TEST_SUITE_KEY: 'serverless-cypress-detection-engine'
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -17,10 +17,10 @@ steps:
parallelism: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions
- label: "Cypress MKI - Detection Engine - Exceptions"
+ label: 'Cypress MKI - Detection Engine - Exceptions'
key: test_detection_engine_exceptions
env:
- BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
+ BK_TEST_SUITE_KEY: 'serverless-cypress-detection-engine'
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -30,7 +30,7 @@ steps:
timeout_in_minutes: 300
parallelism: 1
- - group: "API MKI - Detection Engine"
+ - group: 'API MKI - Detection Engine'
key: api_test_detections_engine
steps:
- label: Running exception_lists_items:qa:serverless:release
@@ -44,7 +44,49 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:lists:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:lists:qa:serverless:release
+ key: exception_lists:auth:lists:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:common:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:common:qa:serverless:release
+ key: exception_lists:auth:common:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_lists:auth:items:qa:serverless
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_lists:auth:items:qa:serverless
+ key: exception_lists:auth:items:qa:serverless
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
limit: 2
- label: Running lists_items:qa:serverless:release
@@ -58,7 +100,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running user_roles:qa:serverless:release
@@ -72,7 +114,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running telemetry:qa:serverless:release
@@ -86,7 +128,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_workflows:essentials:qa:serverless:release
@@ -98,14 +140,42 @@ steps:
provider: gcp
machineType: n2-standard-4
timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running exception_operators_date_types:essentials:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_date_types:essentials:qa:serverless:release
+ key: exception_operators_date_types:essentials:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+ - label: Running exception_operators_double:essentials:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_double:essentials:qa:serverless:release
+ key: exception_operators_double:essentials:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
retry:
automatic:
- exit_status: "1"
limit: 2
- - label: Running exception_operators_date_numeric_types:essentials:qa:serverless:release
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_date_numeric_types:essentials:qa:serverless:release
- key: exception_operators_date_numeric_types:essentials:qa:serverless:release
+ - label: Running exception_operators_float:essentials:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_float:essentials:qa:serverless:release
+ key: exception_operators_float:essentials:qa:serverless:release
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -117,6 +187,20 @@ steps:
- exit_status: "1"
limit: 2
+ - label: Running exception_operators_integer:essentials:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_integer:essentials:qa:serverless:release
+ key: exception_operators_integer:essentials:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
- label: Running exception_operators_keyword:essentials:qa:serverless:release
command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh exception_operators_keyword:essentials:qa:serverless:release
key: exception_operators_keyword:essentials:qa:serverless:release
@@ -128,7 +212,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_ips:essentials:qa:serverless:release
@@ -142,7 +226,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_long:essentials:qa:serverless:release
@@ -156,7 +240,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running exception_operators_text:essentials:qa:serverless:release
@@ -170,7 +254,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running actions:qa:serverless:release
@@ -184,7 +268,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running alerts:qa:serverless:release
@@ -198,7 +282,7 @@ steps:
timeout_in_minutes: 120
retry:
automatic:
- - exit_status: "1"
+ - exit_status: '1'
limit: 2
- label: Running alerts:essentials:qa:serverless:release
@@ -210,14 +294,42 @@ steps:
provider: gcp
machineType: n2-standard-4
timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
+
+ - label: Running rule_execution_logic:eql:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:eql:qa:serverless:release
+ key: rule_execution_logic:eql:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+- label: Running rule_execution_logic:esql:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:esql:qa:serverless:release
+ key: rule_execution_logic:esql:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
retry:
automatic:
- exit_status: "1"
limit: 2
- - label: Running rule_execution_logic:qa:serverless:release
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:qa:serverless:release
- key: rule_execution_logic:qa:serverless:release
+- label: Running rule_execution_logic:general_logic:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:general_logic:qa:serverless:release
+ key: rule_execution_logic:general_logic:qa:serverless:release
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
@@ -228,3 +340,73 @@ steps:
automatic:
- exit_status: "1"
limit: 2
+
+- label: Running rule_execution_logic:indicator_match:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:indicator_match:qa:serverless:release
+ key: rule_execution_logic:indicator_match:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+- label: Running rule_execution_logic:machine_learning:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:machine_learning:qa:serverless:release
+ key: rule_execution_logic:machine_learning:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+- label: Running rule_execution_logic:new_terms:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:new_terms:qa:serverless:release
+ key: rule_execution_logic:new_terms:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+- label: Running rule_execution_logic:query:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:query:qa:serverless:release
+ key: rule_execution_logic:query:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: "1"
+ limit: 2
+
+- label: Running rule_execution_logic:threshold:qa:serverless:release
+ command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh rule_execution_logic:threshold:qa:serverless:release
+ key: rule_execution_logic:threshold:qa:serverless:release
+ agents:
+ image: family/kibana-ubuntu-2004
+ imageProject: elastic-images-prod
+ provider: gcp
+ machineType: n2-standard-4
+ timeout_in_minutes: 120
+ retry:
+ automatic:
+ - exit_status: '1'
+ limit: 2
diff --git a/.buildkite/scripts/bootstrap.sh b/.buildkite/scripts/bootstrap.sh
index b7576dda72f24..a126ad9132696 100755
--- a/.buildkite/scripts/bootstrap.sh
+++ b/.buildkite/scripts/bootstrap.sh
@@ -12,12 +12,18 @@ if [[ "${BOOTSTRAP_ALWAYS_FORCE_INSTALL:-}" ]]; then
BOOTSTRAP_PARAMS+=(--force-install)
fi
-# Use the node_modules that is baked into the agent image, if it exists, as a cache
+# Use the packages that are baked into the agent image, if they exist, as a cache
# But only for agents not mounting the workspace on a local ssd or in memory
# It actually ends up being slower to move all of the tiny files between the disks vs extracting archives from the yarn cache
-if [[ -d ~/.kibana/node_modules && "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/dev/shm"* ]]; then
- echo "Using ~/.kibana/node_modules as a starting point"
- mv ~/.kibana/node_modules ./
+if [[ "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/dev/shm"* ]]; then
+ if [[ -d ~/.kibana/node_modules ]]; then
+ echo "Using ~/.kibana/node_modules as a starting point"
+ mv ~/.kibana/node_modules ./
+ fi
+ if [[ -d ~/.kibana/.yarn-local-mirror ]]; then
+ echo "Using ~/.kibana/.yarn-local-mirror as a starting point"
+ mv ~/.kibana/.yarn-local-mirror ./
+ fi
fi
if ! yarn kbn bootstrap "${BOOTSTRAP_PARAMS[@]}"; then
diff --git a/.buildkite/scripts/common/setup_node.sh b/.buildkite/scripts/common/setup_node.sh
index c6fbfeaee51bc..aac3d26702691 100755
--- a/.buildkite/scripts/common/setup_node.sh
+++ b/.buildkite/scripts/common/setup_node.sh
@@ -10,7 +10,6 @@ NODE_VERSION="$(cat "$KIBANA_DIR/.node-version")"
export NODE_VERSION
export NODE_DIR="$CACHE_DIR/node/$NODE_VERSION"
export NODE_BIN_DIR="$NODE_DIR/bin"
-export YARN_OFFLINE_CACHE="$CACHE_DIR/yarn-offline-cache"
## Install node for whatever the current os/arch are
hostArch="$(command uname -m)"
@@ -77,8 +76,6 @@ if [[ ! $(which yarn) || $(yarn --version) != "$YARN_VERSION" ]]; then
npm_install_global yarn "^$YARN_VERSION"
fi
-yarn config set yarn-offline-mirror "$YARN_OFFLINE_CACHE"
-
YARN_GLOBAL_BIN=$(yarn global bin)
export YARN_GLOBAL_BIN
export PATH="$PATH:$YARN_GLOBAL_BIN"
diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts
index 2a5370ae07893..ca4ca228b0c91 100644
--- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts
+++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts
@@ -255,18 +255,43 @@ const getPipeline = (filename: string, removeSteps = true) => {
if (
(await doAnyChangesMatch([
/^package.json/,
+ /^packages\/kbn-discover-utils/,
/^packages\/kbn-doc-links/,
+ /^packages\/kbn-dom-drag-drop/,
/^packages\/kbn-es-query/,
- /^packages\/kbn-i18n-react/,
/^packages\/kbn-i18n/,
+ /^packages\/kbn-i18n-react/,
/^packages\/kbn-expandable-flyout/,
+ /^packages\/kbn-grouping/,
+ /^packages\/kbn-resizable-layout/,
+ /^packages\/kbn-rison/,
+ /^packages\/kbn-rule-data-utils/,
+ /^packages\/kbn-safer-lodash-set/,
+ /^packages\/kbn-search-types/,
/^packages\/kbn-securitysolution-.*/,
+ /^packages\/kbn-securitysolution-ecs/,
+ /^packages\/kbn-securitysolution-io-ts-alerting-types/,
/^packages\/kbn-securitysolution-io-ts-list-types/,
+ /^packages\/kbn-securitysolution-list-hooks/,
+ /^packages\/kbn-securitysolution-t-grid/,
+ /^packages\/kbn-ui-theme/,
+ /^packages\/kbn-utility-types/,
+ /^packages\/react/,
/^packages\/shared-ux/,
/^src\/core/,
+ /^src\/plugins\/charts/,
+ /^src\/plugins\/controls/,
/^src\/plugins\/data/,
- /^src\/plugins\/kibana_utils/,
+ /^src\/plugins\/data_views/,
+ /^src\/plugins\/discover/,
+ /^src\/plugins\/field_formats/,
/^src\/plugins\/inspector/,
+ /^src\/plugins\/kibana_react/,
+ /^src\/plugins\/kibana_utils/,
+ /^src\/plugins\/saved_search/,
+ /^src\/plugins\/ui_actions/,
+ /^src\/plugins\/unified_histogram/,
+ /^src\/plugins\/unified_search/,
/^x-pack\/packages\/kbn-elastic-assistant/,
/^x-pack\/packages\/kbn-elastic-assistant-common/,
/^x-pack\/packages\/security-solution/,
@@ -282,7 +307,7 @@ const getPipeline = (filename: string, removeSteps = true) => {
/^x-pack\/plugins\/task_manager/,
/^x-pack\/plugins\/threat_intelligence/,
/^x-pack\/plugins\/timelines/,
- /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/sections\/alerts_table/,
+ /^x-pack\/plugins\/triggers_actions_ui/,
/^x-pack\/plugins\/usage_collection\/public/,
/^x-pack\/test\/functional\/es_archives\/security_solution/,
/^x-pack\/test\/security_solution_cypress/,
diff --git a/.buildkite/scripts/post_build_kibana.sh b/.buildkite/scripts/post_build_kibana.sh
index 2da629e29c158..f6af5b3c20e83 100755
--- a/.buildkite/scripts/post_build_kibana.sh
+++ b/.buildkite/scripts/post_build_kibana.sh
@@ -9,7 +9,7 @@ if [[ ! "${DISABLE_CI_STATS_SHIPPING:-}" ]]; then
"--metrics" "build/kibana/node_modules/@kbn/ui-shared-deps-src/shared_built_assets/metrics.json"
)
- if [ "$BUILDKITE_PIPELINE_SLUG" == "kibana-on-merge" ]; then
+ if [[ "$BUILDKITE_PIPELINE_SLUG" == "kibana-on-merge" ]] || [[ "$BUILDKITE_PIPELINE_SLUG" == "kibana-pull-request" ]]; then
cmd+=("--validate")
fi
diff --git a/.buildkite/scripts/steps/checks/i18n.sh b/.buildkite/scripts/steps/checks/i18n.sh
index 090512e391d7c..f23ed2d63759e 100755
--- a/.buildkite/scripts/steps/checks/i18n.sh
+++ b/.buildkite/scripts/steps/checks/i18n.sh
@@ -5,4 +5,4 @@ set -euo pipefail
source .buildkite/scripts/common/util.sh
echo --- Check i18n
-node scripts/i18n_check
+node scripts/i18n_check --quiet
diff --git a/.buildkite/scripts/steps/cloud/deploy.json b/.buildkite/scripts/steps/cloud/deploy.json
index d139af131f0a9..33ce6b752ad9d 100644
--- a/.buildkite/scripts/steps/cloud/deploy.json
+++ b/.buildkite/scripts/steps/cloud/deploy.json
@@ -7,7 +7,7 @@
"plan": {
"cluster_topology": [
{
- "instance_configuration_id": "gcp.integrationsserver.1",
+ "instance_configuration_id": "gcp.integrationsserver.n2.68x32x45",
"zone_count": 1,
"size": {
"resource": "memory",
@@ -32,7 +32,7 @@
"cluster_topology": [
{
"zone_count": 1,
- "instance_configuration_id": "gcp.coordinating.1",
+ "instance_configuration_id": "gcp.es.coordinating.n2.68x16x45",
"node_roles": [
"ingest",
"remote_cluster_client"
@@ -50,7 +50,7 @@
"data": "hot"
}
},
- "instance_configuration_id": "gcp.data.highio.1",
+ "instance_configuration_id": "gcp.es.datahot.n2.68x32x45",
"node_roles": [
"master",
"ingest",
@@ -72,7 +72,7 @@
"data": "warm"
}
},
- "instance_configuration_id": "gcp.data.highstorage.1",
+ "instance_configuration_id": "gcp.es.datawarm.n2.68x10x190",
"node_roles": [
"data_warm",
"remote_cluster_client"
@@ -90,7 +90,7 @@
"data": "cold"
}
},
- "instance_configuration_id": "gcp.data.highstorage.1",
+ "instance_configuration_id": "gcp.es.datacold.n2.68x10x190",
"node_roles": [
"data_cold",
"remote_cluster_client"
@@ -108,7 +108,7 @@
"data": "frozen"
}
},
- "instance_configuration_id": "gcp.es.datafrozen.n1.64x10x95",
+ "instance_configuration_id": "gcp.es.datafrozen.n2.68x10x90",
"node_roles": [
"data_frozen"
],
@@ -120,7 +120,7 @@
},
{
"zone_count": 1,
- "instance_configuration_id": "gcp.master.1",
+ "instance_configuration_id": "gcp.es.master.n2.68x32x45",
"node_roles": [
"master",
"remote_cluster_client"
@@ -142,7 +142,7 @@
},
"autoscaling_tier_override": true,
"id": "ml",
- "instance_configuration_id": "gcp.ml.1",
+ "instance_configuration_id": "gcp.es.ml.n2.68x32x45",
"node_roles": [
"ml",
"remote_cluster_client"
@@ -155,7 +155,7 @@
"enabled_built_in_plugins": []
},
"deployment_template": {
- "id": "gcp-io-optimized-v2"
+ "id": "gcp-cpu-optimized"
}
},
"ref_id": "main-elasticsearch"
@@ -173,7 +173,7 @@
"appserver": true,
"worker": true
},
- "instance_configuration_id": "gcp.enterprisesearch.1",
+ "instance_configuration_id": "gcp.enterprisesearch.n2.68x32x45",
"zone_count": 1,
"size": {
"resource": "memory",
@@ -195,7 +195,7 @@
"plan": {
"cluster_topology": [
{
- "instance_configuration_id": "gcp.kibana.1",
+ "instance_configuration_id": "gcp.kibana.n2.68x32x45",
"zone_count": 1,
"size": {
"value": 2048,
diff --git a/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh b/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh
deleted file mode 100644
index 7b16afa214fed..0000000000000
--- a/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-source .buildkite/scripts/steps/functional/common.sh
-
-export JOB=kibana-serverless-security-cypress
-export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION}
-
-echo "--- Security Defend Workflows Serverless Cypress"
-
-yarn --cwd x-pack/test_serverless/functional/test_suites/security/cypress cypress:run
diff --git a/.eslintrc.js b/.eslintrc.js
index 3c67594513c0e..730c9599f23f9 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1026,7 +1026,9 @@ module.exports = {
*/
{
files: ['x-pack/plugins/fleet/**/*.{js,mjs,ts,tsx}'],
+ plugins: ['testing-library'],
rules: {
+ 'testing-library/await-async-utils': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'import/order': [
'warn',
@@ -1954,6 +1956,16 @@ module.exports = {
},
},
+ /**
+ * Cloud Security Team overrides
+ */
+ {
+ files: ['x-pack/plugins/cloud_security_posture/**/*.{js,mjs,ts,tsx}'],
+ plugins: ['testing-library'],
+ rules: {
+ 'testing-library/await-async-utils': 'error',
+ },
+ },
/**
* Code inside .buildkite runs separately from everything else in CI, before bootstrap, with ts-node. It needs a few tweaks because of this.
*/
@@ -1978,6 +1990,34 @@ module.exports = {
'max-classes-per-file': 'off',
},
},
+ {
+ files: [
+ // logsShared depends on o11y/private plugins, but platform plugins depend on it
+ 'x-pack/plugins/observability_solution/logs_shared/**',
+
+ // this plugin depends on visTypeTimeseries plugin (for TSVB viz) which is platform/private ATM
+ 'x-pack/plugins/observability_solution/infra/**',
+
+ // TODO @kibana/operations
+ 'scripts/create_observability_rules.js', // is importing "@kbn/observability-alerting-test-data" (observability/private)
+ 'src/cli_setup/**', // is importing "@kbn/interactive-setup-plugin" (platform/private)
+ 'src/dev/build/tasks/install_chromium.ts', // is importing "@kbn/screenshotting-plugin" (platform/private)
+
+ // @kbn/osquery-plugin could be categorised as Security, but @kbn/infra-plugin (observability) depends on it!
+ 'x-pack/plugins/osquery/**',
+
+ // For now, we keep the exception to let tests depend on anythying.
+ // Ideally, we need to classify the solution specific ones to reduce CI times
+ 'test/**',
+ 'x-pack/test_serverless/**',
+ 'x-pack/test/**',
+ 'x-pack/test/plugin_functional/plugins/resolver_test/**',
+ ],
+ rules: {
+ '@kbn/imports/no_group_crossing_manifests': 'warn',
+ '@kbn/imports/no_group_crossing_imports': 'warn',
+ },
+ },
],
};
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index ddc5535d29008..0000000000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1,1948 +0,0 @@
-####
-## Everything at the top of the codeowners file is auto generated based on the
-## "owner" fields in the kibana.jsonc files at the root of each package. This
-## file is automatically updated by CI or can be updated locally by running
-## `node scripts/generate codeowners`.
-####
-
-x-pack/test/alerting_api_integration/common/plugins/aad @elastic/response-ops
-x-pack/plugins/actions @elastic/response-ops
-x-pack/test/alerting_api_integration/common/plugins/actions_simulators @elastic/response-ops
-packages/kbn-actions-types @elastic/response-ops
-src/plugins/advanced_settings @elastic/appex-sharedux @elastic/kibana-management
-x-pack/packages/kbn-ai-assistant @elastic/search-kibana
-x-pack/packages/kbn-ai-assistant-common @elastic/search-kibana
-src/plugins/ai_assistant_management/selection @elastic/obs-knowledge-team
-x-pack/packages/ml/aiops_change_point_detection @elastic/ml-ui
-x-pack/packages/ml/aiops_common @elastic/ml-ui
-x-pack/packages/ml/aiops_components @elastic/ml-ui
-x-pack/packages/ml/aiops_log_pattern_analysis @elastic/ml-ui
-x-pack/packages/ml/aiops_log_rate_analysis @elastic/ml-ui
-x-pack/plugins/aiops @elastic/ml-ui
-x-pack/packages/ml/aiops_test_utils @elastic/ml-ui
-x-pack/test/alerting_api_integration/packages/helpers @elastic/response-ops
-x-pack/test/alerting_api_integration/common/plugins/alerts @elastic/response-ops
-x-pack/packages/kbn-alerting-comparators @elastic/response-ops
-x-pack/examples/alerting_example @elastic/response-ops
-x-pack/test/functional_with_es_ssl/plugins/alerts @elastic/response-ops
-x-pack/plugins/alerting @elastic/response-ops
-x-pack/packages/kbn-alerting-state-types @elastic/response-ops
-packages/kbn-alerting-types @elastic/response-ops
-packages/kbn-alerts-as-data-utils @elastic/response-ops
-packages/kbn-alerts-grouping @elastic/response-ops
-x-pack/test/alerting_api_integration/common/plugins/alerts_restricted @elastic/response-ops
-packages/kbn-alerts-ui-shared @elastic/response-ops
-packages/kbn-ambient-common-types @elastic/kibana-operations
-packages/kbn-ambient-ftr-types @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-ambient-storybook-types @elastic/kibana-operations
-packages/kbn-ambient-ui-types @elastic/kibana-operations
-packages/kbn-analytics @elastic/kibana-core
-packages/analytics/utils/analytics_collection_utils @elastic/kibana-core
-test/analytics/plugins/analytics_ftr_helpers @elastic/kibana-core
-test/analytics/plugins/analytics_plugin_a @elastic/kibana-core
-packages/kbn-apm-config-loader @elastic/kibana-core @vigneshshanmugam
-x-pack/plugins/observability_solution/apm_data_access @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team
-packages/kbn-apm-data-view @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/apm/ftr_e2e @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/apm @elastic/obs-ux-infra_services-team
-packages/kbn-apm-synthtrace @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
-packages/kbn-apm-synthtrace-client @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
-packages/kbn-apm-types @elastic/obs-ux-infra_services-team
-packages/kbn-apm-utils @elastic/obs-ux-infra_services-team
-test/plugin_functional/plugins/app_link_test @elastic/kibana-core
-x-pack/test/usage_collection/plugins/application_usage_test @elastic/kibana-core
-x-pack/test/security_api_integration/plugins/audit_log @elastic/kibana-security
-packages/kbn-avc-banner @elastic/security-defend-workflows
-packages/kbn-axe-config @elastic/kibana-qa
-packages/kbn-babel-preset @elastic/kibana-operations
-packages/kbn-babel-register @elastic/kibana-operations
-packages/kbn-babel-transform @elastic/kibana-operations
-x-pack/plugins/banners @elastic/appex-sharedux
-packages/kbn-bazel-runner @elastic/kibana-operations
-packages/kbn-bfetch-error @elastic/appex-sharedux
-examples/bfetch_explorer @elastic/appex-sharedux
-src/plugins/bfetch @elastic/appex-sharedux
-packages/kbn-calculate-auto @elastic/obs-ux-management-team
-packages/kbn-calculate-width-from-char-count @elastic/kibana-visualizations
-x-pack/plugins/canvas @elastic/kibana-presentation
-packages/kbn-capture-oas-snapshot-cli @elastic/kibana-core
-x-pack/test/cases_api_integration/common/plugins/cases @elastic/response-ops
-packages/kbn-cases-components @elastic/response-ops
-x-pack/plugins/cases @elastic/response-ops
-packages/kbn-cbor @elastic/kibana-operations
-packages/kbn-cell-actions @elastic/security-threat-hunting-explore
-src/plugins/chart_expressions/common @elastic/kibana-visualizations
-packages/kbn-chart-icons @elastic/kibana-visualizations
-src/plugins/charts @elastic/kibana-visualizations
-packages/kbn-check-mappings-update-cli @elastic/kibana-core
-packages/kbn-check-prod-native-modules-cli @elastic/kibana-operations
-packages/kbn-ci-stats-core @elastic/kibana-operations
-packages/kbn-ci-stats-performance-metrics @elastic/kibana-operations
-packages/kbn-ci-stats-reporter @elastic/kibana-operations
-packages/kbn-ci-stats-shipper-cli @elastic/kibana-operations
-packages/kbn-cli-dev-mode @elastic/kibana-operations
-packages/cloud @elastic/kibana-core
-x-pack/plugins/cloud_integrations/cloud_chat @elastic/kibana-core
-x-pack/plugins/cloud_integrations/cloud_data_migration @elastic/kibana-management
-x-pack/plugins/cloud_defend @elastic/kibana-cloud-security-posture
-x-pack/plugins/cloud_integrations/cloud_experiments @elastic/kibana-core
-x-pack/plugins/cloud_integrations/cloud_full_story @elastic/kibana-core
-x-pack/test/cloud_integration/plugins/saml_provider @elastic/kibana-core
-x-pack/plugins/cloud_integrations/cloud_links @elastic/kibana-core
-x-pack/plugins/cloud @elastic/kibana-core
-x-pack/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture
-x-pack/packages/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture
-x-pack/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture
-x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture
-packages/shared-ux/code_editor/impl @elastic/appex-sharedux
-packages/shared-ux/code_editor/mocks @elastic/appex-sharedux
-packages/kbn-code-owners @elastic/appex-qa
-packages/kbn-coloring @elastic/kibana-visualizations
-packages/kbn-config @elastic/kibana-core
-packages/kbn-config-mocks @elastic/kibana-core
-packages/kbn-config-schema @elastic/kibana-core
-src/plugins/console @elastic/kibana-management
-packages/content-management/content_editor @elastic/appex-sharedux
-packages/content-management/content_insights/content_insights_public @elastic/appex-sharedux
-packages/content-management/content_insights/content_insights_server @elastic/appex-sharedux
-examples/content_management_examples @elastic/appex-sharedux
-packages/content-management/favorites/favorites_public @elastic/appex-sharedux
-packages/content-management/favorites/favorites_server @elastic/appex-sharedux
-src/plugins/content_management @elastic/appex-sharedux
-packages/content-management/tabbed_table_list_view @elastic/appex-sharedux
-packages/content-management/table_list_view @elastic/appex-sharedux
-packages/content-management/table_list_view_common @elastic/appex-sharedux
-packages/content-management/table_list_view_table @elastic/appex-sharedux
-packages/content-management/user_profiles @elastic/appex-sharedux
-packages/kbn-content-management-utils @elastic/kibana-data-discovery
-examples/controls_example @elastic/kibana-presentation
-src/plugins/controls @elastic/kibana-presentation
-src/core @elastic/kibana-core
-packages/core/analytics/core-analytics-browser @elastic/kibana-core
-packages/core/analytics/core-analytics-browser-internal @elastic/kibana-core
-packages/core/analytics/core-analytics-browser-mocks @elastic/kibana-core
-packages/core/analytics/core-analytics-server @elastic/kibana-core
-packages/core/analytics/core-analytics-server-internal @elastic/kibana-core
-packages/core/analytics/core-analytics-server-mocks @elastic/kibana-core
-test/plugin_functional/plugins/core_app_status @elastic/kibana-core
-packages/core/application/core-application-browser @elastic/kibana-core
-packages/core/application/core-application-browser-internal @elastic/kibana-core
-packages/core/application/core-application-browser-mocks @elastic/kibana-core
-packages/core/application/core-application-common @elastic/kibana-core
-packages/core/apps/core-apps-browser-internal @elastic/kibana-core
-packages/core/apps/core-apps-browser-mocks @elastic/kibana-core
-packages/core/apps/core-apps-server-internal @elastic/kibana-core
-packages/core/base/core-base-browser-internal @elastic/kibana-core
-packages/core/base/core-base-browser-mocks @elastic/kibana-core
-packages/core/base/core-base-common @elastic/kibana-core
-packages/core/base/core-base-common-internal @elastic/kibana-core
-packages/core/base/core-base-server-internal @elastic/kibana-core
-packages/core/base/core-base-server-mocks @elastic/kibana-core
-packages/core/capabilities/core-capabilities-browser-internal @elastic/kibana-core
-packages/core/capabilities/core-capabilities-browser-mocks @elastic/kibana-core
-packages/core/capabilities/core-capabilities-common @elastic/kibana-core
-packages/core/capabilities/core-capabilities-server @elastic/kibana-core
-packages/core/capabilities/core-capabilities-server-internal @elastic/kibana-core
-packages/core/capabilities/core-capabilities-server-mocks @elastic/kibana-core
-packages/core/chrome/core-chrome-browser @elastic/appex-sharedux
-packages/core/chrome/core-chrome-browser-internal @elastic/appex-sharedux
-packages/core/chrome/core-chrome-browser-mocks @elastic/appex-sharedux
-packages/core/config/core-config-server-internal @elastic/kibana-core
-packages/core/custom-branding/core-custom-branding-browser @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-browser-internal @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-browser-mocks @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-common @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-server @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-server-internal @elastic/appex-sharedux
-packages/core/custom-branding/core-custom-branding-server-mocks @elastic/appex-sharedux
-packages/core/deprecations/core-deprecations-browser @elastic/kibana-core
-packages/core/deprecations/core-deprecations-browser-internal @elastic/kibana-core
-packages/core/deprecations/core-deprecations-browser-mocks @elastic/kibana-core
-packages/core/deprecations/core-deprecations-common @elastic/kibana-core
-packages/core/deprecations/core-deprecations-server @elastic/kibana-core
-packages/core/deprecations/core-deprecations-server-internal @elastic/kibana-core
-packages/core/deprecations/core-deprecations-server-mocks @elastic/kibana-core
-packages/core/doc-links/core-doc-links-browser @elastic/kibana-core
-packages/core/doc-links/core-doc-links-browser-internal @elastic/kibana-core
-packages/core/doc-links/core-doc-links-browser-mocks @elastic/kibana-core
-packages/core/doc-links/core-doc-links-server @elastic/kibana-core
-packages/core/doc-links/core-doc-links-server-internal @elastic/kibana-core
-packages/core/doc-links/core-doc-links-server-mocks @elastic/kibana-core
-packages/core/elasticsearch/core-elasticsearch-client-server-internal @elastic/kibana-core
-packages/core/elasticsearch/core-elasticsearch-client-server-mocks @elastic/kibana-core
-packages/core/elasticsearch/core-elasticsearch-server @elastic/kibana-core
-packages/core/elasticsearch/core-elasticsearch-server-internal @elastic/kibana-core
-packages/core/elasticsearch/core-elasticsearch-server-mocks @elastic/kibana-core
-packages/core/environment/core-environment-server-internal @elastic/kibana-core
-packages/core/environment/core-environment-server-mocks @elastic/kibana-core
-packages/core/execution-context/core-execution-context-browser @elastic/kibana-core
-packages/core/execution-context/core-execution-context-browser-internal @elastic/kibana-core
-packages/core/execution-context/core-execution-context-browser-mocks @elastic/kibana-core
-packages/core/execution-context/core-execution-context-common @elastic/kibana-core
-packages/core/execution-context/core-execution-context-server @elastic/kibana-core
-packages/core/execution-context/core-execution-context-server-internal @elastic/kibana-core
-packages/core/execution-context/core-execution-context-server-mocks @elastic/kibana-core
-packages/core/fatal-errors/core-fatal-errors-browser @elastic/kibana-core
-packages/core/fatal-errors/core-fatal-errors-browser-internal @elastic/kibana-core
-packages/core/fatal-errors/core-fatal-errors-browser-mocks @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-browser @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-browser-internal @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-browser-mocks @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-server @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-server-internal @elastic/kibana-core
-packages/core/feature-flags/core-feature-flags-server-mocks @elastic/kibana-core
-test/plugin_functional/plugins/core_history_block @elastic/kibana-core
-packages/core/http/core-http-browser @elastic/kibana-core
-packages/core/http/core-http-browser-internal @elastic/kibana-core
-packages/core/http/core-http-browser-mocks @elastic/kibana-core
-packages/core/http/core-http-common @elastic/kibana-core
-packages/core/http/core-http-context-server-internal @elastic/kibana-core
-packages/core/http/core-http-context-server-mocks @elastic/kibana-core
-test/plugin_functional/plugins/core_http @elastic/kibana-core
-packages/core/http/core-http-request-handler-context-server @elastic/kibana-core
-packages/core/http/core-http-request-handler-context-server-internal @elastic/kibana-core
-packages/core/http/core-http-resources-server @elastic/kibana-core
-packages/core/http/core-http-resources-server-internal @elastic/kibana-core
-packages/core/http/core-http-resources-server-mocks @elastic/kibana-core
-packages/core/http/core-http-router-server-internal @elastic/kibana-core
-packages/core/http/core-http-router-server-mocks @elastic/kibana-core
-packages/core/http/core-http-server @elastic/kibana-core
-packages/core/http/core-http-server-internal @elastic/kibana-core
-packages/core/http/core-http-server-mocks @elastic/kibana-core
-packages/core/i18n/core-i18n-browser @elastic/kibana-core
-packages/core/i18n/core-i18n-browser-internal @elastic/kibana-core
-packages/core/i18n/core-i18n-browser-mocks @elastic/kibana-core
-packages/core/i18n/core-i18n-server @elastic/kibana-core
-packages/core/i18n/core-i18n-server-internal @elastic/kibana-core
-packages/core/i18n/core-i18n-server-mocks @elastic/kibana-core
-packages/core/injected-metadata/core-injected-metadata-browser-internal @elastic/kibana-core
-packages/core/injected-metadata/core-injected-metadata-browser-mocks @elastic/kibana-core
-packages/core/injected-metadata/core-injected-metadata-common-internal @elastic/kibana-core
-packages/core/integrations/core-integrations-browser-internal @elastic/kibana-core
-packages/core/integrations/core-integrations-browser-mocks @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-browser @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-browser-internal @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-browser-mocks @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-server @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-server-internal @elastic/kibana-core
-packages/core/lifecycle/core-lifecycle-server-mocks @elastic/kibana-core
-packages/core/logging/core-logging-browser-internal @elastic/kibana-core
-packages/core/logging/core-logging-browser-mocks @elastic/kibana-core
-packages/core/logging/core-logging-common-internal @elastic/kibana-core
-packages/core/logging/core-logging-server @elastic/kibana-core
-packages/core/logging/core-logging-server-internal @elastic/kibana-core
-packages/core/logging/core-logging-server-mocks @elastic/kibana-core
-packages/core/metrics/core-metrics-collectors-server-internal @elastic/kibana-core
-packages/core/metrics/core-metrics-collectors-server-mocks @elastic/kibana-core
-packages/core/metrics/core-metrics-server @elastic/kibana-core
-packages/core/metrics/core-metrics-server-internal @elastic/kibana-core
-packages/core/metrics/core-metrics-server-mocks @elastic/kibana-core
-packages/core/mount-utils/core-mount-utils-browser @elastic/kibana-core
-packages/core/mount-utils/core-mount-utils-browser-internal @elastic/kibana-core
-packages/core/node/core-node-server @elastic/kibana-core
-packages/core/node/core-node-server-internal @elastic/kibana-core
-packages/core/node/core-node-server-mocks @elastic/kibana-core
-packages/core/notifications/core-notifications-browser @elastic/kibana-core
-packages/core/notifications/core-notifications-browser-internal @elastic/kibana-core
-packages/core/notifications/core-notifications-browser-mocks @elastic/kibana-core
-packages/core/overlays/core-overlays-browser @elastic/kibana-core
-packages/core/overlays/core-overlays-browser-internal @elastic/kibana-core
-packages/core/overlays/core-overlays-browser-mocks @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_a @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_appleave @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_b @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_chromeless @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_deep_links @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_deprecations @elastic/kibana-core
-test/plugin_functional/plugins/core_dynamic_resolving_a @elastic/kibana-core
-test/plugin_functional/plugins/core_dynamic_resolving_b @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_execution_context @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_helpmenu @elastic/kibana-core
-test/node_roles_functional/plugins/core_plugin_initializer_context @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_route_timeouts @elastic/kibana-core
-test/plugin_functional/plugins/core_plugin_static_assets @elastic/kibana-core
-packages/core/plugins/core-plugins-base-server-internal @elastic/kibana-core
-packages/core/plugins/core-plugins-browser @elastic/kibana-core
-packages/core/plugins/core-plugins-browser-internal @elastic/kibana-core
-packages/core/plugins/core-plugins-browser-mocks @elastic/kibana-core
-packages/core/plugins/core-plugins-contracts-browser @elastic/kibana-core
-packages/core/plugins/core-plugins-contracts-server @elastic/kibana-core
-packages/core/plugins/core-plugins-server @elastic/kibana-core
-packages/core/plugins/core-plugins-server-internal @elastic/kibana-core
-packages/core/plugins/core-plugins-server-mocks @elastic/kibana-core
-packages/core/preboot/core-preboot-server @elastic/kibana-core
-packages/core/preboot/core-preboot-server-internal @elastic/kibana-core
-packages/core/preboot/core-preboot-server-mocks @elastic/kibana-core
-test/plugin_functional/plugins/core_provider_plugin @elastic/kibana-core
-packages/core/rendering/core-rendering-browser-internal @elastic/kibana-core
-packages/core/rendering/core-rendering-browser-mocks @elastic/kibana-core
-packages/core/rendering/core-rendering-server-internal @elastic/kibana-core
-packages/core/rendering/core-rendering-server-mocks @elastic/kibana-core
-packages/core/root/core-root-browser-internal @elastic/kibana-core
-packages/core/root/core-root-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-api-browser @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-api-server @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-api-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-api-server-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-base-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-base-server-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-browser @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-browser-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-browser-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-common @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-import-export-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-import-export-server-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-migration-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-migration-server-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-server @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-server-internal @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-server-mocks @elastic/kibana-core
-packages/core/saved-objects/core-saved-objects-utils-server @elastic/kibana-core
-packages/core/security/core-security-browser @elastic/kibana-core
-packages/core/security/core-security-browser-internal @elastic/kibana-core
-packages/core/security/core-security-browser-mocks @elastic/kibana-core
-packages/core/security/core-security-common @elastic/kibana-core @elastic/kibana-security
-packages/core/security/core-security-server @elastic/kibana-core
-packages/core/security/core-security-server-internal @elastic/kibana-core
-packages/core/security/core-security-server-mocks @elastic/kibana-core
-packages/core/status/core-status-common @elastic/kibana-core
-packages/core/status/core-status-common-internal @elastic/kibana-core
-packages/core/status/core-status-server @elastic/kibana-core
-packages/core/status/core-status-server-internal @elastic/kibana-core
-packages/core/status/core-status-server-mocks @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-deprecations-getters @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-http-setup-browser @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-kbn-server @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-model-versions @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-so-type-serializer @elastic/kibana-core
-packages/core/test-helpers/core-test-helpers-test-utils @elastic/kibana-core
-packages/core/theme/core-theme-browser @elastic/kibana-core
-packages/core/theme/core-theme-browser-internal @elastic/kibana-core
-packages/core/theme/core-theme-browser-mocks @elastic/kibana-core
-packages/core/ui-settings/core-ui-settings-browser @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-browser-internal @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-browser-mocks @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-common @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-server @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-server-internal @elastic/appex-sharedux
-packages/core/ui-settings/core-ui-settings-server-mocks @elastic/appex-sharedux
-packages/core/usage-data/core-usage-data-base-server-internal @elastic/kibana-core
-packages/core/usage-data/core-usage-data-server @elastic/kibana-core
-packages/core/usage-data/core-usage-data-server-internal @elastic/kibana-core
-packages/core/usage-data/core-usage-data-server-mocks @elastic/kibana-core
-packages/core/user-profile/core-user-profile-browser @elastic/kibana-core
-packages/core/user-profile/core-user-profile-browser-internal @elastic/kibana-core
-packages/core/user-profile/core-user-profile-browser-mocks @elastic/kibana-core
-packages/core/user-profile/core-user-profile-common @elastic/kibana-core
-packages/core/user-profile/core-user-profile-server @elastic/kibana-core
-packages/core/user-profile/core-user-profile-server-internal @elastic/kibana-core
-packages/core/user-profile/core-user-profile-server-mocks @elastic/kibana-core
-packages/core/user-settings/core-user-settings-server @elastic/kibana-security
-packages/core/user-settings/core-user-settings-server-internal @elastic/kibana-security
-packages/core/user-settings/core-user-settings-server-mocks @elastic/kibana-security
-x-pack/plugins/cross_cluster_replication @elastic/kibana-management
-packages/kbn-crypto @elastic/kibana-security
-packages/kbn-crypto-browser @elastic/kibana-core
-x-pack/plugins/custom_branding @elastic/appex-sharedux
-packages/kbn-custom-icons @elastic/obs-ux-logs-team
-packages/kbn-custom-integrations @elastic/obs-ux-logs-team
-src/plugins/custom_integrations @elastic/fleet
-packages/kbn-cypress-config @elastic/kibana-operations
-x-pack/plugins/dashboard_enhanced @elastic/kibana-presentation
-src/plugins/dashboard @elastic/kibana-presentation
-x-pack/packages/kbn-data-forge @elastic/obs-ux-management-team
-src/plugins/data @elastic/kibana-visualizations @elastic/kibana-data-discovery
-x-pack/plugins/data_quality @elastic/obs-ux-logs-team
-test/plugin_functional/plugins/data_search @elastic/kibana-data-discovery
-packages/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery
-packages/kbn-data-stream-adapter @elastic/security-threat-hunting-explore
-x-pack/plugins/data_usage @elastic/obs-ai-assistant @elastic/security-solution
-src/plugins/data_view_editor @elastic/kibana-data-discovery
-examples/data_view_field_editor_example @elastic/kibana-data-discovery
-src/plugins/data_view_field_editor @elastic/kibana-data-discovery
-src/plugins/data_view_management @elastic/kibana-data-discovery
-packages/kbn-data-view-utils @elastic/kibana-data-discovery
-src/plugins/data_views @elastic/kibana-data-discovery
-x-pack/plugins/data_visualizer @elastic/ml-ui
-x-pack/plugins/observability_solution/dataset_quality @elastic/obs-ux-logs-team
-packages/kbn-datemath @elastic/kibana-data-discovery
-packages/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations
-packages/deeplinks/devtools @elastic/kibana-management
-packages/deeplinks/fleet @elastic/fleet
-packages/deeplinks/management @elastic/kibana-management
-packages/deeplinks/ml @elastic/ml-ui
-packages/deeplinks/observability @elastic/obs-ux-management-team
-packages/deeplinks/search @elastic/search-kibana
-packages/deeplinks/security @elastic/security-solution
-packages/deeplinks/shared @elastic/appex-sharedux
-packages/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations
-packages/default-nav/devtools @elastic/kibana-management
-packages/default-nav/management @elastic/kibana-management
-packages/default-nav/ml @elastic/ml-ui
-packages/kbn-dev-cli-errors @elastic/kibana-operations
-packages/kbn-dev-cli-runner @elastic/kibana-operations
-packages/kbn-dev-proc-runner @elastic/kibana-operations
-src/plugins/dev_tools @elastic/kibana-management
-packages/kbn-dev-utils @elastic/kibana-operations
-examples/developer_examples @elastic/appex-sharedux
-packages/kbn-discover-contextual-components @elastic/obs-ux-logs-team @elastic/kibana-data-discovery
-examples/discover_customization_examples @elastic/kibana-data-discovery
-x-pack/plugins/discover_enhanced @elastic/kibana-data-discovery
-src/plugins/discover @elastic/kibana-data-discovery
-src/plugins/discover_shared @elastic/kibana-data-discovery @elastic/obs-ux-logs-team
-packages/kbn-discover-utils @elastic/kibana-data-discovery
-packages/kbn-doc-links @elastic/docs
-packages/kbn-docs-utils @elastic/kibana-operations
-packages/kbn-dom-drag-drop @elastic/kibana-visualizations @elastic/kibana-data-discovery
-packages/kbn-ebt-tools @elastic/kibana-core
-x-pack/packages/security-solution/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore
-x-pack/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore
-packages/kbn-elastic-agent-utils @elastic/obs-ux-logs-team
-x-pack/packages/kbn-elastic-assistant @elastic/security-generative-ai
-x-pack/packages/kbn-elastic-assistant-common @elastic/security-generative-ai
-x-pack/plugins/elastic_assistant @elastic/security-generative-ai
-test/plugin_functional/plugins/elasticsearch_client_plugin @elastic/kibana-core
-x-pack/test/plugin_api_integration/plugins/elasticsearch_client @elastic/kibana-core
-x-pack/plugins/embeddable_enhanced @elastic/kibana-presentation
-examples/embeddable_examples @elastic/kibana-presentation
-src/plugins/embeddable @elastic/kibana-presentation
-x-pack/examples/embedded_lens_example @elastic/kibana-visualizations
-x-pack/plugins/encrypted_saved_objects @elastic/kibana-security
-x-pack/plugins/enterprise_search @elastic/search-kibana
-x-pack/plugins/observability_solution/entities_data_access @elastic/obs-entities
-x-pack/packages/kbn-entities-schema @elastic/obs-entities
-x-pack/test/api_integration/apis/entity_manager/fixture_plugin @elastic/obs-entities
-x-pack/plugins/entity_manager @elastic/obs-entities
-examples/error_boundary @elastic/appex-sharedux
-packages/kbn-es @elastic/kibana-operations
-packages/kbn-es-archiver @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-es-errors @elastic/kibana-core
-packages/kbn-es-query @elastic/kibana-data-discovery
-packages/kbn-es-types @elastic/kibana-core @elastic/obs-knowledge-team
-src/plugins/es_ui_shared @elastic/kibana-management
-packages/kbn-eslint-config @elastic/kibana-operations
-packages/kbn-eslint-plugin-disable @elastic/kibana-operations
-packages/kbn-eslint-plugin-eslint @elastic/kibana-operations
-packages/kbn-eslint-plugin-i18n @elastic/obs-knowledge-team @elastic/kibana-operations
-packages/kbn-eslint-plugin-imports @elastic/kibana-operations
-packages/kbn-eslint-plugin-telemetry @elastic/obs-knowledge-team
-examples/eso_model_version_example @elastic/kibana-security
-x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin @elastic/kibana-security
-src/plugins/esql @elastic/kibana-esql
-packages/kbn-esql-ast @elastic/kibana-esql
-examples/esql_ast_inspector @elastic/kibana-esql
-src/plugins/esql_datagrid @elastic/kibana-esql
-packages/kbn-esql-editor @elastic/kibana-esql
-packages/kbn-esql-utils @elastic/kibana-esql
-packages/kbn-esql-validation-autocomplete @elastic/kibana-esql
-examples/esql_validation_example @elastic/kibana-esql
-test/plugin_functional/plugins/eui_provider_dev_warning @elastic/appex-sharedux
-packages/kbn-event-annotation-common @elastic/kibana-visualizations
-packages/kbn-event-annotation-components @elastic/kibana-visualizations
-src/plugins/event_annotation_listing @elastic/kibana-visualizations
-src/plugins/event_annotation @elastic/kibana-visualizations
-x-pack/test/plugin_api_integration/plugins/event_log @elastic/response-ops
-x-pack/plugins/event_log @elastic/response-ops
-packages/kbn-expandable-flyout @elastic/security-threat-hunting-investigations
-packages/kbn-expect @elastic/kibana-operations @elastic/appex-qa
-x-pack/examples/exploratory_view_example @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/exploratory_view @elastic/obs-ux-management-team
-src/plugins/expression_error @elastic/kibana-presentation
-src/plugins/chart_expressions/expression_gauge @elastic/kibana-visualizations
-src/plugins/chart_expressions/expression_heatmap @elastic/kibana-visualizations
-src/plugins/expression_image @elastic/kibana-presentation
-src/plugins/chart_expressions/expression_legacy_metric @elastic/kibana-visualizations
-src/plugins/expression_metric @elastic/kibana-presentation
-src/plugins/chart_expressions/expression_metric @elastic/kibana-visualizations
-src/plugins/chart_expressions/expression_partition_vis @elastic/kibana-visualizations
-src/plugins/expression_repeat_image @elastic/kibana-presentation
-src/plugins/expression_reveal_image @elastic/kibana-presentation
-src/plugins/expression_shape @elastic/kibana-presentation
-src/plugins/chart_expressions/expression_tagcloud @elastic/kibana-visualizations
-src/plugins/chart_expressions/expression_xy @elastic/kibana-visualizations
-examples/expressions_explorer @elastic/kibana-visualizations
-src/plugins/expressions @elastic/kibana-visualizations
-packages/kbn-failed-test-reporter-cli @elastic/kibana-operations @elastic/appex-qa
-examples/feature_control_examples @elastic/kibana-security
-examples/feature_flags_example @elastic/kibana-core
-x-pack/test/plugin_api_integration/plugins/feature_usage_test @elastic/kibana-security
-x-pack/plugins/features @elastic/kibana-core
-x-pack/test/security_api_integration/plugins/features_provider @elastic/kibana-security
-x-pack/test/functional_execution_context/plugins/alerts @elastic/kibana-core
-examples/field_formats_example @elastic/kibana-data-discovery
-src/plugins/field_formats @elastic/kibana-data-discovery
-packages/kbn-field-types @elastic/kibana-data-discovery
-packages/kbn-field-utils @elastic/kibana-data-discovery
-x-pack/plugins/fields_metadata @elastic/obs-ux-logs-team
-x-pack/plugins/file_upload @elastic/kibana-gis @elastic/ml-ui
-examples/files_example @elastic/appex-sharedux
-src/plugins/files_management @elastic/appex-sharedux
-src/plugins/files @elastic/appex-sharedux
-packages/kbn-find-used-node-modules @elastic/kibana-operations
-x-pack/plugins/fleet @elastic/fleet
-packages/kbn-flot-charts @elastic/kibana-operations
-x-pack/test/ui_capabilities/common/plugins/foo_plugin @elastic/kibana-security
-packages/kbn-formatters @elastic/obs-ux-logs-team
-src/plugins/ftr_apis @elastic/kibana-core
-packages/kbn-ftr-common-functional-services @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-ftr-common-functional-ui-services @elastic/appex-qa
-packages/kbn-ftr-screenshot-filename @elastic/kibana-operations @elastic/appex-qa
-x-pack/test/functional_with_es_ssl/plugins/cases @elastic/response-ops
-x-pack/examples/gen_ai_streaming_response_example @elastic/response-ops
-packages/kbn-generate @elastic/kibana-operations
-packages/kbn-generate-console-definitions @elastic/kibana-management
-packages/kbn-generate-csv @elastic/appex-sharedux
-packages/kbn-get-repo-files @elastic/kibana-operations
-x-pack/plugins/global_search_bar @elastic/appex-sharedux
-x-pack/plugins/global_search @elastic/appex-sharedux
-x-pack/plugins/global_search_providers @elastic/appex-sharedux
-x-pack/test/plugin_functional/plugins/global_search_test @elastic/kibana-core
-x-pack/plugins/graph @elastic/kibana-visualizations
-examples/grid_example @elastic/kibana-presentation
-packages/kbn-grid-layout @elastic/kibana-presentation
-x-pack/plugins/grokdebugger @elastic/kibana-management
-packages/kbn-grouping @elastic/response-ops
-packages/kbn-guided-onboarding @elastic/appex-sharedux
-examples/guided_onboarding_example @elastic/appex-sharedux
-src/plugins/guided_onboarding @elastic/appex-sharedux
-packages/kbn-handlebars @elastic/kibana-security
-packages/kbn-hapi-mocks @elastic/kibana-core
-test/plugin_functional/plugins/hardening @elastic/kibana-security
-packages/kbn-health-gateway-server @elastic/kibana-core
-examples/hello_world @elastic/kibana-core
-src/plugins/home @elastic/kibana-core
-packages/home/sample_data_card @elastic/appex-sharedux
-packages/home/sample_data_tab @elastic/appex-sharedux
-packages/home/sample_data_types @elastic/appex-sharedux
-packages/kbn-i18n @elastic/kibana-core
-packages/kbn-i18n-react @elastic/kibana-core
-x-pack/test/functional_embedded/plugins/iframe_embedded @elastic/kibana-core
-src/plugins/image_embeddable @elastic/appex-sharedux
-packages/kbn-import-locator @elastic/kibana-operations
-packages/kbn-import-resolver @elastic/kibana-operations
-x-pack/plugins/index_lifecycle_management @elastic/kibana-management
-x-pack/plugins/index_management @elastic/kibana-management
-x-pack/packages/index-management/index_management_shared_types @elastic/kibana-management
-test/plugin_functional/plugins/index_patterns @elastic/kibana-data-discovery
-x-pack/packages/ml/inference_integration_flyout @elastic/ml-ui
-x-pack/plugins/inference @elastic/appex-ai-infra
-x-pack/packages/kbn-infra-forge @elastic/obs-ux-management-team
-x-pack/plugins/observability_solution/infra @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team
-x-pack/plugins/ingest_pipelines @elastic/kibana-management
-src/plugins/input_control_vis @elastic/kibana-presentation
-src/plugins/inspector @elastic/kibana-presentation
-x-pack/plugins/integration_assistant @elastic/security-scalability
-src/plugins/interactive_setup @elastic/kibana-security
-test/interactive_setup_api_integration/plugins/test_endpoints @elastic/kibana-security
-packages/kbn-interpreter @elastic/kibana-visualizations
-x-pack/plugins/observability_solution/inventory/e2e @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/inventory @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/investigate_app @elastic/obs-ux-management-team
-x-pack/plugins/observability_solution/investigate @elastic/obs-ux-management-team
-packages/kbn-investigation-shared @elastic/obs-ux-management-team
-packages/kbn-io-ts-utils @elastic/obs-knowledge-team
-packages/kbn-ipynb @elastic/search-kibana
-packages/kbn-jest-serializers @elastic/kibana-operations
-packages/kbn-journeys @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-json-ast @elastic/kibana-operations
-x-pack/packages/ml/json_schemas @elastic/ml-ui
-test/health_gateway/plugins/status @elastic/kibana-core
-test/plugin_functional/plugins/kbn_sample_panel_action @elastic/appex-sharedux
-test/plugin_functional/plugins/kbn_top_nav @elastic/kibana-core
-test/plugin_functional/plugins/kbn_tp_custom_visualizations @elastic/kibana-visualizations
-test/interpreter_functional/plugins/kbn_tp_run_pipeline @elastic/kibana-core
-x-pack/test/functional_cors/plugins/kibana_cors_test @elastic/kibana-security
-packages/kbn-kibana-manifest-schema @elastic/kibana-operations
-src/plugins/kibana_overview @elastic/appex-sharedux
-src/plugins/kibana_react @elastic/appex-sharedux
-src/plugins/kibana_usage_collection @elastic/kibana-core
-src/plugins/kibana_utils @elastic/appex-sharedux
-x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture
-x-pack/packages/kbn-langchain @elastic/security-generative-ai
-packages/kbn-language-documentation @elastic/kibana-esql
-x-pack/examples/lens_config_builder_example @elastic/kibana-visualizations
-packages/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations
-packages/kbn-lens-formula-docs @elastic/kibana-visualizations
-x-pack/examples/lens_embeddable_inline_editing_example @elastic/kibana-visualizations
-x-pack/plugins/lens @elastic/kibana-visualizations
-x-pack/plugins/license_api_guard @elastic/kibana-management
-x-pack/plugins/license_management @elastic/kibana-management
-x-pack/plugins/licensing @elastic/kibana-core
-src/plugins/links @elastic/kibana-presentation
-packages/kbn-lint-packages-cli @elastic/kibana-operations
-packages/kbn-lint-ts-projects-cli @elastic/kibana-operations
-x-pack/plugins/lists @elastic/security-detection-engine
-examples/locator_examples @elastic/appex-sharedux
-examples/locator_explorer @elastic/appex-sharedux
-packages/kbn-logging @elastic/kibana-core
-packages/kbn-logging-mocks @elastic/kibana-core
-x-pack/plugins/observability_solution/logs_data_access @elastic/obs-knowledge-team @elastic/obs-ux-logs-team
-x-pack/plugins/observability_solution/logs_explorer @elastic/obs-ux-logs-team
-x-pack/plugins/observability_solution/logs_shared @elastic/obs-ux-logs-team
-x-pack/plugins/logstash @elastic/logstash
-packages/kbn-managed-content-badge @elastic/kibana-visualizations
-packages/kbn-managed-vscode-config @elastic/kibana-operations
-packages/kbn-managed-vscode-config-cli @elastic/kibana-operations
-packages/kbn-management/cards_navigation @elastic/kibana-management
-src/plugins/management @elastic/kibana-management
-packages/kbn-management/settings/application @elastic/kibana-management
-packages/kbn-management/settings/components/field_category @elastic/kibana-management
-packages/kbn-management/settings/components/field_input @elastic/kibana-management
-packages/kbn-management/settings/components/field_row @elastic/kibana-management
-packages/kbn-management/settings/components/form @elastic/kibana-management
-packages/kbn-management/settings/field_definition @elastic/kibana-management
-packages/kbn-management/settings/setting_ids @elastic/appex-sharedux @elastic/kibana-management
-packages/kbn-management/settings/section_registry @elastic/appex-sharedux @elastic/kibana-management
-packages/kbn-management/settings/types @elastic/kibana-management
-packages/kbn-management/settings/utilities @elastic/kibana-management
-packages/kbn-management/storybook/config @elastic/kibana-management
-test/plugin_functional/plugins/management_test_plugin @elastic/kibana-management
-packages/kbn-manifest @elastic/kibana-core
-packages/kbn-mapbox-gl @elastic/kibana-gis
-x-pack/examples/third_party_maps_source_example @elastic/kibana-gis
-src/plugins/maps_ems @elastic/kibana-gis
-x-pack/plugins/maps @elastic/kibana-gis
-x-pack/packages/maps/vector_tile_utils @elastic/kibana-gis
-x-pack/plugins/observability_solution/metrics_data_access @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team
-x-pack/packages/ml/agg_utils @elastic/ml-ui
-x-pack/packages/ml/anomaly_utils @elastic/ml-ui
-x-pack/packages/ml/cancellable_search @elastic/ml-ui
-x-pack/packages/ml/category_validator @elastic/ml-ui
-x-pack/packages/ml/chi2test @elastic/ml-ui
-x-pack/packages/ml/creation_wizard_utils @elastic/ml-ui
-x-pack/packages/ml/data_frame_analytics_utils @elastic/ml-ui
-x-pack/packages/ml/data_grid @elastic/ml-ui
-x-pack/packages/ml/data_view_utils @elastic/ml-ui
-x-pack/packages/ml/date_picker @elastic/ml-ui
-x-pack/packages/ml/date_utils @elastic/ml-ui
-x-pack/packages/ml/error_utils @elastic/ml-ui
-x-pack/packages/ml/field_stats_flyout @elastic/ml-ui
-x-pack/packages/ml/in_memory_table @elastic/ml-ui
-x-pack/packages/ml/is_defined @elastic/ml-ui
-x-pack/packages/ml/is_populated_object @elastic/ml-ui
-x-pack/packages/ml/kibana_theme @elastic/ml-ui
-x-pack/packages/ml/local_storage @elastic/ml-ui
-x-pack/packages/ml/nested_property @elastic/ml-ui
-x-pack/packages/ml/number_utils @elastic/ml-ui
-x-pack/packages/ml/parse_interval @elastic/ml-ui
-x-pack/plugins/ml @elastic/ml-ui
-x-pack/packages/ml/query_utils @elastic/ml-ui
-x-pack/packages/ml/random_sampler_utils @elastic/ml-ui
-x-pack/packages/ml/response_stream @elastic/ml-ui
-x-pack/packages/ml/route_utils @elastic/ml-ui
-x-pack/packages/ml/runtime_field_utils @elastic/ml-ui
-x-pack/packages/ml/string_hash @elastic/ml-ui
-x-pack/packages/ml/time_buckets @elastic/ml-ui
-x-pack/packages/ml/trained_models_utils @elastic/ml-ui
-x-pack/packages/ml/ui_actions @elastic/ml-ui
-x-pack/packages/ml/url_state @elastic/ml-ui
-x-pack/packages/ml/validators @elastic/ml-ui
-packages/kbn-mock-idp-plugin @elastic/kibana-security
-packages/kbn-mock-idp-utils @elastic/kibana-security
-packages/kbn-monaco @elastic/appex-sharedux
-x-pack/plugins/monitoring_collection @elastic/stack-monitoring
-x-pack/plugins/monitoring @elastic/stack-monitoring
-src/plugins/navigation @elastic/appex-sharedux
-src/plugins/newsfeed @elastic/kibana-core
-test/common/plugins/newsfeed @elastic/kibana-core
-src/plugins/no_data_page @elastic/appex-sharedux
-x-pack/plugins/notifications @elastic/appex-sharedux
-packages/kbn-object-versioning @elastic/appex-sharedux
-packages/kbn-object-versioning-utils @elastic/appex-sharedux
-x-pack/plugins/observability_solution/observability_ai_assistant_app @elastic/obs-ai-assistant
-x-pack/plugins/observability_solution/observability_ai_assistant_management @elastic/obs-ai-assistant
-x-pack/plugins/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant
-x-pack/packages/observability/alert_details @elastic/obs-ux-management-team
-x-pack/packages/observability/alerting_rule_utils @elastic/obs-ux-management-team
-x-pack/packages/observability/alerting_test_data @elastic/obs-ux-management-team
-x-pack/test/cases_api_integration/common/plugins/observability @elastic/response-ops
-x-pack/packages/observability/get_padded_alert_time_range_util @elastic/obs-ux-management-team
-x-pack/plugins/observability_solution/observability_logs_explorer @elastic/obs-ux-logs-team
-x-pack/packages/observability/logs_overview @elastic/obs-ux-logs-team
-x-pack/plugins/observability_solution/observability_onboarding/e2e @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team
-x-pack/plugins/observability_solution/observability_onboarding @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team
-x-pack/plugins/observability_solution/observability @elastic/obs-ux-management-team
-x-pack/plugins/observability_solution/observability_shared @elastic/observability-ui
-x-pack/packages/observability/synthetics_test_data @elastic/obs-ux-management-team
-x-pack/packages/observability/observability_utils @elastic/observability-ui
-x-pack/test/security_api_integration/plugins/oidc_provider @elastic/kibana-security
-test/common/plugins/otel_metrics @elastic/obs-ux-infra_services-team
-packages/kbn-openapi-bundler @elastic/security-detection-rule-management
-packages/kbn-openapi-common @elastic/security-detection-rule-management
-packages/kbn-openapi-generator @elastic/security-detection-rule-management
-packages/kbn-optimizer @elastic/kibana-operations
-packages/kbn-optimizer-webpack-helpers @elastic/kibana-operations
-packages/kbn-osquery-io-ts-types @elastic/security-asset-management
-x-pack/plugins/osquery @elastic/security-defend-workflows
-examples/partial_results_example @elastic/kibana-data-discovery
-x-pack/plugins/painless_lab @elastic/kibana-management
-packages/kbn-panel-loader @elastic/kibana-presentation
-packages/kbn-peggy @elastic/kibana-operations
-packages/kbn-peggy-loader @elastic/kibana-operations
-packages/kbn-performance-testing-dataset-extractor @elastic/kibana-performance-testing
-packages/kbn-picomatcher @elastic/kibana-operations
-packages/kbn-plugin-check @elastic/appex-sharedux
-packages/kbn-plugin-generator @elastic/kibana-operations
-packages/kbn-plugin-helpers @elastic/kibana-operations
-examples/portable_dashboards_example @elastic/kibana-presentation
-examples/preboot_example @elastic/kibana-security @elastic/kibana-core
-packages/presentation/presentation_containers @elastic/kibana-presentation
-src/plugins/presentation_panel @elastic/kibana-presentation
-packages/presentation/presentation_publishing @elastic/kibana-presentation
-src/plugins/presentation_util @elastic/kibana-presentation
-x-pack/packages/ai-infra/product-doc-artifact-builder @elastic/appex-ai-infra
-x-pack/plugins/observability_solution/profiling_data_access @elastic/obs-ux-infra_services-team
-x-pack/plugins/observability_solution/profiling @elastic/obs-ux-infra_services-team
-packages/kbn-profiling-utils @elastic/obs-ux-infra_services-team
-x-pack/packages/kbn-random-sampling @elastic/kibana-visualizations
-packages/kbn-react-field @elastic/kibana-data-discovery
-packages/kbn-react-hooks @elastic/obs-ux-logs-team
-packages/react/kibana_context/common @elastic/appex-sharedux
-packages/react/kibana_context/render @elastic/appex-sharedux
-packages/react/kibana_context/root @elastic/appex-sharedux
-packages/react/kibana_context/styled @elastic/appex-sharedux
-packages/react/kibana_context/theme @elastic/appex-sharedux
-packages/react/kibana_mount @elastic/appex-sharedux
-packages/kbn-recently-accessed @elastic/appex-sharedux
-x-pack/plugins/remote_clusters @elastic/kibana-management
-test/plugin_functional/plugins/rendering_plugin @elastic/kibana-core
-packages/kbn-repo-file-maps @elastic/kibana-operations
-packages/kbn-repo-info @elastic/kibana-operations
-packages/kbn-repo-linter @elastic/kibana-operations
-packages/kbn-repo-packages @elastic/kibana-operations
-packages/kbn-repo-path @elastic/kibana-operations
-packages/kbn-repo-source-classifier @elastic/kibana-operations
-packages/kbn-repo-source-classifier-cli @elastic/kibana-operations
-packages/kbn-reporting/common @elastic/appex-sharedux
-packages/kbn-reporting/get_csv_panel_actions @elastic/appex-sharedux
-packages/kbn-reporting/export_types/csv @elastic/appex-sharedux
-packages/kbn-reporting/export_types/csv_common @elastic/appex-sharedux
-packages/kbn-reporting/export_types/pdf @elastic/appex-sharedux
-packages/kbn-reporting/export_types/pdf_common @elastic/appex-sharedux
-packages/kbn-reporting/export_types/png @elastic/appex-sharedux
-packages/kbn-reporting/export_types/png_common @elastic/appex-sharedux
-packages/kbn-reporting/mocks_server @elastic/appex-sharedux
-x-pack/plugins/reporting @elastic/appex-sharedux
-packages/kbn-reporting/public @elastic/appex-sharedux
-packages/kbn-reporting/server @elastic/appex-sharedux
-packages/kbn-resizable-layout @elastic/kibana-data-discovery
-examples/resizable_layout_examples @elastic/kibana-data-discovery
-x-pack/test/plugin_functional/plugins/resolver_test @elastic/security-solution
-packages/response-ops/feature_flag_service @elastic/response-ops
-packages/response-ops/rule_params @elastic/response-ops
-examples/response_stream @elastic/ml-ui
-packages/kbn-rison @elastic/kibana-operations
-x-pack/packages/rollup @elastic/kibana-management
-x-pack/plugins/rollup @elastic/kibana-management
-packages/kbn-router-to-openapispec @elastic/kibana-core
-packages/kbn-router-utils @elastic/obs-ux-logs-team
-examples/routing_example @elastic/kibana-core
-packages/kbn-rrule @elastic/response-ops
-packages/kbn-rule-data-utils @elastic/security-detections-response @elastic/response-ops @elastic/obs-ux-management-team
-x-pack/plugins/rule_registry @elastic/response-ops @elastic/obs-ux-management-team
-x-pack/plugins/runtime_fields @elastic/kibana-management
-packages/kbn-safer-lodash-set @elastic/kibana-security
-x-pack/test/security_api_integration/plugins/saml_provider @elastic/kibana-security
-x-pack/test/plugin_api_integration/plugins/sample_task_plugin @elastic/response-ops
-x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget @elastic/response-ops
-test/plugin_functional/plugins/saved_object_export_transforms @elastic/kibana-core
-test/plugin_functional/plugins/saved_object_import_warnings @elastic/kibana-core
-x-pack/test/saved_object_api_integration/common/plugins/saved_object_test_plugin @elastic/kibana-security
-src/plugins/saved_objects_finder @elastic/kibana-data-discovery
-test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type @elastic/kibana-core
-test/plugin_functional/plugins/saved_objects_hidden_type @elastic/kibana-core
-src/plugins/saved_objects_management @elastic/kibana-core
-src/plugins/saved_objects @elastic/kibana-core
-packages/kbn-saved-objects-settings @elastic/appex-sharedux
-src/plugins/saved_objects_tagging_oss @elastic/appex-sharedux
-x-pack/plugins/saved_objects_tagging @elastic/appex-sharedux
-src/plugins/saved_search @elastic/kibana-data-discovery
-examples/screenshot_mode_example @elastic/appex-sharedux
-src/plugins/screenshot_mode @elastic/appex-sharedux
-x-pack/examples/screenshotting_example @elastic/appex-sharedux
-x-pack/plugins/screenshotting @elastic/kibana-reporting-services
-packages/kbn-screenshotting-server @elastic/appex-sharedux
-packages/kbn-search-api-keys-components @elastic/search-kibana
-packages/kbn-search-api-keys-server @elastic/search-kibana
-packages/kbn-search-api-panels @elastic/search-kibana
-x-pack/plugins/search_assistant @elastic/search-kibana
-packages/kbn-search-connectors @elastic/search-kibana
-x-pack/plugins/search_connectors @elastic/search-kibana
-packages/kbn-search-errors @elastic/kibana-data-discovery
-examples/search_examples @elastic/kibana-data-discovery
-x-pack/plugins/search_homepage @elastic/search-kibana
-packages/kbn-search-index-documents @elastic/search-kibana
-x-pack/plugins/search_indices @elastic/search-kibana
-x-pack/plugins/search_inference_endpoints @elastic/search-kibana
-x-pack/plugins/search_notebooks @elastic/search-kibana
-x-pack/plugins/search_playground @elastic/search-kibana
-packages/kbn-search-response-warnings @elastic/kibana-data-discovery
-x-pack/packages/search/shared_ui @elastic/search-kibana
-packages/kbn-search-types @elastic/kibana-data-discovery
-x-pack/plugins/searchprofiler @elastic/kibana-management
-x-pack/test/security_api_integration/packages/helpers @elastic/kibana-security
-x-pack/packages/security/api_key_management @elastic/kibana-security
-x-pack/packages/security/authorization_core @elastic/kibana-security
-x-pack/packages/security/authorization_core_common @elastic/kibana-security
-x-pack/packages/security/form_components @elastic/kibana-security
-packages/kbn-security-hardening @elastic/kibana-security
-x-pack/plugins/security @elastic/kibana-security
-x-pack/packages/security/plugin_types_common @elastic/kibana-security
-x-pack/packages/security/plugin_types_public @elastic/kibana-security
-x-pack/packages/security/plugin_types_server @elastic/kibana-security
-x-pack/packages/security/role_management_model @elastic/kibana-security
-x-pack/packages/security-solution/common @elastic/security-threat-hunting-investigations
-x-pack/packages/security-solution/distribution_bar @elastic/kibana-cloud-security-posture
-x-pack/plugins/security_solution_ess @elastic/security-solution
-x-pack/packages/security-solution/features @elastic/security-threat-hunting-explore
-x-pack/test/cases_api_integration/common/plugins/security_solution @elastic/response-ops
-x-pack/packages/security-solution/navigation @elastic/security-threat-hunting-explore
-x-pack/plugins/security_solution @elastic/security-solution
-x-pack/plugins/security_solution_serverless @elastic/security-solution
-x-pack/packages/security-solution/side_nav @elastic/security-threat-hunting-explore
-x-pack/packages/security-solution/storybook/config @elastic/security-threat-hunting-explore
-x-pack/packages/security-solution/upselling @elastic/security-threat-hunting-explore
-x-pack/test/security_functional/plugins/test_endpoints @elastic/kibana-security
-x-pack/packages/security/ui_components @elastic/kibana-security
-packages/kbn-securitysolution-autocomplete @elastic/security-detection-engine
-x-pack/packages/security-solution/data_table @elastic/security-threat-hunting-investigations
-packages/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore
-packages/kbn-securitysolution-endpoint-exceptions-common @elastic/security-detection-engine
-packages/kbn-securitysolution-es-utils @elastic/security-detection-engine
-packages/kbn-securitysolution-exception-list-components @elastic/security-detection-engine
-packages/kbn-securitysolution-exceptions-common @elastic/security-detection-engine
-packages/kbn-securitysolution-hook-utils @elastic/security-detection-engine
-packages/kbn-securitysolution-io-ts-alerting-types @elastic/security-detection-engine
-packages/kbn-securitysolution-io-ts-list-types @elastic/security-detection-engine
-packages/kbn-securitysolution-io-ts-types @elastic/security-detection-engine
-packages/kbn-securitysolution-io-ts-utils @elastic/security-detection-engine
-packages/kbn-securitysolution-list-api @elastic/security-detection-engine
-packages/kbn-securitysolution-list-constants @elastic/security-detection-engine
-packages/kbn-securitysolution-list-hooks @elastic/security-detection-engine
-packages/kbn-securitysolution-list-utils @elastic/security-detection-engine
-packages/kbn-securitysolution-lists-common @elastic/security-detection-engine
-packages/kbn-securitysolution-rules @elastic/security-detection-engine
-packages/kbn-securitysolution-t-grid @elastic/security-detection-engine
-packages/kbn-securitysolution-utils @elastic/security-detection-engine
-packages/kbn-server-http-tools @elastic/kibana-core
-packages/kbn-server-route-repository @elastic/obs-knowledge-team
-packages/kbn-server-route-repository-client @elastic/obs-knowledge-team
-packages/kbn-server-route-repository-utils @elastic/obs-knowledge-team
-x-pack/plugins/serverless @elastic/appex-sharedux
-packages/serverless/settings/common @elastic/appex-sharedux @elastic/kibana-management
-x-pack/plugins/serverless_observability @elastic/obs-ux-management-team
-packages/serverless/settings/observability_project @elastic/appex-sharedux @elastic/kibana-management @elastic/obs-ux-management-team
-packages/serverless/project_switcher @elastic/appex-sharedux
-x-pack/plugins/serverless_search @elastic/search-kibana
-packages/serverless/settings/search_project @elastic/search-kibana @elastic/kibana-management
-packages/serverless/settings/security_project @elastic/security-solution @elastic/kibana-management
-packages/serverless/storybook/config @elastic/appex-sharedux
-packages/serverless/types @elastic/appex-sharedux
-test/plugin_functional/plugins/session_notifications @elastic/kibana-core
-x-pack/plugins/session_view @elastic/kibana-cloud-security-posture
-packages/kbn-set-map @elastic/kibana-operations
-examples/share_examples @elastic/appex-sharedux
-src/plugins/share @elastic/appex-sharedux
-packages/kbn-shared-svg @elastic/obs-ux-infra_services-team
-packages/shared-ux/avatar/solution @elastic/appex-sharedux
-packages/shared-ux/button/exit_full_screen @elastic/appex-sharedux
-packages/shared-ux/button_toolbar @elastic/appex-sharedux
-packages/shared-ux/card/no_data/impl @elastic/appex-sharedux
-packages/shared-ux/card/no_data/mocks @elastic/appex-sharedux
-packages/shared-ux/card/no_data/types @elastic/appex-sharedux
-packages/shared-ux/chrome/navigation @elastic/appex-sharedux
-packages/shared-ux/error_boundary @elastic/appex-sharedux
-packages/shared-ux/file/context @elastic/appex-sharedux
-packages/shared-ux/file/image/impl @elastic/appex-sharedux
-packages/shared-ux/file/image/mocks @elastic/appex-sharedux
-packages/shared-ux/file/mocks @elastic/appex-sharedux
-packages/shared-ux/file/file_picker/impl @elastic/appex-sharedux
-packages/shared-ux/file/types @elastic/appex-sharedux
-packages/shared-ux/file/file_upload/impl @elastic/appex-sharedux
-packages/shared-ux/file/util @elastic/appex-sharedux
-packages/shared-ux/link/redirect_app/impl @elastic/appex-sharedux
-packages/shared-ux/link/redirect_app/mocks @elastic/appex-sharedux
-packages/shared-ux/link/redirect_app/types @elastic/appex-sharedux
-packages/shared-ux/markdown/impl @elastic/appex-sharedux
-packages/shared-ux/markdown/mocks @elastic/appex-sharedux
-packages/shared-ux/markdown/types @elastic/appex-sharedux
-packages/shared-ux/page/analytics_no_data/impl @elastic/appex-sharedux
-packages/shared-ux/page/analytics_no_data/mocks @elastic/appex-sharedux
-packages/shared-ux/page/analytics_no_data/types @elastic/appex-sharedux
-packages/shared-ux/page/kibana_no_data/impl @elastic/appex-sharedux
-packages/shared-ux/page/kibana_no_data/mocks @elastic/appex-sharedux
-packages/shared-ux/page/kibana_no_data/types @elastic/appex-sharedux
-packages/shared-ux/page/kibana_template/impl @elastic/appex-sharedux
-packages/shared-ux/page/kibana_template/mocks @elastic/appex-sharedux
-packages/shared-ux/page/kibana_template/types @elastic/appex-sharedux
-packages/shared-ux/page/no_data/impl @elastic/appex-sharedux
-packages/shared-ux/page/no_data_config/impl @elastic/appex-sharedux
-packages/shared-ux/page/no_data_config/mocks @elastic/appex-sharedux
-packages/shared-ux/page/no_data_config/types @elastic/appex-sharedux
-packages/shared-ux/page/no_data/mocks @elastic/appex-sharedux
-packages/shared-ux/page/no_data/types @elastic/appex-sharedux
-packages/shared-ux/page/solution_nav @elastic/appex-sharedux
-packages/shared-ux/prompt/no_data_views/impl @elastic/appex-sharedux
-packages/shared-ux/prompt/no_data_views/mocks @elastic/appex-sharedux
-packages/shared-ux/prompt/no_data_views/types @elastic/appex-sharedux
-packages/shared-ux/prompt/not_found @elastic/appex-sharedux
-packages/shared-ux/router/impl @elastic/appex-sharedux
-packages/shared-ux/router/mocks @elastic/appex-sharedux
-packages/shared-ux/router/types @elastic/appex-sharedux
-packages/shared-ux/storybook/config @elastic/appex-sharedux
-packages/shared-ux/storybook/mock @elastic/appex-sharedux
-packages/shared-ux/modal/tabbed @elastic/appex-sharedux
-packages/shared-ux/table_persist @elastic/appex-sharedux
-packages/kbn-shared-ux-utility @elastic/appex-sharedux
-x-pack/plugins/observability_solution/slo @elastic/obs-ux-management-team
-x-pack/packages/kbn-slo-schema @elastic/obs-ux-management-team
-x-pack/plugins/snapshot_restore @elastic/kibana-management
-packages/kbn-some-dev-log @elastic/kibana-operations
-packages/kbn-sort-package-json @elastic/kibana-operations
-packages/kbn-sort-predicates @elastic/kibana-visualizations
-x-pack/plugins/spaces @elastic/kibana-security
-x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin @elastic/kibana-security
-packages/kbn-spec-to-console @elastic/kibana-management
-packages/kbn-sse-utils @elastic/obs-knowledge-team
-packages/kbn-sse-utils-client @elastic/obs-knowledge-team
-packages/kbn-sse-utils-server @elastic/obs-knowledge-team
-x-pack/plugins/stack_alerts @elastic/response-ops
-x-pack/plugins/stack_connectors @elastic/response-ops
-x-pack/test/usage_collection/plugins/stack_management_usage_test @elastic/kibana-management
-examples/state_containers_examples @elastic/appex-sharedux
-test/server_integration/plugins/status_plugin_a @elastic/kibana-core
-test/server_integration/plugins/status_plugin_b @elastic/kibana-core
-packages/kbn-std @elastic/kibana-core
-packages/kbn-stdio-dev-helpers @elastic/kibana-operations
-packages/kbn-storybook @elastic/kibana-operations
-x-pack/plugins/observability_solution/synthetics/e2e @elastic/obs-ux-management-team
-x-pack/plugins/observability_solution/synthetics @elastic/obs-ux-management-team
-x-pack/packages/kbn-synthetics-private-location @elastic/obs-ux-management-team
-x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture @elastic/response-ops
-x-pack/test/plugin_api_perf/plugins/task_manager_performance @elastic/response-ops
-x-pack/plugins/task_manager @elastic/response-ops
-src/plugins/telemetry_collection_manager @elastic/kibana-core
-x-pack/plugins/telemetry_collection_xpack @elastic/kibana-core
-src/plugins/telemetry_management_section @elastic/kibana-core
-src/plugins/telemetry @elastic/kibana-core
-test/plugin_functional/plugins/telemetry @elastic/kibana-core
-packages/kbn-telemetry-tools @elastic/kibana-core
-packages/kbn-test @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-test-eui-helpers @elastic/kibana-visualizations
-x-pack/test/licensing_plugin/plugins/test_feature_usage @elastic/kibana-security
-packages/kbn-test-jest-helpers @elastic/kibana-operations @elastic/appex-qa
-packages/kbn-test-subj-selector @elastic/kibana-operations @elastic/appex-qa
-x-pack/test_serverless
-test
-x-pack/test
-x-pack/performance @elastic/appex-qa
-x-pack/examples/testing_embedded_lens @elastic/kibana-visualizations
-x-pack/examples/third_party_lens_navigation_prompt @elastic/kibana-visualizations
-x-pack/examples/third_party_vis_lens_example @elastic/kibana-visualizations
-x-pack/plugins/threat_intelligence @elastic/security-threat-hunting-investigations
-x-pack/plugins/timelines @elastic/security-threat-hunting-investigations
-packages/kbn-timelion-grammar @elastic/kibana-visualizations
-packages/kbn-timerange @elastic/obs-ux-logs-team
-packages/kbn-tinymath @elastic/kibana-visualizations
-packages/kbn-tooling-log @elastic/kibana-operations
-x-pack/plugins/transform @elastic/ml-ui
-x-pack/plugins/translations @elastic/kibana-localization
-packages/kbn-transpose-utils @elastic/kibana-visualizations
-x-pack/examples/triggers_actions_ui_example @elastic/response-ops
-x-pack/plugins/triggers_actions_ui @elastic/response-ops
-packages/kbn-triggers-actions-ui-types @elastic/response-ops
-packages/kbn-try-in-console @elastic/search-kibana
-packages/kbn-ts-projects @elastic/kibana-operations
-packages/kbn-ts-type-check-cli @elastic/kibana-operations
-packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-management-team
-packages/kbn-ui-actions-browser @elastic/appex-sharedux
-x-pack/examples/ui_actions_enhanced_examples @elastic/appex-sharedux
-src/plugins/ui_actions_enhanced @elastic/appex-sharedux
-examples/ui_action_examples @elastic/appex-sharedux
-examples/ui_actions_explorer @elastic/appex-sharedux
-src/plugins/ui_actions @elastic/appex-sharedux
-test/plugin_functional/plugins/ui_settings_plugin @elastic/kibana-core
-packages/kbn-ui-shared-deps-npm @elastic/kibana-operations
-packages/kbn-ui-shared-deps-src @elastic/kibana-operations
-packages/kbn-ui-theme @elastic/kibana-operations
-packages/kbn-unified-data-table @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations
-packages/kbn-unified-doc-viewer @elastic/kibana-data-discovery
-examples/unified_doc_viewer @elastic/kibana-core
-src/plugins/unified_doc_viewer @elastic/kibana-data-discovery
-packages/kbn-unified-field-list @elastic/kibana-data-discovery
-examples/unified_field_list_examples @elastic/kibana-data-discovery
-src/plugins/unified_histogram @elastic/kibana-data-discovery
-src/plugins/unified_search @elastic/kibana-visualizations
-packages/kbn-unsaved-changes-badge @elastic/kibana-data-discovery
-packages/kbn-unsaved-changes-prompt @elastic/kibana-management
-x-pack/plugins/upgrade_assistant @elastic/kibana-management
-x-pack/plugins/observability_solution/uptime @elastic/obs-ux-management-team
-x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux
-src/plugins/url_forwarding @elastic/kibana-visualizations
-src/plugins/usage_collection @elastic/kibana-core
-test/plugin_functional/plugins/usage_collection @elastic/kibana-core
-packages/kbn-use-tracked-promise @elastic/obs-ux-logs-team
-packages/kbn-user-profile-components @elastic/kibana-security
-examples/user_profile_examples @elastic/kibana-security
-x-pack/test/security_api_integration/plugins/user_profiles_consumer @elastic/kibana-security
-packages/kbn-utility-types @elastic/kibana-core
-packages/kbn-utility-types-jest @elastic/kibana-operations
-packages/kbn-utils @elastic/kibana-operations
-x-pack/plugins/observability_solution/ux @elastic/obs-ux-infra_services-team
-examples/v8_profiler_examples @elastic/response-ops
-packages/kbn-validate-next-docs-cli @elastic/kibana-operations
-src/plugins/vis_default_editor @elastic/kibana-visualizations
-src/plugins/vis_types/gauge @elastic/kibana-visualizations
-src/plugins/vis_types/heatmap @elastic/kibana-visualizations
-src/plugins/vis_type_markdown @elastic/kibana-presentation
-src/plugins/vis_types/metric @elastic/kibana-visualizations
-src/plugins/vis_types/pie @elastic/kibana-visualizations
-src/plugins/vis_types/table @elastic/kibana-visualizations
-src/plugins/vis_types/tagcloud @elastic/kibana-visualizations
-src/plugins/vis_types/timelion @elastic/kibana-visualizations
-src/plugins/vis_types/timeseries @elastic/kibana-visualizations
-src/plugins/vis_types/vega @elastic/kibana-visualizations
-src/plugins/vis_types/vislib @elastic/kibana-visualizations
-src/plugins/vis_types/xy @elastic/kibana-visualizations
-packages/kbn-visualization-ui-components @elastic/kibana-visualizations
-packages/kbn-visualization-utils @elastic/kibana-visualizations
-src/plugins/visualizations @elastic/kibana-visualizations
-x-pack/plugins/watcher @elastic/kibana-management
-packages/kbn-web-worker-stub @elastic/kibana-operations
-packages/kbn-whereis-pkg-cli @elastic/kibana-operations
-packages/kbn-xstate-utils @elastic/obs-ux-logs-team
-packages/kbn-yarn-lock-validator @elastic/kibana-operations
-packages/kbn-zod @elastic/kibana-core
-packages/kbn-zod-helpers @elastic/security-detection-rule-management
-####
-## Everything below this line overrides the default assignments for each package.
-## Items lower in the file have higher precedence:
-## https://help.github.com/articles/about-codeowners/
-####
-
-# The #CC# prefix delineates Code Coverage,
-# used for the 'team' designator within Kibana Stats
-
-x-pack/test_serverless/api_integration/test_suites/common/platform_security @elastic/kibana-security
-
-# Data Discovery
-/x-pack/test_serverless/functional/es_archives/pre_calculated_histogram @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/es_archives/kibana_sample_data_flights_index_pattern @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/security/config.examples.ts @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/security/config.context_awareness.ts @elastic/kibana-data-discovery
-/test/accessibility/apps/discover.ts @elastic/kibana-data-discovery
-/test/api_integration/apis/data_views @elastic/kibana-data-discovery
-/test/api_integration/apis/data_view_field_editor @elastic/kibana-data-discovery
-/test/api_integration/apis/kql_telemetry @elastic/kibana-data-discovery
-/test/api_integration/apis/scripts @elastic/kibana-data-discovery
-/test/api_integration/apis/search @elastic/kibana-data-discovery
-/test/examples/data_view_field_editor_example @elastic/kibana-data-discovery
-/test/examples/discover_customization_examples @elastic/kibana-data-discovery
-/test/examples/field_formats @elastic/kibana-data-discovery
-/test/examples/partial_results @elastic/kibana-data-discovery
-/test/examples/search @elastic/kibana-data-discovery
-/test/examples/unified_field_list_examples @elastic/kibana-data-discovery
-/test/functional/apps/context @elastic/kibana-data-discovery
-/test/functional/apps/discover @elastic/kibana-data-discovery
-/test/functional/apps/management/ccs_compatibility/_data_views_ccs.ts @elastic/kibana-data-discovery
-/test/functional/apps/management/data_views @elastic/kibana-data-discovery
-/test/plugin_functional/test_suites/data_plugin @elastic/kibana-data-discovery
-/x-pack/test/accessibility/apps/group3/search_sessions.ts @elastic/kibana-data-discovery
-/x-pack/test/api_integration/apis/management/rollup/index_patterns_extensions.js @elastic/kibana-data-discovery
-/x-pack/test/api_integration/apis/search @elastic/kibana-data-discovery
-/x-pack/test/examples/search_examples @elastic/kibana-data-discovery
-/x-pack/test/functional/apps/data_views @elastic/kibana-data-discovery
-/x-pack/test/functional/apps/discover @elastic/kibana-data-discovery
-/x-pack/test/functional/apps/saved_query_management @elastic/kibana-data-discovery
-/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/discover @elastic/kibana-data-discovery
-/x-pack/test/search_sessions_integration @elastic/kibana-data-discovery
-/x-pack/test/stack_functional_integration/apps/ccs/ccs_discover.js @elastic/kibana-data-discovery
-/x-pack/test/stack_functional_integration/apps/management/_index_pattern_create.js @elastic/kibana-data-discovery
-/x-pack/test/upgrade/apps/discover @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/data_views @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/data_view_field_editor @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/kql_telemetry @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/scripts_tests @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/search_oss @elastic/kibana-data-discovery
-/x-pack/test_serverless/api_integration/test_suites/common/search_xpack @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/context @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/discover @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/discover_ml_uptime/discover @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/data_view_field_editor_example @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/discover_customization_examples @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/field_formats @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/partial_results @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/search @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/search_examples @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples @elastic/kibana-data-discovery
-/x-pack/test_serverless/functional/test_suites/common/management/data_views @elastic/kibana-data-discovery
-src/plugins/discover/public/context_awareness/profile_providers/security @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations
-
-# Platform Docs
-/x-pack/test_serverless/functional/test_suites/security/screenshot_creation/index.ts @elastic/platform-docs
-/x-pack/test_serverless/functional/test_suites/security/config.screenshots.ts @elastic/platform-docs
-
-# Visualizations
-/src/plugins/visualize/ @elastic/kibana-visualizations
-/x-pack/test/functional/apps/lens @elastic/kibana-visualizations
-/x-pack/test/api_integration/apis/lens/ @elastic/kibana-visualizations
-/test/functional/apps/visualize/ @elastic/kibana-visualizations
-/x-pack/test/functional/apps/graph @elastic/kibana-visualizations
-/test/api_integration/apis/event_annotations @elastic/kibana-visualizations
-/x-pack/test_serverless/functional/test_suites/common/visualizations/ @elastic/kibana-visualizations
-/x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/ @elastic/kibana-visualizations
-packages/kbn-monaco/src/esql @elastic/kibana-esql
-
-# Global Experience
-
-### Global Experience Reporting
-/x-pack/test/functional/apps/dashboard/reporting/ @elastic/appex-sharedux
-/x-pack/test/functional/apps/reporting/ @elastic/appex-sharedux
-/x-pack/test/functional/apps/reporting_management/ @elastic/appex-sharedux
-/x-pack/test/examples/screenshotting/ @elastic/appex-sharedux
-/x-pack/test/functional/es_archives/lens/reporting/ @elastic/appex-sharedux
-/x-pack/test/functional/es_archives/reporting/ @elastic/appex-sharedux
-/x-pack/test/functional/fixtures/kbn_archiver/reporting/ @elastic/appex-sharedux
-/x-pack/test/reporting_api_integration/ @elastic/appex-sharedux
-/x-pack/test/reporting_functional/ @elastic/appex-sharedux
-/x-pack/test/stack_functional_integration/apps/reporting/ @elastic/appex-sharedux
-/docs/user/reporting @elastic/appex-sharedux
-/docs/settings/reporting-settings.asciidoc @elastic/appex-sharedux
-/docs/setup/configuring-reporting.asciidoc @elastic/appex-sharedux
-/x-pack/test_serverless/**/test_suites/common/reporting/ @elastic/appex-sharedux
-
-### Global Experience Tagging
-/x-pack/test/saved_object_tagging/ @elastic/appex-sharedux
-
-### Kibana React (to be deprecated)
-/src/plugins/kibana_react/public/@elastic/appex-sharedux @elastic/kibana-presentation
-
-### Home Plugin and Packages
-/src/plugins/home/public @elastic/appex-sharedux
-/src/plugins/home/server/*.ts @elastic/appex-sharedux
-/src/plugins/home/server/services/ @elastic/appex-sharedux
-
-### Code Coverage
-#CC# /src/plugins/home/public @elastic/appex-sharedux
-#CC# /src/plugins/home/server/services/ @elastic/appex-sharedux
-#CC# /src/plugins/home/ @elastic/appex-sharedux
-#CC# /x-pack/plugins/reporting/ @elastic/appex-sharedux
-#CC# /x-pack/plugins/security_solution_serverless/ @elastic/appex-sharedux
-
-### Observability Plugins
-
-
-# Observability AI Assistant
-x-pack/test/observability_ai_assistant_api_integration @elastic/obs-ai-assistant
-x-pack/test/observability_ai_assistant_functional @elastic/obs-ai-assistant
-x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai-assistant
-
-# Infra Monitoring
-## This plugin mostly contains the codebase for the infra services, but also includes some code for the Logs UI app.
-## To keep @elastic/obs-ux-logs-team as codeowner of the plugin manifest without requiring a review for all the other code changes
-## the priority on codeownership will be as follow:
-## - infra -> both teams (automatically generated by script)
-## - infra/{common,docs,public,server}/{sub-folders}/ -> @elastic/obs-ux-infra_services-team
-## - Logs UI code exceptions -> @elastic/obs-ux-logs-team
-## This should allow the infra team to work without dependencies on the @elastic/obs-ux-logs-team, which will maintain ownership of the Logs UI code only.
-
-## infra/{common,docs,public,server}/{sub-folders}/ -> @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/common @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/docs @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/alerting @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/apps @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/common @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/components @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/containers @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/hooks @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/images @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/lib @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/pages @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/services @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/test_utils @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/public/utils @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/lib @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/routes @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/saved_objects @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/services @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/usage @elastic/obs-ux-infra_services-team
-/x-pack/plugins/observability_solution/infra/server/utils @elastic/obs-ux-infra_services-team
-
-## Logs UI code exceptions -> @elastic/obs-ux-logs-team
-/x-pack/test_serverless/functional/page_objects/svl_oblt_onboarding_stream_log_file.ts @elastic/obs-ux-logs-team
-/x-pack/test_serverless/functional/page_objects/svl_oblt_onboarding_page.ts @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/http_api/log_alerts @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/http_api/log_analysis @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/log_analysis @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/log_search_result @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/log_search_summary @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/log_text_scale @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/performance_tracing.ts @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/common/search_strategies/log_entries @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/docs/state_machines @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/apps/logs_app.tsx @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/components/log_stream @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/components/logging @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/containers/logs @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/observability_logs @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/public/pages/logs @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/server/lib/log_analysis @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/server/routes/log_alerts @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/server/routes/log_analysis @elastic/obs-ux-logs-team
-/x-pack/plugins/observability_solution/infra/server/services/rules @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
-# Infra Monitoring tests
-/x-pack/test/api_integration/apis/infra @elastic/obs-ux-infra_services-team
-/x-pack/test/functional/apps/infra @elastic/obs-ux-infra_services-team
-/x-pack/test/functional/apps/infra/logs @elastic/obs-ux-logs-team
-
-# Observability UX management team
-/x-pack/packages/observability/alert_details @elastic/obs-ux-management-team
-/x-pack/test/observability_functional @elastic/obs-ux-management-team
-/x-pack/plugins/observability_solution/infra/public/alerting @elastic/obs-ux-management-team
-/x-pack/plugins/observability_solution/infra/server/lib/alerting @elastic/obs-ux-management-team
-/x-pack/test_serverless/**/test_suites/observability/custom_threshold_rule/ @elastic/obs-ux-management-team
-/x-pack/test_serverless/**/test_suites/observability/slos/ @elastic/obs-ux-management-team
-/x-pack/test_serverless/api_integration/test_suites/observability/es_query_rule @elastic/obs-ux-management-team
-/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/burn_rate_rule @elastic/obs-ux-management-team
-/x-pack/test/api_integration/deployment_agnostic/services/alerting_api @elastic/obs-ux-management-team
-/x-pack/test/api_integration/deployment_agnostic/services/slo_api @elastic/obs-ux-management-team
-/x-pack/test_serverless/**/test_suites/observability/infra/ @elastic/obs-ux-infra_services-team
-
-# Elastic Stack Monitoring
-/x-pack/test/functional/apps/monitoring @elastic/stack-monitoring
-/x-pack/test/api_integration/apis/monitoring @elastic/stack-monitoring
-/x-pack/test/api_integration/apis/monitoring_collection @elastic/stack-monitoring
-
-# Fleet
-/x-pack/test/fleet_api_integration @elastic/fleet
-/x-pack/test/fleet_cypress @elastic/fleet
-/x-pack/test/fleet_functional @elastic/fleet
-/src/dev/build/tasks/bundle_fleet_packages.ts @elastic/fleet @elastic/kibana-operations
-/x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts @elastic/fleet @elastic/obs-cloudnative-monitoring
-/x-pack/test_serverless/**/test_suites/**/fleet/ @elastic/fleet
-
-# APM
-/x-pack/test/functional/apps/apm/ @elastic/obs-ux-infra_services-team
-/x-pack/test/apm_api_integration/ @elastic/obs-ux-infra_services-team
-/src/apm.js @elastic/kibana-core @vigneshshanmugam
-/packages/kbn-utility-types/src/dot.ts @dgieselaar
-/packages/kbn-utility-types/src/dot_test.ts @dgieselaar
-/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/ @elastic/obs-ux-infra_services-team
-#CC# /src/plugins/apm_oss/ @elastic/apm-ui
-#CC# /x-pack/plugins/observability_solution/observability/ @elastic/apm-ui
-
-# Uptime
-/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/ @elastic/obs-ux-management-team
-/x-pack/test/functional/apps/uptime @elastic/obs-ux-management-team
-/x-pack/test/functional/es_archives/uptime @elastic/obs-ux-management-team
-/x-pack/test/functional/services/uptime @elastic/obs-ux-management-team
-/x-pack/test/api_integration/apis/uptime @elastic/obs-ux-management-team
-/x-pack/test/api_integration/apis/synthetics @elastic/obs-ux-management-team
-/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts @elastic/obs-ux-management-team
-/x-pack/test/alerting_api_integration/observability/index.ts @elastic/obs-ux-management-team
-/x-pack/test_serverless/api_integration/test_suites/observability/synthetics @elastic/obs-ux-management-team
-
-# Logs
-/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts @elastic/obs-ux-logs-team
-/x-pack/test/api_integration/apis/logs_ui @elastic/obs-ux-logs-team
-/x-pack/test/dataset_quality_api_integration @elastic/obs-ux-logs-team
-/x-pack/test_serverless/api_integration/test_suites/observability/dataset_quality_api_integration @elastic/obs-ux-logs-team
-/x-pack/test/functional/apps/observability_logs_explorer @elastic/obs-ux-logs-team
-/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer @elastic/obs-ux-logs-team
-/x-pack/test/functional/apps/dataset_quality @elastic/obs-ux-logs-team
-/x-pack/test_serverless/functional/test_suites/observability/dataset_quality @elastic/obs-ux-logs-team
-/x-pack/test_serverless/functional/test_suites/observability/ @elastic/obs-ux-logs-team
-/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview @elastic/obs-ux-logs-team
-
-# Observability onboarding tour
-/x-pack/plugins/observability_solution/observability_shared/public/components/tour @elastic/appex-sharedux
-/x-pack/test/functional/apps/infra/tour.ts @elastic/appex-sharedux
-
-# Observability settings
-/x-pack/plugins/observability_solution/observability/server/ui_settings.ts @elastic/obs-docs
-
-### END Observability Plugins
-
-# Presentation
-/test/functional/apps/dashboard/ @elastic/kibana-presentation
-/test/functional/apps/dashboard_elements/ @elastic/kibana-presentation
-/test/functional/services/dashboard/ @elastic/kibana-presentation
-/x-pack/test/functional/apps/canvas/ @elastic/kibana-presentation
-/x-pack/test_serverless/functional/test_suites/search/dashboards/ @elastic/kibana-presentation
-/test/plugin_functional/test_suites/panel_actions @elastic/kibana-presentation
-/x-pack/test/functional/es_archives/canvas/logstash_lens @elastic/kibana-presentation
-#CC# /src/plugins/kibana_react/public/code_editor/ @elastic/kibana-presentation
-
-# Machine Learning
-/x-pack/test/accessibility/apps/group2/ml.ts @elastic/ml-ui
-/x-pack/test/accessibility/apps/group3/ml_embeddables_in_dashboard.ts @elastic/ml-ui
-/x-pack/test/api_integration/apis/ml/ @elastic/ml-ui
-/x-pack/test/api_integration_basic/apis/ml/ @elastic/ml-ui
-/x-pack/test/functional/apps/ml/ @elastic/ml-ui
-/x-pack/test/functional/es_archives/ml/ @elastic/ml-ui
-/x-pack/test/functional/services/ml/ @elastic/ml-ui
-/x-pack/test/functional_basic/apps/ml/ @elastic/ml-ui
-/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/ml/ @elastic/ml-ui
-/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/ml_rule_types/ @elastic/ml-ui
-/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/transform_rule_types/ @elastic/ml-ui
-/x-pack/test/screenshot_creation/apps/ml_docs @elastic/ml-ui
-/x-pack/test/screenshot_creation/services/ml_screenshots.ts @elastic/ml-ui
-/x-pack/test_serverless/**/test_suites/**/ml/ @elastic/ml-ui
-/x-pack/test_serverless/**/test_suites/common/management/transforms/ @elastic/ml-ui
-
-# Additional plugins and packages maintained by the ML team.
-/x-pack/test/accessibility/apps/group2/transform.ts @elastic/ml-ui
-/x-pack/test/api_integration/apis/aiops/ @elastic/ml-ui
-/x-pack/test/api_integration/apis/transform/ @elastic/ml-ui
-/x-pack/test/api_integration_basic/apis/transform/ @elastic/ml-ui
-/x-pack/test/functional/apps/transform/ @elastic/ml-ui
-/x-pack/test/functional/services/transform/ @elastic/ml-ui
-/x-pack/test/functional_basic/apps/transform/ @elastic/ml-ui
-
-# Maps
-#CC# /x-pack/plugins/maps/ @elastic/kibana-gis
-/x-pack/test/api_integration/apis/maps/ @elastic/kibana-gis
-/x-pack/test/functional/apps/maps/ @elastic/kibana-gis
-/x-pack/test/functional/es_archives/maps/ @elastic/kibana-gis
-/x-pack/plugins/stack_alerts/server/rule_types/geo_containment @elastic/kibana-gis
-/x-pack/plugins/stack_alerts/public/rule_types/geo_containment @elastic/kibana-gis
-#CC# /x-pack/plugins/file_upload @elastic/kibana-gis
-
-# Operations
-/src/dev/license_checker/config.ts @elastic/kibana-operations
-/src/dev/ @elastic/kibana-operations
-/src/setup_node_env/ @elastic/kibana-operations
-/src/cli/keystore/ @elastic/kibana-operations
-/src/cli/serve/ @elastic/kibana-operations
-/src/cli_keystore/ @elastic/kibana-operations
-/.github/workflows/ @elastic/kibana-operations
-/vars/ @elastic/kibana-operations
-/.bazelignore @elastic/kibana-operations
-/.bazeliskversion @elastic/kibana-operations
-/.bazelrc @elastic/kibana-operations
-/.bazelrc.common @elastic/kibana-operations
-/.bazelversion @elastic/kibana-operations
-/WORKSPACE.bazel @elastic/kibana-operations
-/.buildkite/ @elastic/kibana-operations
-/.buildkite/scripts/steps/esql_grammar_sync.sh @elastic/kibana-esql
-/.buildkite/scripts/steps/esql_generate_function_metadata.sh @elastic/kibana-esql
-/.buildkite/pipelines/esql_grammar_sync.yml @elastic/kibana-esql
-/.buildkite/scripts/steps/code_generation/security_solution_codegen.sh @elastic/security-detection-rule-management
-/kbn_pm/ @elastic/kibana-operations
-/x-pack/dev-tools @elastic/kibana-operations
-/catalog-info.yaml @elastic/kibana-operations @elastic/kibana-tech-leads
-/.devcontainer/ @elastic/kibana-operations
-/.eslintrc.js @elastic/kibana-operations
-/.eslintignore @elastic/kibana-operations
-
-# Appex QA
-/x-pack/test_serverless/tsconfig.json @elastic/appex-qa
-/x-pack/test_serverless/kibana.jsonc @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/common/README.md @elastic/appex-qa
-/x-pack/test_serverless/functional/page_objects/index.ts @elastic/appex-qa
-/x-pack/test_serverless/functional/ftr_provider_context.d.ts @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/common/management/index.ts @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/common/examples/index.ts @elastic/appex-qa
-/x-pack/test_serverless/functional/page_objects/svl_common_page.ts @elastic/appex-qa
-/x-pack/test_serverless/README.md @elastic/appex-qa
-/x-pack/test_serverless/api_integration/ftr_provider_context.d.ts @elastic/appex-qa
-/x-pack/test_serverless/api_integration/test_suites/common/README.md @elastic/appex-qa
-/src/dev/code_coverage @elastic/appex-qa
-/test/functional/services/common @elastic/appex-qa
-/test/functional/services/lib @elastic/appex-qa
-/test/functional/services/remote @elastic/appex-qa
-/test/visual_regression @elastic/appex-qa
-/x-pack/test/visual_regression @elastic/appex-qa
-/packages/kbn-test/src/functional_test_runner @elastic/appex-qa
-/packages/kbn-performance-testing-dataset-extractor @elastic/appex-qa
-/x-pack/test_serverless/**/*config.base.ts @elastic/appex-qa
-/x-pack/test_serverless/**/deployment_agnostic_services.ts @elastic/appex-qa
-/x-pack/test_serverless/shared/ @elastic/appex-qa
-/x-pack/test_serverless/**/test_suites/**/common_configs/ @elastic/appex-qa
-/x-pack/test_serverless/api_integration/test_suites/common/elasticsearch_api @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/security/ftr/ @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/common/home_page/ @elastic/appex-qa
-/x-pack/test_serverless/**/services/ @elastic/appex-qa
-/packages/kbn-es/src/stateful_resources/roles.yml @elastic/appex-qa
-x-pack/test/api_integration/deployment_agnostic/default_configs/ @elastic/appex-qa
-x-pack/test/api_integration/deployment_agnostic/services/ @elastic/appex-qa
-x-pack/test/**/deployment_agnostic/ @elastic/appex-qa #temporarily to monitor tests migration
-
-# Core
-/x-pack/test_serverless/functional/test_suites/security/config.saved_objects_management.ts @elastic/kibana-core
-/config/ @elastic/kibana-core
-/config/serverless.yml @elastic/kibana-core @elastic/kibana-security
-/config/serverless.es.yml @elastic/kibana-core @elastic/kibana-security
-/config/serverless.oblt.yml @elastic/kibana-core @elastic/kibana-security
-/config/serverless.security.yml @elastic/kibana-core @elastic/kibana-security
-/typings/ @elastic/kibana-core
-/test/analytics @elastic/kibana-core
-/packages/kbn-test/src/jest/setup/mocks.kbn_i18n_react.js @elastic/kibana-core
-/x-pack/test/saved_objects_field_count/ @elastic/kibana-core
-/x-pack/test_serverless/**/test_suites/common/saved_objects_management/ @elastic/kibana-core
-/x-pack/test_serverless/api_integration/test_suites/common/core/ @elastic/kibana-core
-/x-pack/test_serverless/api_integration/test_suites/**/telemetry/ @elastic/kibana-core
-/x-pack/test/functional/es_archives/cases/migrations/8.8.0 @elastic/response-ops
-
-#CC# /src/core/server/csp/ @elastic/kibana-core
-#CC# /src/plugins/saved_objects/ @elastic/kibana-core
-#CC# /x-pack/plugins/cloud/ @elastic/kibana-core
-#CC# /x-pack/plugins/features/ @elastic/kibana-core
-#CC# /x-pack/plugins/global_search/ @elastic/kibana-core
-#CC# /src/plugins/newsfeed @elastic/kibana-core
-#CC# /x-pack/plugins/global_search_providers/ @elastic/kibana-core
-
-# AppEx AI Infra
-/x-pack/plugins/inference @elastic/appex-ai-infra @elastic/obs-ai-assistant @elastic/security-generative-ai
-
-# AppEx Platform Services Security
-x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts @elastic/kibana-security
-
-# Kibana Telemetry
-/.telemetryrc.json @elastic/kibana-core
-/x-pack/.telemetryrc.json @elastic/kibana-core
-/src/plugins/telemetry/schema/ @elastic/kibana-core
-/x-pack/plugins/telemetry_collection_xpack/schema/ @elastic/kibana-core
-x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kibana-core @shahinakmal
-
-# Kibana Localization
-/src/dev/i18n_tools/ @elastic/kibana-localization @elastic/kibana-core
-/src/core/public/i18n/ @elastic/kibana-localization @elastic/kibana-core
-#CC# /x-pack/plugins/translations/ @elastic/kibana-localization @elastic/kibana-core
-
-# Kibana Platform Security
-/.github/codeql @elastic/kibana-security
-/.github/workflows/codeql.yml @elastic/kibana-security
-/.github/workflows/codeql-stats.yml @elastic/kibana-security
-/src/dev/eslint/security_eslint_rule_tests.ts @elastic/kibana-security
-/src/core/server/integration_tests/config/check_dynamic_config.test.ts @elastic/kibana-security
-/src/plugins/telemetry/server/config/telemetry_labels.ts @elastic/kibana-security
-/packages/kbn-std/src/is_internal_url.test.ts @elastic/kibana-core @elastic/kibana-security
-/packages/kbn-std/src/is_internal_url.ts @elastic/kibana-core @elastic/kibana-security
-/packages/kbn-std/src/parse_next_url.test.ts @elastic/kibana-core @elastic/kibana-security
-/packages/kbn-std/src/parse_next_url.ts @elastic/kibana-core @elastic/kibana-security
-/test/interactive_setup_api_integration/ @elastic/kibana-security
-/test/interactive_setup_functional/ @elastic/kibana-security
-/test/plugin_functional/plugins/hardening @elastic/kibana-security
-/test/plugin_functional/test_suites/core_plugins/rendering.ts @elastic/kibana-security
-/test/plugin_functional/test_suites/hardening @elastic/kibana-security
-/x-pack/test/accessibility/apps/group1/login_page.ts @elastic/kibana-security
-/x-pack/test/accessibility/apps/group1/roles.ts @elastic/kibana-security
-/x-pack/test/accessibility/apps/group1/spaces.ts @elastic/kibana-security
-/x-pack/test/accessibility/apps/group1/users.ts @elastic/kibana-security
-/x-pack/test/api_integration/apis/security/ @elastic/kibana-security
-/x-pack/test/api_integration/apis/spaces/ @elastic/kibana-security
-/x-pack/test/ui_capabilities/ @elastic/kibana-security
-/x-pack/test/encrypted_saved_objects_api_integration/ @elastic/kibana-security
-/x-pack/test/functional/apps/security/ @elastic/kibana-security
-/x-pack/test/functional/apps/spaces/ @elastic/kibana-security
-/x-pack/test/security_api_integration/ @elastic/kibana-security
-/x-pack/test/security_functional/ @elastic/kibana-security
-/x-pack/test/spaces_api_integration/ @elastic/kibana-security
-/x-pack/test/saved_object_api_integration/ @elastic/kibana-security
-/x-pack/test_serverless/**/test_suites/common/platform_security/ @elastic/kibana-security
-/x-pack/test_serverless/**/test_suites/search/platform_security/ @elastic/kibana-security
-/x-pack/test_serverless/**/test_suites/security/platform_security/ @elastic/kibana-security
-/x-pack/test_serverless/**/test_suites/observability/platform_security/ @elastic/kibana-security
-/packages/core/http/core-http-server-internal/src/cdn_config/ @elastic/kibana-security @elastic/kibana-core
-#CC# /x-pack/plugins/security/ @elastic/kibana-security
-
-# Response Ops team
-/x-pack/test/functional/es_archives/cases/default @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/observability/config.ts @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/observability/index.ts @elastic/response-ops
-/x-pack/test_serverless/functional/page_objects/svl_triggers_actions_ui_page.ts @elastic/response-ops
-/x-pack/test_serverless/functional/page_objects/svl_rule_details_ui_page.ts @elastic/response-ops
-/x-pack/test_serverless/functional/page_objects/svl_oblt_overview_page.ts @elastic/response-ops
-/x-pack/test/alerting_api_integration/ @elastic/response-ops
-/x-pack/test/alerting_api_integration/observability @elastic/obs-ux-management-team
-/x-pack/test/plugin_api_integration/test_suites/task_manager/ @elastic/response-ops
-/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/ @elastic/response-ops
-/x-pack/test/task_manager_claimer_update_by_query/ @elastic/response-ops
-/docs/user/alerting/ @elastic/response-ops
-/docs/management/connectors/ @elastic/response-ops
-/x-pack/test/cases_api_integration/ @elastic/response-ops
-/x-pack/test/functional/services/cases/ @elastic/response-ops
-/x-pack/test/functional_with_es_ssl/apps/cases/ @elastic/response-ops
-/x-pack/test/api_integration/apis/cases/ @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/observability/cases @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/search/cases/ @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/security/ftr/cases/ @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/search/cases/ @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/observability/cases/ @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/security/cases/ @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/search/screenshot_creation/response_ops_docs @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/security/screenshot_creation/response_ops_docs @elastic/response-ops
-/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs @elastic/response-ops
-/x-pack/test_serverless/api_integration/test_suites/common/alerting/ @elastic/response-ops
-/x-pack/test/functional/es_archives/action_task_params @elastic/response-ops
-/x-pack/test/functional/es_archives/actions @elastic/response-ops
-/x-pack/test/functional/es_archives/alerting @elastic/response-ops
-/x-pack/test/functional/es_archives/alerts @elastic/response-ops
-/x-pack/test/functional/es_archives/alerts_legacy @elastic/response-ops
-/x-pack/test/functional/es_archives/observability/alerts @elastic/response-ops
-/x-pack/test/functional/es_archives/actions @elastic/response-ops
-/x-pack/test/functional/es_archives/rules_scheduled_task_id @elastic/response-ops
-/x-pack/test/functional/es_archives/alerting/8_2_0 @elastic/response-ops
-/x-pack/test/functional/es_archives/cases/signals/default @elastic/response-ops
-/x-pack/test/functional/es_archives/cases/signals/hosts_users @elastic/response-ops
-
-# Enterprise Search
-/x-pack/test_serverless/functional/page_objects/svl_ingest_pipelines.ts @elastic/search-kibana
-/x-pack/test/functional/apps/dev_tools/embedded_console.ts @elastic/search-kibana
-/x-pack/test/functional/apps/ingest_pipelines/feature_controls/ingest_pipelines_security.ts @elastic/search-kibana
-/x-pack/test/functional/page_objects/embedded_console.ts @elastic/search-kibana
-/x-pack/test/functional_enterprise_search/ @elastic/search-kibana
-/x-pack/plugins/enterprise_search/public/applications/shared/doc_links @elastic/platform-docs
-/x-pack/test_serverless/api_integration/test_suites/search/serverless_search @elastic/search-kibana
-/x-pack/test_serverless/functional/test_suites/search/ @elastic/search-kibana
-/x-pack/test_serverless/functional/test_suites/search/config.ts @elastic/search-kibana @elastic/appex-qa
-x-pack/test/api_integration/apis/management/index_management/inference_endpoints.ts @elastic/search-kibana
-/x-pack/test_serverless/api_integration/test_suites/search @elastic/search-kibana
-/x-pack/test_serverless/functional/page_objects/svl_api_keys.ts @elastic/search-kibana
-/x-pack/test_serverless/functional/page_objects/svl_search_* @elastic/search-kibana
-/x-pack/test/functional_search/ @elastic/search-kibana
-
-# Management Experience - Deployment Management
-/x-pack/test_serverless/**/test_suites/common/index_management/ @elastic/kibana-management
-/x-pack/test_serverless/**/test_suites/common/management/index_management/ @elastic/kibana-management
-/x-pack/test_serverless/**/test_suites/common/painless_lab/ @elastic/kibana-management
-/x-pack/test_serverless/**/test_suites/common/console/ @elastic/kibana-management
-/x-pack/test_serverless/api_integration/test_suites/common/management/ @elastic/kibana-management
-/x-pack/test_serverless/api_integration/test_suites/common/search_profiler/ @elastic/kibana-management
-/x-pack/test_serverless/functional/test_suites/**/advanced_settings.ts @elastic/kibana-management
-/x-pack/test_serverless/functional/test_suites/common/management/disabled_uis.ts @elastic/kibana-management
-/x-pack/test_serverless/functional/test_suites/common/management/ingest_pipelines.ts @elastic/kibana-management
-/x-pack/test_serverless/functional/test_suites/common/management/landing_page.ts @elastic/kibana-management
-/x-pack/test_serverless/functional/test_suites/common/dev_tools/ @elastic/kibana-management
-/x-pack/test_serverless/**/test_suites/common/grok_debugger/ @elastic/kibana-management
-/x-pack/test/api_integration/apis/management/ @elastic/kibana-management
-/x-pack/test/functional/apps/rollup_job/ @elastic/kibana-management
-
-#CC# /x-pack/plugins/cross_cluster_replication/ @elastic/kibana-management
-
-# Security Solution
-/x-pack/test_serverless/functional/test_suites/security/config.ts @elastic/security-solution @elastic/appex-qa
-/x-pack/test_serverless/functional/test_suites/security/config.feature_flags.ts @elastic/security-solution
-/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts @elastic/security-solution
-/x-pack/test_serverless/functional/test_suites/common/spaces/multiple_spaces_enabled.ts @elastic/security-solution
-/x-pack/test/functional/es_archives/endpoint/ @elastic/security-solution
-/x-pack/test/plugin_functional/test_suites/resolver/ @elastic/security-solution
-/x-pack/test/security_solution_api_integration @elastic/security-solution
-/x-pack/test/api_integration/apis/security_solution @elastic/security-solution
-/x-pack/test/functional/es_archives/auditbeat/default @elastic/security-solution
-/x-pack/test/functional/es_archives/auditbeat/hosts @elastic/security-solution
-/x-pack/test_serverless/functional/page_objects/svl_management_page.ts @elastic/security-solution
-/x-pack/test_serverless/api_integration/test_suites/security @elastic/security-solution
-
-/x-pack/test_serverless/functional/test_suites/security/cypress @elastic/security-solution
-/x-pack/test_serverless/functional/test_suites/security/index.feature_flags.ts @elastic/security-solution
-/x-pack/test_serverless/functional/test_suites/security/index.ts @elastic/security-solution
-#CC# /x-pack/plugins/security_solution/ @elastic/security-solution
-/x-pack/test/functional/es_archives/cases/signals/duplicate_ids @elastic/response-ops
-
-# Security Solution OpenAPI bundles
-/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_* @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_* @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_* @elastic/security-entity-analytics
-/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_* @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_* @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_* @elastic/security-entity-analytics
-/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations
-
-# Security Solution Offering plugins
-# TODO: assign sub directories to sub teams
-/x-pack/plugins/security_solution_ess/ @elastic/security-solution
-/x-pack/plugins/security_solution_serverless/ @elastic/security-solution
-
-# GenAI in Security Solution
-/x-pack/plugins/security_solution/public/assistant @elastic/security-generative-ai
-/x-pack/plugins/security_solution/public/attack_discovery @elastic/security-generative-ai
-/x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant @elastic/security-generative-ai
-
-# Security Solution cross teams ownership
-/x-pack/test/security_solution_cypress/cypress/fixtures @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/helpers @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/objects @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/plugins @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/screens/common @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/support @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/test/security_solution_cypress/cypress/urls @elastic/security-threat-hunting-investigations @elastic/security-detection-engine
-
-/x-pack/plugins/security_solution/common/ecs @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/common/test @elastic/security-detections-response @elastic/security-threat-hunting
-
-/x-pack/plugins/security_solution/public/common/components/callouts @elastic/security-detections-response
-/x-pack/plugins/security_solution/public/common/components/hover_actions @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations
-
-/x-pack/plugins/security_solution/server/routes @elastic/security-detections-response @elastic/security-threat-hunting
-/x-pack/plugins/security_solution/server/utils @elastic/security-detections-response @elastic/security-threat-hunting
-x-pack/test/security_solution_api_integration/test_suites/detections_response/utils @elastic/security-detections-response
-x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry @elastic/security-detections-response
-x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles @elastic/security-detections-response
-x-pack/test/security_solution_api_integration/test_suites/explore @elastic/security-threat-hunting-explore
-x-pack/test/security_solution_api_integration/test_suites/investigations @elastic/security-threat-hunting-investigations
-x-pack/test/security_solution_api_integration/test_suites/sources @elastic/security-detections-response
-
-# Security Solution sub teams
-
-## Security Solution sub teams - security-engineering-productivity
-## NOTE: It's important to keep this above other teams' sections because test automation doesn't process
-## the CODEOWNERS file correctly. See https://github.com/elastic/kibana/issues/173307#issuecomment-1855858929
-/x-pack/test/security_solution_cypress/* @elastic/security-engineering-productivity
-/x-pack/test/security_solution_cypress/cypress/* @elastic/security-engineering-productivity
-/x-pack/test/security_solution_cypress/cypress/tasks/login.ts @elastic/security-engineering-productivity
-/x-pack/test/security_solution_cypress/es_archives @elastic/security-engineering-productivity
-/x-pack/test/security_solution_playwright @elastic/security-engineering-productivity
-/x-pack/plugins/security_solution/scripts/run_cypress @MadameSheema @patrykkopycinski @maximpn @banderror
-
-## Security Solution sub teams - Threat Hunting
-
-/x-pack/plugins/security_solution/server/lib/siem_migrations @elastic/security-threat-hunting
-/x-pack/plugins/security_solution/common/siem_migrations @elastic/security-threat-hunting
-
-## Security Solution Threat Hunting areas - Threat Hunting Investigations
-
-/x-pack/plugins/security_solution/common/api/timeline @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/common/search_strategy/timeline @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations
-
-/x-pack/test/security_solution_cypress/cypress/e2e/investigations @elastic/security-threat-hunting-investigations
-/x-pack/test/security_solution_cypress/cypress/e2e/sourcerer/sourcerer_timeline.cy.ts @elastic/security-threat-hunting-investigations
-
-x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout @elastic/security-threat-hunting-investigations
-x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/security-threat-hunting-investigations
-
-/x-pack/plugins/security_solution/common/timelines @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/common/components/event_details @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/common/components/events_viewer @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/common/components/markdown_editor @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/detections/components/alerts_kpis @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/detections/components/alerts_table @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/detections/components/alerts_info @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/flyout/document_details @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/flyout/shared @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/notes @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/resolver @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/threat_intelligence @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/timelines @elastic/security-threat-hunting-investigations
-
-/x-pack/plugins/security_solution/server/lib/timeline @elastic/security-threat-hunting-investigations
-
-## Security Solution Threat Hunting areas - Threat Hunting Explore
-/x-pack/plugins/security_solution/common/api/tags @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/common/search_strategy/security_solution/matrix_histogram @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/common/search_strategy/security_solution/network @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/common/search_strategy/security_solution/user @elastic/security-threat-hunting-explore
-
-/x-pack/test/security_solution_cypress/cypress/e2e/explore @elastic/security-threat-hunting-explore
-/x-pack/test/security_solution_cypress/cypress/screens/hosts @elastic/security-threat-hunting-explore
-/x-pack/test/security_solution_cypress/cypress/screens/network @elastic/security-threat-hunting-explore
-/x-pack/test/security_solution_cypress/cypress/tasks/hosts @elastic/security-threat-hunting-explore
-/x-pack/test/security_solution_cypress/cypress/tasks/network @elastic/security-threat-hunting-explore
-
-/x-pack/plugins/security_solution/public/app/actions @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/charts @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/header_page @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/header_section @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/inspect @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/last_event_time @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/links @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/matrix_histogram @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/navigation @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/news_feed @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/overview_description_list @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/page @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/sidebar_header @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/tables @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/top_n @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/components/with_hover_actions @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/containers/matrix_histogram @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/common/lib/cell_actions @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/cases @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/explore @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/overview @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/public/dashboards @elastic/security-threat-hunting-explore
-
-/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/matrix_histogram @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network @elastic/security-threat-hunting-explore
-/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users @elastic/security-threat-hunting-explore
-
-/x-pack/test/functional/es_archives/auditbeat/overview @elastic/security-threat-hunting-explore
-/x-pack/test/functional/es_archives/auditbeat/users @elastic/security-threat-hunting-explore
-
-/x-pack/test/functional/es_archives/auditbeat/uncommon_processes @elastic/security-threat-hunting-explore
-
-## Generative AI owner connectors
-# OpenAI
-/x-pack/plugins/stack_connectors/public/connector_types/openai @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/server/connector_types/openai @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/common/openai @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-# Bedrock
-/x-pack/plugins/stack_connectors/public/connector_types/bedrock @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/server/connector_types/bedrock @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/common/bedrock @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-
-# Gemini
-/x-pack/plugins/stack_connectors/public/connector_types/gemini @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/server/connector_types/gemini @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-/x-pack/plugins/stack_connectors/common/gemini @elastic/security-generative-ai @elastic/obs-ai-assistant @elastic/appex-ai-infra
-
-# Inference API
-/x-pack/plugins/stack_connectors/public/connector_types/inference @elastic/appex-ai-infra @elastic/security-generative-ai @elastic/obs-ai-assistant
-/x-pack/plugins/stack_connectors/server/connector_types/inference @elastic/appex-ai-infra @elastic/security-generative-ai @elastic/obs-ai-assistant
-/x-pack/plugins/stack_connectors/common/inference @elastic/appex-ai-infra @elastic/security-generative-ai @elastic/obs-ai-assistant
-
-## Defend Workflows owner connectors
-/x-pack/plugins/stack_connectors/public/connector_types/sentinelone @elastic/security-defend-workflows
-/x-pack/plugins/stack_connectors/server/connector_types/sentinelone @elastic/security-defend-workflows
-/x-pack/plugins/stack_connectors/common/sentinelone @elastic/security-defend-workflows
-/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike @elastic/security-defend-workflows
-/x-pack/plugins/stack_connectors/common/crowdstrike @elastic/security-defend-workflows
-
-## Security Solution shared OAS schemas
-/x-pack/plugins/security_solution/common/api/model @elastic/security-detection-rule-management @elastic/security-detection-engine
-
-## Security Solution sub teams - Detection Rule Management
-/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/common/api/detection_engine/rule_management @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/common/detection_engine/rule_management @elastic/security-detection-rule-management
-
-/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/docs/rfcs/detection_response @elastic/security-detection-rule-management @elastic/security-detection-engine
-/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management @elastic/security-detection-rule-management
-/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management @elastic/security-detection-rule-management
-
-/x-pack/plugins/security_solution/public/common/components/health_truncate_text @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/common/components/links_to_docs @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/common/components/ml_popover @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/common/components/popover_items @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detection_engine/rule_management @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/components/modals/ml_job_upgrade_modal @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/components/rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/public/rules @elastic/security-detection-rule-management
-
-/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring @elastic/security-detection-rule-management
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine
-
-/x-pack/plugins/security_solution/scripts/openapi @elastic/security-detection-rule-management
-
-## Security Solution sub teams - Detection Engine
-/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/index_management @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/rule_preview @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/signals @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/cti @elastic/security-detection-engine
-/x-pack/plugins/security_solution/common/field_maps @elastic/security-detection-engine
-/x-pack/test/functional/es_archives/entity/risks @elastic/security-detection-engine
-/x-pack/test/functional/es_archives/entity/host_risk @elastic/security-detection-engine
-
-/x-pack/plugins/security_solution/public/sourcerer @elastic/security-threat-hunting-investigations
-/x-pack/plugins/security_solution/public/detection_engine/rule_creation @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detection_engine/rule_gaps @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/detections/pages/alerts @elastic/security-detection-engine
-/x-pack/plugins/security_solution/public/exceptions @elastic/security-detection-engine
-
-/x-pack/plugins/security_solution/server/lib/detection_engine/migrations @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index @elastic/security-detection-engine
-/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals @elastic/security-detection-engine
-
-/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine @elastic/security-detection-engine
-
-/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine @elastic/security-detection-engine
-/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/rule_gaps.ts @elastic/security-detection-engine
-/x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists @elastic/security-detection-engine
-/x-pack/test/functional/es_archives/asset_criticality @elastic/security-detection-engine
-
-## Security Threat Intelligence - Under Security Platform
-/x-pack/plugins/security_solution/public/common/components/threat_match @elastic/security-detection-engine
-
-## Security Solution sub teams - security-defend-workflows
-/x-pack/plugins/security_solution/public/management/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/common/lib/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/common/components/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/common/hooks/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/common/mock/endpoint @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/common/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/common/api/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/server/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/server/lists_integration/endpoint/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/server/lib/license/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/server/fleet_integration/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/scripts/endpoint/ @elastic/security-defend-workflows
-/x-pack/test/security_solution_endpoint/ @elastic/security-defend-workflows
-/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/ @elastic/security-defend-workflows
-/x-pack/test_serverless/shared/lib/security/kibana_roles/ @elastic/security-defend-workflows
-/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management @elastic/security-defend-workflows
-/x-pack/plugins/security_solution_serverless/public/upselling/pages/endpoint_management @elastic/security-defend-workflows
-/x-pack/plugins/security_solution_serverless/server/endpoint @elastic/security-defend-workflows
-
-## Security Solution sub teams - security-telemetry (Data Engineering)
-x-pack/plugins/security_solution/server/usage/ @elastic/security-data-analytics
-x-pack/plugins/security_solution/server/lib/telemetry/ @elastic/security-data-analytics
-
-## Security Solution sub teams - adaptive-workload-protection
-x-pack/plugins/security_solution/public/common/components/sessions_viewer @elastic/kibana-cloud-security-posture
-x-pack/plugins/security_solution/public/kubernetes @elastic/kibana-cloud-security-posture
-
-## Security Solution sub teams - Entity Analytics
-x-pack/plugins/security_solution/common/entity_analytics @elastic/security-entity-analytics
-x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score @elastic/security-entity-analytics
-x-pack/plugins/security_solution/public/entity_analytics @elastic/security-entity-analytics
-x-pack/plugins/security_solution/server/lib/entity_analytics @elastic/security-entity-analytics
-x-pack/plugins/security_solution/server/lib/risk_score @elastic/security-entity-analytics
-x-pack/test/security_solution_api_integration/test_suites/entity_analytics @elastic/security-entity-analytics
-x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics @elastic/security-entity-analytics
-x-pack/plugins/security_solution/public/flyout/entity_details @elastic/security-entity-analytics
-x-pack/plugins/security_solution/common/api/entity_analytics @elastic/security-entity-analytics
-
-## Security Solution sub teams - GenAI
-x-pack/test/security_solution_api_integration/test_suites/genai @elastic/security-generative-ai
-
-# Security Defend Workflows - OSQuery Ownership
-x-pack/plugins/osquery @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions @elastic/security-defend-workflows
-/x-pack/plugins/security_solution/public/detections/components/osquery @elastic/security-defend-workflows
-
-# Cloud Defend
-/x-pack/plugins/security_solution/public/cloud_defend @elastic/kibana-cloud-security-posture
-
-# Cloud Security Posture
-x-pack/packages/kbn-cloud-security-posture @elastic/kibana-cloud-security-posture
-/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.* @elastic/kibana-cloud-security-posture
-/x-pack/plugins/security_solution/public/cloud_security_posture @elastic/kibana-cloud-security-posture
-/x-pack/test/api_integration/apis/cloud_security_posture/ @elastic/kibana-cloud-security-posture
-/x-pack/test/cloud_security_posture_functional/ @elastic/kibana-cloud-security-posture
-/x-pack/test/cloud_security_posture_api/ @elastic/kibana-cloud-security-posture
-/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/ @elastic/kibana-cloud-security-posture
-/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.basic.ts @elastic/kibana-cloud-security-posture
-/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.essentials.ts @elastic/kibana-cloud-security-posture
-/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/ @elastic/kibana-cloud-security-posture
-/x-pack/plugins/fleet/public/components/cloud_security_posture @elastic/fleet @elastic/kibana-cloud-security-posture
-/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/cloud_security_posture @elastic/fleet @elastic/kibana-cloud-security-posture
-/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/setup_technology.* @elastic/fleet @elastic/kibana-cloud-security-posture
-/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/components/cloud_posture_third_party_support_callout.* @elastic/fleet @elastic/kibana-cloud-security-posture
-/x-pack/plugins/security_solution/public/cloud_security_posture @elastic/kibana-cloud-security-posture
-/x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/misconfiguration_contextual_flyout.cy.ts @elastic/kibana-cloud-security-posture
-/x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/vulnerabilities_contextual_flyout.cy.ts @elastic/kibana-cloud-security-posture
-
-# Security Solution onboarding tour
-/x-pack/plugins/security_solution/public/common/components/guided_onboarding @elastic/security-threat-hunting-explore
-
-# Security Service Integrations
-x-pack/plugins/security_solution/common/security_integrations @elastic/security-service-integrations
-x-pack/plugins/security_solution/public/security_integrations @elastic/security-service-integrations
-x-pack/plugins/security_solution/server/security_integrations @elastic/security-service-integrations
-x-pack/plugins/security_solution/server/lib/security_integrations @elastic/security-service-integrations
-
-# Kibana design
-# scss overrides should be below this line for specificity
-**/*.scss @elastic/kibana-design
-
-# Observability design
-/x-pack/plugins/fleet/**/*.scss @elastic/observability-design
-/x-pack/plugins/monitoring/**/*.scss @elastic/observability-design
-
-# Ent. Search design
-/x-pack/plugins/enterprise_search/**/*.scss @elastic/search-design
-
-# Security design
-/x-pack/plugins/endpoint/**/*.scss @elastic/security-design
-/x-pack/plugins/security_solution/**/*.scss @elastic/security-design
-/x-pack/plugins/security_solution_ess/**/*.scss @elastic/security-design
-/x-pack/plugins/security_solution_serverless/**/*.scss @elastic/security-design
-
-# Logstash
-#CC# /x-pack/plugins/logstash/ @elastic/logstash
-
-# EUI team
-/src/plugins/kibana_react/public/page_template/ @elastic/eui-team @elastic/appex-sharedux
-
-# Landing page for guided onboarding in Home plugin
-/src/plugins/home/public/application/components/guided_onboarding @elastic/appex-sharedux
-
-# Changes to translation files should not ping code reviewers
-x-pack/plugins/translations/translations
-
-# Profiling api integration testing
-x-pack/test/profiling_api_integration @elastic/obs-ux-infra_services-team
-
-# Observability shared profiling
-x-pack/plugins/observability_solution/observability_shared/public/components/profiling @elastic/obs-ux-infra_services-team
-
-# Shared UX
-/x-pack/test_serverless/functional/test_suites/common/spaces/spaces_selection.ts @elastic/appex-sharedux
-/x-pack/test_serverless/functional/test_suites/common/spaces/index.ts @elastic/appex-sharedux
-packages/react @elastic/appex-sharedux
-test/functional/page_objects/solution_navigation.ts @elastic/appex-sharedux
-/x-pack/test_serverless/functional/page_objects/svl_common_navigation.ts @elastic/appex-sharedux
-/x-pack/test_serverless/functional/fixtures/kbn_archiver/reporting @elastic/appex-sharedux
-/x-pack/test_serverless/functional/page_objects/svl_sec_landing_page.ts @elastic/appex-sharedux
-/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts @elastic/appex-sharedux
-
-# OpenAPI spec files
-oas_docs/.spectral.yaml @elastic/platform-docs
-oas_docs/kibana.info.serverless.yaml @elastic/platform-docs
-oas_docs/kibana.info.yaml @elastic/platform-docs
-
-# Plugin manifests
-/src/plugins/**/kibana.jsonc @elastic/kibana-core
-/x-pack/plugins/**/kibana.jsonc @elastic/kibana-core
-
-# Temporary Encrypted Saved Objects (ESO) guarding
-# This additional code-ownership is meant to be a temporary precaution to notify the Kibana platform security team
-# when an encrypted saved object is changed. Very careful review is necessary to ensure any changes are compatible
-# with serverless zero downtime upgrades (ZDT). This section should be removed only when proper guidance for
-# maintaining ESOs has been documented and consuming teams have acclimated to ZDT changes.
-x-pack/plugins/actions/server/saved_objects/index.ts @elastic/response-ops @elastic/kibana-security
-x-pack/plugins/alerting/server/saved_objects/index.ts @elastic/response-ops @elastic/kibana-security
-x-pack/plugins/fleet/server/saved_objects/index.ts @elastic/fleet @elastic/kibana-security
-x-pack/plugins/observability_solution/synthetics/server/saved_objects/saved_objects.ts @elastic/obs-ux-management-team @elastic/kibana-security
-x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts @elastic/obs-ux-management-team @elastic/kibana-security
-x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_param.ts @elastic/obs-ux-management-team @elastic/kibana-security
-
-# Specialised GitHub workflows for the Observability robots
-/.github/workflows/deploy-my-kibana.yml @elastic/observablt-robots @elastic/kibana-operations
-/.github/workflows/oblt-github-commands @elastic/observablt-robots @elastic/kibana-operations
-/.github/workflows/undeploy-my-kibana.yml @elastic/observablt-robots @elastic/kibana-operations
-
-####
-## These rules are always last so they take ultimate priority over everything else
-####
diff --git a/config/serverless.es.yml b/config/serverless.es.yml
index 326b5f2d403bd..481b46155dc64 100644
--- a/config/serverless.es.yml
+++ b/config/serverless.es.yml
@@ -10,7 +10,6 @@ xpack.observability.enabled: false
xpack.securitySolution.enabled: false
xpack.serverless.observability.enabled: false
enterpriseSearch.enabled: false
-xpack.fleet.enabled: false
xpack.observabilityAIAssistant.enabled: false
xpack.osquery.enabled: false
@@ -88,4 +87,15 @@ xpack.searchInferenceEndpoints.ui.enabled: false
xpack.search.notebooks.catalog.url: https://elastic-enterprise-search.s3.us-east-2.amazonaws.com/serverless/catalog.json
# Semantic text UI
-xpack.index_management.dev.enableSemanticText: false
+xpack.index_management.dev.enableSemanticText: true
+
+# AI Assistant config
+xpack.observabilityAIAssistant.enabled: true
+xpack.searchAssistant.enabled: true
+xpack.searchAssistant.ui.enabled: true
+xpack.observabilityAIAssistant.scope: "search"
+xpack.observabilityAIAssistant.enableKnowledgeBase: false
+aiAssistantManagementSelection.preferredAIAssistantType: "observability"
+xpack.observabilityAiAssistantManagement.logSourcesEnabled: false
+xpack.observabilityAiAssistantManagement.spacesEnabled: false
+xpack.observabilityAiAssistantManagement.visibilityEnabled: false
diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml
index 1146a9280ac4e..91f1227ce0d9f 100644
--- a/config/serverless.oblt.yml
+++ b/config/serverless.oblt.yml
@@ -183,6 +183,7 @@ xpack.apm.featureFlags.storageExplorerAvailable: false
## Set the AI Assistant type
aiAssistantManagementSelection.preferredAIAssistantType: "observability"
+xpack.observabilityAIAssistant.scope: "observability"
# Specify in telemetry the project type
telemetry.labels.serverless: observability
diff --git a/dev_docs/tutorials/saved_objects.mdx b/dev_docs/tutorials/saved_objects.mdx
index f93d774e663f3..233795374f2e9 100644
--- a/dev_docs/tutorials/saved_objects.mdx
+++ b/dev_docs/tutorials/saved_objects.mdx
@@ -18,7 +18,7 @@ import { SavedObjectsType } from 'src/core/server';
export const dashboardVisualization: SavedObjectsType = {
name: 'dashboard_visualization', [1]
- hidden: true,
+ hidden: true, [3]
switchToModelVersionAt: '8.10.0', // this is the default, feel free to omit it unless you intend to switch to using model versions before 8.10.0
namespaceType: 'multiple-isolated', [2]
mappings: {
@@ -46,6 +46,9 @@ these should follow our API URL path convention and always be written in snake c
that objects of this type can only exist in a single space. See
for more information.
+[3] This field determines whether repositories have access to the type by default. Hidden types will not be automatically exposed via the Saved Objects Client APIs.
+Hidden types must be listed in `SavedObjectsClientProviderOptions[includedHiddenTypes]` to be accessible by the client.
+
**src/plugins/my_plugin/server/saved_objects/index.ts**
```ts
@@ -301,4 +304,4 @@ export const foo: SavedObjectsType = {
[1] Needs to be `false` to use the `hiddenFromHttpApis` option
-[2] Set this to `true` to build your own HTTP API and have complete control over the route handler.
\ No newline at end of file
+[2] Set this to `true` to build your own HTTP API and have complete control over the route handler.
diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc
index 978461e197ef1..981834b68eda6 100644
--- a/docs/CHANGELOG.asciidoc
+++ b/docs/CHANGELOG.asciidoc
@@ -10,6 +10,8 @@
Review important information about the {kib} 8.x releases.
+* <>
+* <>
* <>
* <>
* <>
@@ -77,6 +79,386 @@ Review important information about the {kib} 8.x releases.
include::upgrade-notes.asciidoc[]
+
+[[release-notes-8.16.0]]
+== {kib} 8.16.0
+
+For information about the {kib} 8.16.0 release, review the following information.
+
+[float]
+[[deprecations-8.16.0]]
+=== Deprecations
+
+The following functionality is deprecated in 8.16.0, and will be removed in 9.0.0.
+Deprecated functionality does not have an immediate impact on your application, but we strongly recommend
+you make the necessary updates after you upgrade to 8.16.0.
+
+[discrete]
+.The Logs Stream is now hidden by default in favor of the Logs Explorer app.
+[%collapsible]
+====
+*Details* +
+You can find the Logs Explorer app in the navigation menu under Logs > Explorer, or as a separate tab in Discover. For more information, refer to ({kibana-pull}194519[#194519]).
+
+*Impact* +
+You can still show the Logs Stream app again by navigating to Stack Management > Advanced Settings and by enabling the `observability:enableLogsStream` setting.
+====
+
+[discrete]
+.Deprecates the Observability AI Assistant specific advanced setting `observability:aiAssistantLogsIndexPattern`.
+[%collapsible]
+====
+*Details* +
+The Observability AI Assistant specific advanced setting for Logs index patterns `observability:aiAssistantLogsIndexPattern` is deprecated and no longer used. The AI Assistant will now use the existing **Log sources** setting `observability:logSources` instead. For more information, refer to ({kibana-pull}192003[#192003]).
+
+//*Impact* +
+//!!TODO!!
+====
+
+
+
+[float]
+[[features-8.16.0]]
+=== Features
+{kib} 8.16.0 adds the following new and notable features.
+
+AGPL license::
+* Adds AGPL 3.0 license ({kibana-pull}192025[#192025]).
+Alerting::
+* Adds TheHive connector ({kibana-pull}180138[#180138]).
+* Adds flapping settings per rule ({kibana-pull}189341[#189341]).
+* Efficiency improvements in the Kibana task manager and alerting frameworks ({kibana-issue}188194[#188194])
+Cases::
+* Support TheHive connector in cases ({kibana-pull}180931[#180931]).
+Dashboards and visualizations::
+* Adds the ability to star your favorite dashboards and quickly find them ({kibana-pull}189285[#189285]).
+* Adds a chart showing usage statistics to the dashboard details ({kibana-pull}187993[#187993]).
+* Adds metric styling options in *Lens* ({kibana-pull}186929[#186929]).
+* Adds support for coloring table cells by terms with color mappings assignments. This is supported for both Rows and Metric dimensions ({kibana-pull}189895[#189895]).
+Data ingestion and Fleet::
+* Support content packages in UI ({kibana-pull}195831[#195831]).
+* Advanced agent monitoring options UI for HTTP endpoint and diagnostics ({kibana-pull}193361[#193361]).
+* Adds option to have Kafka dynamic topics in outputs ({kibana-pull}192720[#192720]).
+* Adds support for GeoIP processor databases in Ingest Pipelines ({kibana-pull}190830[#190830]).
+// !!TODO!! The above PR had a lengthy release note description:
+// The Ingest Pipelines app now supports adding and managing databases for the GeoIP processor. Additionally, the pipeline creation flow now includes support for the IP Location processor.
+* Adds agentless ux creation flow ({kibana-pull}189932[#189932]).
+* Enable feature flag for reusable integration policies ({kibana-pull}187153[#187153]).
+Discover::
+* When writing ES|QL queries, you now get recommendations to help you get started ({kibana-pull}194418[#194418]).
+* Enhances the inline documentation experience in ES|QL mode ({kibana-pull}192156[#192156]).
+* Adds the ability to break down the histogram by field for ES|QL queries in Discover ({kibana-pull}193820[#193820]).
+* Adds a summary column to the Documents table when exploring log data in Discover ({kibana-pull}192567[#192567]).
+* Adds row indicators to the Documents table when exploring log data in Discover ({kibana-pull}190676[#190676]).
+* Moves the button to switch between ES|QL and classic modes to the toolbar ({kibana-pull}188898[#188898]).
+* Adds density settings to allow further customization of the Documents table layout ({kibana-pull}188495[#188495]).
+* Enables the time picker for indices without the @timestamp field when editing ES|QL queries ({kibana-pull}184361[#184361]).
+Elastic Observability solution::
+* Show monitors from all permitted spaces !! ({kibana-pull}196109[#196109]).
+* Adds experimental logs overview to the observability hosts and service overviews ({kibana-pull}195673[#195673]).
+* Show alerts for entities ({kibana-pull}195250[#195250]).
+* Create sub-feature role to manage APM settings write permissions ({kibana-pull}194419[#194419]).
+* Adds related alerts tab to the alert details page ({kibana-pull}193263[#193263]).
+* Adds labels field !! ({kibana-pull}193250[#193250]).
+* Implement _ignored root cause identification flow ({kibana-pull}192370[#192370]).
+* Enable page for synthetics ({kibana-pull}191846[#191846]).
+* Settings add config to enable default rules ({kibana-pull}190800[#190800]).
+* Added alerts page ({kibana-pull}190751[#190751]).
+* Monitor list add bulk delete ({kibana-pull}190674[#190674]).
+* Delete monitor API via id param !! ({kibana-pull}190210[#190210]).
+* Enable metrics and traces in the Data Set Quality page ({kibana-pull}190043[#190043]).
+* Adds alert grouping functionality to the observability alerts page ({kibana-pull}189958[#189958]).
+* Adds a new SLO Burn Rate embeddable ({kibana-pull}189429[#189429]).
+* The Slack Web API Alert Connector is now supported as a default connector for Synthetics and Uptime rules ({kibana-pull}188437[#188437]).
+* Adds option to enable backfill transform ({kibana-pull}188379[#188379]).
+* Save the ECS group by fields at the AAD root level ({kibana-pull}188241[#188241]).
+* Adds last value aggregation ({kibana-pull}187082[#187082]).
+* Improve synthetics alerting ({kibana-pull}186585[#186585]).
+* Make overview grid embeddable ({kibana-pull}160597[#160597]).
+Elastic Security solution::
+For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
+Kibana security::
+* Adds an API endpoint `POST security/roles` that can be used to bulk create or update roles ({kibana-pull}189173[#189173]).
+* Automatic Import can now create integrations for logs in the CSV format ({kibana-pull}194386[#194386]).
+* Adds an error handling framework to Automatic Import that provides error messages with more context to user ({kibana-pull}193577[#193577]).
+* When running in FIPS mode, Kibana forbids usage of PKCS12 configuration options ({kibana-pull}192627[#192627]).
+Machine Learning::
+* Adds new section for creating daylight saving time calendar events ({kibana-pull}193605[#193605]).
+* Anomaly Detection: Adds a page to list supplied job configurations ({kibana-pull}191564[#191564]).
+* Redesigns start/update model deployment dialog to support adaptive resources ({kibana-pull}190243[#190243]).
+* File upload: Adds support for PDF files ({kibana-pull}186956[#186956]).
+* Adds Pattern analysis embeddable for dashboards ({kibana-pull}186539[#186539]).
+Management::
+* This release introduces a fresh, modern look for the console, now featuring the Monaco editor. We've added a file import and export functionality, and the console is fully responsive with stackable panels for a smoother experience. New buttons allow for quick clearing of editor values and output. Additionally, the history and config tabs were improved to enhance usability. ({kibana-pull}189748[#189748]).
+
+For more information about the features introduced in 8.16.0, refer to <>.
+
+[[enhancements-and-bug-fixes-v8.16.0]]
+=== Enhancements and bug fixes
+
+For detailed information about the 8.16.0 release, review the enhancements and bug fixes.
+
+
+[float]
+[[enhancement-v8.16.0]]
+=== Enhancements
+Alerting::
+* Allow users to select template while adding a case action in the rule ({kibana-pull}190701[#190701]).
+* New full-page rule form in the Stack Management app ({kibana-pull}194655[#194655]).
+Dashboards and visualizations::
+* Adds compressed style for dashboard controls ({kibana-pull}190636[#190636]).
+* Adds the ability to duplicate a managed dashboard from its `managed` badge ({kibana-pull}189404[#189404]).
+* Adds the ability to expand the height of various sections in the Edit ES|QL visualization flyout ({kibana-pull}193453[#193453]).
+* Improves the query authoring experience when editing an ES|QL visualization ({kibana-pull}186875[#186875]).
+* Syncs the cursor for time series charts powered by ES|QL ({kibana-pull}192837[#192837]).
+* Gauge and metric Lens visualizations are no longer experimental ({kibana-pull}192359[#192359]).
+* Sets gauge default palette to "temperature" in *Lens* ({kibana-pull}191853[#191853]).
+* Supports fuzzy search on field pickers and field lists in *Lens* ({kibana-pull}186894[#186894]).
+Data ingestion and Fleet::
+* Update max supported package version ({kibana-pull}196551[#196551]).
+* Adds additional columns to Agent Logs UI ({kibana-pull}192262[#192262]).
+* Show `+build` versions for Elastic Agent upgrades ({kibana-pull}192171[#192171]).
+* Added format parameter to `agent_policies` APIs ({kibana-pull}191811[#191811]).
+* Adds toggles for `agent.monitoring.http.enabled` and `agent.monitoring.http.buffer.enabled` to agent policy advanced settings ({kibana-pull}190984[#190984]).
+* Support integration policies without agent policy references (aka orphaned integration policies) ({kibana-pull}190649[#190649]).
+* Changed the UX of the Edit Integration Policy page to update agent policies ({kibana-pull}190583[#190583]).
+* Allow `traces` to be added to the `monitoring_enabled` array in Agent policies ({kibana-pull}189908[#189908]).
+* Create task that periodically unenrolls inactive agents ({kibana-pull}189861[#189861]).
+* Adds setup technology selector to add integration page ({kibana-pull}189612[#189612]).
+* Support integration-level outputs ({kibana-pull}189125[#189125]).
+Discover::
+* Renames the Documents tab to Results in ES|QL mode ({kibana-pull}197833[#197833]).
+* Adds a cluster details tab for CCS data sources when inspecting requests in ES|QL mode ({kibana-pull}195373[#195373]).
+* Adds the query time to the list of statistics when inspecting requests in ES|QL mode ({kibana-pull}194806[#194806]).
+* Improves display of error messages in ES|QL mode ({kibana-pull}191320[#191320]).
+* Adds a help menu to the ES|QL mode ({kibana-pull}190579[#190579]).
+* Initializes the ES|QL editor with time named parameters when switching from the classic mode with a data view without @timestamp ({kibana-pull}189367[#189367]).
+* Adds the ability to select multiple rows from the Documents table using "Shift + Select" ({kibana-pull}193619[#193619]).
+* Adds the ability to filter on field names and values in the expanded document view ({kibana-pull}192299[#192299]).
+* Adds filtering for selected fields ({kibana-pull}191930[#191930]).
+* Adds a dedicated column to the document viewer flyout for pinning and unpinning rows ({kibana-pull}190344[#190344]).
+* Improves absolute column width handling ({kibana-pull}190288[#190288]).
+* Allows filtering by field type in the document viewer flyout ({kibana-pull}189981[#189981]).
+* Improves the document viewer flyout to remember the last active tab ({kibana-pull}189806[#189806]).
+* Adds ability to hide fields with null values from the document viewer ({kibana-pull}189601[#189601]).
+* Adds the ability to copy selected rows as text ({kibana-pull}189512[#189512]).
+* Adds a log level badge cell renderer to the Discover logs profile ({kibana-pull}188281[#188281]).
+* Shows ECS field descriptions in Discover and adds markdown support for field descriptions ({kibana-pull}187160[#187160]).
+* Adds support for the Log overview tab to the Discover log profile ({kibana-pull}186680[#186680]).
+* Adds default app state extension and log integration data source profiles ({kibana-pull}186347[#186347]).
+* Allows to select and deselect all rows in the grid at once ({kibana-pull}184241[#184241]).
+* Limits the height of long field values by default ({kibana-pull}183736[#183736]).
+ES|QL editor::
+* Changes the auto-focus to be on the ES|QL editor when loading the page ({kibana-pull}193800[#193800]).
+* Updates the autocomplete behavior for `SORT` to be in line with other field-list-based experiences like `KEEP` in ES|QL queries ({kibana-pull}193595[#193595]).
+* Adds `all (*)` to the list of suggestions for `COUNT` functions in ES|QL queries ({kibana-pull}192205[#192205]).
+* Improves ES|QL autocomplete suggestions for `case()` expressions ({kibana-pull}192135[#192135]).
+* Opens suggestions automatically for sources lists and `ENRICH` functions when writing ES|QL queries ({kibana-pull}191312[#191312]).
+* Improves wrapping and readability for ES|QL queries ({kibana-pull}191269[#191269]).
+* Improves suggestions based on previous function arguments and date suggestions for `bucket` functions in ES|QL queries ({kibana-pull}190828[#190828]).
+* Show the `LIMIT` information in the ES|QL editor's footer ({kibana-pull}190498[#190498]).
+* Opens suggestions automatically for field lists in ES|QL queries ({kibana-pull}190466[#190466]).
+* Integrates a time picker for date fields into the ES|QL editor ({kibana-pull}187047[#187047]).
+* Improves ES|QL support for Elasticsearch sub-types in AST for both validation and autocomplete ({kibana-pull}189689[#189689]).
+* Adds ECS information to the ES|QL editor suggestions and prioritizes fields based on ECS information on the editor ({kibana-pull}187922[#187922]).
+* Improves `BY` suggestions in ES|QL queries to include pipe and comma operators ({kibana-pull}189458[#189458]).
+* Makes the suggestion menu open automatically in more places in ES|QL queries ({kibana-pull}189585[#189585]).
+* Adds hints upon hover for function argument types and time system types ({kibana-pull}191881[#191881]).
+Elastic Observability solution::
+* Enable Kubernetes Otel flow ({kibana-pull}196531[#196531]).
+* Pass function responses when copying conversation ({kibana-pull}195635[#195635]).
+* Turn 'fast filter' on by default and ensure tech preview badge shows when turned on ({kibana-pull}193710[#193710]).
+* Custom Service Name Cell ({kibana-pull}192381[#192381]).
+* Remove manage_transform and manage_ingest_pipeline privilege requirements ({kibana-pull}190572[#190572]).
+* Create new formula for CPU Usage metric ({kibana-pull}189261[#189261]).
+* Adds customizable header for quickstart flows ({kibana-pull}188340[#188340]).
+* Change Kubernetes guide to link to observability onboarding ({kibana-pull}188322[#188322]).
+* Adds KB user instructions ({kibana-pull}187607[#187607]).
+* Refactor Synthetics Overview page for increased scalability ({kibana-pull}187092[#187092]).
+* Improve synthetics alerting ({kibana-pull}186585[#186585]).
+* Annotations Initial phase ({kibana-pull}184325[#184325]).
+Elastic Search solution::
+* Adds Alibaba AI Search to Deletion, search and filtering of inference endpoints ({kibana-pull}190783[#190783]).
+Elastic Security solution::
+For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
+Kibana security::
+* Enhances Open API spec generation to include Route Security Authorization if available ({kibana-pull}197001[#197001]).
+* Automatic Import now analyzes larger number of samples to generate an integration ({kibana-pull}196233[#196233]).
+* Extended `KibanaRouteOptions` to include security configuration at the route definition level ({kibana-pull}191973[#191973]).
+* Adds several UX improvements to the management of Spaces in **Stack Management > Spaces**, including the ability to assign Roles to an existing Space. ({kibana-pull}191795[#191795]).
+* Displays an "invalid file" error when selecting unsupported file types for the user profile image ({kibana-pull}190077[#190077]).
+* Displays a warning to users whenever role mappings with empty `any` or `all` rules are created or updated ({kibana-pull}189340[#189340]).
+* Adds support for CHIPS cookies ({kibana-pull}188519[#188519]).
+* Adds support for Permissions Policy reporting ({kibana-pull}186892[#186892]).
+Machine Learning::
+* File upload: enables check for model allocations ({kibana-pull}197395[#197395]).
+* Data visualizer: Adds icons for semantic text, sparse vector, and dense vector ({kibana-pull}196069[#196069]).
+* Updates vCPUs ranges for start model deployment ({kibana-pull}195617[#195617]).
+* Adds ML tasks to the Kibana audit log ({kibana-pull}195120[#195120]).
+* Anomaly Detection: adds ability to delete forecasts from job ({kibana-pull}194896[#194896]).
+* Updates for Trained Models table layout and model states ({kibana-pull}194614[#194614]).
+* Log rate analysis: ensures ability to sort on Log rate change ({kibana-pull}193501[#193501]).
+* Single Metric Viewer: Enables cross-filtering for 'by', 'over', and 'partition' field values ({kibana-pull}193255[#193255]).
+* Adds link to anomaly detection configurations from Integration > Assets tab ({kibana-pull}193105[#193105]).
+* Anomaly Explorer: Displays markers for scheduled events in distribution-type anomaly charts ({kibana-pull}192377[#192377]).
+* Serverless Security: Adds ES|QL visualizer menu item to the nav ({kibana-pull}192314[#192314]).
+* Updates icons for Machine Learning embeddable dashboard panel types ({kibana-pull}191718[#191718]).
+* AIOps: Uses no minimum time range by default for pattern analysis ({kibana-pull}191192[#191192]).
+* Links to ML assets from Integration > Assets tab ({kibana-pull}189767[#189767]).
+* Utilizes the `DataViewLazy` in ML plugin ({kibana-pull}189188[#189188]).
+* AIOps: Chunks groups of field candidates into single queries for top items and histograms ({kibana-pull}189155[#189155]).
+* AIOps: Updates fields filter popover to be able to filter fields from analysis (not just grouping) ({kibana-pull}188913[#188913]).
+* Single Metric Viewer embeddable: adds forecasting ({kibana-pull}188791[#188791]).
+* Adds new custom rule action to force time shift ({kibana-pull}188710[#188710]).
+* AIOps: Chunks groups of field candidates into single queries ({kibana-pull}188137[#188137]).
+* AIOps: Adds log rate analysis to alert details page contextual insight ({kibana-pull}187690[#187690]).
+* Adds ability to toggle visibility for empty fields when choosing an aggregation or field in Anomaly detection, data frame analytics ({kibana-pull}186670[#186670]).
+* Anomaly Detection: Adds popover links menu to anomaly explorer charts ({kibana-pull}186587[#186587]).
+Management::
+* Adds an option to show or hide empty fields in dropdown lists in Transform ({kibana-pull}195485[#195485]).
+* Adds a confirmation dialog when deleting a transform from a warning banner ({kibana-pull}192080[#192080]).
+* Improves the autocomplete to suggest fields for the `dense_vector` type in Console ({kibana-pull}190769[#190769]).
+* Adds the ability to view an ILM policy details in read-only mode ({kibana-pull}186955[#186955]).
+
+[float]
+[[fixes-v8.16.0]]
+=== Bug fixes
+Alerting::
+* Show up to 1k maintenance windows in the UI ({kibana-pull}198504[#198504])
+* Skip scheduling actions for the alerts without scheduledActions ({kibana-pull}195948[#195948]).
+* Fixes Stack Alerts feature API access control ({kibana-pull}193948[#193948]).
+* Remove unintended internal find routes API with public access ({kibana-pull}193757[#193757]).
+* Convert timestamp before passing to validation ({kibana-pull}192379[#192379]).
+* Grouped over field is not populated correctly when editing a rule ({kibana-pull}192297[#192297]).
+* Mark slack rate-limiting errors as user errors ({kibana-pull}192200[#192200]).
+* Fixes maintenance window filtering with wildcards ({kibana-pull}194777[#194777]).
+* Fixes search filters in rules, alerts, and maintenance windows ({kibana-pull}193623[#193623]).
+Cases::
+* Use absolute time ranges when adding visualizations to a case ({kibana-pull}189168[#189168]).
+* Fixes custom fields with long text that could not be edited in the UI ({kibana-pull}190490[#190490]).
+Dashboards and visualizations::
+* Correctly show full screen mode when opening a dashboard or panel from a URL that contains the fullScreenMode parameter ({kibana-pull}196275[#196275]) and ({kibana-pull}190086[#190086]).
+* Fixes an issue that could cause a the dashboard list to stay in loading state ({kibana-pull}195277[#195277]).
+* Correctly use the same field icons as Discover ({kibana-pull}194095[#194095]).
+* Fixes an issue where panels could disappear from a dashboard when canceling edit after saving the dashboard ({kibana-pull}193914[#193914]).
+* Adds scroll margin to panels ({kibana-pull}193430[#193430]).
+* Fixes an issue with the breadcrumb update icon not working when clicked ({kibana-pull}192240[#192240]).
+* Fixes an issue where unsaved changes could remain after saving a dashboard ({kibana-pull}190165[#190165]).
+* Fixes an issue causing the flyout to close when canceling the Save to library action ({kibana-pull}188995[#188995]).
+* Fixes incomplete string escaping and encoding in *TSVB* ({kibana-pull}196248[#196248]).
+* Fixes an issue where label truncation in heat map legends was not working properly in *Lens* ({kibana-pull}195928[#195928]).
+* Fixes an issue where the color picker and axis side settings were incorrectly available in the breakdown dimension editor for XY charts in *Lens* ({kibana-pull}195845[#195845]).
+* Fixes the tooltip position on faceted charts in *Vega* ({kibana-pull}194620[#194620]).
+* Fixes the filter out legend action for ES|QL visualizations ({kibana-pull}194374[#194374]).
+* Fixes element sizing issues in full screen mode in *Vega* ({kibana-pull}194330[#194330]).
+* Fixes the default cell text alignment setting for non-numeric field types in *Lens* ({kibana-pull}193886[#193886]).
+* Limits the height of the query bar input for long KQL queries ({kibana-pull}193737[#193737]).
+* Makes the title correctly align left after removing an icon in **Lens** metric charts ({kibana-pull}191057[#191057]).
+* Fixes a "No data" error caused by the "Collapse by" setting in **Lens** metric charts ({kibana-pull}190966[#190966]).
+* Fixes an issue causing the color of a cell to disappear when clicking the "Expand cell" icon in *Lens* ({kibana-pull}190618[#190618]).
+* Removes unnecessary index pattern references from Lens charts ({kibana-pull}190296[#190296]).
+* Fixes several accessibility issues ({kibana-pull}188624[#188624]).
+Data ingestion and Fleet::
+* Revert "Fix client-side validation for agent policy timeout fields" ({kibana-pull}194338[#194338]).
+* Adds proxy arguments to install snippets ({kibana-pull}193922[#193922]).
+* Rollover if dimension mappings changed in dynamic templates ({kibana-pull}192098[#192098]).
+Discover::
+* Fixes an issue with search highlighting ({kibana-pull}197607[#197607]).
+* Correctly pass embeddable filters to the Surrounding Documents page ({kibana-pull}197190[#197190]).
+* Fixes trailing decimals dropped from client side validation messages ({kibana-pull}196570[#196570]).
+* Fixes several validation issues and creates an expression type evaluator for ES|QL queries ({kibana-pull}195989[#195989]).
+* Fixes duplicate autocomplete suggestions for `WHERE` clauses and suggestions with no space in between in ES|QL queries ({kibana-pull}195771[#195771]).
+* Improves variable and field name handling in ES|QL queries ({kibana-pull}195149[#195149]).
+* Fixes an issue where the Unified Field List popover could get cut off ({kibana-pull}195147[#195147]).
+* Fixes the width for saved object type columns ({kibana-pull}194388[#194388]).
+* Adds tooltips to Discover button icons ({kibana-pull}192963[#192963]).
+* Excludes inactive integration data stream suggestions ({kibana-pull}192953[#192953]).
+* Fixes new variables being suggested in incorrect places ({kibana-pull}192405[#192405]).
+* Only log requests in the Inspector when they completed ({kibana-pull}191232[#191232]).
+ES|QL editor::
+* Fixes an issue where the autocomplete suggestions could cause duplicate entries in ES|QL queries ({kibana-pull}190465[#190465]).
+* Fixes several styling issues in the ES|QL editor ({kibana-pull}190170[#190170]).
+Elastic Observability solution::
+* Change the slice outcome from bad to good whenever there is no data during the slice window ({kibana-pull}196942[#196942]).
+* Make agent names generic with otel-native mode ({kibana-pull}195594[#195594]).
+* Avoid showing unnecessary error toast ({kibana-pull}195331[#195331]).
+* Use `fields` instead of `_source` on APM queries ({kibana-pull}195242[#195242]).
+* Fixes ping heatmap payload ({kibana-pull}195107[#195107]).
+* Fixes rule modal warnings in the developer console ({kibana-pull}194766[#194766]).
+* Avoid AI assistant overlaying AI conversations ({kibana-pull}194722[#194722]).
+* Improve loading state for metric items ({kibana-pull}192930[#192930]).
+* Fixes issue where heatmap UI crashes on undefined histogram data ({kibana-pull}192508[#192508]).
+* Calculate the latest metadata lookback based on the calculated history delay ({kibana-pull}191324[#191324]).
+* Remove dedicated language setting ({kibana-pull}190983[#190983]).
+* Change latest metric to use @timestamp ({kibana-pull}190417[#190417]).
+* Prevent initial error when adding filters ({kibana-pull}190214[#190214]).
+* Display error message when failing to enable machine learning anomaly detection in Inventory ({kibana-pull}189627[#189627]).
+* Convert route validation to Zod ({kibana-pull}188691[#188691]).
+* Fixes functions table height in asset details view profiling tab ({kibana-pull}188650[#188650]).
+* Adds four decimal places float validation for transaction_sample_rate ({kibana-pull}188555[#188555]).
+* Centralize data fetching and better control of when data can be refreshed ({kibana-pull}187736[#187736]).
+* Fixes heatmap on monitor detail/history page for very large doc counts ({kibana-pull}184177[#184177]).
+* Adds settings to serverless allowlist ({kibana-pull}190098[#190098]).
+* Set missing group to false by default and show checkbox value in disable mode ({kibana-pull}188402[#188402]).
+Elastic Search solution::
+* Fixes an issue with the {ref}/es-connectors-network-drive.html[Network Drive connector] where advanced configuration fields were not displayed for CSV file role mappings with `Drive Type: Linux` selected.
+Elastic Security solution::
+For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
+Kibana platform::
+* Fixes an issue causing a wrong date to show in the header of a report when generated from relative date ({kibana-pull}197027[#197027]).
+* Fixes an issue where the Created and Updated timestamps for Dashboards were ignoring the default timezone settings in Advanced settings. ({kibana-pull}196977[#196977]).
+* Fixes an issue causing searches including a colon `:` character to show inaccurate results ({kibana-pull}190464[#190464]).
+Kibana security::
+* Fixes an issue where an LLM was likely to generate invalid processors containing array access in Automatic Import ({kibana-pull}196207[#196207]).
+Machine Learning::
+* File upload: fixes PDF character count limit ({kibana-pull}197333[#197333]).
+* Data Drift: Updates brush positions on window resize fix ({kibana-pull}196830[#196830]).
+* AIOps: Fixes issue where some queries cause filters to not be applied ({kibana-pull}196585[#196585]).
+* Transforms: Limits the data grid result window ({kibana-pull}196510[#196510]).
+* Fixes Anomaly Swim Lane Embeddable not updating properly on query change ({kibana-pull}195090[#195090]).
+* Hides ES|QL based saved searches in ML & Transforms ({kibana-pull}195084[#195084]).
+* Fixes query for pattern analysis and change point analysis ({kibana-pull}194742[#194742]).
+* Anomaly explorer: Shows data gaps and connect anomalous points on Single Metric Charts ({kibana-pull}194119[#194119]).
+* Fixes file upload with no ingest pipeline ({kibana-pull}193744[#193744]).
+* Disables field statistics panel in Dashboard if ES|QL is disabled ({kibana-pull}193587[#193587]).
+* Fixes display of assignees when attaching ML panels to a new case ({kibana-pull}192163[#192163]).
+* Anomaly explorer: Fixes the order of the coordinates displayed on the map tooltip ({kibana-pull}192077[#192077]).
+* Fixes links to the Single Metric Viewer from the Annotations and Forecasts tables ({kibana-pull}192000[#192000]).
+* Trained models: fixes responsiveness of state column for smaller displays ({kibana-pull}191900[#191900]).
+* File upload: increases timeout for upload request ({kibana-pull}191770[#191770]).
+* Improves expired license check ({kibana-pull}191503[#191503]).
+Management::
+* Fixes the pagination of the source documents data grid in Transforms ({kibana-pull}196119[#196119]).
+* Fixes autocomplete suggestions after a comma in Console ({kibana-pull}189656[#189656]).
+
+[[release-notes-8.15.4]]
+== {kib} 8.15.4
+
+The 8.15.4 release includes the following bug fixes.
+
+[float]
+[[fixes-v8.15.4]]
+=== Bug fixes
+Dashboards and visualizations::
+* Fixes incomplete string escaping and encoding in *TSVB* ({kibana-pull}196248[#196248]).
+* Adds scroll margin to panels ({kibana-pull}193430[#193430]).
+* Fixes an issue where label truncation in heat map legends was not working properly in *Lens* ({kibana-pull}195928[#195928]).
+Discover::
+* Fixes the width for saved object Type column ({kibana-pull}194388[#194388]).
+Elastic Observability solution::
+* Changes the slice outcome from bad to good whenever there is no data during the slice window ({kibana-pull}196942[#196942]).
+Elastic Search solution::
+* Fixes a bug with the {ref}/es-connectors-network-drive.html[Network Drive connector] where advanced configuration fields were not displayed for CSV file role mappings with `Drive Type: Linux` selected ({kibana-pull}195567[#195567]).
+Elastic Security solution::
+For the Elastic Security 8.15.4 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
+Kibana platform::
+* Fixes an issue causing the wrong date to show in the header of a report when generated from a relative date ({kibana-pull}197027[#197027]).
+* Fixes an issue with the export options for PNG/PDF reports in a dashboard ({kibana-pull}192530[#192530]).
+Machine Learning::
+* Fixes an issue preventing Anomaly swim lane panels from updating on query changes ({kibana-pull}195090[#195090]).
+Management::
+* Fixes the pagination of the source documents data grid in Transforms ({kibana-pull}196119[#196119]).
+
[[release-notes-8.15.3]]
== {kib} 8.15.3
@@ -102,7 +484,6 @@ Elastic Security solution::
For the Elastic Security 8.15.3 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
Kibana security::
* Automatic Import no longer asks the LLM to map fields to reserved ECS fields ({kibana-pull}195168[#195168]).
-* Automatic Import no longer returns an "Invalid ECS field" message when the ECS mapping slightly differs from the expected format. For example `date_format` instead of `date_formats` ({kibana-pull}195167[#195167]).
* Fixes an issue that was causing the Grok processor to return non-ECS compatible fields when processing structured or unstructured syslog samples in Automatic Import ({kibana-pull}194727[#194727]).
* Fixes the integrationName when uploading a new version of an existing integration using a ZIP upload ({kibana-pull}194298[#194298]).
* Fixes a bug that caused the Deploy step of Automatic Import to fail after a pipeline was edited and saved ({kibana-pull}194203[#194203]).
@@ -3852,7 +4233,7 @@ In 8.1.0 and later, {kib} uses the field caps API, by default, to determine the
`visualization:visualize:legacyPieChartsLibrary` has been removed from *Advanced Settings*. The setting allowed you to create aggregation-based pie chart visualizations using the legacy charts library. For more information, refer to {kibana-pull}146990[#146990].
*Impact* +
-In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check link:https://www.elastic.co/guide/en/kibana/current/add-aggregation-based-visualization-panels.html[Aggregation-based].
+In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check <>.
====
[discrete]
diff --git a/docs/api/synthetics/monitors/delete-monitor-api.asciidoc b/docs/api/synthetics/monitors/delete-monitor-api.asciidoc
index 70861fcd60a36..74798b40830b7 100644
--- a/docs/api/synthetics/monitors/delete-monitor-api.asciidoc
+++ b/docs/api/synthetics/monitors/delete-monitor-api.asciidoc
@@ -17,9 +17,6 @@ Deletes one or more monitors from the Synthetics app.
You must have `all` privileges for the *Synthetics* feature in the *{observability}* section of the
<>.
-You must have `all` privileges for the *Synthetics* feature in the *{observability}* section of the
-<>.
-
[[delete-monitor-api-path-params]]
=== {api-path-parms-title}
@@ -27,7 +24,6 @@ You must have `all` privileges for the *Synthetics* feature in the *{observabili
`config_id`::
(Required, string) The ID of the monitor that you want to delete.
-
Here is an example of a DELETE request to delete a monitor by ID:
[source,sh]
@@ -37,7 +33,7 @@ DELETE /api/synthetics/monitors/monitor1-id
==== Bulk Delete Monitors
-You can delete multiple monitors by sending a list of config ids to a DELETE request to the `/api/synthetics/monitors` endpoint.
+You can delete multiple monitors by sending a list of config ids to a POST request to the `/api/synthetics/monitors/_bulk_delete` endpoint.
[[monitors-delete-request-body]]
@@ -49,11 +45,11 @@ The request body should contain an array of monitors IDs that you want to delete
(Required, array of strings) An array of monitor IDs to delete.
-Here is an example of a DELETE request to delete a list of monitors by ID:
+Here is an example of a POST request to delete a list of monitors by ID:
[source,sh]
--------------------------------------------------
-DELETE /api/synthetics/monitors
+POST /api/synthetics/monitors/_bulk_delete
{
"ids": [
"monitor1-id",
diff --git a/docs/api/synthetics/params/delete-param.asciidoc b/docs/api/synthetics/params/delete-param.asciidoc
index 4c7d7911ec180..031a47501a8a8 100644
--- a/docs/api/synthetics/params/delete-param.asciidoc
+++ b/docs/api/synthetics/params/delete-param.asciidoc
@@ -8,9 +8,9 @@ Deletes one or more parameters from the Synthetics app.
=== {api-request-title}
-`DELETE :/api/synthetics/params`
+`DELETE :/api/synthetics/params/`
-`DELETE :/s//api/synthetics/params`
+`DELETE :/s//api/synthetics/params/`
=== {api-prereq-title}
@@ -20,26 +20,19 @@ You must have `all` privileges for the *Synthetics* feature in the *{observabili
You must have `all` privileges for the *Synthetics* feature in the *{observability}* section of the
<>.
-[[parameters-delete-request-body]]
-==== Request Body
+[[parameters-delete-path-param]]
+==== Path Parameters
The request body should contain an array of parameter IDs that you want to delete.
-`ids`::
-(Required, array of strings) An array of parameter IDs to delete.
+`param_id`::
+(Required, string) An id of parameter to delete.
-
-Here is an example of a DELETE request to delete a list of parameters by ID:
+Here is an example of a DELETE request to delete a parameter by its ID:
[source,sh]
--------------------------------------------------
-DELETE /api/synthetics/params
-{
- "ids": [
- "param1-id",
- "param2-id"
- ]
-}
+DELETE /api/synthetics/params/param_id1
--------------------------------------------------
[[parameters-delete-response-example]]
@@ -58,10 +51,21 @@ Here's an example response for deleting multiple parameters:
{
"id": "param1-id",
"deleted": true
- },
- {
- "id": "param2-id",
- "deleted": true
}
]
---------------------------------------------------
\ No newline at end of file
+--------------------------------------------------
+
+==== Bulk delete parameters
+To delete multiple parameters, you can send a POST request to `/api/synthetics/params/_bulk_delete` with an array of parameter IDs to delete via body.
+
+Here is an example of a POST request to delete multiple parameters:
+
+[source,sh]
+--------------------------------------------------
+POST /api/synthetics/params/_bulk_delete
+{
+ "ids": ["param1-id", "param2-id"]
+}
+--------------------------------------------------
+
+
diff --git a/docs/canvas/canvas-expression-lifecycle.asciidoc b/docs/canvas/canvas-expression-lifecycle.asciidoc
deleted file mode 100644
index a20181c4b3808..0000000000000
--- a/docs/canvas/canvas-expression-lifecycle.asciidoc
+++ /dev/null
@@ -1,263 +0,0 @@
-[role="xpack"]
-[[canvas-expression-lifecycle]]
-== Canvas expression lifecycle
-
-Elements in Canvas are all created using an *expression language* that defines how to retrieve, manipulate, and ultimately visualize data. The goal is to allow you to do most of what you need without understanding the *expression language*, but learning how it works unlocks a lot of Canvas's power.
-
-
-[[canvas-expressions-always-start-with-a-function]]
-=== Expressions always start with a function
-
-Expressions simply execute <> in a specific order, which produce some output value. That output can then be inserted into another function, and another after that, until it produces the output you need.
-
-To use demo dataset available in Canvas to produce a table, run the following expression:
-
-[source,text]
-----
-/* Simple demo table */
-filters
-| demodata
-| table
-| render
-----
-
-This expression starts out with the <> function, which provides the value of any time filters or dropdown filters in the workpad. This is then inserted into <>, a function that returns exactly what you expect, demo data. Because the <> function receives the filter information from the <> function before it, it applies those filters to reduce the set of data it returns. We call the output from the previous function _context_.
-
-The filtered <> becomes the _context_ of the next function, <>, which creates a table visualization from this data set. The <> function isn’t strictly required, but by being explicit, you have the option of providing arguments to control things like the font used in the table. The output of the <> function becomes the _context_ of the <> function. Like the <>, the <> function isn’t required either, but it allows access to other arguments, such as styling the border of the element or injecting custom CSS.
-
-It is possible to add comments to the expression by starting them with a `//` sequence or by using `/*` and `*/` to enclose multi-line comments.
-
-[[canvas-function-arguments]]
-=== Function arguments
-
-Let’s look at another expression, which uses the same <> function, but instead produces a pie chart.
-
-image::images/canvas-functions-can-take-arguments-pie-chart.png[Pie chart showing output of demodata function]
-[source,text]
-----
-filters
-| demodata
-| pointseries color="state" size="max(price)"
-| pie
-| render
-----
-
-To produce a filtered set of random data, the expression uses the <> and <> functions. This time, however, the output becomes the context for the <> function, which is a way to aggregate your data, similar to how Elasticsearch works, but more generalized. In this case, the data is split up using the `color` and `size` dimensions, using arguments on the <> function. Each unique value in the state column will have an associated size value, which in this case, will be the maximum value of the price column.
-
-If the expression stopped there, it would produce a `pointseries` data type as the output of this expression. But instead of looking at the raw values, the result is inserted into the <> function, which will produce an output that will render a pie visualization. And just like before, this is inserted into the <> function, which is useful for its arguments.
-
-The end result is a simple pie chart that uses the default color palette, but the <> function can take additional arguments that control how it gets rendered. For example, you can provide a `hole` argument to turn your pie chart into a donut chart by changing the expression to:
-
-
-image::images/canvas-functions-can-take-arguments-donut-chart.png[Alternative output as donut chart]
-[source,text]
-----
-filters
-| demodata
-| pointseries color="state" size="max(price)"
-| pie hole=50
-| render
-----
-
-
-[[canvas-aliases-and-unnamed-arguments]]
-=== Aliases and unnamed arguments
-
-Argument definitions have one canonical name, which is always provided in the underlying code. When argument definitions are used in an expression, they often include aliases that make them easier or faster to type.
-
-For example, the <> function has 2 arguments:
-
-* `expression` - Produces a calculated value.
-* `name` - The name of column.
-
-The `expression` argument includes some aliases, namely `exp`, `fn`, and `function`. That means that you can use any of those four options to provide that argument’s value.
-
-So `mapColumn name=newColumn fn={string example}` is equal to `mapColumn name=newColumn expression={string example}`.
-
-There’s also a special type of alias which allows you to leave off the argument’s name entirely. The alias for this is an underscore, which indicates that the argument is an _unnamed_ argument and can be provided without explicitly naming it in the expression. The `name` argument here uses the _unnamed_ alias, which means that you can further simplify our example to `mapColumn newColumn fn={string example}`.
-
-NOTE: There can only be one _unnamed_ argument for each function.
-
-
-[[canvas-change-your-expression-change-your-output]]
-=== Change your expression, change your output
-You can substitute one function for another to change the output. For example, you could change the visualization by swapping out the <> function for another renderer, a function that returns a `render` data type.
-
-Let’s change that last pie chart into a bubble chart by replacing the <> function with the <> function. This is possible because both functions can accept a `pointseries` data type as their _context_. Switching the functions will work, but it won’t produce a useful visualization on its own since you don’t have the x-axis and y-axis defined. You will also need to modify the <> function to change its output. In this case, you can change the `size` argument to `y`, so the maximum price values are plotted on the y-axis, and add an `x` argument using the `@timestamp` field in the data to plot those values over time. This leaves you with the following expression and produces a bubble chart showing the max price of each state over time:
-
-image::images/canvas-change-your-expression-chart.png[Bubble Chart, with price along x axis, and time along y axis]
-[source,text]
-----
-filters
-| demodata
-| pointseries color="state" y="max(price)" x="@timestamp"
-| plot
-| render
-----
-
-Similar to the <> function, the <> function takes arguments that control the design elements of the visualization. As one example, passing a `legend` argument with a value of `false` to the function will hide the legend on the chart.
-
-image::images/canvas-change-your-expression-chart-no-legend.png[Bubble Chart Without Legend]
-[source,text,subs=+quotes]
-----
-filters
-| demodata
-| pointseries color="state" y="max(price)" x="@timestamp"
-| plot *legend=false*
-| render
-----
-
-
-[[canvas-fetch-and-manipulate-data]]
-=== Fetch and manipulate data
-So far, you have only seen expressions as a way to produce visualizations, but that’s not really what’s happening. Expressions only produce data, which is then used to create something, which in the case of Canvas, means rendering an element. An element can be a visualization, driven by data, but it can also be something much simpler, like a static image. Either way, an expression is used to produce an output that is used to render the desired result. For example, here’s an expression that shows an image:
-
-[source,text]
-----
-image dataurl=https://placekitten.com/160/160 mode="cover"
-----
-
-But as mentioned, this doesn’t actually _render that image_, but instead it _produces some output that can be used to render that image_. That’s an important distinction, and you can see the actual output by adding in the render function and telling it to produce debug output. For example:
-
-[source,text]
-----
-image dataurl=https://placekitten.com/160/160 mode="cover"
-| render as=debug
-----
-
-The follow appears as JSON output:
-
-[source,JSON]
-----
-{
- "type": "image",
- "mode": "cover",
- "dataurl": "https://placekitten.com/160/160"
-}
-----
-
-NOTE: You may need to expand the element’s size to see the whole output.
-
-Canvas uses this output’s data type to map to a specific renderer and passes the entire output into it. It’s up to the image render function to produce an image on the workpad’s page. In this case, the expression produces some JSON output, but expressions can also produce other, simpler data, like a string or a number. Typically, useful results use JSON.
-
-Canvas uses the output to render an element, but other applications can use expressions to do pretty much anything. As stated previously, expressions simply execute functions, and the functions are all written in Javascript. That means if you can do something in Javascript, you can do it with an expression.
-
-This can include:
-
-* Sending emails
-* Sending notifications
-* Reading from a file
-* Writing to a file
-* Controlling devices with WebUSB or Web Bluetooth
-* Consuming external APIs
-
-If your Javascript works in the environment where the code will run, such as in Node.js or in a browser, you can do it with an expression.
-
-[[canvas-expressions-compose-functions-with-subexpressions]]
-=== Compose functions with sub-expressions
-
-You may have noticed another syntax in examples from other sections, namely expressions inside of curly brackets. These are called sub-expressions, and they can be used to provide a calculated value to another expression, instead of just a static one.
-
-A simple example of this is when you upload your own images to a Canvas workpad. That upload becomes an asset, and that asset can be retrieved using the `asset` function. Usually you’ll just do this from the UI, adding an image element to the page and uploading your image from the control in the sidebar, or picking an existing asset from there as well. In both cases, the system will consume that asset via the `asset` function, and you’ll end up with an expression similar to this:
-
-[source,text]
-----
-image dataurl={asset 3cb3ec3a-84d7-48fa-8709-274ad5cc9e0b}
-----
-
-Sub-expressions are executed before the function that uses them is executed. In this case, `asset` will be run first, it will produce a value, the base64-encoded value of the image and that value will be used as the value for the `dataurl` argument in the <> function. After the asset function executes, you will get the following output:
-
-[source,text]
-----
-image dataurl="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0"
-----
-
-Since all of the sub-expressions are now resolved into actual values, the <> function can be executed to produce its JSON output, just as it’s explained previously. In the case of images, the ability to nest sub-expressions is particularly useful to show one of several images conditionally. For example, you could swap between two images based on some calculated value by mixing in the <> function, like in this example expression:
-
-[source,text]
-----
-demodata
-| image dataurl={
- if condition={getCell price | gte 100}
- then={asset "asset-3cb3ec3a-84d7-48fa-8709-274ad5cc9e0b"}
- else={asset "asset-cbc11a1f-8f25-4163-94b4-2c3a060192e7"}
-}
-----
-
-NOTE: The examples in this section can’t be copy and pasted directly, since the values used throughout will not exist in your workpad.
-
-Here, the expression to use for the value of the `condition` argument, `getCell price | gte 100`, runs first since it is nested deeper.
-
-The expression does the following:
-
-* Retrieves the value from the *price* column in the first row of the `demodata` data table
-* Inputs the value to the `gte` function
-* Compares the value to `100`
-* Returns `true` if the value is 100 or greater, and `false` if the value is 100 or less
-
-That boolean value becomes the value for the `condition` argument. The output from the `then` expression is used as the output when `condition` is `true`. The output from the `else` expression is used when `condition` is false. In both cases, a base64-encoded image will be returned, and one of the two images will be displayed.
-
-You might be wondering how the <> function in the sub-expression accessed the data from the <> function, even though <> was not being directly inserted into <>. The answer is simple, but important to understand. When nested sub-expressions are executed, they automatically receive the same _context_, or output of the previous function that its parent function receives. In this specific expression, demodata’s data table is automatically provided to the nested expression’s `getCell` function, which allows that expression to pull out a value and compare it to another value.
-
-The passing of the _context_ is automatic, and it happens no matter how deeply you nest your sub-expressions. To demonstrate this, let’s modify the expression slightly to compare the value of the price against multiple conditions using the <> function.
-
-[source,text]
-----
-demodata
-| image dataurl={
- if condition={getCell price | all {gte 100} {neq 105}}
- then={asset 3cb3ec3a-84d7-48fa-8709-274ad5cc9e0b}
- else={asset cbc11a1f-8f25-4163-94b4-2c3a060192e7}
-}
-----
-
-This time, `getCell price` is run, and the result is passed into the next function as the context. Then, each sub-expression of the <> function is run, with the context given to their parent, which in this case is the result of `getCell price`. If `all` of these sub-expressions evaluate to `true`, then the `if` condition argument will be true.
-
-Sub-expressions can seem a little foreign, especially if you aren’t a developer, but they’re worth getting familiar with, since they provide a ton of power and flexibility. Since you can nest any expression you want, you can also use this behavior to mix data from multiple indices, or even data from multiple sources. As an example, you could query an API for a value to use as part of the query provided to <>.
-
-This whole section is really just scratching the surface, but hopefully after reading it, you at least understand how to read expressions and make sense of what they are doing. With a little practice, you’ll get the hang of mixing _context_ and sub-expressions together to turn any input into your desired output.
-
-[[canvas-handling-context-and-argument-types]]
-=== Handling context and argument types
-If you look through the <>, you may notice that all of them define what a function accepts and what it returns. Additionally, every argument includes a type property that specifies the kind of data that can be used. These two types of values are actually the same, and can be used as a guide for how to deal with piping to other functions and using subexpressions for argument values.
-
-To explain how this works, consider the following expression from the previous section:
-
-[source,text]
-----
-image dataurl={asset 3cb3ec3a-84d7-48fa-8709-274ad5cc9e0b}
-----
-
-If you <> for the `image` function, you’ll see that it accepts the `null` data type and returns an `image` data type. Accepting `null` effectively means that it does not use context at all, so if you insert anything to `image`, the value that was produced previously will be ignored. When the function executes, it will produce an `image` output, which is simply an object of type `image` that contains the information required to render an image.
-
-NOTE: The function does not render an image itself.
-
-As explained in the "<>" section, the output of an expression is just data. So the `image` type here is just a specific shape of data, not an actual image.
-
-Next, let’s take a look at the `asset` function. Like `image`, it accepts `null`, but it returns something different, a `string` in this case. Because `asset` will produce a string, its output can be used as the input for any function or argument that accepts a string.
-
-<> for the `dataurl` argument, its type is `string`, meaning it will accept any kind of string. There are some rules about the value of the string that the function itself enforces, but as far as the interpreter is concerned, that expression is valid because the argument accepts a string and the output of `asset` is a string.
-
-The interpreter also attempts to cast some input types into others, which allows you to use a string input even when the function or argument calls for a number. Keep in mind that it’s not able to convert any string value, but if the string is a number, it can easily be cast into a `number` type. Take the following expression for example:
-
-[source,text]
-----
-string "0.4"
-| revealImage image={asset asset-06511b39-ec44-408a-a5f3-abe2da44a426}
-----
-
-If you <> for the `revealImage` function, you’ll see that it accepts a `number` but the `string` function returns a `string` type. In this case, because the string value is a number, it can be converted into a `number` type and used without you having to do anything else.
-
-Most `primitive` types can be converted automatically, as you might expect. You just saw that a `string` can be cast into a `number`, but you can also pretty easily cast things into `boolean` too, and you can cast anything to `null`.
-
-There are other useful type casting options available. For example, something of type `datatable` can be cast to a type `pointseries` simply by only preserving specific columns from the data (namely x, y, size, color, and text). This allows you to treat your source data, which is generally of type `datatable`, like a `pointseries` type simply by convention.
-
-You can fetch data from Elasticsearch using `essql`, which allows you to aggregate the data, provide a custom name for the value, and insert that data directly to another function that only accepts `pointseries` even though `essql` will output a `datatable` type. This makes the following example expression valid:
-
-[source,text]
-----
-essql "SELECT user AS x, sum(cost) AS y FROM index GROUP BY user"
-| plot
-----
-
-In the docs you can see that `essql` returns a `datatable` type, but `plot` expects a `pointseries` context. This works because the `datatable` output will have the columns `x` and `y` as a result of using `AS` in the sql statement to name them. Because the data follows the convention of the `pointseries` data type, casting it into `pointseries` is possible, and it can be passed directly to `plot` as a result.
diff --git a/docs/canvas/canvas-tutorial.asciidoc b/docs/canvas/canvas-tutorial.asciidoc
index 5016dbec88aac..666d8885c2885 100644
--- a/docs/canvas/canvas-tutorial.asciidoc
+++ b/docs/canvas/canvas-tutorial.asciidoc
@@ -9,15 +9,11 @@ To familiarize yourself with *Canvas*, add the Sample eCommerce orders data, the
To create a workpad of the eCommerce store data, add the data set, then create the workpad.
-. On the home page, click *Try sample data*.
+. <>.
-. Click *Other sample data sets*.
+. Go to **Canvas** using the navigation menu or the <>.
-. On the *Sample eCommerce orders* card, click *Add data*.
-
-. Open the main menu, then click *Canvas*.
-
-. On the *Canvas workpads* page, click *Create workpad*.
+. Select *Create workpad*.
[float]
=== Customize your workpad with images
diff --git a/docs/concepts/data-views.asciidoc b/docs/concepts/data-views.asciidoc
index 2eba42aed3051..2a260e611a060 100644
--- a/docs/concepts/data-views.asciidoc
+++ b/docs/concepts/data-views.asciidoc
@@ -168,7 +168,7 @@ and field popularity data. Deleting a {data-source} does not remove any indices
WARNING: Deleting a {data-source} breaks all visualizations, saved searches, and other saved objects that reference the data view.
-. Open the main menu, and then click *Stack Management > Data Views*.
+. Go to the **Data Views** management page using the navigation menu or the <>.
. Find the {data-source} that you want to delete, and then
click image:management/index-patterns/images/delete.png[Delete icon] in the *Actions* column.
diff --git a/docs/concepts/esql.asciidoc b/docs/concepts/esql.asciidoc
index 0390f9f6e2bc7..a3a091a4c6d0a 100644
--- a/docs/concepts/esql.asciidoc
+++ b/docs/concepts/esql.asciidoc
@@ -8,15 +8,12 @@ Based on the query, Lens suggestions in Discover create a visualization of the q
{esql} comes with its own dedicated {esql} Compute Engine for greater efficiency. With one query you can search, aggregate, calculate and perform data transformations without leaving **Discover**. Write your query directly in **Discover** or use the **Dev Tools** with the {ref}/esql-rest.html[{esql} API].
-Here's how to use {esql} in the data view selector in **Discover**:
+You can switch to the ES|QL mode of Discover from the application menu bar.
-[role="screenshot"]
-image:images/esql-data-view-menu.png[An image of the Discover UI where users can access the {esql} feature, width=30%, align="center"]
-
-{esql} also features in-app help, so you can get started faster and don't have to leave the application to check syntax.
+{esql} also features in-app help and suggestions, so you can get started faster and don't have to leave the application to check syntax.
[role="screenshot"]
-image:images/esql-in-app-help.png[An image of the Discover UI where users can browse the in-app help]
+image:images/esql-in-app-help.png[The ES|QL syntax reference and the autocomplete menu]
You can also use ES|QL queries to create panels on your dashboards, create enrich policies, and create alerting rules.
diff --git a/docs/concepts/images/esql-in-app-help.png b/docs/concepts/images/esql-in-app-help.png
index 5f00248c10af2..00db2cf8e50c8 100644
Binary files a/docs/concepts/images/esql-in-app-help.png and b/docs/concepts/images/esql-in-app-help.png differ
diff --git a/docs/dev-tools/grokdebugger/index.asciidoc b/docs/dev-tools/grokdebugger/index.asciidoc
index 6a809c13fcb93..0932df0c7abfb 100644
--- a/docs/dev-tools/grokdebugger/index.asciidoc
+++ b/docs/dev-tools/grokdebugger/index.asciidoc
@@ -36,7 +36,8 @@ is automatically enabled in {kib}.
NOTE: If you're using {stack-security-features}, you must have the `manage_pipeline`
permission to use the Grok Debugger.
-. Open the main menu, click *Dev Tools*, then click *Grok Debugger*.
+. Find the *Grok Debugger* by navigating to the *Developer tools* page using the
+navigation menu or the <>.
. In *Sample Data*, enter a message that is representative of the data that you
want to parse. For example:
+
diff --git a/docs/dev-tools/painlesslab/index.asciidoc b/docs/dev-tools/painlesslab/index.asciidoc
index 387c0522dd1ca..84aa13b4590ca 100644
--- a/docs/dev-tools/painlesslab/index.asciidoc
+++ b/docs/dev-tools/painlesslab/index.asciidoc
@@ -12,7 +12,8 @@ process {ref}/docs-reindex.html[reindexed data], define complex
<>,
and work with data in other contexts.
-To get started, open the main menu, click *Dev Tools*, and then click *Painless Lab*.
+Find *Painless Lab* by navigating to the *Developer tools* page using the
+navigation menu or the <>.
[role="screenshot"]
image::dev-tools/painlesslab/images/painless-lab.png[Painless Lab]
diff --git a/docs/dev-tools/searchprofiler/index.asciidoc b/docs/dev-tools/searchprofiler/index.asciidoc
index c323427318d54..7ce6e9fa48b39 100644
--- a/docs/dev-tools/searchprofiler/index.asciidoc
+++ b/docs/dev-tools/searchprofiler/index.asciidoc
@@ -14,9 +14,8 @@ poorly performing queries much faster.
[[search-profiler-getting-started]]
=== Get started
-*{searchprofiler}* is automatically enabled in {kib}. Open the main menu,
-click *Dev Tools*, and then click *{searchprofiler}*
-to get started.
+. Find the *{searchprofiler}* by navigating to the *Developer tools* page using the
+navigation menu or the <>.
*{searchprofiler}* displays the names of the indices searched, the shards in each index,
and how long it took for the query to complete. To try it out, replace the default `match_all` query
diff --git a/docs/developer/getting-started/sample-data.asciidoc b/docs/developer/getting-started/sample-data.asciidoc
index 2454c9d8a6146..a932db91c0377 100644
--- a/docs/developer/getting-started/sample-data.asciidoc
+++ b/docs/developer/getting-started/sample-data.asciidoc
@@ -8,7 +8,7 @@ There are a couple ways to easily get data ingested into {es}.
The easiest is to install one or more of our available sample data packages. If you have no data, you should be
prompted to install when running {kib} for the first time. You can also access and install the sample data packages
-by going to the home page and clicking "add sample data".
+by going to the **Integrations** page and selecting **Sample data**.
[discrete]
=== makelogs script
@@ -27,5 +27,5 @@ Make sure to execute `node scripts/makelogs` *after* {es} is up and running!
[discrete]
=== CSV upload
-You can also use the CSV uploader provided on the {kib} home page.
+You can also use the CSV uploader provided on the **Upload file** page available in the list of **Integrations**.
Navigate to **Add data** > **Upload file** to upload your data from a file.
\ No newline at end of file
diff --git a/docs/discover/document-explorer.asciidoc b/docs/discover/document-explorer.asciidoc
index 071c9f9875028..921e0504f4596 100644
--- a/docs/discover/document-explorer.asciidoc
+++ b/docs/discover/document-explorer.asciidoc
@@ -1,8 +1,7 @@
[[document-explorer]]
-== Explore your documents
+== Customize the Discover view
Fine tune your explorations by customizing *Discover* to bring out the the best view of your documents.
-Adjust the chart height, modify the document table, and look inside a document.
[role="screenshot"]
image::images/hello-field.png[A view of the Discover app]
@@ -10,34 +9,27 @@ image::images/hello-field.png[A view of the Discover app]
[float]
[[document-explorer-c]]
-=== Hide or resize the chart
+=== Hide or resize areas
-Hide or resize the chart for a better fit.
+* You can hide and show the chart and the fields list using the available collapse and expand button in the corresponding area.
-* To turn off the display of the chart, click
-image:images/chart-icon.png[icon button for opening Show/Hide chart menu, width=24px]
-to open the *Chart options* menu, and then click *Hide chart*.
-
-* To change the chart height, drag the resize handle
-image:images/resize-icon.png[two-line icon for increasing or decreasing the height of the chart, width=24px]
+* Adjust the width and height of each area by dragging their border
to the size you want.
-The chart size is saved in your browser.
-
-* To reset the height, open the *Chart options* menu, and then select *Reset to default height*.
+The size of each area is saved in your browser for the next time you open **Discover**.
[float]
[[document-explorer-customize]]
=== Modify the document table
-Customize the appearance of the document table and its contents by resizing the columns and rows,
-sorting and modifying the fields, and filtering the documents.
+Customize the appearance of the document table and its contents to your liking.
+
+image:images/discover-customize-table.png[Options to customize the table in Discover]
[float]
[[document-explorer-columns]]
==== Reorder and resize the columns
-* To move a single column, click its header. In the dropdown menu,
-click *Move left* or *Move right*.
+* To move a single column, open the column's contextual options, and select *Move left* or *Move right* in the available options.
* To move multiple columns, click *Columns*.
In the pop-up, drag the column names to their new order.
@@ -46,17 +38,31 @@ In the pop-up, drag the column names to their new order.
+
Column widths are stored with a saved search. When you visualize saved searches on dashboards, the saved search appears the same as in **Discover**.
+[float]
+[[document-explorer-density]]
+==== Customize the table density
+
+You can adjust the density of the table from the **Display options** located in the table toolbar. This can be particularly useful when scrolling through many results.
[float]
[[document-explorer-row-height]]
==== Adjust the row height
To set the row height to one or more lines, or automatically
-adjust the height to fit the contents, click the row height icon
-image:images/row-height-icon.png[icon to open the Row height pop-up].
+adjust the height to fit the contents, open the **Display options** in the table toolbar, and adjust it as you need.
+
+You can define different settings for the header row and body rows.
+
+[float]
+[[document-explorer-sample-size]]
+==== Limit the sample size
+
+When the number of results returned by your search query (displayed at the top of the **Documents** or **Results** tab) is greater than the value of <>, the number of results displayed in the table is limited to the configured value by default. You can adjust the initial sample size for searches to any number between 10 and `discover:sampleSize` from the **Display options** located in the table toolbar.
+
+On the last page of the table, a message indicates that you've reached the end of the loaded search results. From that message, you can choose to load more results to continue exploring.
+
+image:images/discover-limit-sample-size.png[Limit sample size in Discover]
-[role="screenshot"]
-image::images/document-explorer-row-height.png[Row height settings for the document table, width="50%"]
[float]
[[document-explorer-sort-data]]
@@ -70,7 +76,7 @@ column header, and then select the sort order.
To sort by multiple fields:
-. Click the *field sorted* option.
+. Click the *Sort fields* option.
+
[role="screenshot"]
image::images/document-explorer-sort-data.png[Pop-up in document table for sorting columns, width="50%"]
@@ -106,62 +112,18 @@ Narrow your results to a subset of documents so you're comparing just the data o
. Select the documents you want to compare.
-. Click the *documents selected* option, and then select *Show selected documents only*.
+. Click the *Selected* option, and then select *Show selected documents only*.
+
[role="screenshot"]
-image::images/document-explorer-compare-data.png[Compare data in the document table, width="50%"]
-
-[float]
-[[document-explorer-configure-table]]
-==== Set the number of rows per page
-
-To change the numbers of rows you want to display on each page, use the *Rows per page* menu. The default is 100 rows per page.
-
-[role="screenshot"]
-image::images/document-table-rows-per-page.png["Menu with options for setting the number of rows in the document table"]
+image::images/document-explorer-compare-data.png[Compare data in the document table, width="40%"]
+You can also compare individual field values using the <>.
[float]
-[[document-explorer-expand-documents]]
-
-=== Go inside a document
-
-Dive into an individual document to inspect its fields, set filters, and view
-the documents that occurred before and after it.
-
-. Click the expand icon
-image:images/expand-icon-2.png[double arrow icon to open a flyout with the document details].
-+
-You can view the document in two ways. The **Table** view displays the document fields row-by-row.
-The **JSON** (JavaScript Object Notation) view allows you to look at how {es} returns the document.
-+
-[role="screenshot"]
-image::images/document-table-expanded.png[Expanded view of the document table]
-+
-. In the *Table* view, scan through the fields and their values, or search for a field by name.
-
-. When you find a field of interest,
-hover your mouse over the *Actions* column
-to:
-.. Filter the results to include or exclude specific fields or values.
-.. Toggle the field in or out the document table.
-.. Pin the field so it stays at the top.
-
-. To navigate to the next and previous documents, click the < and > arrows at the top of the view.
+[[document-explorer-configure-table]]
+==== Set the number of results per page
-. To create a view of the document that you can bookmark and share, click **Single document**.
-+
-[role="screenshot"]
-image::images/discover-view-single-document.png[Discover single document view]
-+
-The link is valid for the time the document is available in Elasticsearch. To create a customized view of the document,
-you can create <>.
+To change the numbers of results you want to display on each page, use the *Rows per page* menu. The default is 100 results per page.
-. To view documents that occurred before or after the event you are looking at, click **Surrounding documents**.
-+
-Documents are displayed using the same set of columns as the *Discover* view from which
-the context was opened. The filters you applied are also carried over. Pinned
-filters remain active, while other filters are copied in a disabled state.
-+
[role="screenshot"]
-image::images/discover-context.png[Image showing context view feature, with anchor documents highlighted in blue]
+image::images/document-table-rows-per-page.png["Menu with options for setting the number of results in the document table"]
diff --git a/docs/discover/field-statistics.asciidoc b/docs/discover/field-statistics.asciidoc
index 8dccc0d4a5bbd..dc83d226ff364 100644
--- a/docs/discover/field-statistics.asciidoc
+++ b/docs/discover/field-statistics.asciidoc
@@ -12,7 +12,7 @@ for the data and its cardinality?
This example explores the fields in
the <>, or you can use your own data.
-. Open the main menu, and click *Discover*.
+. Go to *Discover*.
. Expand the {data-source} dropdown, and select *Kibana Sample Data Logs*.
diff --git a/docs/discover/get-started-discover.asciidoc b/docs/discover/get-started-discover.asciidoc
new file mode 100644
index 0000000000000..ec44f977f4aac
--- /dev/null
+++ b/docs/discover/get-started-discover.asciidoc
@@ -0,0 +1,356 @@
+[[discover-get-started]]
+== Explore fields and data with Discover
+
+Learn how to use *Discover* to:
+
+- **Select** and **filter** your {es} data.
+- **Explore** the fields and content of your data in depth.
+- **Present** your findings in a visualization.
+
+*Prerequisites:*
+
+- If you don’t already have {kib}, https://www.elastic.co/cloud/elasticsearch-service/signup?baymax=docs-body&elektra=docs[start a free trial] on Elastic Cloud.
+- You must have data in {es}. Examples on this page use the
+<>, but you can use your own data.
+- You should have an understanding of {ref}/documents-indices.html[{es} documents and indices]
+and <>.
+
+
+[float]
+[[find-the-data-you-want-to-use]]
+=== Load data into Discover
+
+Select the data you want to explore, and then specify the time range in which to view that data.
+
+. Find **Discover** in the navigation menu or by using the <>.
+
+. Select the data view that contains the data you want to explore.
++
+TIP: {kib} requires a <> to access your Elasticsearch data. A {data-source} can point to one or more indices, {ref}/data-streams.html[data streams], or {ref}/alias.html[index aliases]. When adding data to {es} using one of the many integrations available, sometimes data views are created automatically, but you can also create your own.
++
+If you're using sample data, data views are automatically created and are ready to use.
++
+[role="screenshot"]
+image::images/discover-data-view.png[How to set the {data-source} in Discover, width="40%"]
+
+. If needed, adjust the <>, for example by setting it to the *Last 7 days*.
++
+The range selection is based on the default time field in your data view.
+If you are using the sample data, this value was set when the data view was created.
+If you are using your own data view, and it does not have a time field, the range selection is not available.
+
+**Discover** is populated with your data and you can view various areas with different information:
+
+* All fields detected are listed in a dedicated panel.
+* A chart allows you to visualize your data.
+* A table displays the results of your search.
+By default, the table includes a column for the time field and a *Summary* column with an overview of each result.
+You can modify the document table to display your fields of interest.
+
+You can later filter the data that shows in the chart and in the table by specifying a query and changing the time range.
+
+[float]
+[[explore-fields-in-your-data]]
+=== Explore the fields in your data
+
+**Discover** provides utilities designed to help you make sense of your data:
+
+. In the sidebar, check the available fields. It's very common to have hundreds of fields. Use the search at the top of that sidebar to look for specific terms in the field names.
++
+In this example, we've entered `ma` in the search field to find the `manufacturer` field.
++
+[role="screenshot"]
+image:images/discover-sidebar-available-fields.png[Fields list that displays the top five search results, width=40%]
++
+TIP: You can combine multiple keywords or characters. For example, `geo dest` finds `geo.dest` and `geo.src.dest`.
+
+. Select a field to view its most frequent values.
++
+**Discover** shows the top 10 values and the number of records used to calculate those values.
+
+. Select the *Plus* icon to add fields to the results table.
+You can also drag them from the list into the table.
++
+[role="screenshot"]
+image::images/discover-add-icon.png[How to add a field as a column in the table, width="50%"]
++
+When you add fields to the table, the **Summary** column is replaced.
++
+[role="screenshot"]
+image:images/document-table.png[Document table with fields for manufacturer, customer_first_name, and customer_last_name]
+
+. Arrange the view to your liking to display the fields and data you care most about using the various display options of **Discover**. For example, you can change the order and size of columns, expand the table to be in full screen or collapse the chart and the list of fields. Check <>.
+
+. **Save** your changes to be able to open the same view later on and explore your data further.
+
+
+[float]
+[[add-field-in-discover]]
+==== Add a field to your {data-source}
+
+What happens if you forgot to define an important value as a separate field? Or, what if you
+want to combine two fields and treat them as one? This is where {ref}/runtime.html[runtime fields] come into play.
+You can add a runtime field to your {data-source} from inside of **Discover**,
+and then use that field for analysis and visualizations,
+the same way you do with other fields.
+
+. In the sidebar, select *Add a field*.
+
+. Select the **Type** of the new field.
+
+. **Name** the field. Name it in a way that corresponds to the way other fields of the data view are named.
+You can set a custom label and description for the field to make it more recognizable in your data view.
+
+. Define the value that you want the field to show. By default, the field value is retrieved from the source data if it already contains a field with the same name. You can customize this with the following options:
+
+** **Set value**: Define a script that will determine the value to show for the field. For more information on adding fields and Painless scripting language examples,
+refer to <>.
+** **Set format**: Set your preferred format for displaying the value. Changing the format can affect the value and prevent highlighting in Discover.
+
+. In the advanced settings, you can adjust the field popularity to make it appear higher or lower in the fields list. By default, Discover orders popular fields from most selected to least selected.
+
+. **Save** your new field.
+
+You can now find it in the list of fields and add it to the table.
+
+In the following example, we're adding 2 fields: A simple "Hello world" field, and a second field that combines and transforms the `customer_first_name` and `customer_last_name` fields of the sample data into a single "customer" field:
+
+**Hello world field example**:
+
+* **Name**: `hello`
+* **Type**: `Keyword`
+* **Set value**: enabled
+* **Script**:
++
+```ts
+emit("Hello World!");
+```
+
+**Customer field example**:
+
+* **Name**: `customer`
+* **Type**: `Keyword`
+* **Set value**: enabled
+* **Script**:
++
+```ts
+String str = doc['customer_first_name.keyword'].value;
+char ch1 = str.charAt(0);
+emit(doc['customer_last_name.keyword'].value + ", " + ch1);
+```
+
+[float]
+==== Visualize aggregated fields
+If a field can be {ref}/search-aggregations.html[aggregated], you can quickly
+visualize it in detail by opening it in **Lens** from **Discover**. **Lens** is the default visualization editor in {kib}.
+
+. In the list of fields, find an aggregatable field. For example, with the sample data, you can look for `day_of_week`.
++
+[role="screenshot"]
+image:images/discover-day-of-week.png[Top values for the day_of_week field, plus Visualize button, width=50%]
+
+. In the popup, click **Visualize**.
++
+{kib} creates a **Lens** visualization best suited for this field.
+
+. In **Lens**, from the *Available fields* list, drag and drop more fields to refine the visualization. In this example, we're adding the `manufacturer.keyword` field onto the workspace, which automatically adds a breakdown of the top values to the visualization.
++
+[role="screenshot"]
+image:images/discover-from-visualize.png[Visualization that opens from Discover based on your data]
+
+. Save the visualization if you'd like to add it to a dashboard or keep it in the Visualize library for later use.
+
+For geo point fields (image:images/geoip-icon.png[Geo point field icon, width=20px]),
+if you click **Visualize**,
+your data appears in a map.
+
+[role="screenshot"]
+image:images/discover-maps.png[Map containing documents]
+
+
+[float]
+[[compare-documents-in-discover]]
+==== Compare documents
+
+You can use *Discover* to compare and diff the field values of multiple results or documents in the table.
+
+. Select the results you want to compare from the Documents or Results tab in Discover.
+
+. From the **Selected** menu in the table toolbar, choose **Compare selected**. The comparison view opens and shows the selected results next to each other.
+
+. Compare the values of each field. By default the first result selected shows as the reference for displaying differences in the other results. When the value remains the same for a given field, it's displayed in green. When the value differs, it's displayed in red.
++
+TIP: You can change the result used as reference by selecting **Pin for comparison** in the contextual menu of any other result.
++
+image:images/discover-compare-rows.png[Comparison view in Discover]
+
+. Optionally, customize the **Comparison settings** to your liking. You can for example choose to not highlight the differences, to show them more granularly at the line, word, or character level, or even to hide fields where the value matches for all results.
+
+. Exit the comparison view at any time using the **Exit comparison mode** button.
+
+[float]
+[[copy-row-content]]
+==== Copy results as text or JSON
+
+You can quickly copy the content currently displayed in the table for one or several results to your clipboard.
+
+. Select the results you want to copy.
+
+. Open the **Selected** menu in the table toolbar, and select **Copy selection as text** or **Copy documents as JSON**.
+
+The content is copied to your clipboard in the selected format.
+Fields that are not currently added to the table are ignored.
+
+[float]
+[[look-inside-a-document]]
+==== Explore individual result or document details in depth
+
+[[document-explorer-expand-documents]]
+Dive into an individual document to view its fields and the documents
+that occurred before and after it.
+
+. In the document table, click the expand icon
+image:images/expand-icon-2.png[double arrow icon to open a flyout with the document details]
+to show document details.
++
+[role="screenshot"]
+image:images/document-table-expanded.png[Table view with document expanded]
+
+. Scan through the fields and their values. You can filter the table in several ways:
+** If you find a field of interest,
+hover your mouse over the *Field* or *Value* columns for filters and additional options.
+** Use the search above the table to filter for specific fields or values, or filter by field type using the options to the right of the search field.
+** You can pin some fields by clicking the left column to keep them displayed even if you filter the table.
++
+TIP: You can restrict the fields listed in the detailed view to just the fields that you explicitly added to the **Discover** table, using the **Selected only** toggle. In ES|QL mode, you also have an option to hide fields with null values.
+
+. To navigate to a view of the document that you can bookmark and share, select ** View single document**.
+
+. To view documents that occurred before or after the event you are looking at, select
+**View surrounding documents**.
+
+
+
+
+[float]
+[[search-in-discover]]
+=== Search and filter data
+
+[float]
+==== Default mode: Search and filter using KQL
+
+One of the unique capabilities of **Discover** is the ability to combine
+free text search with filtering based on structured data.
+To search all fields, enter a simple string in the query bar.
+
+[role="screenshot"]
+image:images/discover-search-field.png[Search field in Discover]
+
+To search particular fields and
+build more complex queries, use the <>.
+As you type, KQL prompts you with the fields you can search and the operators
+you can use to build a structured query.
+
+For example, search the ecommerce sample data for documents where the country matches US:
+
+. Enter `g`, and then select *geoip.country_iso_code*.
+. Select *:* for equals, and *US* for the value, and then click the refresh button or press the Enter key.
+. For a more complex search, try:
++
+```ts
+geoip.country_iso_code : US and products.taxless_price >= 75
+```
+
+[[filter-in-discover]]
+With the query input, you can filter data using the KQL or Lucene languages. You can also use the **Add filter** function available next to the query input to build your filters one by one or define them as Query DSL.
+
+For example, exclude results from the ecommerce sample data view where day of week is not Wednesday:
+
+. Click image:images/add-icon.png[Add icon] next to the query bar.
+. In the *Add filter* pop-up, set the field to *day_of_week*, the operator to *is not*,
+and the value to *Wednesday*.
++
+[role="screenshot"]
+image:images/discover-add-filter.png[Add filter dialog in Discover]
+
+. Click **Add filter**.
+. Continue your exploration by adding more filters.
+. To remove a filter, click the close icon (x) next to its name in the filter bar.
+
+[float]
+==== Search and filter using ES|QL
+
+You can use **Discover** with the Elasticsearch Query Language, ES|QL. When using ES|QL,
+you don't have to select a data view. It's your query that determines the data to explore and display in Discover.
+
+You can switch to the ES|QL mode of Discover from the application menu bar.
+
+Note that in ES|QL mode, the **Documents** tab is named **Results**.
+
+Learn more about how to use ES|QL queries in <>.
+
+
+
+[float]
+[[save-discover-search]]
+==== Save your search for later use
+
+Save your search so you can use it later, generate a CSV report, or use it to create visualizations, dashboards, and Canvas workpads.
+Saving a search saves the query text, filters,
+and current view of *Discover*, including the columns selected in
+the document table, the sort order, and the {data-source}.
+
+. In the application menu bar, click **Save**.
+
+. Give your search a title and a description.
+
+. Optionally store <> and the time range with the search.
+
+. Click **Save**.
+
+[float]
+[[share-your-findings]]
+==== Share your search
+
+To share your search and **Discover** view with a larger audience, click *Share* in the application menu bar.
+For detailed information about the sharing options, refer to <>.
+
+
+[float]
+[[alert-from-Discover]]
+=== Generate alerts
+
+From *Discover*, you can create a rule to periodically
+check when data goes above or below a certain threshold within a given time interval.
+
+. Ensure that your data view,
+query, and filters fetch the data for which you want an alert.
+. In the application menu bar, click *Alerts > Create search threshold rule*.
++
+The *Create rule* form is pre-filled with the latest query sent to {es}.
+. <> and <>.
+
+. Click *Save*.
+
+For more about this and other rules provided in {alert-features}, go to <>.
+
+
+[float]
+=== What’s next?
+
+* <>.
+
+* <> to better meet your needs.
+
+[float]
+=== Troubleshooting
+
+This section references common questions and issues encountered when using Discover.
+Also check the following blog post: {blog-ref}troubleshooting-guide-common-issues-kibana-discover-load[Learn how to resolve common issues with Discover.]
+
+**Some fields show as empty while they should not be, why is that?**
+
+This can happen in several cases:
+
+* With runtime fields and regular keyword fields, when the string exceeds the value set for the {ref}/ignore-above.html[ignore_above] setting used when indexing the data into {es}.
+* Due to the structure of nested fields, a leaf field added to the table as a column will not contain values in any of its cells. Instead, add the root field as a column to view a JSON representation of its values. Learn more in https://www.elastic.co/de/blog/discover-uses-fields-api-in-7-12[this blog post].
\ No newline at end of file
diff --git a/docs/discover/images/discover-add-filter.png b/docs/discover/images/discover-add-filter.png
index 3ce158fc4fb84..f72d4074b4b85 100644
Binary files a/docs/discover/images/discover-add-filter.png and b/docs/discover/images/discover-add-filter.png differ
diff --git a/docs/discover/images/discover-compare-rows.png b/docs/discover/images/discover-compare-rows.png
new file mode 100644
index 0000000000000..868a17fd7ca2d
Binary files /dev/null and b/docs/discover/images/discover-compare-rows.png differ
diff --git a/docs/discover/images/discover-customize-table.png b/docs/discover/images/discover-customize-table.png
new file mode 100644
index 0000000000000..a0aba47f6cd15
Binary files /dev/null and b/docs/discover/images/discover-customize-table.png differ
diff --git a/docs/discover/images/discover-data-view.png b/docs/discover/images/discover-data-view.png
index 869fc9b928811..e6c3a9aa832d5 100644
Binary files a/docs/discover/images/discover-data-view.png and b/docs/discover/images/discover-data-view.png differ
diff --git a/docs/discover/images/discover-limit-sample-size.png b/docs/discover/images/discover-limit-sample-size.png
new file mode 100644
index 0000000000000..1e8628ebace55
Binary files /dev/null and b/docs/discover/images/discover-limit-sample-size.png differ
diff --git a/docs/discover/images/document-explorer-compare-data.png b/docs/discover/images/document-explorer-compare-data.png
index 36560dcabd13e..2a980f8977393 100644
Binary files a/docs/discover/images/document-explorer-compare-data.png and b/docs/discover/images/document-explorer-compare-data.png differ
diff --git a/docs/discover/images/document-table-expanded.png b/docs/discover/images/document-table-expanded.png
index a6fee908b668f..f73c7d08fe09f 100644
Binary files a/docs/discover/images/document-table-expanded.png and b/docs/discover/images/document-table-expanded.png differ
diff --git a/docs/discover/images/document-table.png b/docs/discover/images/document-table.png
index 8fbabe4703b24..ab9141cbb9b54 100644
Binary files a/docs/discover/images/document-table.png and b/docs/discover/images/document-table.png differ
diff --git a/docs/discover/images/esql-custom-time-series.png b/docs/discover/images/esql-custom-time-series.png
new file mode 100644
index 0000000000000..1be4e5f137fc1
Binary files /dev/null and b/docs/discover/images/esql-custom-time-series.png differ
diff --git a/docs/discover/images/esql-full-query.png b/docs/discover/images/esql-full-query.png
index e4f5faeef3cf7..6bcfba71c4cd6 100644
Binary files a/docs/discover/images/esql-full-query.png and b/docs/discover/images/esql-full-query.png differ
diff --git a/docs/discover/images/esql-limit.png b/docs/discover/images/esql-limit.png
index b03ecdcc091e6..37a59e0c6c797 100644
Binary files a/docs/discover/images/esql-limit.png and b/docs/discover/images/esql-limit.png differ
diff --git a/docs/discover/images/esql-machine-os-ram.png b/docs/discover/images/esql-machine-os-ram.png
index ad46d88b219ff..8e2e548a7b317 100644
Binary files a/docs/discover/images/esql-machine-os-ram.png and b/docs/discover/images/esql-machine-os-ram.png differ
diff --git a/docs/discover/images/esql-no-time-series.png b/docs/discover/images/esql-no-time-series.png
new file mode 100644
index 0000000000000..779269582e7ba
Binary files /dev/null and b/docs/discover/images/esql-no-time-series.png differ
diff --git a/docs/discover/images/hello-field.png b/docs/discover/images/hello-field.png
index 261cb00acfa4c..8aee22bf2a847 100644
Binary files a/docs/discover/images/hello-field.png and b/docs/discover/images/hello-field.png differ
diff --git a/docs/discover/log-pattern-analysis.asciidoc b/docs/discover/log-pattern-analysis.asciidoc
index b4bd9fec29ec9..5131b68a073b4 100644
--- a/docs/discover/log-pattern-analysis.asciidoc
+++ b/docs/discover/log-pattern-analysis.asciidoc
@@ -7,7 +7,7 @@ Log pattern analysis works on every text field.
This example uses the <>, or you
can use your own data.
-. Open the main menu, and click *Discover*.
+. Go to *Discover*.
. Expand the {data-source} dropdown, and select *Kibana Sample Data Logs*.
diff --git a/docs/discover/save-search.asciidoc b/docs/discover/save-search.asciidoc
index 10abef2e4a1bb..024fd97ab107b 100644
--- a/docs/discover/save-search.asciidoc
+++ b/docs/discover/save-search.asciidoc
@@ -43,7 +43,7 @@ used for the saved search is also automatically selected.
[float]
=== Add search results to a dashboard
-. Open the main menu, and then click *Dashboard*.
+. Go to *Dashboards*.
. Open or create the dashboard, then click *Edit*.
. Click *Add from library*.
. From the *Types* dropdown, select *Saved search*.
diff --git a/docs/discover/search-sessions.asciidoc b/docs/discover/search-sessions.asciidoc
index e7d7466b5ae0c..fe1e945e676ff 100644
--- a/docs/discover/search-sessions.asciidoc
+++ b/docs/discover/search-sessions.asciidoc
@@ -52,8 +52,8 @@ image::images/search-session-awhile.png[Search Session indicator displaying the
Once you save a search session, you can start a new search,
navigate to a different application, or close the browser.
-. To view your saved searches, open the main menu, and then click
-*Stack Management > Search Sessions*.
+. To view your saved searches, go to the
+*Search Sessions* management page using the navigation menu or the <>.
For a saved or completed session, you can also open this view from the search sessions popup.
+
diff --git a/docs/discover/search.asciidoc b/docs/discover/search.asciidoc
index 4f4f8f5b48d10..439c5c443cc02 100644
--- a/docs/discover/search.asciidoc
+++ b/docs/discover/search.asciidoc
@@ -113,8 +113,7 @@ To save the current search:
. Click *Save* in the toolbar.
. Enter a name for the search and click *Save*.
-To import, export, and delete saved searches, open the main menu,
-then click *Stack Management > Saved Objects*.
+To import, export, and delete saved searches, go to the *Saved Objects* management page using the navigation menu or the <>.
==== Open a saved search
To load a saved search into Discover:
diff --git a/docs/discover/try-esql.asciidoc b/docs/discover/try-esql.asciidoc
index 53862be75f010..149ce80dbb349 100644
--- a/docs/discover/try-esql.asciidoc
+++ b/docs/discover/try-esql.asciidoc
@@ -5,11 +5,17 @@ The Elasticsearch Query Language, {esql}, makes it easier to explore your data w
In this tutorial we'll use the {kib} sample web logs in Discover and Lens to explore the data and create visualizations.
+[TIP]
+====
+For the complete {esql} documentation, including tutorials, examples and the full syntax reference, refer to the {ref}/esql.html[{es} documentation].
+For a more detailed overview of {esql} in {kib}, refer to {ref}/esql-kibana.html[Use {esql} in Kibana].
+====
+
[float]
[[prerequisite]]
=== Prerequisite
-To be able to select **Language {esql}** from the Data views menu the `enableESQL` setting must be enabled from **Stack Management > Advanced Settings**. It is enabled by default.
+To view the {esql} option in **Discover**, the `enableESQL` setting must be enabled from Kibana's **Advanced Settings**. It is enabled by default.
[float]
[[tutorial-try-esql]]
@@ -17,24 +23,24 @@ To be able to select **Language {esql}** from the Data views menu the `enableESQ
To load the sample data:
-. On the home page, click **Try sample data**.
-. Click **Other sample data sets**.
-. On the Sample web logs card, click **Add data**.
-. Open the main menu and select *Discover*.
-. From the Data views menu, select *Language {esql}*.
+. <>.
+. Go to *Discover*.
+. Select *Try {esql}* from the application menu bar.
Let's say we want to find out what operating system users have and how much RAM is on their machine.
. Set the time range to **Last 7 days**.
-. Expand image:images/expand-icon-2.png[An image of the expand icon] the query bar.
-. Put each processing command on a new line for better readability.
. Copy the query below:
+
[source,esql]
----
-FROM kibana_sample_data_logs
-| KEEP machine.os, machine.ram
+FROM kibana_sample_data_logs <1>
+| KEEP machine.os, machine.ram <2>
----
+<1> We're specifically looking for data from the sample web logs we just installed.
+<2> We're only keeping the `machine.os` and `machine.ram` fields in the results table.
++
+TIP: Put each processing command on a new line for better readability.
+
. Click **▶Run**.
+
@@ -57,12 +63,14 @@ FROM kibana_sample_data_logs
| LIMIT 10
----
+
-. Click **▶Run**.
+. Click **▶Run** again. You can notice that the table is now limited to 10 results. The visualization also updated automatically based on the query, and broke down the data for you.
++
+NOTE: When you don't specify any specific fields to retain using `KEEP`, the visualization isn't broken down automatically. Instead, an additional option appears above the visualization and lets you select a field manually.
+
[role="screenshot"]
image:images/esql-limit.png[An image of the extended query result]
-Let's sort the data by machine ram and filter out the destination GB.
+We will now take it a step further to sort the data by machine ram and filter out the `GB` destination.
. Copy the query below:
+
@@ -75,18 +83,51 @@ FROM kibana_sample_data_logs
| LIMIT 10
----
+
-. Click **▶Run**.
+. Click **▶Run** again. The table and visualization no longer show results for which the `geo.dest` field value is "GB", and the results are now sorted in descending order in the table based on the `machine.ram` field.
+
[role="screenshot"]
image:images/esql-full-query.png[An image of the full query result]
+
. Click **Save** to save the query and visualization to a dashboard.
-To make changes to the visualization you can use the visualization drop-down. To make changes to the colors used or the axes, or click the pencil icon. This opens an in-line editor where you can change the colors and axes of the visualization.
+[float]
+==== Edit the ES|QL visualization
+
+You can make changes to the visualization by clicking the pencil icon. This opens additional settings that let you adjust the chart type, axes, breakdown, colors, and information displayed to your liking. If you're not sure which route to go, check one of the suggestions available in the visualization editor.
+
+If you'd like to keep the visualization and add it to a dashboard, you can save it using the floppy disk icon.
+
+[float]
+==== ES|QL and time series data
+
+By default, ES|QL identifies time series data when an index contains a `@timestamp` field. This enables the time range selector and visualization options for your query.
+
+If your index doesn't have an explicit `@timestamp` field, but has a different time field, you can still enable the time range selector and visualization options by calling the `?_start` and `?_tend` parameters in your query.
+
+For example, the eCommerce sample data set doesn't have a `@timestamp` field, but has an `order_date` field.
+
+By default, when querying this data set, time series capabilities aren't active. No visualization is generated and the time picker is disabled.
+
+[source,esql]
+----
+FROM kibana_sample_data_ecommerce
+| KEEP customer_first_name, email, products._id.keyword
+----
+
+image::images/esql-no-time-series.png[ESQL query without time series capabilities enabled]
+
+While still querying the same data set, by adding the `?_start` and `?_tend` parameters based on the `order_date` field, **Discover** enables times series capabilities.
+
+[source,esql]
+----
+FROM kibana_sample_data_ecommerce
+| WHERE order_date >= ?_tstart and order_date <= ?_tend
+----
+
+image::images/esql-custom-time-series.png[ESQL query with a custom time field enabled]
+
+
+
+
-[TIP]
-====
-For the complete {esql} documentation, including tutorials, examples and the full syntax reference, refer to the {ref}/esql.html[{es} documentation].
-For a more detailed overview of {esql} in {kib}, refer to {ref}/esql-kibana.html[Use {esql} in Kibana].
-====
diff --git a/docs/fleet/fleet.asciidoc b/docs/fleet/fleet.asciidoc
index dfee4c36171dc..52c2825557001 100644
--- a/docs/fleet/fleet.asciidoc
+++ b/docs/fleet/fleet.asciidoc
@@ -31,7 +31,7 @@ You can make a complete clone of a whole managed dashboard. If you clone a panel
To clone a dashboard:
-. Open the main menu (≡) and click *Dashboards*.
+. Go to *Dashboards*.
. Click on the name of the managed dashboard to view the dashboard.
. Click *Clone* in the toolbar.
. Click *Save and return* after editing the dashboard.
diff --git a/docs/getting-started/quick-start-guide.asciidoc b/docs/getting-started/quick-start-guide.asciidoc
index 1a25f2f1ec9f2..6be9dbfa2edb2 100644
--- a/docs/getting-started/quick-start-guide.asciidoc
+++ b/docs/getting-started/quick-start-guide.asciidoc
@@ -22,18 +22,19 @@ include::{docs-root}/shared/cloud/ess-getting-started.asciidoc[]
[float]
[[gs-get-data-into-kibana]]
-== Add the sample data
+== Add sample data
Sample data sets come with sample visualizations, dashboards, and more to help you explore {kib} before you ingest or add your own data.
-. On the home page, click *Try sample data*.
+. Open the **Integrations** page from the navigation menu or using the <>.
-. Click *Other sample data sets*.
+. In the list of integrations, select **Sample Data**.
-. On the *Sample eCommerce orders* card, click *Add data*.
-+
-[role="screenshot"]
-image::images/addData_sampleDataCards_8.6.0.png[Add data UI for the sample data sets]
+. On the page that opens, select *Other sample data sets*.
+
+. Install the sample data sets that you want.
+
+Once installed, you can access the sample data in the various {kib} apps available to you.
[float]
[[explore-the-data]]
@@ -41,7 +42,7 @@ image::images/addData_sampleDataCards_8.6.0.png[Add data UI for the sample data
*Discover* displays the data in an interactive histogram that shows the distribution of data, or documents, over time, and a table that lists the fields for each document that matches the {data-source}. To view a subset of the documents, you can apply filters to the data, and customize the table to display only the fields you want to explore.
-. Open the main menu, then click *Discover*.
+. Go to *Discover*.
. Change the <> to *Last 7 days*.
+
@@ -67,7 +68,7 @@ image::images/availableFields_discover_8.4.0.png[Discover table that displays on
A dashboard is a collection of panels that you can use to visualize the data. Panels contain visualizations, interactive controls, text, and more.
-. Open the main menu, then click *Dashboard*.
+. Go to *Dashboards*.
. Click *[eCommerce] Revenue Dashboard*.
+
diff --git a/docs/management/action-types.asciidoc b/docs/management/action-types.asciidoc
index 361892e430afd..1357af980d278 100644
--- a/docs/management/action-types.asciidoc
+++ b/docs/management/action-types.asciidoc
@@ -28,9 +28,9 @@ a| <>
| Send a request to {gemini}.
-a| <>
+a| <>
-| Send a request to {inference}.
+| Send a request to {infer}.
a| <>
diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc
index cda03f91dfc17..f6b8e6844ce04 100644
--- a/docs/management/advanced-options.asciidoc
+++ b/docs/management/advanced-options.asciidoc
@@ -20,7 +20,7 @@ indicator is displayed:
[role="screenshot"]
image::images/settings-read-only-badge.png[Example of Advanced Settings Management's read only access indicator in Kibana's header]
-To add the privilege, open the main menu, then click *Stack Management > Roles*.
+To add the privilege, go to the *Roles* management page using the navigation menu or the <>.
For more information on granting access to {kib}, refer to <>.
@@ -30,7 +30,7 @@ For more information on granting access to {kib}, refer to < Advanced Settings*.
+. Go to the *Advanced settings* page using the navigation menu or the <>.
. Click *Space Settings*.
. Scroll or search for the setting.
. Make your change, then click *Save changes*.
@@ -330,9 +330,6 @@ the minimum and maximum values of a numeric field or a map of a geo field.
[[discover:showMultiFields]]`discover:showMultiFields`::
Controls the display of multi-fields in the expanded document view.
-[[discover:showLegacyFieldTopValues]]`discover:showLegacyFieldTopValues`::
-To calculate the top values for a field in the sidebar using 500 instead of 5,000 records per shard, turn on this option.
-
[[discover-sort-defaultorder]]`discover:sort:defaultOrder`::
The default sort direction for time-based data views.
@@ -647,7 +644,7 @@ Disable this option if you prefer to use the new heatmap charts with improved pe
Change the settings that apply only to {kib} spaces.
-. Open the main menu, then click *Stack Management > Advanced Settings*.
+. Go to the *Advanced settings* page using the navigation menu or the <>.
. Click *Global Settings*.
. Scroll or search for the setting.
. Make your change, then click *Save changes*.
diff --git a/docs/management/connectors/action-types/inference.asciidoc b/docs/management/connectors/action-types/inference.asciidoc
index 8c7f2840f9c5c..ea8a0be675e18 100644
--- a/docs/management/connectors/action-types/inference.asciidoc
+++ b/docs/management/connectors/action-types/inference.asciidoc
@@ -1,7 +1,7 @@
[[inference-action-type]]
== {infer-cap} connector and action
++++
-{inference}
+{infer-cap}
++++
:frontmatter-description: Add a connector that can send requests to {inference}.
:frontmatter-tags-products: [kibana]
@@ -9,7 +9,8 @@
:frontmatter-tags-user-goals: [configure]
-The {infer} connector uses the {es} client to send requests to an {infer} service. The connector uses the <> to send the request.
+The {infer} connector uses the {es} client to send requests to an {infer} service.
+The connector uses the <> to send the request.
[float]
[[define-inference-ui]]
@@ -19,7 +20,7 @@ You can create connectors in *{stack-manage-app} > {connectors-ui}*. For example
[role="screenshot"]
image::management/connectors/images/inference-connector.png[{inference} connector]
-// NOTE: This is an autogenerated screenshot. Do not edit it directly.
+
[float]
[[inference-connector-configuration]]
@@ -44,7 +45,8 @@ while creating or editing the connector in {kib}. For example:
[role="screenshot"]
image::management/connectors/images/inference-completion-params.png[{infer} params test]
-// NOTE: This is an autogenerated screenshot. Do not edit it directly.
+
+
[float]
[[inference-connector-actions]]
=== {infer-cap} connector actions
@@ -56,14 +58,17 @@ The {infer} actions have the following configuration properties. Properties depe
==== Completion
The following example performs a completion task on the example question.
+
Input::
The text on which you want to perform the {infer} task. For example:
+
-[source,text]
--
+[source,text]
+------------------------------------------------------------
{
input: 'What is Elastic?'
}
+------------------------------------------------------------
--
[float]
@@ -71,18 +76,22 @@ The text on which you want to perform the {infer} task. For example:
==== Text embedding
The following example performs a text embedding task.
+
Input::
The text on which you want to perform the {infer} task. For example:
+
-[source,text]
--
+[source,text]
+------------------------------------------------------------
{
input: 'The sky above the port was the color of television tuned to a dead channel.',
task_settings: {
input_type: 'ingest'
}
}
+------------------------------------------------------------
--
+
Input type::
An optional string that overwrites the connector's default model.
@@ -91,16 +100,20 @@ An optional string that overwrites the connector's default model.
==== Reranking
The following example performs a reranking task on the example input.
+
Input::
The text on which you want to perform the {infer} task. Should be a string array. For example:
+
-[source,text]
--
+[source,text]
+------------------------------------------------------------
{
input: ['luke', 'like', 'leia', 'chewy', 'r2d2', 'star', 'wars'],
query: 'star wars main character'
}
+------------------------------------------------------------
--
+
Query::
The search query text.
@@ -109,14 +122,17 @@ The search query text.
==== Sparse embedding
The following example performs a sparse embedding task on the example sentence.
+
Input::
The text on which you want to perform the {infer} task. For example:
+
-[source,text]
--
+[source,text]
+------------------------------------------------------------
{
input: 'The sky above the port was the color of television tuned to a dead channel.'
}
+------------------------------------------------------------
--
[float]
diff --git a/docs/management/connectors/action-types/jira.asciidoc b/docs/management/connectors/action-types/jira.asciidoc
index 906a2945d82de..2111de7a77ce6 100644
--- a/docs/management/connectors/action-types/jira.asciidoc
+++ b/docs/management/connectors/action-types/jira.asciidoc
@@ -14,7 +14,7 @@ The Jira connector uses the https://developer.atlassian.com/cloud/jira/platform/
[[jira-compatibility]]
=== Compatibility
-Jira on-premise deployments (Server and Data Center) are not supported.
+Jira Cloud and Jira Data Center are supported. Jira on-premise deployments are not supported.
[float]
[[define-jira-ui]]
@@ -37,7 +37,7 @@ Name:: The name of the connector.
URL:: Jira instance URL.
Project key:: Jira project key.
Email:: The account email for HTTP Basic authentication.
-API token:: Jira API authentication token for HTTP Basic authentication.
+API token:: Jira API authentication token for HTTP Basic authentication. For Jira Data Center, this value should be the password associated with the email owner.
[float]
[[jira-action-configuration]]
diff --git a/docs/management/connectors/action-types/servicenow-sir.asciidoc b/docs/management/connectors/action-types/servicenow-sir.asciidoc
index 4c3b6d15bf59e..295a326b490b2 100644
--- a/docs/management/connectors/action-types/servicenow-sir.asciidoc
+++ b/docs/management/connectors/action-types/servicenow-sir.asciidoc
@@ -285,7 +285,8 @@ IMPORTANT: Deprecated connectors will continue to function with the rules they w
To update a deprecated connector:
-. Open the main menu and go to *{stack-manage-app} > {connectors-ui}*.
+. Go to the *{connectors-ui}* page using the navigation menu or the
+<>.
. Select the deprecated connector to open the *Edit connector* flyout.
. In the warning message, click *Update this connector*.
. Complete the guided steps in the *Edit connector* flyout.
diff --git a/docs/management/connectors/action-types/servicenow.asciidoc b/docs/management/connectors/action-types/servicenow.asciidoc
index 83f8bd050d044..852db21e77544 100644
--- a/docs/management/connectors/action-types/servicenow.asciidoc
+++ b/docs/management/connectors/action-types/servicenow.asciidoc
@@ -338,7 +338,8 @@ IMPORTANT: Deprecated connectors will continue to function with the rules they w
To update a deprecated connector:
-. Open the main menu and go to *{stack-manage-app} > {connectors-ui}*.
+. Go to the *{connectors-ui}* page using the navigation menu or the
+<>.
. Select the deprecated connector to open the *Edit connector* flyout.
. In the warning message, click *Update this connector*.
. Complete the guided steps in the *Edit connector* flyout.
diff --git a/docs/management/connectors/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc
index 8f9536331bb1c..06a77a12beab3 100644
--- a/docs/management/connectors/pre-configured-connectors.asciidoc
+++ b/docs/management/connectors/pre-configured-connectors.asciidoc
@@ -66,7 +66,8 @@ Sensitive properties, such as passwords, can also be stored in the
[[managing-preconfigured-connectors]]
=== View preconfigured connectors
-When you open the main menu, click *{stack-manage-app} > {connectors-ui}*.
+go to the *{connectors-ui}* page using the navigation menu or the
+<>.
Preconfigured connectors appear regardless of which space you are in.
They are tagged as “preconfigured”, and you cannot delete them.
diff --git a/docs/management/manage-data-views.asciidoc b/docs/management/manage-data-views.asciidoc
index 936d764433fe9..4c6a0d77b7a9e 100644
--- a/docs/management/manage-data-views.asciidoc
+++ b/docs/management/manage-data-views.asciidoc
@@ -39,7 +39,7 @@ then define the field values by emitting a single value using
the {ref}/modules-scripting-painless.html[Painless scripting language].
You can also add runtime fields in <> and <>.
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* management page using the navigation menu or the <>.
. Select the data view that you want to add the runtime field to, then click *Add field*.
@@ -162,7 +162,7 @@ else {
Edit the settings for runtime fields, or remove runtime fields from data views.
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* management page using the navigation menu or the <>.
. Select the data view that contains the runtime field you want to manage, then open the runtime field edit options or delete the runtime field.
@@ -198,7 +198,7 @@ https://www.elastic.co/blog/using-painless-kibana-scripted-fields[Using Painless
Create and add scripted fields to your data views.
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* management page using the navigation menu or the <>.
. Select the data view you want to add a scripted field to.
@@ -214,7 +214,7 @@ For more information about scripted fields in {es}, refer to {ref}/modules-scrip
[[update-scripted-field]]
==== Manage scripted fields
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* management page using the navigation menu or the <>.
. Select the data view that contains the scripted field you want to manage.
@@ -230,7 +230,7 @@ exceptions when you view the dynamically generated data.
{kib} uses the same field types as {es}, however, some {es} field types are unsupported in {kib}.
To customize how {kib} displays data fields, use the formatting options.
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* management page using the navigation menu or the <>.
. Click the data view that contains the field you want to change.
diff --git a/docs/management/managing-licenses.asciidoc b/docs/management/managing-licenses.asciidoc
index 837a83f0aae38..14b359276356c 100644
--- a/docs/management/managing-licenses.asciidoc
+++ b/docs/management/managing-licenses.asciidoc
@@ -11,14 +11,16 @@ If you need more than 30 days to complete your evaluation,
request an extended trial at {extendtrial}.
To view the status of your license, start a trial, or install a new
-license, open the main menu, then click *Stack Management > License Management*.
+license, go to the *License Management* page using the navigation menu or the
+<>.
[discrete]
=== Required permissions
The `manage` cluster privilege is required to access *License Management*.
-To add the privilege, open the main menu, then click *Stack Management > Roles*.
+To add the privilege, go to the *Roles* management page using the navigation menu or the
+<>.
[discrete]
[[license-expiration]]
diff --git a/docs/management/managing-saved-objects.asciidoc b/docs/management/managing-saved-objects.asciidoc
index 231843081e7e1..1e2e5d194cd3e 100644
--- a/docs/management/managing-saved-objects.asciidoc
+++ b/docs/management/managing-saved-objects.asciidoc
@@ -4,7 +4,8 @@
Edit, import, export, and copy your saved objects. These objects include
dashboards, visualizations, maps, {data-sources}, *Canvas* workpads, and other saved objects.
-To get started, open the main menu, and then click *Stack Management > Saved Objects*.
+You can find the *Saved Objects* page using the navigation menu or the
+<>.
[role="screenshot"]
image::images/management-saved-objects.png[Saved Objects]
@@ -14,7 +15,8 @@ image::images/management-saved-objects.png[Saved Objects]
To access *Saved Objects*, you must have the required `Saved Objects Management` {kib} privilege.
-To add the privilege, open the main menu, and then click *Stack Management > Roles*.
+To add the privilege, go to the *Roles* management page using the navigation menu or the
+<>.
NOTE: Granting access to `Saved Objects Management` authorizes users to
manage all saved objects in {kib}, including objects that are managed by
diff --git a/docs/management/managing-tags.asciidoc b/docs/management/managing-tags.asciidoc
index b9fbe85760786..20e5fa897c0ae 100644
--- a/docs/management/managing-tags.asciidoc
+++ b/docs/management/managing-tags.asciidoc
@@ -5,7 +5,8 @@
Use tags to categorize your saved objects,
then filter for related objects based on shared tags.
-To get started, open the main menu, and then click *Stack Management > Tags*.
+To get started, go to the *Tags* management page using the navigation menu or the
+<>.
[role="screenshot"]
image::images/tags/tag-management-section.png[Tags management]
@@ -15,8 +16,8 @@ image::images/tags/tag-management-section.png[Tags management]
To create tags, you must meet the minimum requirements.
-* Access to *Tags* requires the `Tag Management` Kibana privilege. To add the privilege, open the main menu,
-and then click *Stack Management > Roles*.
+* Access to *Tags* requires the `Tag Management` Kibana privilege. To add the privilege, go to the *Roles* page using the navigation menu or the
+<>.
* The `read` privilege allows you to assign tags to the saved objects for which you have write permission.
* The `write` privilege enables you to create, edit, and delete tags.
diff --git a/docs/management/rollups/create_and_manage_rollups.asciidoc b/docs/management/rollups/create_and_manage_rollups.asciidoc
index 2f9ede62c0b0f..c6e379c3d53aa 100644
--- a/docs/management/rollups/create_and_manage_rollups.asciidoc
+++ b/docs/management/rollups/create_and_manage_rollups.asciidoc
@@ -9,7 +9,8 @@ an index pattern, and then rolls it into a new index. Rollup indices are a good
way to compactly store months or years of historical data for use in
visualizations and reports.
-To get started, open the main menu, then click *Stack Management > Rollup Jobs*.
+You can go to the *Rollup Jobs* page using the navigation menu or the
+<>.
[role="screenshot"]
image::images/management_rollup_list.png[List of currently active rollup jobs]
@@ -23,7 +24,8 @@ detailed information.
The `manage_rollup` cluster privilege is required to access *Rollup jobs*.
-To add the privilege, open the main menu, then click *Stack Management > Roles*.
+To add the privilege, go to the *Roles* management page using the navigation menu or the
+<>.
[float]
[[create-and-manage-rollup-job]]
@@ -142,7 +144,8 @@ rollup index, or you can remove or archive it using
Your next step is to visualize your rolled up data in a vertical bar chart.
Most visualizations support rolled up data, with the exception of Timelion and Vega visualizations.
-. Open the main menu, then click *Stack Management > Data Views*.
+. Go to the *Data Views* page using the navigation menu or the
+<>.
. Click *Create data view*, and select *Rollup data view* from the dropdown.
@@ -153,7 +156,7 @@ The notation for a combination data view with both raw and rolled up data is
`rollup_logstash,kibana_sample_data_logs`. In this data view, `rollup_logstash`
matches the rollup index and `kibana_sample_data_logs` matches the raw data.
-. Open the main menu, click *Dashboard*, then *Create dashboard*.
+. Go to *Dashboards*, then select *Create dashboard*.
. Set the <> to *Last 90 days*.
diff --git a/docs/management/watcher-ui/index.asciidoc b/docs/management/watcher-ui/index.asciidoc
index 2e941cb86ca0b..7f85376ad5698 100644
--- a/docs/management/watcher-ui/index.asciidoc
+++ b/docs/management/watcher-ui/index.asciidoc
@@ -8,8 +8,8 @@ Watches are helpful for analyzing mission-critical and business-critical
streaming data. For example, you might watch application logs for performance
outages or audit access logs for security threats.
-To get started, open the main menu,
-then click *Stack Management > Watcher*.
+Go to the *Watcher* page using the navigation menu or the
+<>.
With this UI, you can:
* <>
@@ -39,7 +39,7 @@ and either of these Watcher roles:
* `watcher_admin`. You can perform all Watcher actions, including create and edit watches.
* `watcher_user`. You can view watches, but not create or edit them.
-To manage roles, open the main menu, then click *Stack Management > Roles*, or use the {api-kibana}/group/endpoint-roles[role APIs].
+To manage roles, go to the *Roles* management page, or use the {api-kibana}/group/endpoint-roles[role APIs].
Watches are shared between all users with the same role.
NOTE: If you are creating a threshold watch, you must also have the `view_index_metadata` index privilege. See
diff --git a/docs/maps/asset-tracking-tutorial.asciidoc b/docs/maps/asset-tracking-tutorial.asciidoc
index 32ab099575c92..b1ded453214f6 100644
--- a/docs/maps/asset-tracking-tutorial.asciidoc
+++ b/docs/maps/asset-tracking-tutorial.asciidoc
@@ -35,7 +35,8 @@ To get to the fun of visualizing and alerting on Portland public transport vehic
[float]
==== Step 1: Set up an Elasticsearch index
-. In Kibana, open the main menu, then click *Dev Tools*.
+. In Kibana, go to *Developer tools* using the navigation menu or the
+<>.
. In *Console*, create the `tri_met_tracks` index lifecyle policy. This policy will keep the events in the hot data phase for 7 days. The data then moves to the warm phase. After 365 days in the warm phase, the data is deleted.
+
.ILM policy definition
@@ -503,7 +504,7 @@ TIP: You may want to tweak this Data View to adjust the field names and number o
[float]
==== Step 4: Explore the Portland TriMet data
-. Open the main menu, and click *Discover*.
+. Go to *Discover*.
. Set the data view to *{ems-asset-index-name}*.
. Open the <>, and set the time range to the last 15 minutes.
. Expand a document and explore some of the fields that you will use later in this tutorial: `trimet.bearing`, `trimet.inCongestion`, `trimet.location`, and `trimet.vehicleID`.
@@ -523,7 +524,7 @@ It's hard to get an overview of Portland vehicles by looking at individual event
Create your map and set the theme for the default layer to dark mode.
-. Open the main menu, and click *Maps*.
+. Go to *Maps*.
. Click *Create map*.
. In the *Layers* list, click *Road map*, and then click *Edit layer settings*.
. Open the *Tile service* dropdown, and select *Road map - dark*.
diff --git a/docs/maps/geojson-upload.asciidoc b/docs/maps/geojson-upload.asciidoc
index f4208663078af..8bd8a32e5d444 100644
--- a/docs/maps/geojson-upload.asciidoc
+++ b/docs/maps/geojson-upload.asciidoc
@@ -19,8 +19,8 @@ GeoJSON is the most commonly used and flexible option.
Follow these instructions to upload a GeoJSON data file, or try the
<>.
-. Open the main menu, click *Maps*, and then click *Add layer*.
-. Click *Uploaded GeoJSON*.
+. Go to *Maps*, and select *Add layer*.
+. Select *Uploaded GeoJSON*.
+
[role="screenshot"]
image::maps/images/fu_gs_select_source_file_upload.png[]
diff --git a/docs/maps/import-geospatial-data.asciidoc b/docs/maps/import-geospatial-data.asciidoc
index e84ba3c3cbd27..47d05c5f1d00f 100644
--- a/docs/maps/import-geospatial-data.asciidoc
+++ b/docs/maps/import-geospatial-data.asciidoc
@@ -23,7 +23,7 @@ To upload GeoJSON files, shapefiles, and draw features in {kib} with *Maps*, you
* The `create` and `create_index` index privileges for destination indices
* To use the index in *Maps*, you must also have the `read` and `view_index_metadata` index privileges for destination indices
-To upload delimited files (such as CSV, TSV, or JSON files) on the {kib} home page, you must also have:
+To upload delimited files (such as CSV, TSV, or JSON files) from the **Upload file** integration, you must also have:
* The `all` {kib} privilege for *Discover*
* The `manage_pipeline` or `manage_ingest_pipelines` cluster privilege
@@ -33,9 +33,9 @@ To upload delimited files (such as CSV, TSV, or JSON files) on the {kib} home pa
[discrete]
=== Upload delimited files with latitude and longitude columns
-On the {kib} home page, you can upload a file and import it into an {es} index with latitude and longitude columns combined into a `geo_point` field.
+You can upload a file and import it into an {es} index with latitude and longitude columns combined into a `geo_point` field.
-. Go to the {kib} home page and click *Upload a file*.
+. Go to the *Integrations* page and select *Upload file*.
. Select a file in one of the supported file formats.
. Click *Import*.
. Select the *Advanced* tab.
diff --git a/docs/maps/maps-getting-started.asciidoc b/docs/maps/maps-getting-started.asciidoc
index 39579d935275e..8dec40df5eb31 100644
--- a/docs/maps/maps-getting-started.asciidoc
+++ b/docs/maps/maps-getting-started.asciidoc
@@ -31,7 +31,7 @@ refer to <>.
[[maps-create]]
=== Step 1. Create a map
-. Open the main menu, and then click *Dashboard*.
+. Go to *Dashboards*.
. Click **Create dashboard**.
. Set the time range to *Last 7 days*.
. Click the **Create new Maps** icon image:maps/images/app_gis_icon.png[].
diff --git a/docs/maps/reverse-geocoding-tutorial.asciidoc b/docs/maps/reverse-geocoding-tutorial.asciidoc
index 48151281fb07d..ec221dfc5fb95 100644
--- a/docs/maps/reverse-geocoding-tutorial.asciidoc
+++ b/docs/maps/reverse-geocoding-tutorial.asciidoc
@@ -26,12 +26,7 @@ GeoIP is a common way of transforming an IP address to a longitude and latitude.
You’ll use the <> that comes with Kibana for this tutorial. Web logs sample data set has longitude and latitude. If your web log data does not contain longitude and latitude, use {ref}/geoip-processor.html[GeoIP processor] to transform an IP address into a {ref}/geo-point.html[geo_point] field.
-To install web logs sample data set:
-
-. On the home page, click *Try sample data*.
-. Expand *Other sample data sets*.
-. On the *Sample web logs* card, click *Add data*.
-
+To install the web logs sample data set, refer to <>.
[float]
=== Step 2: Index Combined Statistical Area (CSA) regions
@@ -46,7 +41,7 @@ To get the CSA boundary data:
. Go to the https://www.census.gov/geographies/mapping-files/time-series/geo/carto-boundary-file.html[Census Bureau’s website] and download the `cb_2018_us_csa_500k.zip` file.
. Uncompress the zip file.
-. In Kibana, open the main menu, and click *Maps*.
+. In Kibana, go to *Maps*.
. Click *Create map*.
. Click *Add layer*.
. Click *Upload file*.
@@ -71,7 +66,8 @@ image::maps/images/reverse-geocoding-tutorial/csa_regions.png[Map showing metro
=== Step 3: Reverse geocoding
To visualize CSA regions by web log traffic, the web log traffic must contain a CSA region identifier. You'll use {es} {ref}/enrich-processor.html[enrich processor] to add CSA region identifiers to the web logs sample data set. You can skip this step if your source data already contains region identifiers.
-. Open the main menu, and then click *Dev Tools*.
+. Go to *Developer tools* using the navigation menu or the
+<>.
. In *Console*, create a {ref}/geo-match-enrich-policy-type.html[geo_match enrichment policy]:
+
[source,js]
@@ -142,7 +138,7 @@ PUT kibana_sample_data_logs/_settings
}
----------------------------------
-. Open the main menu, and click *Discover*.
+. Go to *Discover*.
. Set the data view to *Kibana Sample Data Logs*.
. Open the <>, and set the time range to the last 30 days.
. Scan through the list of *Available fields* until you find the `csa.GEOID` field. You can also search for the field by name.
@@ -158,7 +154,7 @@ image::maps/images/reverse-geocoding-tutorial/discover_enriched_web_log.png[View
=== Step 4: Visualize Combined Statistical Area (CSA) regions by web traffic
Now that our web traffic contains CSA region identifiers, you'll visualize CSA regions by web traffic.
-. Open the main menu, and click *Maps*.
+. Go to *Maps*.
. Click *Create map*.
. Click *Add layer*.
. Click *Choropleth*.
diff --git a/docs/maps/search.asciidoc b/docs/maps/search.asciidoc
index bfd293aa2352f..b094934bc6b4f 100644
--- a/docs/maps/search.asciidoc
+++ b/docs/maps/search.asciidoc
@@ -85,7 +85,7 @@ Create filters from your map to focus in on just the data you want. *Maps* provi
To filter your dashboard by your map bounds as you pan and zoom your map:
-. Open the main menu, and then click *Dashboard*.
+. Go to *Dashboards*.
. Select your dashboard from the list or click *Create dashboard*.
. If your dashboard does not have a map, add a map panel.
. Click the gear icon image:maps/images/gear_icon.png[gear icon] to open the map panel menu.
diff --git a/docs/osquery/manage-integration.asciidoc b/docs/osquery/manage-integration.asciidoc
index 69cf505e724a2..7d6131ce88bfa 100644
--- a/docs/osquery/manage-integration.asciidoc
+++ b/docs/osquery/manage-integration.asciidoc
@@ -53,7 +53,8 @@ Any changes you make to `packs` from this field are not reflected in the UI on t
While this allows you to use advanced Osquery functionality like pack discovery queries, you do lose the ability to manage packs defined this way from the Osquery *Packs* page.
=========================
-. From the {kib} main menu, click *Fleet*, then the *Agent policies* tab.
+. Go to *Fleet* using the navigation menu or the
+<>, then open the *Agent policies* tab.
. Click the name of the agent policy where you want to adjust the Osquery configuration. The configuration changes you make only apply to the policy you select.
@@ -136,7 +137,8 @@ and Osquerybeat in the agent directory. Refer to the {fleet-guide}/installation-
To get more details in the logs, change the agent logging level to debug:
-. Open the main menu, and then select **Fleet**.
+. Go to **Fleet** using the navigation menu or the
+<>.
. Select the agent that you want to debug.
diff --git a/docs/osquery/osquery.asciidoc b/docs/osquery/osquery.asciidoc
index 4f0859ac21b19..ebfd58c973370 100644
--- a/docs/osquery/osquery.asciidoc
+++ b/docs/osquery/osquery.asciidoc
@@ -36,7 +36,8 @@ view live and scheduled query results, but you cannot run live queries or edit.
To inspect hosts, run a query against one or more agents or policies,
then view the results.
-. Open the main menu, and then click *Osquery*.
+. Go to *Osquery* using the navigation menu or the
+<>.
. In the *Live queries* view, click **New live query**.
. Choose to run a single query or a query pack.
. Select one or more agents or groups to query. Start typing in the search field,
diff --git a/docs/setup/configuring-reporting.asciidoc b/docs/setup/configuring-reporting.asciidoc
index 4213cf38b6398..61ef028d1504f 100644
--- a/docs/setup/configuring-reporting.asciidoc
+++ b/docs/setup/configuring-reporting.asciidoc
@@ -48,9 +48,10 @@ NOTE: If you use the default settings, you can still create a custom role that g
. Create the reporting role.
-.. Open the main menu, then click *Stack Management*.
+.. Go to the *Roles* management page using the navigation menu or the
+<>.
-.. Click *Roles > Create role*.
+.. Click *Create role*.
. Specify the role settings.
@@ -86,9 +87,10 @@ NOTE: If the *Reporting* options for application features are unavailable, and t
. Assign the reporting role to a user.
-.. Open the main menu, then click *Stack Management*.
+.. Go to the *Users* management page using the navigation menu or the
+<>.
-.. Click *Users*, then click the user you want to assign the reporting role to.
+.. Select the user you want to assign the reporting role to.
.. From the *Roles* dropdown, select *custom_reporting_user*.
diff --git a/docs/setup/connect-to-elasticsearch.asciidoc b/docs/setup/connect-to-elasticsearch.asciidoc
index f5c8ce3e732f2..f6e6c71e25fbd 100644
--- a/docs/setup/connect-to-elasticsearch.asciidoc
+++ b/docs/setup/connect-to-elasticsearch.asciidoc
@@ -6,8 +6,7 @@ which are pre-packaged assets that are available for a wide array of popular
services and platforms. With integrations, you can add monitoring for logs and
metrics, protect systems from security threats, and more.
-All integrations are available in a single view, and
-{kib} guides you there from the *Welcome* screen, home page, and main menu.
+All integrations are available in a single view on the **Integrations** page.
[role="screenshot"]
image::images/add-integration.png[Integrations page from which you can choose integrations to start collecting and analyzing data]
diff --git a/docs/upgrade-notes.asciidoc b/docs/upgrade-notes.asciidoc
index 43fb4d5ac66e5..84a27e1194a16 100644
--- a/docs/upgrade-notes.asciidoc
+++ b/docs/upgrade-notes.asciidoc
@@ -997,7 +997,7 @@ In 8.1.0 and later, {kib} uses the field caps API, by default, to determine the
`visualization:visualize:legacyPieChartsLibrary` has been removed from *Advanced Settings*. The setting allowed you to create aggregation-based pie chart visualizations using the legacy charts library. For more information, refer to {kibana-pull}146990[#146990].
*Impact* +
-In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check link:https://www.elastic.co/guide/en/kibana/current/add-aggregation-based-visualization-panels.html[Aggregation-based].
+In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check <>.
====
[discrete]
@@ -1672,6 +1672,27 @@ When you create *Lens* visualization, the default for the *Legend width* is now
[float]
==== Elastic Observability solution
+[discrete]
+[[deprecation-192003]]
+.Deprecated the Observability AI Assistant specific advanced setting `observability:aiAssistantLogsIndexPattern`. (8.16)
+[%collapsible]
+====
+*Details* +
+The Observability AI Assistant specific advanced setting for Logs index patterns `observability:aiAssistantLogsIndexPattern` is deprecated and no longer used. The AI Assistant will now use the existing **Log sources** setting `observability:logSources` instead. For more information, refer to ({kibana-pull}192003[#192003]).
+====
+
+[discrete]
+[[deprecation-194519]]
+.The Logs Stream was hidden by default in favor of the Logs Explorer app. (8.16)
+[%collapsible]
+====
+*Details* +
+You can find the Logs Explorer app in the navigation menu under Logs > Explorer, or as a separate tab in Discover. For more information, refer to ({kibana-pull}194519[#194519]).
+
+*Impact* +
+You can still show the Logs Stream app again by navigating to Stack Management > Advanced Settings and by enabling the `observability:enableLogsStream` setting.
+====
+
[discrete]
[[deprecation-120689]]
diff --git a/docs/user/canvas.asciidoc b/docs/user/canvas.asciidoc
index e7b4fdaf20921..21803b90034ad 100644
--- a/docs/user/canvas.asciidoc
+++ b/docs/user/canvas.asciidoc
@@ -43,7 +43,8 @@ To create workpads, you must meet the minimum requirements.
* Make sure you have sufficient privileges to create and save workpads. When the read-only indicator appears, you have insufficient privileges,
and the options to create and save workpads are unavailable. For more information, refer to <>.
-To open *Canvas*, open the main menu, then click *Canvas*.
+You can open *Canvas* using the navigation menu or the
+<>.
[float]
[[start-with-a-blank-workpad]]
@@ -175,7 +176,7 @@ To share workpads with a larger audience, click *Share* in the toolbar. For deta
[[export-single-workpad]]
== Export workpads
-Want to export multiple workpads? Go to the *Canvas* home page, select the workpads you want to export, then click *Export*.
+Want to export multiple workpads? Go to the *Canvas* page, select the workpads you want to export, then click *Export*.
--
@@ -185,8 +186,6 @@ include::{kibana-root}/docs/canvas/canvas-present-workpad.asciidoc[]
include::{kibana-root}/docs/canvas/canvas-tutorial.asciidoc[]
-include::{kibana-root}/docs/canvas/canvas-expression-lifecycle.asciidoc[]
-
include::{kibana-root}/docs/canvas/canvas-function-reference.asciidoc[]
include::{kibana-root}/docs/canvas/canvas-tinymath-functions.asciidoc[]
diff --git a/docs/user/dashboard/aggregation-based.asciidoc b/docs/user/dashboard/aggregation-based.asciidoc
index 9098ea6265291..f27d60928e6fe 100644
--- a/docs/user/dashboard/aggregation-based.asciidoc
+++ b/docs/user/dashboard/aggregation-based.asciidoc
@@ -140,13 +140,9 @@ a bar chart that displays the top five log traffic sources for every three hours
Add the sample web logs data that you'll use to create the bar chart, then create the dashboard.
-. On the home page, click *Try sample data*.
+. <>.
-. Click *Other sample data sets*.
-
-. On the *Sample web logs* card, click *Add data*.
-
-. Open the main menu, then click *Dashboard*.
+. Go to *Dashboards*.
. On the *Dashboards* page, click *Create dashboard*.
diff --git a/docs/user/dashboard/create-dashboards.asciidoc b/docs/user/dashboard/create-dashboards.asciidoc
index b07b4e88a684a..8b0d5e5f524fd 100644
--- a/docs/user/dashboard/create-dashboards.asciidoc
+++ b/docs/user/dashboard/create-dashboards.asciidoc
@@ -83,6 +83,7 @@ image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/bltf75cdb828
[[save-dashboards]]
. **Save** the dashboard. You can then leave the **Edit** mode and *Switch to view mode*.
+NOTE: Managed dashboards can't be edited directly, but you can <> them and edit these duplicates.
[[reset-the-dashboard]]
=== Reset dashboard changes
@@ -155,6 +156,24 @@ Copy panels from one dashboard to another dashboard.
[role="screenshot"]
image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt64206db263cf5514/66f49286833cffb09bebd18d/copy-to-dashboard-8.15.0.gif[Copy a panel to another dashboard, width 30%]
+[[duplicate-dashboards]]
+== Duplicate dashboards
+
+. Open the dashboard you want to duplicate.
+
+. In *View* mode, click *Duplicate* in the toolbar.
+
+. In the *Duplicate dashboard* window, enter a title and optional description and tags.
+
+. Click *Save*.
+
+You will be redirected to the duplicated dashboard.
+
+To duplicate a managed dashboard, follow the instructions above or click the *Managed* badge in the toolbar. Then click *Duplicate* in the dialogue that appears.
+
+[role="screenshot"]
+image::images/managed-dashboard-popover-8.16.0.png[Managed badge dialog with Duplicate button, width=40%]
+
== Import dashboards
You can import dashboards from the **Saved Objects** page under **Stack Management**. Refer to <>.
diff --git a/docs/user/dashboard/create-visualizations.asciidoc b/docs/user/dashboard/create-visualizations.asciidoc
index 5115677a4f51a..815f46d5711eb 100644
--- a/docs/user/dashboard/create-visualizations.asciidoc
+++ b/docs/user/dashboard/create-visualizations.asciidoc
@@ -213,7 +213,7 @@ You can then **Save** and add it to an existing or a new dashboard using the sav
. From your dashboard, select **Add panel**.
. Choose **ES|QL** under **Visualizations**. An ES|QL editor appears and lets you configure your query and its associated visualization. The **Suggestions** panel can help you find alternative ways to configure the visualization.
+
-TIP: Check the link:esql-language.html[ES|QL reference] to get familiar with the syntax and optimize your query.
+TIP: Check the link:{ref}/esql-language.html[ES|QL reference] to get familiar with the syntax and optimize your query.
. When editing your query or its configuration, run the query to update the preview of the visualization.
+
image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt69dcceb4f1e12bc1/66c752d6aff77d384dc44209/edit-esql-visualization.gif[Previewing an ESQL visualization]
@@ -232,7 +232,7 @@ The Maps editor has extensive documentation. For your reading comfort, we have m
. From your dashboard, select **Add panel**.
. Choose **Field statistics** under **Visualizations**. An ES|QL editor appears and lets you configure your query with the fields and information that you want to show.
+
-TIP: Check the link:esql-language.html[ES|QL reference] to get familiar with the syntax and optimize your query.
+TIP: Check the link:{ref}/esql-language.html[ES|QL reference] to get familiar with the syntax and optimize your query.
. When editing your query or its configuration, run the query to update the preview of the visualization.
+
image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blte2b1371159f5b9ff/66fc6ca13804eb2532b20727/field-statistics-preview-8.16.0.gif[Editing a field statistics dashboard panel and running the query to update the preview]
@@ -289,7 +289,8 @@ To personalize your dashboards, add your own logos and graphics with the *Image*
[role="screenshot"]
image::images/dashboard_addImageEditor_8.7.0.png[Add image editor]
-To manage your uploaded image files, open the main menu, then click *Stack Management > Kibana > Files*.
+To manage your uploaded image files, go to the *Files* management page using the navigation menu or the
+<>.
[WARNING]
diff --git a/docs/user/dashboard/dashboard.asciidoc b/docs/user/dashboard/dashboard.asciidoc
index 5ca198c9831af..2bc6738516f15 100644
--- a/docs/user/dashboard/dashboard.asciidoc
+++ b/docs/user/dashboard/dashboard.asciidoc
@@ -17,7 +17,7 @@ There are several <> in {kib} that let you create
// add link to sharing section
At any time, you can <> you've created with your team, in {kib} or outside.
-Some dashboards are created and managed by the system, and are identified as `managed` in your list of of dashboards. This generally happens when you set up an integration to add data. You can't edit managed dashboards directly, but you can duplicate them and edit these duplicates.
+Some dashboards are created and managed by the system, and are identified as `managed` in your list of dashboards. This generally happens when you set up an integration to add data. You can't edit managed dashboards directly, but you can <> them and edit these duplicates.
--
diff --git a/docs/user/dashboard/drilldowns.asciidoc b/docs/user/dashboard/drilldowns.asciidoc
index 6b3a6d80ecdda..cb568d97e69ee 100644
--- a/docs/user/dashboard/drilldowns.asciidoc
+++ b/docs/user/dashboard/drilldowns.asciidoc
@@ -1,6 +1,6 @@
[role="xpack"]
[[drilldowns]]
-=== Drilldowns
+=== Add drilldowns
Panels have built-in interactive capabilities that apply filters to the dashboard data. For example, when you drag a time range or click a pie slice, a filter for the time range or pie slice is applied. Drilldowns let you customize the interactive behavior while keeping the context of the interaction.
diff --git a/docs/user/dashboard/images/managed-dashboard-popover-8.16.0.png b/docs/user/dashboard/images/managed-dashboard-popover-8.16.0.png
new file mode 100644
index 0000000000000..b1cd0562a42c7
Binary files /dev/null and b/docs/user/dashboard/images/managed-dashboard-popover-8.16.0.png differ
diff --git a/docs/user/dashboard/lens-advanced.asciidoc b/docs/user/dashboard/lens-advanced.asciidoc
index 88dbe958b146a..5107172c40b31 100644
--- a/docs/user/dashboard/lens-advanced.asciidoc
+++ b/docs/user/dashboard/lens-advanced.asciidoc
@@ -16,15 +16,9 @@ Before you begin, you should be familiar with the <>.
Add the sample eCommerce data, and create and set up the dashboard.
-. On the home page, click *Try sample data*.
+. <>.
-. Expand *Other sample data sets*.
-
-. On the *Sample eCommerce orders* card, click *Add data*.
-
-Create the dashboard where you'll display the visualization panels.
-
-. Open the main menu, then click *Dashboards*.
+. Go to *Dashboards*.
. On the *Dashboards* page, click *Create dashboard*.
diff --git a/docs/user/dashboard/timelion.asciidoc b/docs/user/dashboard/timelion.asciidoc
index 27222e6a40e84..000cad3bdbc1d 100644
--- a/docs/user/dashboard/timelion.asciidoc
+++ b/docs/user/dashboard/timelion.asciidoc
@@ -88,7 +88,7 @@ Set up Metricbeat, then create the dashboard.
. To set up Metricbeat, go to {metricbeat-ref}/metricbeat-installation-configuration.html[Metricbeat quick start: installation and configuration]
-. From {kib}, open the main menu, then click *Dashboard*.
+. Go to *Dashboards*.
. On the *Dashboards* page, click *Create dashboard*.
diff --git a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc
index db0717522d928..4d299ba951296 100644
--- a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc
+++ b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc
@@ -18,15 +18,9 @@ Before you begin, you should be familiar with the <>.
Add the sample web logs data, and create and set up the dashboard.
-. On the home page, click *Try sample data*.
+. <>.
-. Expand *Other sample data sets*.
-
-. On the *Sample web logs* card, click *Add data*.
-
-Create the dashboard where you'll display the visualization panels.
-
-. Open the main menu, then click *Dashboards*.
+. Go to *Dashboards*.
. Click *Create dashboard*.
diff --git a/docs/user/dashboard/tutorials.asciidoc b/docs/user/dashboard/tutorials.asciidoc
index 6c25fd221fe2a..e7752279ba476 100644
--- a/docs/user/dashboard/tutorials.asciidoc
+++ b/docs/user/dashboard/tutorials.asciidoc
@@ -2,7 +2,7 @@
Learn more about building dashboards and creating visualizations with the following tutorials.
-These tutorials use sample data available in {kib} as a way to get started more easily, but you can apply and adapt these instructions to your own data as well.
+These tutorials use <> available in {kib} as a way to get started more easily, but you can apply and adapt these instructions to your own data as well.
include::tutorial-create-a-dashboard-of-lens-panels.asciidoc[]
diff --git a/docs/user/dashboard/vega.asciidoc b/docs/user/dashboard/vega.asciidoc
index cbb1f5dbf8cda..4ae9c994a54bb 100644
--- a/docs/user/dashboard/vega.asciidoc
+++ b/docs/user/dashboard/vega.asciidoc
@@ -40,13 +40,9 @@ As you edit the specs, work in small steps, and frequently save your work. Small
Before starting, add the eCommerce sample data that you'll use in your spec, then create the dashboard.
-. On the home page, click *Try sample data*.
+. <>.
-. Click *Other sample data sets*.
-
-. On the *Sample eCommerce orders* card, click *Add data*.
-
-. Open the main menu, then click *Dashboard*.
+. Go to *Dashboards*.
. On the *Dashboards* page, click *Create dashboard*.
@@ -90,7 +86,8 @@ To check your work, open and use the <> on a separate
. Open {kib} on a new tab.
-. Open the main menu, then click *Dev Tools*.
+. Go to the *Developer tools* page using the navigation menu or the
+<>.
. On the *Console* editor, enter the aggregation, then click *Click to send request*:
diff --git a/docs/user/discover.asciidoc b/docs/user/discover.asciidoc
index ddd06b06c9cd8..7cab19889f278 100644
--- a/docs/user/discover.asciidoc
+++ b/docs/user/discover.asciidoc
@@ -8,6 +8,7 @@ What pages on your website contain a
specific word or phrase? What events were logged most recently?
What processes take longer than 500 milliseconds to respond?
+[[save-your-search]]
With *Discover*, you can quickly search and filter your data, get information
about the structure of the fields, and display your findings in a visualization.
You can also customize and save your searches and place them on a dashboard.
@@ -16,331 +17,10 @@ You can also customize and save your searches and place them on a dashboard.
image::images/hello-field.png[A view of the Discover app]
-[float]
-=== Explore and query your data
-
-This tutorial shows you how to use *Discover* to search large amounts of
-data and understand what’s going on at any given time.
-
-You’ll learn to:
-
-- **Select** data for your exploration, set a time range for that data,
-search it with the {kib} Query Language, and filter the results.
-- **Explore** the details of your data, view individual documents, and create tables
-that summarize the contents of the data.
-- **Present** your findings in a visualization.
-
-At the end of this tutorial, you’ll be ready to start exploring with your own
-data in *Discover*.
-
-*Prerequisites:*
-
-- If you don’t already have {kib}, set it up with https://www.elastic.co/cloud/elasticsearch-service/signup?baymax=docs-body&elektra=docs[our free trial].
-- You must have data in {es}. This tutorial uses the
-<>, but you can use your own data.
-- You should have an understanding of {ref}/documents-indices.html[{es} documents and indices]
-and <>.
-
-
-[float]
-[[find-the-data-you-want-to-use]]
-=== Find your data
-
-Tell {kib} where to find the data you want to explore, and then specify the time range in which to view that data.
-
-. Open the main menu, and select **Discover**.
-
-. Select the data you want to work with.
-+
-{kib} uses a <> to tell it where to find
-your {es} data.
-To view the ecommerce sample data, open the {data-source} menu, and then select **Kibana Sample Data Ecommerce**.
-+
-[role="screenshot"]
-image::images/discover-data-view.png[How to set the {data-source} in Discover, width="40%"]
-
-+
-To create a data view for your own data,
-click *Create a data view*.
-For details, refer to <>
-
-. Adjust the <> to view data for the *Last 7 days*.
-+
-The range selection is based on the default time field in your data.
-If you are using the sample data, this value was set when you added the data.
-If you are using your own data, and it does not have a time field, the range selection is not available.
-
-. To view the count of documents for a given time in the specified range,
-click and drag the mouse over the chart.
-
-[float]
-[[explore-fields-in-your-data]]
-=== Explore the fields in your data
-
-**Discover** includes a table
-that shows all the documents that match your search.
-By default, the document table includes a column for the time field and a column that lists all other fields in the document.
-You’ll modify the document table to display your fields of interest.
-
-. In the sidebar, enter `ma` in the search field to find the `manufacturer` field.
-+
-[role="screenshot"]
-image:images/discover-sidebar-available-fields.png[Fields list that displays the top five search results, width=50%]
-+
-NOTE: You can use wildcards in field searches. For example, `goe*dest` finds `geo.dest` and `geo.src.dest`.
-
-. In the *Available fields* list, click `manufacturer` to view its most popular values.
-+
-**Discover** shows the top 10 values and the number of records used to calculate those values.
-
-. Click image:images/add-icon.png[Add icon] to toggle the field into the document table.
-You can also drag the field from the *Available fields* list into the document table.
-+
-[role="screenshot"]
-image::images/discover-add-icon.png[How to add a field as a column in the table, width="50%"]
-
-. Find the `customer_first_name` and `customer_last_name` fields and add
-them to the document table. Your table should look similar to this:
-+
-[role="screenshot"]
-image:images/document-table.png[Document table with fields for manufacturer, customer_first_name, and customer_last_name]
-
-
-. Optionally try out these actions:
-+
-* To rearrange the table columns, click a
-column header, and then select *Move left* or *Move right*.
-+
-* To copy the name or values in a column to the clipboard, click the column header and select the desired **Copy** option.
-+
-* To view more of the document table,
-click
-image:images/chart-icon.png[icon button for opening Show/Hide chart menu, width=24px]
-to open the *Chart options* menu,
-and then select *Hide chart*.
-+
-* For keyboard shortcuts on the document table, click
-image:images/keyboard-shortcut-icon.png[icon button for opening list of keyboard shortcuts, width=24px].
-+
-* To set the row height to one or more lines, or automatically
-adjust the height to fit the contents, click
-image:images/row-height-icon.png[icon to open the Row height pop-up, width=24px].
-+
-* To toggle the table in and out of fullscreen mode, click the fullscreen icon
-image:images/fullscreen-icon.png[icon to display the document table in fullscreen mode].
-
-
-
-
-
-
-[float]
-[[add-field-in-discover]]
-=== Add a field to your {data-source}
-
-What happens if you forgot to define an important value as a separate field? Or, what if you
-want to combine two fields and treat them as one? This is where {ref}/runtime.html[runtime fields] come into play.
-You can add a runtime field to your {data-source} from inside of **Discover**,
-and then use that field for analysis and visualizations,
-the same way you do with other fields.
-
-. In the sidebar, click *Add a field*.
-
-. In the *Create field* form, enter `hello` for the name.
-
-. Turn on *Set value*.
-
-. Define the script using the Painless scripting language. Runtime fields require an `emit()`.
-+
-```ts
-emit("Hello World!");
-```
-
-. Click *Save*.
-
-. In the sidebar, search for the *hello* field, and then add it to the document table.
-+
-[role="screenshot"]
-image:images/hello-field.png[hello field in the document tables]
-
-. Create a second field named `customer` that combines customer last name and first initial.
-+
-```ts
-String str = doc['customer_first_name.keyword'].value;
-char ch1 = str.charAt(0);
-emit(doc['customer_last_name.keyword'].value + ", " + ch1);
-```
-. Remove `customer_first_name` and `customer_last_name` from the document table, and then add `customer`.
-+
-[role="screenshot"]
-image:images/customer.png[Customer last name, first initial in the document table]
-+
-For more information on adding fields and Painless scripting language examples,
-refer to <>.
-
-
-[float]
-[[search-in-discover]]
-=== Search your data
-
-One of the unique capabilities of **Discover** is the ability to combine
-free text search with filtering based on structured data.
-To search all fields, enter a simple string in the query bar.
-
-[role="screenshot"]
-image:images/discover-search-field.png[Search field in Discover]
-
-
-To search particular fields and
-build more complex queries, use the <>.
-As you type, KQL prompts you with the fields you can search and the operators
-you can use to build a structured query.
-
-Search the ecommerce data for documents where the country matches US:
-
-. Enter `g`, and then select *geoip.country_iso_code*.
-. Select *:* for equals some value and *US*, and then click the refresh button or press the Enter key.
-. For a more complex search, try:
-+
-```ts
-geoip.country_iso_code : US and products.taxless_price >= 75
-```
-
-[float]
-[[filter-in-discover]]
-=== Filter your data
-
-Whereas the query defines the set of documents you are interested in,
-filters enable you to zero in on subsets of those documents.
-You can filter results to include or exclude specific fields, filter for a value in a range,
-and more.
-
-Exclude documents where day of week is not Wednesday:
-
-. Click image:images/add-icon.png[Add icon] next to the query bar.
-. In the *Add filter* pop-up, set the field to *day_of_week*, the operator to *is not*,
-and the value to *Wednesday*.
-+
-[role="screenshot"]
-image:images/discover-add-filter.png[Add filter dialog in Discover]
-
-. Click **Add filter**.
-. Continue your exploration by adding more filters.
-. To remove a filter,
-click the close icon (x) next to its name in the filter bar.
-
-[float]
-[[look-inside-a-document]]
-=== Look inside a document
-
-Dive into an individual document to view its fields and the documents
-that occurred before and after it.
-
-. In the document table, click the expand icon
-image:images/expand-icon-2.png[double arrow icon to open a flyout with the document details]
-to show document details.
-+
-[role="screenshot"]
-image:images/document-table-expanded.png[Table view with document expanded]
-
-. Scan through the fields and their values. If you find a field of interest,
-hover your mouse over the *Actions* column for filters and other options.
-
-. To create a view of the document that you can bookmark and share, click **Single document**.
-
-. To view documents that occurred before or after the event you are looking at, click
-**Surrounding documents**.
-
-
-
-[float]
-[[save-your-search]]
-=== Save your search for later use
-
-Save your search so you can use it later, generate a CSV report, or use it to create visualizations, dashboards, and Canvas workpads.
-Saving a search saves the query text, filters,
-and current view of *Discover*, including the columns selected in
-the document table, the sort order, and the {data-source}.
-
-. In the toolbar, click **Save**.
-
-. Give your search a title.
-
-. Optionally store <> and the time range with the search.
-
-. Click **Save**.
-
-[float]
-=== Visualize your findings
-If a field can be {ref}/search-aggregations.html[aggregated], you can quickly
-visualize it from **Discover**.
-
-. In the sidebar, find and then click `day_of_week`.
-+
-[role="screenshot"]
-image:images/discover-day-of-week.png[Top values for the day_of_week field, plus Visualize button, width=50%]
-
-
-. In the popup, click **Visualize**.
-+
-{kib} creates a visualization best suited for this field.
-
-. From the *Available fields* list, drag and drop `manufacturer.keyword` onto the workspace.
-+
-[role="screenshot"]
-image:images/discover-from-visualize.png[Visualization that opens from Discover based on your data]
-
-. Save your visualization for use on a dashboard.
-+
-For geo point fields (image:images/geoip-icon.png[Geo point field icon, width=20px]),
-if you click **Visualize**,
-your data appears in a map.
-+
-[role="screenshot"]
-image:images/discover-maps.png[Map containing documents]
-
-[float]
-[[share-your-findings]]
-=== Share your findings
-
-To share your findings with a larger audience, click *Share* in the *Discover* toolbar.
-For detailed information about the sharing options, refer to <>.
-
-[float]
-[[alert-from-Discover]]
-=== Generate alerts
-
-From *Discover*, you can create a rule to periodically
-check when data goes above or below a certain threshold within a given time interval.
-
-. Ensure that your data view,
-query, and filters fetch the data for which you want an alert.
-. In the toolbar, click *Alerts > Create search threshold rule*.
-+
-The *Create rule* form is pre-filled with the latest query sent to {es}.
-. <> and <>.
-
-. Click *Save*.
-
-For more about this and other rules provided in {alert-features}, go to <>.
-
-
-[float]
-=== What’s next?
-
-* <>.
-
-* <>.
-
-* <> to better meet your needs.
-
-[float]
-=== Troubleshooting
-
-* {blog-ref}troubleshooting-guide-common-issues-kibana-discover-load[Learn how to resolve common issues with Discover.]
+--
+include::{kibana-root}/docs/discover/get-started-discover.asciidoc[]
---
include::{kibana-root}/docs/discover/document-explorer.asciidoc[]
include::{kibana-root}/docs/discover/search-for-relevance.asciidoc[]
diff --git a/docs/user/graph/getting-started.asciidoc b/docs/user/graph/getting-started.asciidoc
index 03274bec76714..40d23ba249fd0 100644
--- a/docs/user/graph/getting-started.asciidoc
+++ b/docs/user/graph/getting-started.asciidoc
@@ -9,7 +9,7 @@ You must index data into {es} before you can create a graph.
[[exploring-connections]]
=== Graph a data connection
-. Open the main menu, then click *Graph*.
+. Go to *Graph*.
+
If this is your first graph, follow the prompts to create it.
For subsequent graphs, click *New*.
diff --git a/docs/user/graph/index.asciidoc b/docs/user/graph/index.asciidoc
index 5e7b689b8d8f1..d6d30dfa80682 100644
--- a/docs/user/graph/index.asciidoc
+++ b/docs/user/graph/index.asciidoc
@@ -71,7 +71,7 @@ affecting the cluster.
Use *Graph* to reveal the relationships in your data.
-. Open the main menu, and then click *Graph*.
+. Go to *Graph*.
+
If you're new to {kib}, and don't yet have any data, follow the link to add sample data.
This example uses the {kib} sample web logs data set.
diff --git a/docs/user/images/dashboard-star.png b/docs/user/images/dashboard-star.png
new file mode 100644
index 0000000000000..25219d8866c0b
Binary files /dev/null and b/docs/user/images/dashboard-star.png differ
diff --git a/docs/user/images/dashboard-usage.png b/docs/user/images/dashboard-usage.png
new file mode 100644
index 0000000000000..e18843511e21a
Binary files /dev/null and b/docs/user/images/dashboard-usage.png differ
diff --git a/docs/user/images/discover-log-level.png b/docs/user/images/discover-log-level.png
new file mode 100644
index 0000000000000..a6de92c0ae020
Binary files /dev/null and b/docs/user/images/discover-log-level.png differ
diff --git a/docs/user/images/esql-autocomplete-suggestions.png b/docs/user/images/esql-autocomplete-suggestions.png
new file mode 100644
index 0000000000000..bd78201b0d121
Binary files /dev/null and b/docs/user/images/esql-autocomplete-suggestions.png differ
diff --git a/docs/user/images/esql-suggestions.png b/docs/user/images/esql-suggestions.png
new file mode 100644
index 0000000000000..234f0339003a1
Binary files /dev/null and b/docs/user/images/esql-suggestions.png differ
diff --git a/docs/user/images/hello-field.png b/docs/user/images/hello-field.png
new file mode 100644
index 0000000000000..8aee22bf2a847
Binary files /dev/null and b/docs/user/images/hello-field.png differ
diff --git a/docs/user/images/ip-location-processor.png b/docs/user/images/ip-location-processor.png
new file mode 100644
index 0000000000000..b1de4a540f52d
Binary files /dev/null and b/docs/user/images/ip-location-processor.png differ
diff --git a/docs/user/images/metric-customization.png b/docs/user/images/metric-customization.png
new file mode 100644
index 0000000000000..238df1aee82ac
Binary files /dev/null and b/docs/user/images/metric-customization.png differ
diff --git a/docs/user/images/monaco-console.png b/docs/user/images/monaco-console.png
new file mode 100644
index 0000000000000..3bdd4be4eb498
Binary files /dev/null and b/docs/user/images/monaco-console.png differ
diff --git a/docs/user/images/solution-view-obs.png b/docs/user/images/solution-view-obs.png
new file mode 100644
index 0000000000000..4ae5942dbae37
Binary files /dev/null and b/docs/user/images/solution-view-obs.png differ
diff --git a/docs/user/images/space-settings.png b/docs/user/images/space-settings.png
new file mode 100644
index 0000000000000..a3a38c1ca88c7
Binary files /dev/null and b/docs/user/images/space-settings.png differ
diff --git a/docs/user/images/table-coloring.png b/docs/user/images/table-coloring.png
new file mode 100644
index 0000000000000..6c96daf381164
Binary files /dev/null and b/docs/user/images/table-coloring.png differ
diff --git a/docs/user/introduction.asciidoc b/docs/user/introduction.asciidoc
index 48c9dfd91c9c6..cd04da190eac8 100644
--- a/docs/user/introduction.asciidoc
+++ b/docs/user/introduction.asciidoc
@@ -71,8 +71,7 @@ image::images/visualization-journey.png[User data analysis journey]
| *1*
| *Add data.* The best way to add data to the Elastic Stack is to use one of our many <>.
-Alternatively, you can add a sample data set or upload a file. All three options are available
-on the home page.
+On the **Integrations** page, you can also find options to add sample data sets or to upload a file.
| *2*
| *Explore.* With <>, you can search your data for hidden
diff --git a/docs/user/ml/index.asciidoc b/docs/user/ml/index.asciidoc
index e84ca23dbc84d..91227055fa8a7 100644
--- a/docs/user/ml/index.asciidoc
+++ b/docs/user/ml/index.asciidoc
@@ -51,7 +51,8 @@ information, refer to {ml-docs}/ml-limitations.html[{ml-cap}].
preview::[]
-You can find the data drift view in **{ml-app}** > *{data-viz}* in {kib}.
+You can find the data drift view in **{ml-app}** > *{data-viz}* in {kib} or by using
+the <>.
The data drift view shows you the differences in each field for two
different time ranges in a given {data-source}. The view helps you to visualize
the changes in your data over time and enables you to understand its behavior
@@ -167,7 +168,7 @@ It makes it easy to find and investigate causes of unusual spikes or drops by us
Examine the histogram chart of the log rates for a given {data-source}, and find the reason behind a particular change possibly in millions of log events across multiple fields and values.
You can find log rate analysis embedded in multiple applications.
-In {kib}, you can find it under **{ml-app}** > **AIOps Labs** where you can select the {data-source} or saved search that you want to analyze.
+In {kib}, you can find it under **{ml-app}** > **AIOps Labs** or by using the <>. Here, you can select the {data-source} or saved search that you want to analyze.
[role="screenshot"]
image::user/ml/images/ml-log-rate-analysis-before.png[Log event histogram chart]
@@ -201,8 +202,8 @@ displays them together with a chart that shows the distribution of each category
and an example document that matches the category.
//end::log-pattern-analysis-intro[]
-You can find log pattern analysis under **{ml-app}** > **AIOps Labs** where you
-can select the {data-source} or saved search that you want to analyze, or in
+You can find log pattern analysis under **{ml-app}** > **AIOps Labs** or by using the <>.
+Here, you can select the {data-source} or saved search that you want to analyze, or in
**Discover** as an available action for any text field.
[role="screenshot"]
@@ -226,8 +227,8 @@ Change point detection uses the
to detect distribution changes, trend changes, and other statistically
significant change points in a metric of your time series data.
-You can find change point detection under **{ml-app}** > **AIOps Labs** where
-you can select the {data-source} or saved search that you want to analyze.
+You can find change point detection under **{ml-app}** > **AIOps Labs** or by using the <>.
+Here, you can select the {data-source} or saved search that you want to analyze.
[role="screenshot"]
image::user/ml/images/ml-change-point-detection.png[Change point detection UI]
diff --git a/docs/user/monitoring/monitoring-elastic-agent.asciidoc b/docs/user/monitoring/monitoring-elastic-agent.asciidoc
index 33899e69ba269..2be91f08cdc0d 100644
--- a/docs/user/monitoring/monitoring-elastic-agent.asciidoc
+++ b/docs/user/monitoring/monitoring-elastic-agent.asciidoc
@@ -27,7 +27,7 @@ in the {ref}/monitoring-production.html[{es} monitoring documentation].
To collect {kib} monitoring data, add a {kib} integration to an {agent} and
deploy it to the host where {kib} is running.
-. Go to the {kib} home page and click **Add integrations**.
+. Go to the **Integrations** page.
+
NOTE: If you're using a monitoring cluster, use the {kib} instance connected to
the monitoring cluster.
diff --git a/docs/user/monitoring/monitoring-kibana.asciidoc b/docs/user/monitoring/monitoring-kibana.asciidoc
index 7f060d7aab738..65c5bdf868b9b 100644
--- a/docs/user/monitoring/monitoring-kibana.asciidoc
+++ b/docs/user/monitoring/monitoring-kibana.asciidoc
@@ -49,7 +49,8 @@ By default, if you are running {kib} locally, go to `http://localhost:5601/`.
If {security-features} are enabled, log in.
--
-... Open the main menu, then click *Stack Monitoring*. If data collection is
+... Go to the *Stack Monitoring* page using the
+<>. If data collection is
disabled, you are prompted to turn it on.
** From the Console or command line, set `xpack.monitoring.collection.enabled`
diff --git a/docs/user/monitoring/viewing-metrics.asciidoc b/docs/user/monitoring/viewing-metrics.asciidoc
index 0aaf7ad6bd332..342a8da76cc35 100644
--- a/docs/user/monitoring/viewing-metrics.asciidoc
+++ b/docs/user/monitoring/viewing-metrics.asciidoc
@@ -86,7 +86,8 @@ By default, if you are running {kib} locally, go to `http://localhost:5601/`.
If the Elastic {security-features} are enabled, log in.
--
-. Open the main menu, then click *Stack Monitoring*.
+. Go to the *Stack Monitoring* page using the
+<>.
+
--
If data collection is disabled, you are prompted to turn on data collection.
diff --git a/docs/user/reporting/automating-report-generation.asciidoc b/docs/user/reporting/automating-report-generation.asciidoc
index f2102e7c0e2db..9587674b59e61 100644
--- a/docs/user/reporting/automating-report-generation.asciidoc
+++ b/docs/user/reporting/automating-report-generation.asciidoc
@@ -12,7 +12,7 @@ Create the POST URL that triggers a report to generate PDF and CSV reports.
To create the POST URL for PDF reports:
-. Open the main menu, then click *Dashboard*, *Visualize Library*, or *Canvas*.
+. Go to *Dashboards*, *Visualize Library*, or *Canvas*.
. Open the dashboard, visualization, or **Canvas** workpad you want to view as a report.
@@ -24,7 +24,7 @@ To create the POST URL for PDF reports:
To create the POST URL for CSV reports:
-. Open the main menu, then click *Discover*.
+. Go to *Discover*.
. Open the saved search you want to share.
diff --git a/docs/user/reporting/index.asciidoc b/docs/user/reporting/index.asciidoc
index 5f09ed6907c1f..ed4fef61026f5 100644
--- a/docs/user/reporting/index.asciidoc
+++ b/docs/user/reporting/index.asciidoc
@@ -54,7 +54,7 @@ In the following dashboard, the shareable container is highlighted:
[role="screenshot"]
image::user/reporting/images/shareable-container.png["Shareable Container"]
-. Open the main menu, then open the saved search, dashboard, visualization, or workpad you want to share.
+. Open the saved search, dashboard, visualization, or workpad you want to share.
. From the toolbar, click *Share*, then select the report option.
@@ -94,7 +94,7 @@ include::reporting-pdf-limitations.asciidoc[]
Create and share JSON files for workpads.
-. Open the main menu, then click *Canvas*.
+. Go to *Canvas*.
. Open the workpad you want to share.
@@ -118,7 +118,7 @@ change {kib} sizing, {ess-console}[edit the deployment].
beta[] Create and securely share static *Canvas* workpads on a website. To customize the behavior of the workpad on your website, you can choose to autoplay the pages or hide the workpad toolbar.
-. Open the main menu, then click *Canvas*.
+. Go to *Canvas*.
. Open the workpad you want to share.
@@ -140,7 +140,7 @@ Display your dashboards on an internal company website or personal web page with
For information about granting access to embedded dashboards, refer to <>.
-. Open the main menu, then open the dashboard you want to share.
+. Open the dashboard you want to share.
. Click *Share > Embed code*.
diff --git a/docs/user/security/api-keys/index.asciidoc b/docs/user/security/api-keys/index.asciidoc
index 2f9a0d337e3b9..bbc5f2834c2cb 100644
--- a/docs/user/security/api-keys/index.asciidoc
+++ b/docs/user/security/api-keys/index.asciidoc
@@ -13,7 +13,8 @@ You can use {kib} to manage your different API keys:
* Cross-cluster API key: allows other clusters to connect to this cluster.
* Managed API key: created and managed by Kibana to run background tasks.
-To manage API keys, open the main menu, then click *Stack Management > Security > API Keys*.
+To manage API keys, go to the *API Keys* management page using the navigation menu or the
+<>.
[role="screenshot"]
image:images/api-keys.png["API Keys UI"]
@@ -28,13 +29,15 @@ image:images/api-keys.png["API Keys UI"]
* 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 {api-kibana}/group/endpoint-roles[role APIs].
+To manage roles, go to the *Roles* management page using the navigation menu or the
+<>, or use the {api-kibana}/group/endpoint-roles[role APIs].
[float]
[[create-api-key]]
=== Create an API key
-To create an API key, open the main menu, then click *Stack Management > Security > API Keys > Create API key*.
+To create an API key, go to the *API Keys* management page using the navigation menu or the
+<>, and select *Create API key*.
[role="screenshot"]
image:images/create-ccr-api-key.png["Create API Key UI"]
@@ -48,7 +51,8 @@ Refer to the {ref}/security-api-create-cross-cluster-api-key.html[create cross-c
[[udpate-api-key]]
=== Update an API 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.
+To update an API key, go to the *API Keys* management page using the navigation menu or the
+<>, 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 user API keys.
diff --git a/docs/user/security/index.asciidoc b/docs/user/security/index.asciidoc
index 44d7c41391c35..3ea0245a21657 100644
--- a/docs/user/security/index.asciidoc
+++ b/docs/user/security/index.asciidoc
@@ -21,7 +21,8 @@ The `manage_security` cluster privilege is required to access all Security featu
[float]
=== Users
-To create and manage users, open the main menu, then click *Stack Management > Users*.
+To create and manage users, go to the *Users* management page using the navigation menu or the
+<>.
You can also change their passwords and roles. For more information about
authentication and built-in users, see
{ref}/setting-up-authentication.html[Setting up user authentication].
@@ -29,7 +30,8 @@ authentication and built-in users, see
[float]
=== Roles
-To manage roles, open the main menu, then click *Stack Management > Roles*, or use
+To manage roles, go to the *Roles* management page using the navigation menu or the
+<>, or use
the {api-kibana}/group/endpoint-roles[role APIs]. For more information on configuring roles for {kib}, see <>.
For a more holistic overview of configuring roles for the entire stack,
diff --git a/docs/user/security/role-mappings/index.asciidoc b/docs/user/security/role-mappings/index.asciidoc
index df4ded4321c13..35de39e052236 100644
--- a/docs/user/security/role-mappings/index.asciidoc
+++ b/docs/user/security/role-mappings/index.asciidoc
@@ -8,7 +8,8 @@ describe which roles to assign to your users using a set of rules.
Role mappings are required when authenticating via an external identity provider, such as Active Directory, Kerberos, PKI, OIDC, or SAML.
Role mappings have no effect for users inside the `native` or `file` realms.
-To manage your role mappings, open the main menu, then click *Stack Management > Role Mappings*.
+You can find the *Role mappings* management page using the navigation menu or the
+<>.
With *Role mappings*, you can:
@@ -27,7 +28,8 @@ The `manage_security` cluster privilege is required to manage Role Mappings.
[float]
=== Create a role mapping
-. Open the main menu, then click *Stack Management > Role Mappings*.
+. Go to the *Role mappings* management page using the navigation menu or the
+<>.
. Click *Create role mapping*.
. Give your role mapping a unique name, and choose which roles you wish to assign to your users.
+
diff --git a/docs/user/security/securing-kibana.asciidoc b/docs/user/security/securing-kibana.asciidoc
index 98290bb093e41..0c05dd89ebecf 100644
--- a/docs/user/security/securing-kibana.asciidoc
+++ b/docs/user/security/securing-kibana.asciidoc
@@ -65,10 +65,12 @@ the `elastic` user or other built-in users, run the
. [[kibana-roles]]Create roles and users to grant access to {kib}.
+
--
-To manage privileges in {kib}, open the main menu, then click *Stack Management > Roles*. The built-in `kibana_admin` role will grant
+To manage privileges in {kib}, go to the *Roles* management page using the navigation menu or the
+<>. The built-in `kibana_admin` role will grant
access to {kib} with administrator privileges. Alternatively, you can create additional roles that grant limited access to {kib}.
-If you're using the default native realm with Basic Authentication, open the main menu, then click *Stack Management > Users* to create
+If you're using the default native realm with Basic Authentication, go to the *Users* management page using the navigation menu or the
+<> to create
users and assign roles, or use the {es} {ref}/security-api.html#security-user-apis[user management APIs]. For example, the following creates
a user named `jacknich` and assigns it the `kibana_admin` role:
diff --git a/docs/user/security/tutorials/how-to-secure-access-to-kibana.asciidoc b/docs/user/security/tutorials/how-to-secure-access-to-kibana.asciidoc
index d62ccebb05657..3b4e4b02af677 100644
--- a/docs/user/security/tutorials/how-to-secure-access-to-kibana.asciidoc
+++ b/docs/user/security/tutorials/how-to-secure-access-to-kibana.asciidoc
@@ -52,8 +52,8 @@ Let’s work through an example together. Consider a marketing analyst who wants
Create a Marketing space for your marketing analysts to use.
-. Open the main menu, and select **Stack Management**.
-. Under **{kib}**, select **Spaces**.
+. Go to the *Spaces* management page using the navigation menu or the
+<>.
. Click **Create a space**.
. Give this space a unique name. For example: `Marketing`.
. Click **Create space**.
@@ -75,8 +75,8 @@ In this example, a marketing analyst will need:
To create the role:
-. Open the main menu, and select **Stack Management**.
-. Under **Security**, select **Roles**.
+. Go to the *Roles* management page using the navigation menu or the
+<>.
. Click **Create role**.
. Give this role a unique name. For example: `marketing_dashboards_role`.
. For this example, you want to store all marketing data in the `acme-marketing-*` set of indices. To grant this access, locate the **Index privileges** section and enter:
diff --git a/docs/user/whats-new.asciidoc b/docs/user/whats-new.asciidoc
index 2a726ba3dc4f3..25568518ad2ec 100644
--- a/docs/user/whats-new.asciidoc
+++ b/docs/user/whats-new.asciidoc
@@ -1,175 +1,144 @@
[[whats-new]]
-== What's new in 8.15
+== What's new in 8.16
-Here are the highlights of what's new and improved in 8.15.
+Here are the highlights of what's new and improved in 8.16.
For detailed information about this release,
check the <>.
-Previous versions: {kibana-ref-all}/8.14/whats-new.html[8.14] | {kibana-ref-all}/8.13/whats-new.html[8.13] | {kibana-ref-all}/8.12/whats-new.html[8.12] | {kibana-ref-all}/8.11/whats-new.html[8.11] | {kibana-ref-all}/8.10/whats-new.html[8.10] | {kibana-ref-all}/8.9/whats-new.html[8.9] | {kibana-ref-all}/8.8/whats-new.html[8.8] | {kibana-ref-all}/8.7/whats-new.html[8.7] | {kibana-ref-all}/8.6/whats-new.html[8.6] | {kibana-ref-all}/8.5/whats-new.html[8.5] | {kibana-ref-all}/8.4/whats-new.html[8.4] | {kibana-ref-all}/8.3/whats-new.html[8.3] | {kibana-ref-all}/8.2/whats-new.html[8.2] | {kibana-ref-all}/8.1/whats-new.html[8.1] | {kibana-ref-all}/8.0/whats-new.html[8.0]
+Previous versions: {kibana-ref-all}/8.15/whats-new.html[8.15] | {kibana-ref-all}/8.14/whats-new.html[8.14] | {kibana-ref-all}/8.13/whats-new.html[8.13] | {kibana-ref-all}/8.12/whats-new.html[8.12] | {kibana-ref-all}/8.11/whats-new.html[8.11] | {kibana-ref-all}/8.10/whats-new.html[8.10] | {kibana-ref-all}/8.9/whats-new.html[8.9] | {kibana-ref-all}/8.8/whats-new.html[8.8] | {kibana-ref-all}/8.7/whats-new.html[8.7] | {kibana-ref-all}/8.6/whats-new.html[8.6] | {kibana-ref-all}/8.5/whats-new.html[8.5] | {kibana-ref-all}/8.4/whats-new.html[8.4] | {kibana-ref-all}/8.3/whats-new.html[8.3] | {kibana-ref-all}/8.2/whats-new.html[8.2] | {kibana-ref-all}/8.1/whats-new.html[8.1] | {kibana-ref-all}/8.0/whats-new.html[8.0]
[discrete]
-=== ES|QL
+=== Solution-oriented navigation
+On Elastic Cloud Hosted deployments running on version 8.16, you can now navigate Kibana using a lighter, solution-oriented left navigation menu, called **Solution view**.
-[discrete]
-==== Filter UX improvements in ES|QL
+There are four selectable solution views: Search, Observability, Security, and Classic. Search, Observability, and Security are the new navigation menus. Each of those brings simplicity by focusing the left navigation menu on a relevant subset of features, scoped to its associated use cases, and offers a dedicated home page. Classic has the same navigation menu as 8.15 and before.
-We're thrilled to unveil a complete overhaul of filtering in the ES|QL UX. Now, you can seamlessly filter data by browsing a time series chart, allowing for quick and intuitive time-based filtering. Interactive chart filtering lets you refine your data directly by clicking on any chart, while creating WHERE clause filters from the Discover table or sidebar has never been easier. These enhancements streamline data exploration and analysis, making your ES|QL experience more efficient and user-friendly than ever.
+Each space has its own solution view setting which determines the navigation experience for all users of that space.
-*Filter by clicking a chart:*
+When creating a new deployment, you will now be asked to choose between one of the 3 new solution views for your default space. If you prefer to stick with the classic, multi-layered navigation, you can do so once the deployment is created by navigating to your space settings.
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt965a5190f246f7c8/669a7d41e5f7c84793b031cb/filter-by-clicking-chart.gif[Filter by clicking a chart]
+Deployments upgrading from a previous version to 8.16 keep the classic navigation. Admins can enable one of the new solution views from the space settings.
-*Filter by browsing a time series chart:*
+image::images/solution-view-obs.png[Example of observability solution view]
+_The Observability solution view and its Home page._
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blta20c9a93dded707c/669a7d40843f93a02fe51013/filter-by-brushing-time-series.gif[Filter by browsing a time series chart]
+[discrete]
+=== Discover and ES|QL
-*Create WHERE clause filters from Discover table or sidebar:*
+[discrete]
+==== Contextual Data presentation
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt50ac35ab3af29ff8/669a7d4006a6fafe4c7cb39d/create-where-clause-filters-from-sidebar.gif[Create WHERE clause filters from Discover table or sidebar]
+In this release, Discover introduces enhanced contextual data presentation. Previously, you needed to manually select relevant fields and set up your workspace before diving into data exploration. Now, Discover automatically tailors the user experience based on the data being explored, powered by a scalable contextual architecture. For example, when analyzing logs, you'll see a *log.level* field rendered directly in the table, a custom Logs overview in the document viewer, and log.level indicators on individual rows.
+image::images/discover-log-level.png[Log level badge displaying in the Discover grid]
[discrete]
-==== Field statistics in ES|QL
+==== Recommended ES|QL queries
-Field statistics are now available in ES|QL. This feature is designed to provide comprehensive insights for each data field. With this enhancement, you can access detailed statistics such as distributions, averages, and other key metrics, helping you quickly understand your data. This makes data exploration and quality assessment more efficient, providing deeper insights and streamlining the analysis of field-level data in ES|QL.
+Writing ES|QL queries just got easier. Many users face challenges when authoring queries, and even more so when unfamiliar with the syntax or data structure. This can lead to inefficiencies in data analysis and visualization. We want to reduce the time it takes to create queries and to lower the learning curve for both new and existing users by suggesting recommended queries within the ES|QL Help menu and from the auto-complete.
-image::images/field-statistics-esql.png[Field statistics in ES|QL]
+image::images/esql-suggestions.png[A list of suggestions to get started with an ES|QL query, width=30%]
+_Recommended ES|QL queries from the ES|QL help menu_
-[discrete]
-==== Integrations support in the ES|QL editor when using FROM command.
+image::images/esql-autocomplete-suggestions.png[A list of suggestions in the autocomplete menu of an ES|QL query, width=50%]
+_Recommended ES|QL queries from auto-complete suggestions_
-We're excited to announce enhanced support for integrations in the ES|QL editor with the *FROM* command. Previously, you could only access indices, but now you can also view a list of installed integrations directly within the editor. This improvement streamlines your workflow, making it easier to manage and utilize various integrations while working with your data.
-
-image::images/integrations-in-esql.png[Accessing an integration from ES|QL]
[discrete]
=== Dashboards
[discrete]
-==== Field statistics in Dashboards
-
-It's now easier than ever to include your field statistics view from **Discover** into **Dashboards**. While running investigations, it is very common that you need to see some field information, such as unique values and their distribution, to make sense of the data. Select the fields that you want with your ES|QL query and get the document count, values, and distribution in your dashboard so you don't have to navigate back and forth to **Discover** to see this information.
+==== Manage dashboards more easily and efficiently
+As part of a series of improvements to help you find and manage your dashboards https://www.elastic.co/guide/en/kibana/8.15/whats-new.html#_view_dashboard_creator_and_last_editor[started in version 8.15], the new default way to sort your dashboards is by recently viewed, and we are adding an option to star your favorite dashboards, as well as some statistics to monitor the usage of your dashboards.
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt9bc52ff7851acc52/669a4f6a490fbc64fa22f279/field-statistics.gif[Showing field statistics panel in Dashboards]
+You can find your favorite dashboards in the new **Starred** tab.
-[discrete]
-==== Statistics in legends
+image::images/dashboard-star.png[Viewing starred dashboards]
-Accelerate time to insights by summarizing the values of your charts using average, minimum, maximum, median, and variance, among many others. You can add these statistics for **Lens** and ES|QL visualizations. It is important to note that these statistics are computed using the data points from the chart considering the aggregation used and not the raw data. In the following example, the chart shows the median memory per host, so the Max = 15.3KB for the first series (artifacts.elastic.co) is the maximum value of the median memory per host.
+By opening a dashboard's details using the “info” icon from the dashboard list view, you can now get a sense of the popularity of that dashboard with a histogram showing how many times the dashboard was viewed in the last 90 days.
-image::images/statistics-in-legends.png[Statistics in legends]
+image::images/dashboard-usage.png[Dashboard usage chart]
-You can find the option to select statistics for your legends along with an explanation for each calculation when editing your visualization, as shown in the following image.
+[discrete]
+==== Log Pattern Analysis dashboard panels
+Log Pattern Analysis panels are now available for you to add to your dashboards, making AIOps even more embedded in your workflows and where you need it. When filtering patterns, the dashboard’s data adjusts accordingly. You can also choose the filtering to transition you into Discover for further exploration.
-image::images/statistics-in-legends2.png[Select statistics in legends]
+image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt8288e01386b5830c/67222fb0d2da223e27bc1e67/log_analysis_panel.gif[Log pattern analysis panel in dashboards]
[discrete]
-==== View dashboard creator and last editor
+==== Color text values in tables
+Previously, you could only decide to color numeric values in tables. We're adding the ability to also color your string values. You can decide whether you want to color the whole cell, or only the text.
-You can now see who created and who last updated a dashboard.
+image::images/table-coloring.png[Coloring table cells with string values]
-You can find the creator information right from the dashboard list.
-image::images/dashboard-creator.png[Dashboard creator column in dashboard list]
+[discrete]
+==== Formatting options for your metrics
+We've received a lot of feedback asking for more flexibility to customize the appearance of your metrics. In this version, we are adding the ability to customize the title and value alignment, as well as the font size. Selecting the *Fit* option will adjust the font size and make the metric value occupy the entire panel.
-Quickly find all dashboards created by the same user with a simple filter.
+image::images/metric-customization.png[Customization options for a metric panel]
-image::images/dashboard-creator-filter.png[Filtering dashboards by creator]
-Note that the creator information will be visible only for dashboards created on or after version 8.14.
-You can also see who last updated a dashboard by clicking the dashboard information icon from the dashboard list. The creator is also visible next to it. This information is immutable and cannot be changed.
+//[discrete]
+//=== Alerting, cases, and connectors
-image::images/dashboard-last-editor.png[Dashboard details panel with the name of the last editor]
[discrete]
-=== Discover
+=== Managing {kib} and data
[discrete]
-==== Push flyout for Discover document viewer
+==== Edit space access from the space settings
+As an admin, you can now assign roles to and edit role permissions on a given space directly from the settings of that space.
-You can now seamlessly view document details and the main table simultaneously in **Discover** with the new _push_ flyout. You can adjust the width of the flyout to suit your needs and explore your data much more easily.
-
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/bltb40a408acf4ab688/669a58ea9fecd85219d58ed2/discover-push-flyout.gif[Resizable push flyout in Discover]
+Prior to 8.16, you could only do this from the role settings, which was counterintuitive.
+image::space-settings.png[Editing space settings with new options]
[discrete]
-=== Alerting, cases, and connectors
+==== New IP Location processor
+Enhancing location information based on IP addresses just got easier with the new IP Location processor. In addition to the existing free GeoLite offerings from MaxMind, we have integrated with MaxMind’s premium GeoIP databases for users who have licensed MaxMind’s products. If you're an Enterprise Elastic customer, you now have an additional third-party product, IP Info, available for use as well. These additional data sources provide improved options for enriching data with location information associated with IP addresses to improve telemetry and insights. To utilize these features beyond the free MaxMind GeoIP database, you will need to have licensed premium MaxMind products and/or the IP Info database.
-[discrete]
-==== Case templates
-
-{kib} cases offer a new powerful capability to enhance the efficiency of your analyst teams with <>.
-You can manage multiple templates, each of which can be used to auto-populate values in a case with pre-defined knowledge.
-This streamlines the investigative process and significantly reduces time to resolution.
+image::images/ip-location-processor.png[The IP Location processor]
[discrete]
-==== Case custom fields are GA
+==== File uploader PDF support
+The file uploader provides a quick way to upload data and start using Elastic. In 8.16, we are improving it to allow you to upload data from PDF files.
-In 8.11, <> were added to cases and they are now moving from technical preview to general availability.
-You can set custom field values in your templates to enhance consistency across cases.
+image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blte8f0b295330b7e68/67222fb0ca492a5044b51bd8/file_uploader_pdf.gif[File uploader with PDF support]
[discrete]
-==== {sn} additional fields
+=== Developer Tools Console redesign
+We're excited to introduce a number of improvements to the overall user experience on one of our most popular features: **Console**. If you're new to Console, you will be welcomed by an onboarding tour that will help you get started quickly with your first requests. And if you're already a regular Console user, you will notice a variety of new features, including the ability to copy outputs to the clipboard, import and export request files, enjoy improved responsiveness, and other quality of life improvements.
-You can now create enriched {sn} tickets based on detected alerts with a more comprehensive structure that matches the {sn} ticket scheme.
-A new JSON field is now available as part of the {sn} action, which enables you to send any field from {kib} alerts to {sn} tickets.
-
-[discrete]
-==== {webhook-cm} SSL auth support
-
-It's common for organizations to integrate with third parties using secured authentication.
-Currently, most of the available case connectors use basic authentication (user and passwords or tokens), which might not be sufficient to meet organization security policies.
-With this release, the <> now supports client certification, which enables you to leverage the connector for secured integration with third parties.
-
-The {webhook-cm} connector also moves from technical preview to general availability in this release.
+image::images/monaco-console.png[Console's redesign featuring the Monaco editor]
[discrete]
=== Machine Learning
[discrete]
-==== Improved UX for Log Pattern Analysis in Discover
+==== The Inference API is now Generally Available
-Analyze large volumes of logs efficiently, in very short times with Log Pattern Analysis in **Discover**. In 8.15, we redesigned the Log Pattern Analysis user flow in **Discover** to make it easier to use. Discover log patterns with one click for the message field (and other applicable text fields) and easily filter in and out logs to drastically reduce MTTR.
-
-image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt7e63d7e764ab183e/669a807bd316c7015db35458/ml-log-pattern-analysis.gif[New log pattern analysis interface]
+Starting in 8.16, the {ref}/inference-apis.html[Inference API] is now GA, offering production-level stability, robustness and performance. Elastic’s Inference API integrates the state-of-the-art in AI inference, including ELSER, your Elastic hosted models and {ref}/put-inference-api.html#put-inference-api-desc[an increasing array of external models and tasks] in a unified, lean syntax. Used with {ref}/semantic-text.html[semantic_text] or the vector fields supported by the Elastic vector database, you can perform AI search, reranking, and completion with simplicity. In 8.16, we're also adding streamed completions for improved flows and real time interactions and GenAI experiences.
[discrete]
-==== Log Rate Analysis contextual insights in serverless Observability
+==== ELSER and trained models adaptive resources and chunking strategies
-You can now see insights in natural language, for example for the root cause of a log rate change or threshold alert, in Log Rate Analysis. This feature is currently only available for Observability serverless projects.
+From 8.16, ELSER and the other AI search and NLP models you use in Elastic automatically adapt resource consumption according to the inference load, providing the performance you need during peak times and reducing the cost during slow periods, all the way down to zero cost during idle times.
-image::images/obs-log-rate-analysis-insigths.png[Log Rate Analysis contextual insights in serverless Observability]
+We're also improving the UX through which you deploy your models. You can provision search-optimized and ingest-optimized model deployments with a one-click selection. An optimized configuration is created without the need to specify parameters such as threads and allocations. Combined with the flexibility of ML auto-scaling on Elastic Cloud and the incredible elasticity of Elastic Cloud Serverless, you are in full control of both performance and cost.
-[discrete]
-==== Inference API improvements
+image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt429790e1de1b4f93/67222fb048ec8c73255ef4eb/trained_models.gif[Trained models and ELSER]
-The inference API provides a seamless, intuitive interface to perform inference and other tasks against proprietary, hosted, and integrated external services. In 8.15, we're extending it with the following capabilities:
+In addition, from 8.16 you can choose between a word or sequence-based chunking strategy to use with your trained models, and you can also customize the maximum size and overlap parameters. A suitable chunking strategy can result in gains depending on the model you use, the length and nature of the texts and the length and complexity of the search queries.
-* Support for Anthropic's chat completion API.
-* Ability to host cross encoder models and perform the reranking task.
-
-
-[discrete]
-=== Managing {kib} users and objects
[discrete]
-==== Sharing improvements
+==== Support for Daylight Saving Time changes in Anomaly Detection
-You can now share a dashboard, search, or Lens object in one click. When sharing an object, the most common actions are directly presented to you, and a short link is automatically generated, making it simpler than ever to share your work.
+In 8.16, we are introducing support for DST changes in Anomaly Detection. Set up a DST calendar by selecting the right timezone and apply it to your anomaly detection jobs individually or in groups. This feature eliminates any false positives that you may have experienced previously due to Daylight Saving Time changes, and works without the need for your intervention for many years ahead.
-image::images/share-modal.png[New object share modal, width=50%]
-
-[discrete]
-==== Quick API key creation
-
-Many API keys don’t require custom settings, so we made it simple to generate a standard key. From the **Endpoints & API keys** top menu in Search, you can create a key in seconds.
-
-image::images/create-simple-api-key.png[Shortcut to create an API key, width=60%]
-
-[discrete]
-==== Filtering by User in Kibana Audit Logs
+image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt5fb82f18cde26710/67222fb086339971144a31e5/daylight_savings.gif[DST support in Anomaly Detection]
-We are pleased to share that ignoring events by user in Kibana audit logs is now possible. This enhancement will give you more flexibility to reduce the overall number of events logged by the Kibana audit logs service and to control the volume of data being generated in audit logs. While we currently offer a number of ways to do this using the `xpack.security.audit.ignore_filters.[]` configuration setting, there wasn't an easy option to filter by user. With this addition, you can configure Kibana audit logs to ignore events based on values from the following fields: users, spaces, outcomes, categories, types and actions.
\ No newline at end of file
diff --git a/examples/discover_customization_examples/public/plugin.tsx b/examples/discover_customization_examples/public/plugin.tsx
index 7c35287b843ba..6dc6e8f48da58 100644
--- a/examples/discover_customization_examples/public/plugin.tsx
+++ b/examples/discover_customization_examples/public/plugin.tsx
@@ -7,17 +7,9 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/
-import {
- EuiButton,
- EuiContextMenu,
- EuiFlexItem,
- EuiPopover,
- EuiWrappingPopover,
- IconType,
-} from '@elastic/eui';
+import { EuiButton, EuiContextMenu, EuiFlexItem, EuiPopover, IconType } from '@elastic/eui';
import { CoreSetup, CoreStart, Plugin, SimpleSavedObject } from '@kbn/core/public';
import type { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public';
-import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render';
import type {
CustomizationCallback,
DiscoverSetup,
@@ -102,112 +94,14 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin {
}
start(core: CoreStart, plugins: DiscoverCustomizationExamplesStartPlugins) {
- const { discover } = plugins;
-
- let isOptionsOpen = false;
- const optionsContainer = document.createElement('div');
- const closeOptionsPopover = () => {
- ReactDOM.unmountComponentAtNode(optionsContainer);
- document.body.removeChild(optionsContainer);
- isOptionsOpen = false;
- };
-
this.customizationCallback = ({ customizations, stateContainer }) => {
customizations.set({
id: 'top_nav',
defaultMenu: {
newItem: { disabled: true },
openItem: { disabled: true },
- shareItem: { order: 200 },
alertsItem: { disabled: true },
inspectItem: { disabled: true },
- saveItem: { order: 400 },
- },
- getMenuItems: () => [
- {
- data: {
- id: 'options',
- label: 'Options',
- iconType: 'arrowDown',
- iconSide: 'right',
- testId: 'customOptionsButton',
- run: (anchorElement: HTMLElement) => {
- if (isOptionsOpen) {
- closeOptionsPopover();
- return;
- }
-
- isOptionsOpen = true;
- document.body.appendChild(optionsContainer);
-
- const element = (
-
-
- alert('Create new clicked'),
- },
- {
- name: 'Make a copy',
- icon: 'copy',
- onClick: () => alert('Make a copy clicked'),
- },
- {
- name: 'Manage saved searches',
- icon: 'gear',
- onClick: () => alert('Manage saved searches clicked'),
- },
- ],
- },
- ]}
- data-test-subj="customOptionsPopover"
- />
-
-
- );
-
- ReactDOM.render(element, optionsContainer);
- },
- },
- order: 100,
- },
- {
- data: {
- id: 'documentExplorer',
- label: 'Document explorer',
- iconType: 'discoverApp',
- testId: 'documentExplorerButton',
- run: () => {
- discover.locator?.navigate({});
- },
- },
- order: 300,
- },
- ],
- getBadges: () => {
- return [
- {
- data: {
- badgeText: 'Example badge',
- color: 'warning',
- },
- order: 10,
- },
- ];
},
});
diff --git a/examples/discover_customization_examples/tsconfig.json b/examples/discover_customization_examples/tsconfig.json
index 776153f943fac..30ff666575f1d 100644
--- a/examples/discover_customization_examples/tsconfig.json
+++ b/examples/discover_customization_examples/tsconfig.json
@@ -13,7 +13,6 @@
"@kbn/i18n-react",
"@kbn/react-kibana-context-theme",
"@kbn/data-plugin",
- "@kbn/react-kibana-context-render",
],
"exclude": ["target/**/*"]
}
diff --git a/examples/esql_ast_inspector/public/components/esql_inspector/helpers.tsx b/examples/esql_ast_inspector/public/components/esql_inspector/helpers.tsx
index a117062f7efa9..19a0c54a722c6 100644
--- a/examples/esql_ast_inspector/public/components/esql_inspector/helpers.tsx
+++ b/examples/esql_ast_inspector/public/components/esql_inspector/helpers.tsx
@@ -82,6 +82,8 @@ export const highlight = (query: EsqlQuery): Annotation[] => {
});
Walker.visitComments(query.ast, (comment) => {
+ if (!comment.location) return;
+
annotations.push([
comment.location.min,
comment.location.max,
diff --git a/examples/grid_example/public/app.tsx b/examples/grid_example/public/app.tsx
index 332649720742a..0e73a76d790fd 100644
--- a/examples/grid_example/public/app.tsx
+++ b/examples/grid_example/public/app.tsx
@@ -7,53 +7,186 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/
-import React from 'react';
+import { cloneDeep } from 'lodash';
+import React, { useRef, useState } from 'react';
import ReactDOM from 'react-dom';
-import { GridLayout, type GridLayoutData } from '@kbn/grid-layout';
+import { v4 as uuidv4 } from 'uuid';
+
+import {
+ EuiBadge,
+ EuiButton,
+ EuiButtonEmpty,
+ EuiCallOut,
+ EuiFlexGroup,
+ EuiFlexItem,
+ EuiPageTemplate,
+ EuiProvider,
+ EuiSpacer,
+} from '@elastic/eui';
import { AppMountParameters } from '@kbn/core-application-browser';
-import { EuiPageTemplate, EuiProvider } from '@elastic/eui';
+import { CoreStart } from '@kbn/core-lifecycle-browser';
+import { GridLayout, GridLayoutData, isLayoutEqual, type GridLayoutApi } from '@kbn/grid-layout';
+import { i18n } from '@kbn/i18n';
+
+import { getPanelId } from './get_panel_id';
+import {
+ clearSerializedGridLayout,
+ getSerializedGridLayout,
+ setSerializedGridLayout,
+} from './serialized_grid_layout';
+
+const DASHBOARD_MARGIN_SIZE = 8;
+const DASHBOARD_GRID_HEIGHT = 20;
+const DASHBOARD_GRID_COLUMN_COUNT = 48;
+const DEFAULT_PANEL_HEIGHT = 15;
+const DEFAULT_PANEL_WIDTH = DASHBOARD_GRID_COLUMN_COUNT / 2;
+
+export const GridExample = ({ coreStart }: { coreStart: CoreStart }) => {
+ const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
+
+ const [layoutKey, setLayoutKey] = useState(uuidv4());
+ const [gridLayoutApi, setGridLayoutApi] = useState();
+ const savedLayout = useRef(getSerializedGridLayout());
+ const currentLayout = useRef(savedLayout.current);
-export const GridExample = () => {
return (
-
+
+
+ {
+ clearSerializedGridLayout();
+ window.location.reload();
+ }}
+ >
+ {i18n.translate('examples.gridExample.resetExampleButton', {
+ defaultMessage: 'Reset example',
+ })}
+
+
+
+
+
+ {
+ const panelId = await getPanelId({
+ coreStart,
+ suggestion: `panel${(gridLayoutApi?.getPanelCount() ?? 0) + 1}`,
+ });
+ if (panelId)
+ gridLayoutApi?.addPanel(panelId, {
+ width: DEFAULT_PANEL_WIDTH,
+ height: DEFAULT_PANEL_HEIGHT,
+ });
+ }}
+ >
+ {i18n.translate('examples.gridExample.addPanelButton', {
+ defaultMessage: 'Add a panel',
+ })}
+
+
+
+
+ {hasUnsavedChanges && (
+
+
+ {i18n.translate('examples.gridExample.unsavedChangesBadge', {
+ defaultMessage: 'Unsaved changes',
+ })}
+
+
+ )}
+
+ {
+ currentLayout.current = cloneDeep(savedLayout.current);
+ setHasUnsavedChanges(false);
+ setLayoutKey(uuidv4()); // force remount of grid
+ }}
+ >
+ {i18n.translate('examples.gridExample.resetLayoutButton', {
+ defaultMessage: 'Reset',
+ })}
+
+
+
+ {
+ if (gridLayoutApi) {
+ const layoutToSave = gridLayoutApi.serializeState();
+ setSerializedGridLayout(layoutToSave);
+ savedLayout.current = layoutToSave;
+ setHasUnsavedChanges(false);
+ }
+ }}
+ >
+ {i18n.translate('examples.gridExample.saveLayoutButton', {
+ defaultMessage: 'Save',
+ })}
+
+
+
+
+
+
{
+ currentLayout.current = cloneDeep(newLayout);
+ setHasUnsavedChanges(!isLayoutEqual(savedLayout.current, newLayout));
+ }}
+ ref={setGridLayoutApi}
renderPanelContents={(id) => {
- return {id}
;
+ return (
+ <>
+ {id}
+ {
+ gridLayoutApi?.removePanel(id);
+ }}
+ >
+ {i18n.translate('examples.gridExample.deletePanelButton', {
+ defaultMessage: 'Delete panel',
+ })}
+
+ {
+ const newPanelId = await getPanelId({
+ coreStart,
+ suggestion: `panel${(gridLayoutApi?.getPanelCount() ?? 0) + 1}`,
+ });
+ if (newPanelId) gridLayoutApi?.replacePanel(id, newPanelId);
+ }}
+ >
+ {i18n.translate('examples.gridExample.replacePanelButton', {
+ defaultMessage: 'Replace panel',
+ })}
+
+ >
+ );
}}
getCreationOptions={() => {
- const initialLayout: GridLayoutData = [
- {
- title: 'Large section',
- isCollapsed: false,
- panels: {
- panel1: { column: 0, row: 0, width: 12, height: 6, id: 'panel1' },
- panel2: { column: 0, row: 6, width: 8, height: 4, id: 'panel2' },
- panel3: { column: 8, row: 6, width: 12, height: 4, id: 'panel3' },
- panel4: { column: 0, row: 10, width: 48, height: 4, id: 'panel4' },
- panel5: { column: 12, row: 0, width: 36, height: 6, id: 'panel5' },
- panel6: { column: 24, row: 6, width: 24, height: 4, id: 'panel6' },
- panel7: { column: 20, row: 6, width: 4, height: 2, id: 'panel7' },
- panel8: { column: 20, row: 8, width: 4, height: 2, id: 'panel8' },
- },
- },
- {
- title: 'Small section',
- isCollapsed: false,
- panels: { panel9: { column: 0, row: 0, width: 12, height: 16, id: 'panel9' } },
- },
- {
- title: 'Another small section',
- isCollapsed: false,
- panels: { panel10: { column: 24, row: 0, width: 12, height: 6, id: 'panel10' } },
- },
- ];
-
return {
- gridSettings: { gutterSize: 8, rowHeight: 26, columnCount: 48 },
- initialLayout,
+ gridSettings: {
+ gutterSize: DASHBOARD_MARGIN_SIZE,
+ rowHeight: DASHBOARD_GRID_HEIGHT,
+ columnCount: DASHBOARD_GRID_COLUMN_COUNT,
+ },
+ initialLayout: cloneDeep(currentLayout.current),
};
}}
/>
@@ -63,8 +196,11 @@ export const GridExample = () => {
);
};
-export const renderGridExampleApp = (element: AppMountParameters['element']) => {
- ReactDOM.render(, element);
+export const renderGridExampleApp = (
+ element: AppMountParameters['element'],
+ coreStart: CoreStart
+) => {
+ ReactDOM.render(, element);
return () => ReactDOM.unmountComponentAtNode(element);
};
diff --git a/examples/grid_example/public/get_panel_id.tsx b/examples/grid_example/public/get_panel_id.tsx
new file mode 100644
index 0000000000000..d83d0b232b53a
--- /dev/null
+++ b/examples/grid_example/public/get_panel_id.tsx
@@ -0,0 +1,108 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+import React, { useState } from 'react';
+
+import {
+ EuiButton,
+ EuiCallOut,
+ EuiFieldText,
+ EuiModal,
+ EuiModalBody,
+ EuiModalFooter,
+ EuiModalHeader,
+ EuiModalHeaderTitle,
+ EuiSpacer,
+} from '@elastic/eui';
+import { CoreStart } from '@kbn/core-lifecycle-browser';
+import { toMountPoint } from '@kbn/react-kibana-mount';
+import { i18n } from '@kbn/i18n';
+
+const PanelIdModal = ({
+ suggestion,
+ onClose,
+ onSubmit,
+}: {
+ suggestion: string;
+ onClose: () => void;
+ onSubmit: (id: string) => void;
+}) => {
+ const [panelId, setPanelId] = useState(suggestion);
+
+ return (
+
+
+
+ {i18n.translate('examples.gridExample.getPanelIdModalTitle', {
+ defaultMessage: 'Panel ID',
+ })}
+
+
+
+
+
+
+
+ {
+ setPanelId(e.target.value ?? '');
+ }}
+ />
+
+
+ {
+ onSubmit(panelId);
+ }}
+ >
+ {i18n.translate('examples.gridExample.getPanelIdSubmitButton', {
+ defaultMessage: 'Submit',
+ })}
+
+
+
+ );
+};
+
+export const getPanelId = async ({
+ coreStart,
+ suggestion,
+}: {
+ coreStart: CoreStart;
+ suggestion: string;
+}): Promise => {
+ return new Promise((resolve) => {
+ const session = coreStart.overlays.openModal(
+ toMountPoint(
+ {
+ resolve(undefined);
+ session.close();
+ }}
+ onSubmit={(newPanelId) => {
+ resolve(newPanelId);
+ session.close();
+ }}
+ />,
+ {
+ theme: coreStart.theme,
+ i18n: coreStart.i18n,
+ }
+ )
+ );
+ });
+};
diff --git a/examples/grid_example/public/plugin.ts b/examples/grid_example/public/plugin.ts
index 0f7d441a1be15..d57b06ac96017 100644
--- a/examples/grid_example/public/plugin.ts
+++ b/examples/grid_example/public/plugin.ts
@@ -26,8 +26,11 @@ export class GridExamplePlugin
title: gridExampleTitle,
visibleIn: [],
async mount(params: AppMountParameters) {
- const { renderGridExampleApp } = await import('./app');
- return renderGridExampleApp(params.element);
+ const [{ renderGridExampleApp }, [coreStart]] = await Promise.all([
+ import('./app'),
+ core.getStartServices(),
+ ]);
+ return renderGridExampleApp(params.element, coreStart);
},
});
developerExamples.register({
diff --git a/examples/grid_example/public/serialized_grid_layout.ts b/examples/grid_example/public/serialized_grid_layout.ts
new file mode 100644
index 0000000000000..2bb20052398f8
--- /dev/null
+++ b/examples/grid_example/public/serialized_grid_layout.ts
@@ -0,0 +1,52 @@
+/*
+ * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+import { type GridLayoutData } from '@kbn/grid-layout';
+
+const STATE_SESSION_STORAGE_KEY = 'kibana.examples.gridExample.state';
+
+export function clearSerializedGridLayout() {
+ sessionStorage.removeItem(STATE_SESSION_STORAGE_KEY);
+}
+
+export function getSerializedGridLayout(): GridLayoutData {
+ const serializedStateJSON = sessionStorage.getItem(STATE_SESSION_STORAGE_KEY);
+ return serializedStateJSON ? JSON.parse(serializedStateJSON) : initialGridLayout;
+}
+
+export function setSerializedGridLayout(layout: GridLayoutData) {
+ sessionStorage.setItem(STATE_SESSION_STORAGE_KEY, JSON.stringify(layout));
+}
+
+const initialGridLayout: GridLayoutData = [
+ {
+ title: 'Large section',
+ isCollapsed: false,
+ panels: {
+ panel1: { column: 0, row: 0, width: 12, height: 6, id: 'panel1' },
+ panel2: { column: 0, row: 6, width: 8, height: 4, id: 'panel2' },
+ panel3: { column: 8, row: 6, width: 12, height: 4, id: 'panel3' },
+ panel4: { column: 0, row: 10, width: 48, height: 4, id: 'panel4' },
+ panel5: { column: 12, row: 0, width: 36, height: 6, id: 'panel5' },
+ panel6: { column: 24, row: 6, width: 24, height: 4, id: 'panel6' },
+ panel7: { column: 20, row: 6, width: 4, height: 2, id: 'panel7' },
+ panel8: { column: 20, row: 8, width: 4, height: 2, id: 'panel8' },
+ },
+ },
+ {
+ title: 'Small section',
+ isCollapsed: false,
+ panels: { panel9: { column: 0, row: 0, width: 12, height: 16, id: 'panel9' } },
+ },
+ {
+ title: 'Another small section',
+ isCollapsed: false,
+ panels: { panel10: { column: 24, row: 0, width: 12, height: 6, id: 'panel10' } },
+ },
+];
diff --git a/examples/grid_example/tsconfig.json b/examples/grid_example/tsconfig.json
index 23be45a74c2f7..ad692e9697b2d 100644
--- a/examples/grid_example/tsconfig.json
+++ b/examples/grid_example/tsconfig.json
@@ -10,5 +10,8 @@
"@kbn/core-application-browser",
"@kbn/core",
"@kbn/developer-examples-plugin",
+ "@kbn/core-lifecycle-browser",
+ "@kbn/react-kibana-mount",
+ "@kbn/i18n",
]
}
diff --git a/examples/guided_onboarding_example/public/application.tsx b/examples/guided_onboarding_example/public/application.tsx
index 1227b8e7271df..b3d67e9de630a 100755
--- a/examples/guided_onboarding_example/public/application.tsx
+++ b/examples/guided_onboarding_example/public/application.tsx
@@ -10,20 +10,24 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { AppMountParameters, CoreStart } from '@kbn/core/public';
+import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render';
import { AppPluginStartDependencies } from './types';
import { GuidedOnboardingExampleApp } from './components/app';
export const renderApp = (
- { notifications }: CoreStart,
+ coreStart: CoreStart,
{ guidedOnboarding }: AppPluginStartDependencies,
{ element, history }: AppMountParameters
) => {
+ const { notifications } = coreStart;
ReactDOM.render(
- ,
+
+
+ ,
element
);
diff --git a/examples/guided_onboarding_example/public/components/app.tsx b/examples/guided_onboarding_example/public/components/app.tsx
index 20430534a54e3..650f683e82bbb 100755
--- a/examples/guided_onboarding_example/public/components/app.tsx
+++ b/examples/guided_onboarding_example/public/components/app.tsx
@@ -8,11 +8,10 @@
*/
import React from 'react';
-import { FormattedMessage, I18nProvider } from '@kbn/i18n-react';
+import { FormattedMessage } from '@kbn/i18n-react';
import { Routes, Router, Route } from '@kbn/shared-ux-router';
import { EuiPageTemplate } from '@elastic/eui';
import { CoreStart, ScopedHistory } from '@kbn/core/public';
-
import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public/types';
import { StepTwo } from './step_two';
import { StepOne } from './step_one';
@@ -30,62 +29,60 @@ export const GuidedOnboardingExampleApp = (props: GuidedOnboardingExampleAppDeps
const { notifications, guidedOnboarding, history } = props;
return (
-
-
-
+
+
+ }
+ />
+ {guidedOnboarding?.guidedOnboardingApi?.isEnabled ? (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+ }
+ body={
+
+
+
}
/>
- {guidedOnboarding?.guidedOnboardingApi?.isEnabled ? (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ) : (
-
-
-
- }
- body={
-
-
-
- }
- />
- )}
-
-
+ )}
+
);
};
diff --git a/examples/guided_onboarding_example/tsconfig.json b/examples/guided_onboarding_example/tsconfig.json
index 0707df0a33308..6dca87ec7eb23 100644
--- a/examples/guided_onboarding_example/tsconfig.json
+++ b/examples/guided_onboarding_example/tsconfig.json
@@ -17,6 +17,7 @@
"@kbn/i18n",
"@kbn/guided-onboarding",
"@kbn/shared-ux-router",
+ "@kbn/react-kibana-context-render",
],
"exclude": [
"target/**/*",
diff --git a/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts b/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts
index f1c8c671611a8..735e70916593f 100644
--- a/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts
+++ b/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts
@@ -8,10 +8,9 @@
*/
import type { TypedUseSelectorHook } from 'react-redux';
-import { useDispatch, useSelector, useStore } from 'react-redux';
-import type { AppDispatch, AppStore, RootState } from './store';
+import { useDispatch, useSelector } from 'react-redux';
+import type { AppDispatch, RootState } from './store';
// Use throughout your app instead of plain `useDispatch` and `useSelector`
export const useAppDispatch: () => AppDispatch = useDispatch;
export const useAppSelector: TypedUseSelectorHook = useSelector;
-export const useAppStore: () => AppStore = useStore;
diff --git a/examples/routing_example/common/index.ts b/examples/routing_example/common/index.ts
index b83582b66ff08..5bec77ebe0c0f 100644
--- a/examples/routing_example/common/index.ts
+++ b/examples/routing_example/common/index.ts
@@ -17,6 +17,7 @@ export const POST_MESSAGE_ROUTE_PATH = '/api/post_message';
export const INTERNAL_GET_MESSAGE_BY_ID_ROUTE = '/internal/get_message';
export const DEPRECATED_ROUTES = {
+ DEPRECATED_ROUTE: '/api/routing_example/d/deprecated_route',
REMOVED_ROUTE: '/api/routing_example/d/removed_route',
MIGRATED_ROUTE: '/api/routing_example/d/migrated_route',
VERSIONED_ROUTE: '/api/routing_example/d/versioned',
diff --git a/examples/routing_example/server/routes/deprecated_routes/unversioned.ts b/examples/routing_example/server/routes/deprecated_routes/unversioned.ts
index 4e1451a91fc38..aeb856d2eaf61 100644
--- a/examples/routing_example/server/routes/deprecated_routes/unversioned.ts
+++ b/examples/routing_example/server/routes/deprecated_routes/unversioned.ts
@@ -12,6 +12,28 @@ import { schema } from '@kbn/config-schema';
import { DEPRECATED_ROUTES } from '../../../common';
export const registerDeprecatedRoute = (router: IRouter) => {
+ router.get(
+ {
+ path: DEPRECATED_ROUTES.DEPRECATED_ROUTE,
+ validate: false,
+ options: {
+ access: 'public',
+ deprecated: {
+ documentationUrl: 'https://elastic.co/',
+ severity: 'warning',
+ message:
+ 'This deprecation message will be surfaced in UA. use `i18n.translate` to internationalize this message.',
+ reason: { type: 'deprecate' },
+ },
+ },
+ },
+ async (ctx, req, res) => {
+ return res.ok({
+ body: { result: 'Called deprecated route. Check UA to see the deprecation.' },
+ });
+ }
+ );
+
router.get(
{
path: DEPRECATED_ROUTES.REMOVED_ROUTE,
@@ -27,7 +49,7 @@ export const registerDeprecatedRoute = (router: IRouter) => {
},
async (ctx, req, res) => {
return res.ok({
- body: { result: 'Called deprecated route. Check UA to see the deprecation.' },
+ body: { result: 'Called to be removed route. Check UA to see the deprecation.' },
});
}
);
@@ -55,7 +77,7 @@ export const registerDeprecatedRoute = (router: IRouter) => {
},
async (ctx, req, res) => {
return res.ok({
- body: { result: 'Called deprecated route. Check UA to see the deprecation.' },
+ body: { result: 'Called to be migrated route. Check UA to see the deprecation.' },
});
}
);
diff --git a/examples/routing_example/server/routes/deprecated_routes/versioned.ts b/examples/routing_example/server/routes/deprecated_routes/versioned.ts
index 54d6f779f77c3..060bc64403dba 100644
--- a/examples/routing_example/server/routes/deprecated_routes/versioned.ts
+++ b/examples/routing_example/server/routes/deprecated_routes/versioned.ts
@@ -7,16 +7,9 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/
-import type { RequestHandler } from '@kbn/core-http-server';
import type { IRouter } from '@kbn/core/server';
import { DEPRECATED_ROUTES } from '../../../common';
-const createDummyHandler =
- (version: string): RequestHandler =>
- (ctx, req, res) => {
- return res.ok({ body: { result: `API version ${version}.` } });
- };
-
export const registerVersionedDeprecatedRoute = (router: IRouter) => {
const versionedRoute = router.versioned.get({
path: DEPRECATED_ROUTES.VERSIONED_ROUTE,
@@ -40,7 +33,11 @@ export const registerVersionedDeprecatedRoute = (router: IRouter) => {
validate: false,
version: '1',
},
- createDummyHandler('1')
+ (ctx, req, res) => {
+ return res.ok({
+ body: { result: 'Called deprecated version of the API. API version 1 -> 2' },
+ });
+ }
);
versionedRoute.addVersion(
@@ -48,6 +45,8 @@ export const registerVersionedDeprecatedRoute = (router: IRouter) => {
version: '2',
validate: false,
},
- createDummyHandler('2')
+ (ctx, req, res) => {
+ return res.ok({ body: { result: 'Called API version 2' } });
+ }
);
};
diff --git a/examples/routing_example/tsconfig.json b/examples/routing_example/tsconfig.json
index 86bfda9d3d529..b35e8dbd34f4a 100644
--- a/examples/routing_example/tsconfig.json
+++ b/examples/routing_example/tsconfig.json
@@ -20,6 +20,5 @@
"@kbn/core-http-browser",
"@kbn/config-schema",
"@kbn/react-kibana-context-render",
- "@kbn/core-http-server",
]
}
diff --git a/oas_docs/README.md b/oas_docs/README.md
index e37eefaed4851..3312bc60771e0 100644
--- a/oas_docs/README.md
+++ b/oas_docs/README.md
@@ -45,8 +45,7 @@ Besides the scripts in the `oas_docs/scripts` folder, there is an `oas_docs/make
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `api-docs` | Builds ESS Kibana OpenAPI bundle |
| `api-docs-serverless` | Builds Serverless Kibana OpenAPI bundle |
-| `api-docs-lint` | Lints built result bundles |
-| `api-docs-lint-errs` | Lints built result bundles for errors |
+| `api-docs-lint` | Lints built result bundles |
| `api-docs-preview` | Generates (ESS + Serverless) Kibana OpenAPI bundles preview |
| `api-docs-overlay` | Applies [overlays](https://docs.bump.sh/help/specification-support/overlays/) from `overlays` folder to the Kibana OpenAPI bundles and generate `*.new.yaml` files. Overlays help to fine tune the result bundles. |
| `api-docs-overlay-preview` | Generates a preview for bundles produced by `api-docs-overlay` |
diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json
index 7a43eed976fd8..95965f1f96804 100644
--- a/oas_docs/bundle.json
+++ b/oas_docs/bundle.json
@@ -347,7 +347,7 @@
"/api/actions": {
"get": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions#0",
+ "operationId": "get-actions",
"parameters": [
{
"description": "The version of the API to use",
@@ -372,7 +372,7 @@
"/api/actions/action": {
"post": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions%2Faction#0",
+ "operationId": "post-actions-action",
"parameters": [
{
"description": "The version of the API to use",
@@ -496,7 +496,7 @@
"delete": {
"deprecated": true,
"description": "WARNING: When you delete a connector, it cannot be recovered.",
- "operationId": "%2Fapi%2Factions%2Faction%2F%7Bid%7D#0",
+ "operationId": "delete-actions-action-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -542,7 +542,7 @@
},
"get": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions%2Faction%2F%7Bid%7D#1",
+ "operationId": "get-actions-action-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -628,7 +628,7 @@
},
"put": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions%2Faction%2F%7Bid%7D#2",
+ "operationId": "put-actions-action-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -754,7 +754,7 @@
"/api/actions/action/{id}/_execute": {
"post": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions%2Faction%2F%7Bid%7D%2F_execute#0",
+ "operationId": "post-actions-action-id-execute",
"parameters": [
{
"description": "The version of the API to use",
@@ -871,7 +871,7 @@
"/api/actions/connector/{id}": {
"delete": {
"description": "WARNING: When you delete a connector, it cannot be recovered.",
- "operationId": "%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#0",
+ "operationId": "delete-actions-connector-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -916,7 +916,7 @@
]
},
"get": {
- "operationId": "%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#1",
+ "operationId": "get-actions-connector-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -1001,7 +1001,7 @@
]
},
"post": {
- "operationId": "%2Fapi%2Factions%2Fconnector%2F%7Bid%3F%7D#0",
+ "operationId": "post-actions-connector-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -1130,7 +1130,7 @@
]
},
"put": {
- "operationId": "%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#2",
+ "operationId": "put-actions-connector-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -1257,7 +1257,7 @@
"/api/actions/connector/{id}/_execute": {
"post": {
"description": "You can use this API to test an action that involves interaction with Kibana services or integrations with third-party systems.",
- "operationId": "%2Fapi%2Factions%2Fconnector%2F%7Bid%7D%2F_execute#0",
+ "operationId": "post-actions-connector-id-execute",
"parameters": [
{
"description": "The version of the API to use",
@@ -1374,7 +1374,7 @@
"/api/actions/connector_types": {
"get": {
"description": "You do not need any Kibana feature privileges to run this API.",
- "operationId": "%2Fapi%2Factions%2Fconnector_types#0",
+ "operationId": "get-actions-connector-types",
"parameters": [
{
"description": "The version of the API to use",
@@ -1407,7 +1407,7 @@
},
"/api/actions/connectors": {
"get": {
- "operationId": "%2Fapi%2Factions%2Fconnectors#0",
+ "operationId": "get-actions-connectors",
"parameters": [
{
"description": "The version of the API to use",
@@ -1432,7 +1432,7 @@
"/api/actions/list_action_types": {
"get": {
"deprecated": true,
- "operationId": "%2Fapi%2Factions%2Flist_action_types#0",
+ "operationId": "get-actions-list-action-types",
"parameters": [
{
"description": "The version of the API to use",
@@ -1456,7 +1456,7 @@
},
"/api/alerting/rule/{id}": {
"delete": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D#2",
+ "operationId": "delete-alerting-rule-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -1510,7 +1510,7 @@
]
},
"get": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D#0",
+ "operationId": "get-alerting-rule-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -2388,7 +2388,7 @@
]
},
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%3F%7D#0",
+ "operationId": "post-alerting-rule-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -3568,7 +3568,7 @@
]
},
"put": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D#1",
+ "operationId": "put-alerting-rule-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -4736,7 +4736,7 @@
},
"/api/alerting/rule/{id}/_disable": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_disable#0",
+ "operationId": "post-alerting-rule-id-disable",
"parameters": [
{
"description": "The version of the API to use",
@@ -4810,7 +4810,7 @@
},
"/api/alerting/rule/{id}/_enable": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_enable#0",
+ "operationId": "post-alerting-rule-id-enable",
"parameters": [
{
"description": "The version of the API to use",
@@ -4866,7 +4866,7 @@
},
"/api/alerting/rule/{id}/_mute_all": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_mute_all#0",
+ "operationId": "post-alerting-rule-id-mute-all",
"parameters": [
{
"description": "The version of the API to use",
@@ -4922,7 +4922,7 @@
},
"/api/alerting/rule/{id}/_unmute_all": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_unmute_all#0",
+ "operationId": "post-alerting-rule-id-unmute-all",
"parameters": [
{
"description": "The version of the API to use",
@@ -4978,7 +4978,7 @@
},
"/api/alerting/rule/{id}/_update_api_key": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_update_api_key#0",
+ "operationId": "post-alerting-rule-id-update-api-key",
"parameters": [
{
"description": "The version of the API to use",
@@ -5037,7 +5037,7 @@
},
"/api/alerting/rule/{rule_id}/alert/{alert_id}/_mute": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Brule_id%7D%2Falert%2F%7Balert_id%7D%2F_mute#0",
+ "operationId": "post-alerting-rule-rule-id-alert-alert-id-mute",
"parameters": [
{
"description": "The version of the API to use",
@@ -5102,7 +5102,7 @@
},
"/api/alerting/rule/{rule_id}/alert/{alert_id}/_unmute": {
"post": {
- "operationId": "%2Fapi%2Falerting%2Frule%2F%7Brule_id%7D%2Falert%2F%7Balert_id%7D%2F_unmute#0",
+ "operationId": "post-alerting-rule-rule-id-alert-alert-id-unmute",
"parameters": [
{
"description": "The version of the API to use",
@@ -5167,7 +5167,7 @@
},
"/api/alerting/rules/_find": {
"get": {
- "operationId": "%2Fapi%2Falerting%2Frules%2F_find#0",
+ "operationId": "get-alerting-rules-find",
"parameters": [
{
"description": "The version of the API to use",
@@ -6177,7 +6177,7 @@
},
"/api/security/role": {
"get": {
- "operationId": "%2Fapi%2Fsecurity%2Frole#0",
+ "operationId": "get-security-role",
"parameters": [
{
"description": "The version of the API to use",
@@ -6214,7 +6214,7 @@
},
"/api/security/role/{name}": {
"delete": {
- "operationId": "%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#1",
+ "operationId": "delete-security-role-name",
"parameters": [
{
"description": "The version of the API to use",
@@ -6259,7 +6259,7 @@
]
},
"get": {
- "operationId": "%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#0",
+ "operationId": "get-security-role-name",
"parameters": [
{
"description": "The version of the API to use",
@@ -6305,7 +6305,7 @@
},
"put": {
"description": "Create a new Kibana role or update the attributes of an existing role. Kibana roles are stored in the Elasticsearch native realm.",
- "operationId": "%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#2",
+ "operationId": "put-security-role-name",
"parameters": [
{
"description": "The version of the API to use",
@@ -6624,7 +6624,7 @@
},
"/api/security/roles": {
"post": {
- "operationId": "%2Fapi%2Fsecurity%2Froles#0",
+ "operationId": "post-security-roles",
"parameters": [
{
"description": "The version of the API to use",
@@ -6934,8 +6934,8 @@
},
"/api/spaces/_copy_saved_objects": {
"post": {
- "description": "It also allows you to automatically copy related objects, so when you copy a dashboard, this can automatically copy over the associated visualizations, data views, and saved searches, as required. You can request to overwrite any objects that already exist in the target space if they share an identifier or you can use the resolve copy saved objects conflicts API to do this on a per-object basis.",
- "operationId": "%2Fapi%2Fspaces%2F_copy_saved_objects#0",
+ "description": "It also allows you to automatically copy related objects, so when you copy a dashboard, this can automatically copy over the associated visualizations, data views, and saved searches, as required. You can request to overwrite any objects that already exist in the target space if they share an identifier or you can use the resolve copy saved objects conflicts API to do this on a per-object basis.
[Required authorization] Route required privileges: ALL of [copySavedObjectsToSpaces].",
+ "operationId": "post-spaces-copy-saved-objects",
"parameters": [
{
"description": "The version of the API to use",
@@ -7033,7 +7033,7 @@
},
"/api/spaces/_disable_legacy_url_aliases": {
"post": {
- "operationId": "%2Fapi%2Fspaces%2F_disable_legacy_url_aliases#0",
+ "operationId": "post-spaces-disable-legacy-url-aliases",
"parameters": [
{
"description": "The version of the API to use",
@@ -7109,7 +7109,7 @@
"/api/spaces/_get_shareable_references": {
"post": {
"description": "Collect references and space contexts for saved objects.",
- "operationId": "%2Fapi%2Fspaces%2F_get_shareable_references#0",
+ "operationId": "post-spaces-get-shareable-references",
"parameters": [
{
"description": "The version of the API to use",
@@ -7177,8 +7177,8 @@
},
"/api/spaces/_resolve_copy_saved_objects_errors": {
"post": {
- "description": "Overwrite saved objects that are returned as errors from the copy saved objects to space API.",
- "operationId": "%2Fapi%2Fspaces%2F_resolve_copy_saved_objects_errors#0",
+ "description": "Overwrite saved objects that are returned as errors from the copy saved objects to space API.
[Required authorization] Route required privileges: ALL of [copySavedObjectsToSpaces].",
+ "operationId": "post-spaces-resolve-copy-saved-objects-errors",
"parameters": [
{
"description": "The version of the API to use",
@@ -7299,7 +7299,7 @@
"/api/spaces/_update_objects_spaces": {
"post": {
"description": "Update one or more saved objects to add or remove them from some spaces.",
- "operationId": "%2Fapi%2Fspaces%2F_update_objects_spaces#0",
+ "operationId": "post-spaces-update-objects-spaces",
"parameters": [
{
"description": "The version of the API to use",
@@ -7385,7 +7385,7 @@
},
"/api/spaces/space": {
"get": {
- "operationId": "%2Fapi%2Fspaces%2Fspace#0",
+ "operationId": "get-spaces-space",
"parameters": [
{
"description": "The version of the API to use",
@@ -7465,7 +7465,7 @@
]
},
"post": {
- "operationId": "%2Fapi%2Fspaces%2Fspace#1",
+ "operationId": "post-spaces-space",
"parameters": [
{
"description": "The version of the API to use",
@@ -7566,7 +7566,7 @@
"/api/spaces/space/{id}": {
"delete": {
"description": "When you delete a space, all saved objects that belong to the space are automatically deleted, which is permanent and cannot be undone.",
- "operationId": "%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#2",
+ "operationId": "delete-spaces-space-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -7614,7 +7614,7 @@
]
},
"get": {
- "operationId": "%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#0",
+ "operationId": "get-spaces-space-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -7649,7 +7649,7 @@
]
},
"put": {
- "operationId": "%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#1",
+ "operationId": "put-spaces-space-id",
"parameters": [
{
"description": "The version of the API to use",
@@ -7758,7 +7758,7 @@
},
"/api/status": {
"get": {
- "operationId": "%2Fapi%2Fstatus#0",
+ "operationId": "get-status",
"parameters": [
{
"description": "The version of the API to use",
diff --git a/oas_docs/kibana.info.serverless.yaml b/oas_docs/kibana.info.serverless.yaml
deleted file mode 100644
index b2f451373e7a1..0000000000000
--- a/oas_docs/kibana.info.serverless.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-openapi: 3.0.3
-info:
- title: Kibana Serverless APIs
- description: |
- **Technical preview**
- This functionality is in technical preview and may be changed or removed in a future release.
- Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
-
- The Kibana REST APIs for Elastic serverless enable you to manage resources
- such as connectors, data views, and saved objects. The API calls are
- stateless. Each request that you make happens in isolation from other calls
- and must include all of the necessary information for Kibana to fulfill the
- request. API requests return JSON output, which is a format that is
- machine-readable and works well for automation.
-
- To interact with Kibana APIs, use the following operations:
-
- - GET: Fetches the information.
- - POST: Adds new information.
- - PUT: Updates the existing information.
- - DELETE: Removes the information.
-
- You can prepend any Kibana API endpoint with `kbn:` and run the request in
- **Dev Tools → Console**. For example:
-
- ```
- GET kbn:/api/data_views
- ```
-
- ## Documentation source and versions
-
- This documentation is derived from the `main` branch of the [kibana](https://github.com/elastic/kibana) repository.
- It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).
- version: "1.0.2"
- x-doc-license:
- name: Attribution-NonCommercial-NoDerivatives 4.0 International
- url: https://creativecommons.org/licenses/by-nc-nd/4.0/
- contact:
- name: Kibana Team
- x-feedbackLink:
- label: Feedback
- url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+
-security:
- - apiKeyAuth: []
-components:
- securitySchemes:
- apiKeyAuth:
- type: apiKey
- in: header
- name: Authorization
- description: You must create an API key and use the encoded value in the request header. To learn about creating keys, go to [API keys](https://www.elastic.co/docs/current/serverless/api-keys).
diff --git a/oas_docs/.spectral.yaml b/oas_docs/linters/.spectral.yaml
similarity index 100%
rename from oas_docs/.spectral.yaml
rename to oas_docs/linters/.spectral.yaml
diff --git a/oas_docs/linters/redocly.yaml b/oas_docs/linters/redocly.yaml
new file mode 100644
index 0000000000000..139a503ba856c
--- /dev/null
+++ b/oas_docs/linters/redocly.yaml
@@ -0,0 +1,52 @@
+extends:
+ - recommended
+rules:
+# Built-in rules
+ # Descriptions
+ parameter-description: warn
+ tag-description: warn
+ operation-description: off
+ # Document info
+ info-contact: warn
+ info-license: warn
+ # Examples
+ no-invalid-media-type-examples:
+ severity: warn
+ allowAdditionalProperties: false
+ no-invalid-schema-examples:
+ severity: warn
+ allowAdditionalProperties: false
+ # Operations
+ operation-operationId: error
+ operation-operationId-unique: error
+ operation-operationId-url-safe: warn
+ operation-summary: warn
+ # Parameters
+ path-parameters-defined: warn
+ # Paths
+ no-ambiguous-paths: warn
+ no-identical-paths: error
+ path-excludes-patterns:
+ severity: error
+ patterns:
+ - ^\/internal
+ # Responses
+ operation-4xx-response: off
+ operation-2xx-response: off
+ # Schema
+ spec: off
+ spec-strict-refs: off
+ # Tags
+ operation-tag-defined: off
+ tags-alphabetical: off
+ operation-singular-tag: off
+# Custom rules
+ rule/operation-summary-length:
+ subject:
+ type: Operation
+ property: summary
+ message: Operation summary must have a minimum of 5 and maximum of 45 characters
+ severity: warn
+ assertions:
+ maxLength: 45
+ minLength: 5
\ No newline at end of file
diff --git a/oas_docs/makefile b/oas_docs/makefile
index 7b690e4c07593..c97b5046c62a9 100644
--- a/oas_docs/makefile
+++ b/oas_docs/makefile
@@ -21,50 +21,30 @@ api-docs: ## Generate ESS Kibana OpenAPI bundles with kbn-openapi-bundler
api-docs-stateful: ## Generate only kibana.yaml
@node scripts/merge_ess_oas.js
-.PHONY: api-docs-serverless
-api-docs-serverless: ## Generate only kibana.serverless.yaml
- @node scripts/merge_serverless_oas.js
-
.PHONY: api-docs-lint
-api-docs-lint: ## Run spectral API docs linter
- @npx @stoplight/spectral-cli lint "output/*.yaml" --ruleset ".spectral.yaml"
-
-.PHONY: api-docs-lint-errs
-api-docs-lint-errs: ## Run spectral API docs linter and return only errors
- @npx @stoplight/spectral-cli lint "output/*.yaml" --ruleset ".spectral.yaml" -D
+api-docs-lint: ## Run redocly API docs linter
+ @npx @redocly/cli lint "output/*.yaml" --config "linters/redocly.yaml" --format stylish --max-problems 500
.PHONY: api-docs-lint-stateful
-api-docs-lint-stateful: ## Run spectral API docs linter on kibana.yaml
- @npx @stoplight/spectral-cli lint "output/kibana.yaml" --ruleset ".spectral.yaml"
-
-.PHONY: api-docs-lint-serverless
-api-docs-lint-serverless: ## Run spectral API docs linter on kibana.serverless.yaml
- @npx @stoplight/spectral-cli lint "output/kibana.serverless.yaml" --ruleset ".spectral.yaml"
+api-docs-lint-stateful: ## Run redocly API docs linter on kibana.yaml
+ @npx @redocly/cli lint "output/kibana.yaml" --config "linters/redocly.yaml" --format stylish --max-problems 500
.PHONY: api-docs-overlay
-api-docs-overlay: ## Run spectral API docs linter on kibana.serverless.yaml
- @npx bump overlay "output/kibana.serverless.yaml" "overlays/kibana.overlays.serverless.yaml" > "output/kibana.serverless.tmp1.yaml"
- @npx bump overlay "output/kibana.serverless.tmp1.yaml" "overlays/alerting.overlays.yaml" > "output/kibana.serverless.tmp2.yaml"
- @npx bump overlay "output/kibana.serverless.tmp2.yaml" "overlays/connectors.overlays.yaml" > "output/kibana.serverless.tmp3.yaml"
- @npx bump overlay "output/kibana.serverless.tmp3.yaml" "overlays/kibana.overlays.shared.yaml" > "output/kibana.serverless.tmp4.yaml"
+api-docs-overlay: ## Run spectral API docs linter
@npx bump overlay "output/kibana.yaml" "overlays/kibana.overlays.yaml" > "output/kibana.tmp1.yaml"
@npx bump overlay "output/kibana.tmp1.yaml" "overlays/alerting.overlays.yaml" > "output/kibana.tmp2.yaml"
@npx bump overlay "output/kibana.tmp2.yaml" "overlays/connectors.overlays.yaml" > "output/kibana.tmp3.yaml"
@npx bump overlay "output/kibana.tmp3.yaml" "overlays/kibana.overlays.shared.yaml" > "output/kibana.tmp4.yaml"
- @npx @redocly/cli bundle output/kibana.serverless.tmp4.yaml --ext yaml -o output/kibana.serverless.new.yaml
@npx @redocly/cli bundle output/kibana.tmp4.yaml --ext yaml -o output/kibana.new.yaml
rm output/kibana.tmp*.yaml
- rm output/kibana.serverless.tmp*.yaml
.PHONY: api-docs-preview
-api-docs-preview: ## Generate a preview for kibana.yaml and kibana.serverless.yaml
+api-docs-preview: ## Generate a preview for kibana.yaml
@npx bump preview "output/kibana.yaml"
- @npx bump preview "output/kibana.serverless.yaml"
.PHONY: api-docs-overlay-preview
-api-docs-overlay-preview: ## Generate a preview for kibana.new.yaml and kibana.serverless.new.yaml
+api-docs-overlay-preview: ## Generate a preview for kibana.new.yaml
@npx bump preview "output/kibana.new.yaml"
- @npx bump preview "output/kibana.serverless.new.yaml"
help: ## Display help
@awk 'BEGIN {FS = ":.*##"; printf "Usage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
diff --git a/oas_docs/output/kibana.serverless.staging.yaml b/oas_docs/output/kibana.serverless.staging.yaml
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/oas_docs/output/kibana.staging.yaml b/oas_docs/output/kibana.staging.yaml
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml
index 3fe73a417aae1..38b99fdf1018b 100644
--- a/oas_docs/output/kibana.yaml
+++ b/oas_docs/output/kibana.yaml
@@ -78,7 +78,7 @@ paths:
/api/actions:
get:
deprecated: true
- operationId: '%2Fapi%2Factions#0'
+ operationId: get-actions
parameters:
- description: The version of the API to use
in: header
@@ -95,7 +95,7 @@ paths:
/api/actions/action:
post:
deprecated: true
- operationId: '%2Fapi%2Factions%2Faction#0'
+ operationId: post-actions-action
parameters:
- description: The version of the API to use
in: header
@@ -188,7 +188,7 @@ paths:
delete:
deprecated: true
description: 'WARNING: When you delete a connector, it cannot be recovered.'
- operationId: '%2Fapi%2Factions%2Faction%2F%7Bid%7D#0'
+ operationId: delete-actions-action-id
parameters:
- description: The version of the API to use
in: header
@@ -219,7 +219,7 @@ paths:
- connectors
get:
deprecated: true
- operationId: '%2Fapi%2Factions%2Faction%2F%7Bid%7D#1'
+ operationId: get-actions-action-id
parameters:
- description: The version of the API to use
in: header
@@ -285,7 +285,7 @@ paths:
- connectors
put:
deprecated: true
- operationId: '%2Fapi%2Factions%2Faction%2F%7Bid%7D#2'
+ operationId: put-actions-action-id
parameters:
- description: The version of the API to use
in: header
@@ -378,7 +378,7 @@ paths:
'/api/actions/action/{id}/_execute':
post:
deprecated: true
- operationId: '%2Fapi%2Factions%2Faction%2F%7Bid%7D%2F_execute#0'
+ operationId: post-actions-action-id-execute
parameters:
- description: The version of the API to use
in: header
@@ -464,7 +464,7 @@ paths:
/api/actions/connector_types:
get:
description: You do not need any Kibana feature privileges to run this API.
- operationId: '%2Fapi%2Factions%2Fconnector_types#0'
+ operationId: get-actions-connector-types
parameters:
- description: The version of the API to use
in: header
@@ -489,7 +489,7 @@ paths:
'/api/actions/connector/{id}':
delete:
description: 'WARNING: When you delete a connector, it cannot be recovered.'
- operationId: '%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#0'
+ operationId: delete-actions-connector-id
parameters:
- description: The version of the API to use
in: header
@@ -519,7 +519,7 @@ paths:
tags:
- connectors
get:
- operationId: '%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#1'
+ operationId: get-actions-connector-id
parameters:
- description: The version of the API to use
in: header
@@ -584,7 +584,7 @@ paths:
tags:
- connectors
post:
- operationId: '%2Fapi%2Factions%2Fconnector%2F%7Bid%3F%7D#0'
+ operationId: post-actions-connector-id
parameters:
- description: The version of the API to use
in: header
@@ -680,7 +680,7 @@ paths:
tags:
- connectors
put:
- operationId: '%2Fapi%2Factions%2Fconnector%2F%7Bid%7D#2'
+ operationId: put-actions-connector-id
parameters:
- description: The version of the API to use
in: header
@@ -776,7 +776,7 @@ paths:
description: >-
You can use this API to test an action that involves interaction with
Kibana services or integrations with third-party systems.
- operationId: '%2Fapi%2Factions%2Fconnector%2F%7Bid%7D%2F_execute#0'
+ operationId: post-actions-connector-id-execute
parameters:
- description: The version of the API to use
in: header
@@ -861,7 +861,7 @@ paths:
- connectors
/api/actions/connectors:
get:
- operationId: '%2Fapi%2Factions%2Fconnectors#0'
+ operationId: get-actions-connectors
parameters:
- description: The version of the API to use
in: header
@@ -878,7 +878,7 @@ paths:
/api/actions/list_action_types:
get:
deprecated: true
- operationId: '%2Fapi%2Factions%2Flist_action_types#0'
+ operationId: get-actions-list-action-types
parameters:
- description: The version of the API to use
in: header
@@ -1282,7 +1282,7 @@ paths:
- alerting
'/api/alerting/rule/{id}':
delete:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D#2'
+ operationId: delete-alerting-rule-id
parameters:
- description: The version of the API to use
in: header
@@ -1318,7 +1318,7 @@ paths:
tags:
- alerting
get:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D#0'
+ operationId: get-alerting-rule-id
parameters:
- description: The version of the API to use
in: header
@@ -2116,7 +2116,7 @@ paths:
tags:
- alerting
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%3F%7D#0'
+ operationId: post-alerting-rule-id
parameters:
- description: The version of the API to use
in: header
@@ -3239,7 +3239,7 @@ paths:
tags:
- alerting
put:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D#1'
+ operationId: put-alerting-rule-id
parameters:
- description: The version of the API to use
in: header
@@ -4336,7 +4336,7 @@ paths:
- alerting
'/api/alerting/rule/{id}/_disable':
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_disable#0'
+ operationId: post-alerting-rule-id-disable
parameters:
- description: The version of the API to use
in: header
@@ -4385,7 +4385,7 @@ paths:
- alerting
'/api/alerting/rule/{id}/_enable':
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_enable#0'
+ operationId: post-alerting-rule-id-enable
parameters:
- description: The version of the API to use
in: header
@@ -4422,7 +4422,7 @@ paths:
- alerting
'/api/alerting/rule/{id}/_mute_all':
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_mute_all#0'
+ operationId: post-alerting-rule-id-mute-all
parameters:
- description: The version of the API to use
in: header
@@ -4459,7 +4459,7 @@ paths:
- alerting
'/api/alerting/rule/{id}/_unmute_all':
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_unmute_all#0'
+ operationId: post-alerting-rule-id-unmute-all
parameters:
- description: The version of the API to use
in: header
@@ -4496,7 +4496,7 @@ paths:
- alerting
'/api/alerting/rule/{id}/_update_api_key':
post:
- operationId: '%2Fapi%2Falerting%2Frule%2F%7Bid%7D%2F_update_api_key#0'
+ operationId: post-alerting-rule-id-update-api-key
parameters:
- description: The version of the API to use
in: header
@@ -4535,8 +4535,7 @@ paths:
- alerting
'/api/alerting/rule/{rule_id}/alert/{alert_id}/_mute':
post:
- operationId: >-
- %2Fapi%2Falerting%2Frule%2F%7Brule_id%7D%2Falert%2F%7Balert_id%7D%2F_mute#0
+ operationId: post-alerting-rule-rule-id-alert-alert-id-mute
parameters:
- description: The version of the API to use
in: header
@@ -4579,8 +4578,7 @@ paths:
- alerting
'/api/alerting/rule/{rule_id}/alert/{alert_id}/_unmute':
post:
- operationId: >-
- %2Fapi%2Falerting%2Frule%2F%7Brule_id%7D%2Falert%2F%7Balert_id%7D%2F_unmute#0
+ operationId: post-alerting-rule-rule-id-alert-alert-id-unmute
parameters:
- description: The version of the API to use
in: header
@@ -4623,7 +4621,7 @@ paths:
- alerting
/api/alerting/rules/_find:
get:
- operationId: '%2Fapi%2Falerting%2Frules%2F_find#0'
+ operationId: get-alerting-rules-find
parameters:
- description: The version of the API to use
in: header
@@ -6318,49 +6316,110 @@ paths:
post:
description: Create a new agent key for APM.
operationId: createAgentKey
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
requestBody:
content:
application/json; Elastic-Api-Version=2023-10-31:
schema:
- type: object
- properties:
- name:
- type: string
- privileges:
- items:
- enum:
- - 'event:write'
- - 'config_agent:read'
- type: string
- type: array
+ $ref: '#/components/schemas/APM_UI_agent_keys_object'
required: true
responses:
'200':
content:
application/json; Elastic-Api-Version=2023-10-31:
schema:
- type: object
- properties:
- api_key:
- type: string
- encoded:
- type: string
- expiration:
- format: int64
- type: integer
- id:
- type: string
- name:
- type: string
+ $ref: '#/components/schemas/APM_UI_agent_keys_response'
description: Agent key created successfully
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '500':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_500_response'
+ description: Internal Server Error response
summary: Create an APM agent key
tags:
- APM agent keys
+ /api/apm/fleet/apm_server_schema:
+ post:
+ operationId: saveApmServerSchema
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ requestBody:
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ type: object
+ properties:
+ schema:
+ additionalProperties: true
+ description: Schema object
+ example:
+ foo: bar
+ type: object
+ required: true
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ additionalProperties: false
+ type: object
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Save APM server schema
+ tags:
+ - APM server schema
'/api/apm/services/{serviceName}/annotation':
post:
description: Create a new annotation for a specific service.
operationId: createAnnotation
parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
- description: The name of the service
in: path
name: serviceName
@@ -6371,63 +6430,39 @@ paths:
content:
application/json; Elastic-Api-Version=2023-10-31:
schema:
- type: object
- properties:
- '@timestamp':
- type: string
- message:
- type: string
- service:
- type: object
- properties:
- environment:
- type: string
- version:
- type: string
- tags:
- items:
- type: string
- type: array
+ $ref: '#/components/schemas/APM_UI_create_annotation_object'
required: true
responses:
'200':
content:
application/json; Elastic-Api-Version=2023-10-31:
schema:
- type: object
- properties:
- _id:
- type: string
- _index:
- type: string
- _source:
- type: object
- properties:
- '@timestamp':
- type: string
- annotation:
- type: string
- event:
- type: object
- properties:
- created:
- type: string
- message:
- type: string
- service:
- type: object
- properties:
- environment:
- type: string
- name:
- type: string
- version:
- type: string
- tags:
- items:
- type: string
- type: array
+ $ref: '#/components/schemas/APM_UI_create_annotation_response'
description: Annotation created successfully
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
summary: Create a service annotation
tags:
- APM annotations
@@ -6436,6 +6471,7 @@ paths:
description: Search for annotations related to a specific service.
operationId: getAnnotation
parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
- description: The name of the service
in: path
name: serviceName
@@ -6465,27 +6501,484 @@ paths:
content:
application/json; Elastic-Api-Version=2023-10-31:
schema:
- type: object
- properties:
- annotations:
- items:
- type: object
- properties:
- '@timestamp':
- type: number
- id:
- type: string
- text:
- type: string
- type:
- enum:
- - version
- type: string
- type: array
+ $ref: '#/components/schemas/APM_UI_annotation_search_response'
description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '500':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_500_response'
+ description: Internal Server Error response
summary: Search for annotations
tags:
- APM annotations
+ /api/apm/settings/agent-configuration:
+ delete:
+ operationId: deleteAgentConfiguration
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ requestBody:
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_service_object'
+ required: true
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: >-
+ #/components/schemas/APM_UI_delete_agent_configurations_response
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Delete agent configuration
+ tags:
+ - APM agent configuration
+ get:
+ operationId: getAgentConfigurations
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_agent_configurations_response'
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Get a list of agent configurations
+ tags:
+ - APM agent configuration
+ put:
+ operationId: createUpdateAgentConfiguration
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ - description: If the config exists ?overwrite=true is required
+ in: query
+ name: overwrite
+ schema:
+ type: boolean
+ requestBody:
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_agent_configuration_intake_object'
+ required: true
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ additionalProperties: false
+ type: object
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Create or update agent configuration
+ tags:
+ - APM agent configuration
+ /api/apm/settings/agent-configuration/agent_name:
+ get:
+ description: Retrieve `agentName` for a service.
+ operationId: getAgentNameForService
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - description: The name of the service
+ example: node
+ in: query
+ name: serviceName
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_service_agent_name_response'
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Get agent name for service
+ tags:
+ - APM agent configuration
+ /api/apm/settings/agent-configuration/environments:
+ get:
+ operationId: getEnvironmentsForService
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - description: The name of the service
+ in: query
+ name: serviceName
+ schema:
+ type: string
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_service_environments_response'
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Get environments for service
+ tags:
+ - APM agent configuration
+ /api/apm/settings/agent-configuration/search:
+ post:
+ description: >
+ This endpoint allows to search for single agent configuration and update
+ 'applied_by_agent' field.
+ operationId: searchSingleConfiguration
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ requestBody:
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_search_agent_configuration_object'
+ required: true
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: >-
+ #/components/schemas/APM_UI_search_agent_configuration_response
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Lookup single agent configuration
+ tags:
+ - APM agent configuration
+ /api/apm/settings/agent-configuration/view:
+ get:
+ operationId: getSingleAgentConfiguration
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - description: Service name
+ example: node
+ in: query
+ name: name
+ schema:
+ type: string
+ - description: Service environment
+ example: prod
+ in: query
+ name: environment
+ schema:
+ type: string
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: >-
+ #/components/schemas/APM_UI_single_agent_configuration_response
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '404':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_404_response'
+ description: Not found response
+ summary: Get single agent configuration
+ tags:
+ - APM agent configuration
+ /api/apm/sourcemaps:
+ get:
+ description: 'Returns an array of Fleet artifacts, including source map uploads.'
+ operationId: getSourceMaps
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - description: Page number
+ in: query
+ name: page
+ schema:
+ type: number
+ - description: Number of records per page
+ in: query
+ name: perPage
+ schema:
+ type: number
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_source_maps_response'
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '500':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_500_response'
+ description: Internal Server Error response
+ '501':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_501_response'
+ description: Not Implemented response
+ summary: Get source maps
+ tags:
+ - APM sourcemaps
+ post:
+ description: Upload a source map for a specific service and version.
+ operationId: uploadSourceMap
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ requestBody:
+ content:
+ multipart/form-data; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_upload_source_map_object'
+ required: true
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_upload_source_maps_response'
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '500':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_500_response'
+ description: Internal Server Error response
+ '501':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_501_response'
+ description: Not Implemented response
+ summary: Upload source map
+ tags:
+ - APM sourcemaps
+ '/api/apm/sourcemaps/{id}':
+ delete:
+ description: Delete a previously uploaded source map.
+ operationId: deleteSourceMap
+ parameters:
+ - $ref: '#/components/parameters/APM_UI_elastic_api_version'
+ - $ref: '#/components/parameters/APM_UI_kbn_xsrf'
+ - description: Source map identifier
+ in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ additionalProperties: false
+ type: object
+ description: Successful response
+ '400':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_400_response'
+ description: Bad Request response
+ '401':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_401_response'
+ description: Unauthorized response
+ '403':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_403_response'
+ description: Forbidden response
+ '500':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_500_response'
+ description: Internal Server Error response
+ '501':
+ content:
+ application/json; Elastic-Api-Version=2023-10-31:
+ schema:
+ $ref: '#/components/schemas/APM_UI_501_response'
+ description: Not Implemented response
+ summary: Delete source map
+ tags:
+ - APM sourcemaps
/api/asset_criticality:
delete:
description: Delete the asset criticality record for a specific asset if it exists.
@@ -20191,7 +20684,7 @@ paths:
- Prompts API
/api/security/role:
get:
- operationId: '%2Fapi%2Fsecurity%2Frole#0'
+ operationId: get-security-role
parameters:
- description: The version of the API to use
in: header
@@ -20218,7 +20711,7 @@ paths:
- roles
'/api/security/role/{name}':
delete:
- operationId: '%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#1'
+ operationId: delete-security-role-name
parameters:
- description: The version of the API to use
in: header
@@ -20248,7 +20741,7 @@ paths:
tags:
- roles
get:
- operationId: '%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#0'
+ operationId: get-security-role-name
parameters:
- description: The version of the API to use
in: header
@@ -20284,7 +20777,7 @@ paths:
description: >-
Create a new Kibana role or update the attributes of an existing role.
Kibana roles are stored in the Elasticsearch native realm.
- operationId: '%2Fapi%2Fsecurity%2Frole%2F%7Bname%7D#2'
+ operationId: put-security-role-name
parameters:
- description: The version of the API to use
in: header
@@ -20567,7 +21060,7 @@ paths:
- roles
/api/security/roles:
post:
- operationId: '%2Fapi%2Fsecurity%2Froles#0'
+ operationId: post-security-roles
parameters:
- description: The version of the API to use
in: header
@@ -20857,8 +21350,10 @@ paths:
visualizations, data views, and saved searches, as required. You can
request to overwrite any objects that already exist in the target space
if they share an identifier or you can use the resolve copy saved
- objects conflicts API to do this on a per-object basis.
- operationId: '%2Fapi%2Fspaces%2F_copy_saved_objects#0'
+ objects conflicts API to do this on a per-object
+ basis.
[Required authorization] Route required privileges: ALL
+ of [copySavedObjectsToSpaces].
+ operationId: post-spaces-copy-saved-objects
parameters:
- description: The version of the API to use
in: header
@@ -20945,7 +21440,7 @@ paths:
- spaces
/api/spaces/_disable_legacy_url_aliases:
post:
- operationId: '%2Fapi%2Fspaces%2F_disable_legacy_url_aliases#0'
+ operationId: post-spaces-disable-legacy-url-aliases
parameters:
- description: The version of the API to use
in: header
@@ -20999,7 +21494,7 @@ paths:
/api/spaces/_get_shareable_references:
post:
description: Collect references and space contexts for saved objects.
- operationId: '%2Fapi%2Fspaces%2F_get_shareable_references#0'
+ operationId: post-spaces-get-shareable-references
parameters:
- description: The version of the API to use
in: header
@@ -21046,8 +21541,9 @@ paths:
post:
description: >-
Overwrite saved objects that are returned as errors from the copy saved
- objects to space API.
- operationId: '%2Fapi%2Fspaces%2F_resolve_copy_saved_objects_errors#0'
+ objects to space API.
[Required authorization] Route required
+ privileges: ALL of [copySavedObjectsToSpaces].
+ operationId: post-spaces-resolve-copy-saved-objects-errors
parameters:
- description: The version of the API to use
in: header
@@ -21142,7 +21638,7 @@ paths:
/api/spaces/_update_objects_spaces:
post:
description: Update one or more saved objects to add or remove them from some spaces.
- operationId: '%2Fapi%2Fspaces%2F_update_objects_spaces#0'
+ operationId: post-spaces-update-objects-spaces
parameters:
- description: The version of the API to use
in: header
@@ -21205,7 +21701,7 @@ paths:
- spaces
/api/spaces/space:
get:
- operationId: '%2Fapi%2Fspaces%2Fspace#0'
+ operationId: get-spaces-space
parameters:
- description: The version of the API to use
in: header
@@ -21261,7 +21757,7 @@ paths:
tags:
- spaces
post:
- operationId: '%2Fapi%2Fspaces%2Fspace#1'
+ operationId: post-spaces-space
parameters:
- description: The version of the API to use
in: header
@@ -21350,7 +21846,7 @@ paths:
description: >-
When you delete a space, all saved objects that belong to the space are
automatically deleted, which is permanent and cannot be undone.
- operationId: '%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#2'
+ operationId: delete-spaces-space-id
parameters:
- description: The version of the API to use
in: header
@@ -21382,7 +21878,7 @@ paths:
tags:
- spaces
get:
- operationId: '%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#0'
+ operationId: get-spaces-space-id
parameters:
- description: The version of the API to use
in: header
@@ -21405,7 +21901,7 @@ paths:
tags:
- spaces
put:
- operationId: '%2Fapi%2Fspaces%2Fspace%2F%7Bid%7D#1'
+ operationId: put-spaces-space-id
parameters:
- description: The version of the API to use
in: header
@@ -21499,7 +21995,7 @@ paths:
- spaces
/api/status:
get:
- operationId: '%2Fapi%2Fstatus#0'
+ operationId: get-status
parameters:
- description: The version of the API to use
in: header
@@ -25481,6 +25977,24 @@ components:
required: true
schema:
type: string
+ APM_UI_elastic_api_version:
+ description: The version of the API to use
+ in: header
+ name: elastic-api-version
+ required: true
+ schema:
+ default: '2023-10-31'
+ enum:
+ - '2023-10-31'
+ type: string
+ APM_UI_kbn_xsrf:
+ description: A required header to protect against CSRF attacks
+ in: header
+ name: kbn-xsrf
+ required: true
+ schema:
+ example: 'true'
+ type: string
Cases_alert_id:
description: An identifier for the alert.
in: path
@@ -26059,6 +26573,471 @@ components:
description: Specifies the data type for the field.
example: scaled_float
type: string
+ APM_UI_400_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Not Found
+ type: string
+ message:
+ description: Error message
+ example: Not Found
+ type: string
+ statusCode:
+ description: Error status code
+ example: 400
+ type: number
+ APM_UI_401_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Unauthorized
+ type: string
+ message:
+ description: Error message
+ type: string
+ statusCode:
+ description: Error status code
+ example: 401
+ type: number
+ APM_UI_403_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Forbidden
+ type: string
+ message:
+ description: Error message
+ type: string
+ statusCode:
+ description: Error status code
+ example: 403
+ type: number
+ APM_UI_404_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Not Found
+ type: string
+ message:
+ description: Error message
+ example: Not Found
+ type: string
+ statusCode:
+ description: Error status code
+ example: 404
+ type: number
+ APM_UI_500_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Internal Server Error
+ type: string
+ message:
+ description: Error message
+ type: string
+ statusCode:
+ description: Error status code
+ example: 500
+ type: number
+ APM_UI_501_response:
+ type: object
+ properties:
+ error:
+ description: Error type
+ example: Not Implemented
+ type: string
+ message:
+ description: Error message
+ example: Not Implemented
+ type: string
+ statusCode:
+ description: Error status code
+ example: 501
+ type: number
+ APM_UI_agent_configuration_intake_object:
+ type: object
+ properties:
+ agent_name:
+ description: Agent name
+ type: string
+ service:
+ $ref: '#/components/schemas/APM_UI_service_object'
+ settings:
+ $ref: '#/components/schemas/APM_UI_settings_object'
+ required:
+ - service
+ - settings
+ APM_UI_agent_configuration_object:
+ description: Agent configuration
+ type: object
+ properties:
+ '@timestamp':
+ description: Timestamp
+ example: 1730194190636
+ type: number
+ agent_name:
+ description: Agent name
+ type: string
+ applied_by_agent:
+ description: Applied by agent
+ example: true
+ type: boolean
+ etag:
+ description: Etag
+ example: 0bc3b5ebf18fba8163fe4c96f491e3767a358f85
+ type: string
+ service:
+ $ref: '#/components/schemas/APM_UI_service_object'
+ settings:
+ $ref: '#/components/schemas/APM_UI_settings_object'
+ required:
+ - service
+ - settings
+ - '@timestamp'
+ - etag
+ APM_UI_agent_configurations_response:
+ type: object
+ properties:
+ configurations:
+ description: Agent configuration
+ items:
+ $ref: '#/components/schemas/APM_UI_agent_configuration_object'
+ type: array
+ APM_UI_agent_keys_object:
+ type: object
+ properties:
+ name:
+ description: Agent name
+ type: string
+ privileges:
+ description: Privileges configuration
+ items:
+ enum:
+ - 'event:write'
+ - 'config_agent:read'
+ type: string
+ type: array
+ required:
+ - name
+ - privileges
+ APM_UI_agent_keys_response:
+ type: object
+ properties:
+ agentKey:
+ description: Agent key
+ type: object
+ properties:
+ api_key:
+ type: string
+ encoded:
+ type: string
+ expiration:
+ format: int64
+ type: integer
+ id:
+ type: string
+ name:
+ type: string
+ required:
+ - id
+ - name
+ - api_key
+ - encoded
+ APM_UI_annotation_search_response:
+ type: object
+ properties:
+ annotations:
+ description: Annotations
+ items:
+ type: object
+ properties:
+ '@timestamp':
+ type: number
+ id:
+ type: string
+ text:
+ type: string
+ type:
+ enum:
+ - version
+ type: string
+ type: array
+ APM_UI_base_source_map_object:
+ type: object
+ properties:
+ compressionAlgorithm:
+ description: Compression Algorithm
+ type: string
+ created:
+ description: Created date
+ type: string
+ decodedSha256:
+ description: Decoded SHA-256
+ type: string
+ decodedSize:
+ description: Decoded size
+ type: number
+ encodedSha256:
+ description: Encoded SHA-256
+ type: string
+ encodedSize:
+ description: Encoded size
+ type: number
+ encryptionAlgorithm:
+ description: Encryption Algorithm
+ type: string
+ id:
+ description: Identifier
+ type: string
+ identifier:
+ description: Identifier
+ type: string
+ packageName:
+ description: Package name
+ type: string
+ relative_url:
+ description: Relative URL
+ type: string
+ type:
+ description: Type
+ type: string
+ APM_UI_create_annotation_object:
+ type: object
+ properties:
+ '@timestamp':
+ description: Timestamp
+ type: string
+ message:
+ description: Message
+ type: string
+ service:
+ description: Service
+ type: object
+ properties:
+ environment:
+ type: string
+ version:
+ type: string
+ required:
+ - version
+ tags:
+ description: Tags
+ items:
+ type: string
+ type: array
+ required:
+ - '@timestamp'
+ - service
+ APM_UI_create_annotation_response:
+ type: object
+ properties:
+ _id:
+ description: Identifier
+ type: string
+ _index:
+ description: Index
+ type: string
+ _source:
+ description: Response
+ type: object
+ properties:
+ '@timestamp':
+ type: string
+ annotation:
+ type: object
+ properties:
+ title:
+ type: string
+ type:
+ type: string
+ event:
+ type: object
+ properties:
+ created:
+ type: string
+ message:
+ type: string
+ service:
+ type: object
+ properties:
+ environment:
+ type: string
+ name:
+ type: string
+ version:
+ type: string
+ tags:
+ items:
+ type: string
+ type: array
+ APM_UI_delete_agent_configurations_response:
+ type: object
+ properties:
+ result:
+ description: Result
+ type: string
+ APM_UI_search_agent_configuration_object:
+ type: object
+ properties:
+ etag:
+ description: If etags match then `applied_by_agent` field will be set to `true`
+ example: 0bc3b5ebf18fba8163fe4c96f491e3767a358f85
+ type: string
+ mark_as_applied_by_agent:
+ description: >
+ `markAsAppliedByAgent=true` means "force setting it to true
+ regardless of etag".
+
+ This is needed for Jaeger agent that doesn't have etags
+ type: boolean
+ service:
+ $ref: '#/components/schemas/APM_UI_service_object'
+ required:
+ - service
+ APM_UI_search_agent_configuration_response:
+ type: object
+ properties:
+ _id:
+ description: Identifier
+ type: string
+ _index:
+ description: Index
+ type: string
+ _score:
+ description: Score
+ type: number
+ _source:
+ $ref: '#/components/schemas/APM_UI_agent_configuration_object'
+ APM_UI_service_agent_name_response:
+ type: object
+ properties:
+ agentName:
+ description: Agent name
+ example: nodejs
+ type: string
+ APM_UI_service_environment_object:
+ type: object
+ properties:
+ alreadyConfigured:
+ description: Already configured
+ type: boolean
+ name:
+ description: Service environment name
+ example: ALL_OPTION_VALUE
+ type: string
+ APM_UI_service_environments_response:
+ type: object
+ properties:
+ environments:
+ description: Service environment list
+ items:
+ $ref: '#/components/schemas/APM_UI_service_environment_object'
+ type: array
+ APM_UI_service_object:
+ description: Service
+ type: object
+ properties:
+ environment:
+ description: Environment
+ example: prod
+ type: string
+ name:
+ description: Name
+ example: node
+ type: string
+ APM_UI_settings_object:
+ additionalProperties:
+ type: string
+ description: Agent configuration settings
+ type: object
+ APM_UI_single_agent_configuration_response:
+ allOf:
+ - type: object
+ properties:
+ id:
+ type: string
+ required:
+ - id
+ - $ref: '#/components/schemas/APM_UI_agent_configuration_object'
+ APM_UI_source_maps_response:
+ type: object
+ properties:
+ artifacts:
+ description: Artifacts
+ items:
+ allOf:
+ - type: object
+ properties:
+ body:
+ type: object
+ properties:
+ bundleFilepath:
+ type: string
+ serviceName:
+ type: string
+ serviceVersion:
+ type: string
+ sourceMap:
+ type: object
+ properties:
+ file:
+ type: string
+ mappings:
+ type: string
+ sourceRoot:
+ type: string
+ sources:
+ items:
+ type: string
+ type: array
+ sourcesContent:
+ items:
+ type: string
+ type: array
+ version:
+ type: number
+ - $ref: '#/components/schemas/APM_UI_base_source_map_object'
+ type: array
+ APM_UI_upload_source_map_object:
+ type: object
+ properties:
+ bundle_filepath:
+ description: >-
+ The absolute path of the final bundle as used in the web
+ application.
+ type: string
+ service_name:
+ description: The name of the service that the service map should apply to.
+ type: string
+ service_version:
+ description: The version of the service that the service map should apply to.
+ type: string
+ sourcemap:
+ description: >
+ The source map. String or file upload. It must follow the
+
+ [source map revision 3
+ proposal](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k).
+ format: binary
+ type: string
+ required:
+ - service_name
+ - service_version
+ - bundle_filepath
+ - sourcemap
+ APM_UI_upload_source_maps_response:
+ allOf:
+ - type: object
+ properties:
+ body:
+ type: string
+ - $ref: '#/components/schemas/APM_UI_base_source_map_object'
Cases_4xx_response:
properties:
error:
@@ -39170,6 +40149,8 @@ components:
Security_Entity_Analytics_API_EngineDescriptor:
type: object
properties:
+ error:
+ type: object
fieldHistoryLength:
type: integer
filter:
@@ -42555,6 +43536,9 @@ security:
- basicAuth: []
tags:
- name: alerting
+ - description: |
+ Adjust APM agent configuration without need to redeploy your application.
+ name: APM agent configuration
- description: >
Configure APM agent keys to authorize requests from APM agents to the APM
Server.
@@ -42564,6 +43548,10 @@ tags:
Annotations enable you to easily see how events are impacting the
performance of your applications.
name: APM annotations
+ - description: Create APM fleet server schema.
+ name: APM server schema
+ - description: Configure APM source maps.
+ name: APM sourcemaps
- description: Case APIs enable you to open and track issues.
name: cases
- name: connectors
diff --git a/oas_docs/overlays/kibana.overlays.serverless.yaml b/oas_docs/overlays/kibana.overlays.serverless.yaml
deleted file mode 100644
index f1f6dbb8f51d2..0000000000000
--- a/oas_docs/overlays/kibana.overlays.serverless.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-# overlays.yaml
-overlay: 1.0.0
-info:
- title: Overlays for the Kibana API document
- version: 0.0.1
-actions:
- # Clean up server definitions
- - target: '$.servers.*'
- description: Remove all servers so we can add our own.
- remove: true
- - target: '$.servers'
- description: Add server into the now empty server array.
- update:
- - url: https://{kibana_url}
- variables:
- kibana_url:
- default: localhost:5601
- # Mark all operations as beta
- - target: "$.paths[*]['get','put','post','delete','options','head','patch','trace']"
- description: Add x-beta
- update:
- x-beta: true
- # Add some tag descriptions and displayNames
- - target: '$.tags[?(@.name=="alerting")]'
- description: Change tag description and displayName
- update:
- description: >
- Alerting enables you to define rules, which detect complex conditions within your data.
- When a condition is met, the rule tracks it as an alert and runs the actions that are defined in the rule.
- Actions typically involve the use of connectors to interact with Kibana services or third party integrations.
- externalDocs:
- description: Alerting documentation
- url: https://www.elastic.co/docs/8.x/serverless/rules
- x-displayName: "Alerting"
- - target: '$.tags[?(@.name=="connectors")]'
- description: Change tag description and displayName
- update:
- description: >
- Connectors provide a central place to store connection information for services and integrations with Elastic or third party systems.
- Alerting rules can use connectors to run actions when rule conditions are met.
- externalDocs:
- description: Connector documentation
- url: https://www.elastic.co/docs/8.x/serverless/action-connectors
- x-displayName: "Connectors"
- - target: '$.tags[?(@.name=="data views")]'
- description: Change displayName
- update:
- x-displayName: "Data views"
- - target: '$.tags[?(@.name=="ml")]'
- description: Change displayName
- update:
- x-displayName: "Machine learning"
- - target: '$.tags[?(@.name=="slo")]'
- description: Change displayName
- update:
- x-displayName: "Service level objectives"
- - target: '$.tags[?(@.name=="spaces")]'
- description: Change displayName
- update:
- x-displayName: "Spaces"
- description: Manage your Kibana spaces.
- - target: '$.tags[?(@.name=="system")]'
- description: Change displayName and description
- update:
- x-displayName: "System"
- description: >
- Get information about the system status, resource usage, and installed plugins.
- # Remove extra tags from operations
- - target: "$.paths[*][*].tags[1:]"
- description: Remove all but first tag from operations
- remove: true
\ No newline at end of file
diff --git a/oas_docs/scripts/merge_ess_oas.js b/oas_docs/scripts/merge_ess_oas.js
index da71cb41595e6..ee6aa23570938 100644
--- a/oas_docs/scripts/merge_ess_oas.js
+++ b/oas_docs/scripts/merge_ess_oas.js
@@ -23,7 +23,7 @@ const { REPO_ROOT } = require('@kbn/repo-info');
`${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
// Observability Solution
- `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,
+ `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`,
// Security solution
diff --git a/oas_docs/scripts/merge_ess_oas_staging.js b/oas_docs/scripts/merge_ess_oas_staging.js
deleted file mode 100644
index 03fc7d0786a3d..0000000000000
--- a/oas_docs/scripts/merge_ess_oas_staging.js
+++ /dev/null
@@ -1,42 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
- * License v3.0 only", or the "Server Side Public License, v 1".
- */
-
-require('../../src/setup_node_env');
-const { merge } = require('@kbn/openapi-bundler');
-const { REPO_ROOT } = require('@kbn/repo-info');
-
-(async () => {
- await merge({
- sourceGlobs: [
- `${REPO_ROOT}/oas_docs/bundle.json`,
- `${REPO_ROOT}/x-pack/plugins/alerting/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/x-pack/plugins/cases/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis.yaml`,
- `${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
-
- // Observability Solution
- `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,
- `${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`,
-
- // Security solution
- `${REPO_ROOT}/x-pack/plugins/security_solution/docs/openapi/ess/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/ess/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/ess/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/ess/*.schema.yaml`,
- ],
- outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.staging.yaml`,
- options: {
- prototypeDocument: `${REPO_ROOT}/oas_docs/kibana.info.yaml`,
- },
- });
-})();
diff --git a/oas_docs/scripts/merge_serverless_oas.js b/oas_docs/scripts/merge_serverless_oas.js
deleted file mode 100644
index d9d91dfb032b4..0000000000000
--- a/oas_docs/scripts/merge_serverless_oas.js
+++ /dev/null
@@ -1,40 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
- * License v3.0 only", or the "Server Side Public License, v 1".
- */
-
-require('../../src/setup_node_env');
-const { merge } = require('@kbn/openapi-bundler');
-const { REPO_ROOT } = require('@kbn/repo-info');
-
-(async () => {
- await merge({
- sourceGlobs: [
- `${REPO_ROOT}/oas_docs/bundle.serverless.json`,
- `${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml`,
- `${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled_serverless.yaml`,
- `${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
-
- // Observability Solution
- `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,
- `${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`,
-
- // Security solution
- `${REPO_ROOT}/x-pack/plugins/security_solution/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/serverless/*.schema.yaml`,
- ],
- outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.serverless.yaml`,
- options: {
- prototypeDocument: `${REPO_ROOT}/oas_docs/kibana.info.serverless.yaml`,
- },
- });
-})();
diff --git a/oas_docs/scripts/merge_serverless_oas_staging.js b/oas_docs/scripts/merge_serverless_oas_staging.js
deleted file mode 100644
index 72b5c744df79b..0000000000000
--- a/oas_docs/scripts/merge_serverless_oas_staging.js
+++ /dev/null
@@ -1,40 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
- * License v3.0 only", or the "Server Side Public License, v 1".
- */
-
-require('../../src/setup_node_env');
-const { merge } = require('@kbn/openapi-bundler');
-const { REPO_ROOT } = require('@kbn/repo-info');
-
-(async () => {
- await merge({
- sourceGlobs: [
- `${REPO_ROOT}/oas_docs/bundle.serverless.json`,
- `${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
- `${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml`,
- `${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled_serverless.yaml`,
- `${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
-
- // Observability Solution
- `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,
- `${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`,
-
- // Security solution
- `${REPO_ROOT}/x-pack/plugins/security_solution/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`,
- `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/serverless/*.schema.yaml`,
- ],
- outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.serverless.staging.yaml`,
- options: {
- prototypeDocument: `${REPO_ROOT}/oas_docs/kibana.info.serverless.yaml`,
- },
- });
-})();
diff --git a/package.json b/package.json
index d3938c64969fb..c4ae24e4be0d5 100644
--- a/package.json
+++ b/package.json
@@ -81,7 +81,7 @@
"resolutions": {
"**/@bazel/typescript/protobufjs": "6.11.4",
"**/@hello-pangea/dnd": "16.6.0",
- "**/@langchain/core": "^0.2.18",
+ "**/@langchain/core": "^0.3.16",
"**/@langchain/google-common": "^0.1.1",
"**/@types/node": "20.10.5",
"**/@typescript-eslint/utils": "5.62.0",
@@ -90,7 +90,7 @@
"**/globule/minimatch": "^3.1.2",
"**/hoist-non-react-statics": "^3.3.2",
"**/isomorphic-fetch/node-fetch": "^2.6.7",
- "**/langchain": "^0.2.11",
+ "**/langchain": "^0.3.5",
"**/remark-parse/trim": "1.0.1",
"**/sharp": "0.32.6",
"**/typescript": "5.1.6",
@@ -118,7 +118,7 @@
"@elastic/ecs": "^8.11.1",
"@elastic/elasticsearch": "^8.15.0",
"@elastic/ems-client": "8.5.3",
- "@elastic/eui": "97.2.0",
+ "@elastic/eui": "97.3.0",
"@elastic/filesaver": "1.1.2",
"@elastic/node-crypto": "^1.2.3",
"@elastic/numeral": "^2.5.1",
@@ -571,6 +571,7 @@
"@kbn/index-management-plugin": "link:x-pack/plugins/index_management",
"@kbn/index-management-shared-types": "link:x-pack/packages/index-management/index_management_shared_types",
"@kbn/index-patterns-test-plugin": "link:test/plugin_functional/plugins/index_patterns",
+ "@kbn/inference-common": "link:x-pack/packages/ai-infra/inference-common",
"@kbn/inference-plugin": "link:x-pack/plugins/inference",
"@kbn/inference_integration_flyout": "link:x-pack/packages/ml/inference_integration_flyout",
"@kbn/infra-forge": "link:x-pack/packages/kbn-infra-forge",
@@ -808,7 +809,6 @@
"@kbn/security-plugin-types-public": "link:x-pack/packages/security/plugin_types_public",
"@kbn/security-plugin-types-server": "link:x-pack/packages/security/plugin_types_server",
"@kbn/security-role-management-model": "link:x-pack/packages/security/role_management_model",
- "@kbn/security-solution-common": "link:x-pack/packages/security-solution/common",
"@kbn/security-solution-distribution-bar": "link:x-pack/packages/security-solution/distribution_bar",
"@kbn/security-solution-ess": "link:x-pack/plugins/security_solution_ess",
"@kbn/security-solution-features": "link:x-pack/packages/security-solution/features",
@@ -1008,15 +1008,15 @@
"@kbn/xstate-utils": "link:packages/kbn-xstate-utils",
"@kbn/zod": "link:packages/kbn-zod",
"@kbn/zod-helpers": "link:packages/kbn-zod-helpers",
- "@langchain/community": "0.2.18",
- "@langchain/core": "^0.2.18",
+ "@langchain/community": "0.3.11",
+ "@langchain/core": "^0.3.16",
"@langchain/google-common": "^0.1.1",
- "@langchain/google-genai": "^0.1.0",
+ "@langchain/google-genai": "^0.1.2",
"@langchain/google-vertexai": "^0.1.0",
- "@langchain/langgraph": "0.0.34",
- "@langchain/openai": "^0.1.3",
+ "@langchain/langgraph": "0.2.19",
+ "@langchain/openai": "^0.3.11",
"@langtrase/trace-attributes": "^3.0.8",
- "@launchdarkly/node-server-sdk": "^9.6.0",
+ "@launchdarkly/node-server-sdk": "^9.7.0",
"@launchdarkly/openfeature-node-server": "^1.0.0",
"@loaders.gl/core": "^3.4.7",
"@loaders.gl/json": "^3.4.7",
@@ -1026,10 +1026,10 @@
"@mapbox/mapbox-gl-rtl-text": "0.2.3",
"@mapbox/mapbox-gl-supported": "2.0.1",
"@mapbox/vector-tile": "1.3.1",
- "@openfeature/core": "^1.4.0",
+ "@openfeature/core": "^1.5.0",
"@openfeature/launchdarkly-client-provider": "^0.3.0",
- "@openfeature/server-sdk": "^1.15.1",
- "@openfeature/web-sdk": "^1.2.4",
+ "@openfeature/server-sdk": "^1.16.1",
+ "@openfeature/web-sdk": "^1.3.1",
"@opentelemetry/api": "^1.1.0",
"@opentelemetry/api-metrics": "^0.31.0",
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.34.0",
@@ -1157,9 +1157,9 @@
"jsonwebtoken": "^9.0.2",
"jsts": "^1.6.2",
"kea": "^2.6.0",
- "langchain": "^0.2.11",
- "langsmith": "^0.1.55",
- "launchdarkly-js-client-sdk": "^3.4.0",
+ "langchain": "^0.3.5",
+ "langsmith": "^0.2.3",
+ "launchdarkly-js-client-sdk": "^3.5.0",
"load-json-file": "^6.2.0",
"lodash": "^4.17.21",
"lru-cache": "^4.1.5",
@@ -1187,7 +1187,7 @@
"nunjucks": "^3.2.4",
"object-hash": "^1.3.1",
"object-path-immutable": "^3.1.1",
- "openai": "^4.24.1",
+ "openai": "^4.68.0",
"openpgp": "5.10.1",
"opn": "^5.5.0",
"ora": "^4.0.4",
@@ -1197,13 +1197,13 @@
"p-settle": "4.1.1",
"papaparse": "^5.2.0",
"pbf": "3.2.1",
- "pdfmake": "^0.2.7",
+ "pdfmake": "^0.2.15",
"peggy": "^1.2.0",
"polished": "^3.7.2",
"pretty-ms": "6.0.0",
"prop-types": "^15.8.1",
"proxy-from-env": "1.0.0",
- "puppeteer": "23.3.1",
+ "puppeteer": "23.7.0",
"query-string": "^6.13.2",
"rbush": "^3.0.1",
"re-resizable": "^6.9.9",
@@ -1518,9 +1518,9 @@
"@storybook/react": "^6.5.16",
"@storybook/testing-react": "^1.3.0",
"@storybook/theming": "^6.5.16",
- "@testing-library/dom": "^8.19.0",
+ "@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.5.0",
- "@testing-library/react": "^12.1.5",
+ "@testing-library/react": "^16.0.1",
"@testing-library/react-hooks": "^8.0.1",
"@testing-library/user-event": "^14.5.2",
"@types/adm-zip": "^0.5.0",
@@ -1677,7 +1677,7 @@
"buildkite-test-collector": "^1.7.0",
"callsites": "^3.1.0",
"chance": "1.0.18",
- "chromedriver": "^129.0.0",
+ "chromedriver": "^130.0.1",
"clean-webpack-plugin": "^3.0.0",
"cli-progress": "^3.12.0",
"cli-table3": "^0.6.1",
@@ -1715,6 +1715,7 @@
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-perf": "^3.3.1",
+ "eslint-plugin-testing-library": "^6.4.0",
"eslint-traverse": "^1.0.0",
"exit-hook": "^2.2.0",
"expect": "^29.7.0",
@@ -1725,7 +1726,7 @@
"file-loader": "^4.2.0",
"find-cypress-specs": "^1.41.4",
"form-data": "^4.0.0",
- "geckodriver": "^4.4.4",
+ "geckodriver": "^4.5.1",
"gulp-brotli": "^3.0.0",
"gulp-postcss": "^9.0.1",
"gulp-terser": "^2.1.0",
diff --git a/packages/content-management/table_list_view_table/src/table_list_view.test.tsx b/packages/content-management/table_list_view_table/src/table_list_view.test.tsx
index 38e05299184e4..38229399f2ec8 100644
--- a/packages/content-management/table_list_view_table/src/table_list_view.test.tsx
+++ b/packages/content-management/table_list_view_table/src/table_list_view.test.tsx
@@ -242,8 +242,8 @@ describe('TableListView', () => {
const updatedAtValues: Moment[] = [];
const updatedHits = hits.map(({ id, attributes, references }, i) => {
- const updatedAt = new Date(new Date().setDate(new Date().getDate() - (7 + i)));
- updatedAtValues.push(moment(updatedAt));
+ const updatedAt = moment().subtract(7 + i, 'days');
+ updatedAtValues.push(updatedAt);
return {
id,
diff --git a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx
index 5d86209ec8800..434639b07efdf 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx
+++ b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx
@@ -36,6 +36,7 @@ import type {
ChromeSetProjectBreadcrumbsParams,
NavigationTreeDefinition,
AppDeepLinkId,
+ SolutionId,
} from '@kbn/core-chrome-browser';
import type { CustomBrandingStart } from '@kbn/core-custom-branding-browser';
import type {
@@ -343,7 +344,10 @@ export class ChromeService {
LinkId extends AppDeepLinkId = AppDeepLinkId,
Id extends string = string,
ChildrenId extends string = Id
- >(id: string, navigationTree$: Observable>) {
+ >(
+ id: SolutionId,
+ navigationTree$: Observable>
+ ) {
validateChromeStyle();
projectNavigation.initNavigation(id, navigationTree$);
}
diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.test.ts b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.test.ts
index d1be94aad246a..124b44e80e30f 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.test.ts
+++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.test.ts
@@ -110,7 +110,7 @@ describe('initNavigation()', () => {
beforeAll(() => {
projectNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -185,7 +185,7 @@ describe('initNavigation()', () => {
const { projectNavigation: projNavigation, getNavigationTree: getNavTree } =
setupInitNavigation();
projNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -210,7 +210,7 @@ describe('initNavigation()', () => {
const { projectNavigation: projNavigation } = setupInitNavigation();
projNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -399,7 +399,7 @@ describe('initNavigation()', () => {
// 2. initNavigation() is called
projectNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -427,7 +427,7 @@ describe('initNavigation()', () => {
});
projectNavigation.initNavigation(
- 'foo',
+ 'es',
// @ts-expect-error - We pass a non valid cloudLink that is not TS valid
of({
body: [
@@ -533,7 +533,7 @@ describe('breadcrumbs', () => {
const obs = subj.asObservable();
if (initiateNavigation) {
- projectNavigation.initNavigation('foo', obs);
+ projectNavigation.initNavigation('es', obs);
}
return {
@@ -740,7 +740,7 @@ describe('breadcrumbs', () => {
{ text: 'custom1', href: '/custom1' },
{ text: 'custom2', href: '/custom1/custom2' },
]);
- projectNavigation.initNavigation('foo', of(mockNavigation)); // init navigation
+ projectNavigation.initNavigation('es', of(mockNavigation)); // init navigation
const breadcrumbs = await firstValueFrom(projectNavigation.getProjectBreadcrumbs$());
expect(breadcrumbs).toHaveLength(4);
@@ -779,7 +779,7 @@ describe('getActiveNodes$()', () => {
expect(activeNodes).toEqual([]);
projectNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -835,7 +835,7 @@ describe('getActiveNodes$()', () => {
expect(activeNodes).toEqual([]);
projectNavigation.initNavigation(
- 'foo',
+ 'es',
of({
body: [
{
@@ -889,7 +889,7 @@ describe('getActiveNodes$()', () => {
describe('solution navigations', () => {
const solution1: SolutionNavigationDefinition = {
- id: 'solution1',
+ id: 'es',
title: 'Solution 1',
icon: 'logoSolution1',
homePage: 'discover',
@@ -897,7 +897,7 @@ describe('solution navigations', () => {
};
const solution2: SolutionNavigationDefinition = {
- id: 'solution2',
+ id: 'oblt',
title: 'Solution 2',
icon: 'logoSolution2',
homePage: 'app2',
@@ -906,7 +906,7 @@ describe('solution navigations', () => {
};
const solution3: SolutionNavigationDefinition = {
- id: 'solution3',
+ id: 'security',
title: 'Solution 3',
icon: 'logoSolution3',
homePage: 'discover',
@@ -943,30 +943,30 @@ describe('solution navigations', () => {
}
{
- projectNavigation.updateSolutionNavigations({ 1: solution1, 2: solution2 });
+ projectNavigation.updateSolutionNavigations({ es: solution1, oblt: solution2 });
const solutionNavs = await lastValueFrom(
projectNavigation.getSolutionsNavDefinitions$().pipe(take(1))
);
- expect(solutionNavs).toEqual({ 1: solution1, 2: solution2 });
+ expect(solutionNavs).toEqual({ es: solution1, oblt: solution2 });
}
{
// Test partial update
- projectNavigation.updateSolutionNavigations({ 3: solution3 }, false);
+ projectNavigation.updateSolutionNavigations({ security: solution3 }, false);
const solutionNavs = await lastValueFrom(
projectNavigation.getSolutionsNavDefinitions$().pipe(take(1))
);
- expect(solutionNavs).toEqual({ 1: solution1, 2: solution2, 3: solution3 });
+ expect(solutionNavs).toEqual({ es: solution1, oblt: solution2, security: solution3 });
}
{
// Test full replacement
- projectNavigation.updateSolutionNavigations({ 4: solution3 }, true);
+ projectNavigation.updateSolutionNavigations({ security: solution3 }, true);
const solutionNavs = await lastValueFrom(
projectNavigation.getSolutionsNavDefinitions$().pipe(take(1))
);
- expect(solutionNavs).toEqual({ 4: solution3 });
+ expect(solutionNavs).toEqual({ security: solution3 });
}
});
@@ -980,8 +980,8 @@ describe('solution navigations', () => {
expect(activeSolution).toBeNull();
}
- projectNavigation.changeActiveSolutionNavigation('2'); // Set **before** the navs are registered
- projectNavigation.updateSolutionNavigations({ 1: solution1, 2: solution2 });
+ projectNavigation.changeActiveSolutionNavigation('oblt'); // Set **before** the navs are registered
+ projectNavigation.updateSolutionNavigations({ es: solution1, oblt: solution2 });
{
const activeSolution = await lastValueFrom(
@@ -994,7 +994,7 @@ describe('solution navigations', () => {
expect(activeSolution).toEqual(rest);
}
- projectNavigation.changeActiveSolutionNavigation('1'); // Set **after** the navs are registered
+ projectNavigation.changeActiveSolutionNavigation('es'); // Set **after** the navs are registered
{
const activeSolution = await lastValueFrom(
@@ -1027,7 +1027,7 @@ describe('solution navigations', () => {
{
const fooSolution: SolutionNavigationDefinition = {
- id: 'fooSolution',
+ id: 'es',
title: 'Foo solution',
icon: 'logoSolution',
homePage: 'discover',
@@ -1053,8 +1053,8 @@ describe('solution navigations', () => {
}),
};
- projectNavigation.changeActiveSolutionNavigation('foo');
- projectNavigation.updateSolutionNavigations({ foo: fooSolution });
+ projectNavigation.changeActiveSolutionNavigation('es');
+ projectNavigation.updateSolutionNavigations({ es: fooSolution });
projectNavigation.setPanelSelectedNode('link2'); // Set the selected node using its id
diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.ts b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.ts
index 85c3fd1905adb..7960d9f710c90 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.ts
+++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/project_navigation_service.ts
@@ -17,6 +17,7 @@ import type {
NavigationTreeDefinition,
SolutionNavigationDefinitions,
CloudLinks,
+ SolutionId,
} from '@kbn/core-chrome-browser';
import type { InternalHttpStart } from '@kbn/core-http-browser-internal';
import {
@@ -86,9 +87,9 @@ export class ProjectNavigationService {
private readonly solutionNavDefinitions$ = new BehaviorSubject({});
// As the active definition **id** and the definitions are set independently, one before the other without
// any guarantee of order, we need to store the next active definition id in a separate BehaviorSubject
- private readonly nextSolutionNavDefinitionId$ = new BehaviorSubject(null);
+ private readonly nextSolutionNavDefinitionId$ = new BehaviorSubject(null);
// The active solution navigation definition id that has been initiated and is currently active
- private readonly activeSolutionNavDefinitionId$ = new BehaviorSubject(null);
+ private readonly activeSolutionNavDefinitionId$ = new BehaviorSubject(null);
private readonly location$ = new BehaviorSubject(createLocation('/'));
private deepLinksMap$: Observable> = of({});
private cloudLinks$ = new BehaviorSubject({});
@@ -138,7 +139,7 @@ export class ProjectNavigationService {
return this.projectName$.asObservable();
},
initNavigation: (
- id: string,
+ id: SolutionId,
navTreeDefinition$: Observable>
) => {
this.initNavigation(id, navTreeDefinition$);
@@ -202,7 +203,7 @@ export class ProjectNavigationService {
* @param id Id for the navigation tree definition
* @param navTreeDefinition$ The navigation tree definition
*/
- private initNavigation(id: string, navTreeDefinition$: Observable) {
+ private initNavigation(id: SolutionId, navTreeDefinition$: Observable) {
if (this.activeSolutionNavDefinitionId$.getValue() === id) return;
if (this.navigationChangeSubscription) {
@@ -220,7 +221,7 @@ export class ProjectNavigationService {
.pipe(
takeUntil(this.stop$),
map(([def, deepLinksMap, cloudLinks]) => {
- return parseNavigationTree(def, {
+ return parseNavigationTree(id, def, {
deepLinks: deepLinksMap,
cloudLinks,
});
@@ -382,7 +383,7 @@ export class ProjectNavigationService {
this.projectHome$.next(homeHref);
}
- private changeActiveSolutionNavigation(id: string | null) {
+ private changeActiveSolutionNavigation(id: SolutionId | null) {
if (this.nextSolutionNavDefinitionId$.getValue() === id) return;
this.nextSolutionNavDefinitionId$.next(id);
}
@@ -400,7 +401,7 @@ export class ProjectNavigationService {
if (!definitions[id]) return null;
// We strip out the sideNavComponent from the definition as it should only be used internally
- const { sideNavComponent, ...definition } = definitions[id];
+ const { sideNavComponent, ...definition } = definitions[id]!;
return definition;
})
);
diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts
index 9a45290c95389..bdf3929c464dc 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts
+++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts
@@ -22,6 +22,7 @@ import type {
CloudLinkId,
CloudLinks,
ItemDefinition,
+ SolutionId,
} from '@kbn/core-chrome-browser/src';
import type { Location } from 'history';
import type { MouseEventHandler } from 'react';
@@ -364,6 +365,7 @@ const isRecentlyAccessedDefinition = (
};
export const parseNavigationTree = (
+ id: SolutionId,
navigationTreeDef: NavigationTreeDefinition,
{ deepLinks, cloudLinks }: { deepLinks: Record; cloudLinks: CloudLinks }
): {
@@ -376,7 +378,7 @@ export const parseNavigationTree = (
const navigationTree: ChromeProjectNavigationNode[] = [];
// Contains UI layout information (body, footer) and render "special" blocks like recently accessed.
- const navigationTreeUI: NavigationTreeDefinitionUI = { body: [] };
+ const navigationTreeUI: NavigationTreeDefinitionUI = { id, body: [] };
const initNodeAndChildren = (
node: GroupDefinition | ItemDefinition | NodeDefinition,
diff --git a/packages/core/chrome/core-chrome-browser-internal/src/types.ts b/packages/core/chrome/core-chrome-browser-internal/src/types.ts
index 0e6bec4d2678c..36a247e22f847 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/types.ts
+++ b/packages/core/chrome/core-chrome-browser-internal/src/types.ts
@@ -18,6 +18,7 @@ import type {
NavigationTreeDefinitionUI,
CloudURLs,
SolutionNavigationDefinitions,
+ SolutionId,
} from '@kbn/core-chrome-browser';
import type { Observable } from 'rxjs';
@@ -66,7 +67,7 @@ export interface InternalChromeStart extends ChromeStart {
Id extends string = string,
ChildrenId extends string = Id
>(
- id: string,
+ id: SolutionId,
navigationTree$: Observable>
): void;
@@ -117,6 +118,6 @@ export interface InternalChromeStart extends ChromeStart {
* @param id The id of the active solution navigation. If `null` is provided, the solution navigation
* will be replaced with the legacy Kibana navigation.
*/
- changeActiveSolutionNavigation(id: string | null): void;
+ changeActiveSolutionNavigation(id: SolutionId | null): void;
};
}
diff --git a/packages/core/chrome/core-chrome-browser/index.ts b/packages/core/chrome/core-chrome-browser/index.ts
index afb2050d12e80..7b8658791340f 100644
--- a/packages/core/chrome/core-chrome-browser/index.ts
+++ b/packages/core/chrome/core-chrome-browser/index.ts
@@ -60,4 +60,5 @@ export type {
SolutionNavigationDefinitions,
EuiSideNavItemTypeEnhanced,
RenderAs,
+ SolutionId,
} from './src';
diff --git a/packages/core/chrome/core-chrome-browser/src/index.ts b/packages/core/chrome/core-chrome-browser/src/index.ts
index efc2fb5636d84..efc709ff512da 100644
--- a/packages/core/chrome/core-chrome-browser/src/index.ts
+++ b/packages/core/chrome/core-chrome-browser/src/index.ts
@@ -38,6 +38,7 @@ export type {
PanelSelectedNode,
AppDeepLinkId,
AppId,
+ SolutionId,
CloudLinkId,
CloudLink,
CloudLinks,
diff --git a/packages/core/chrome/core-chrome-browser/src/project_navigation.ts b/packages/core/chrome/core-chrome-browser/src/project_navigation.ts
index 3e6afeb8f6117..f4a5af26c4176 100644
--- a/packages/core/chrome/core-chrome-browser/src/project_navigation.ts
+++ b/packages/core/chrome/core-chrome-browser/src/project_navigation.ts
@@ -42,6 +42,8 @@ import type { AppId as SharedApp, DeepLinkId as SharedLink } from '@kbn/deeplink
import type { ChromeNavLink } from './nav_links';
import type { ChromeRecentlyAccessedHistoryItem } from './recently_accessed';
+export type SolutionId = 'es' | 'oblt' | 'security';
+
/** @public */
export type AppId =
| DevToolsApp
@@ -414,6 +416,7 @@ export interface NavigationTreeDefinition<
* with their corresponding "deepLink"...)
*/
export interface NavigationTreeDefinitionUI {
+ id: SolutionId;
body: Array;
footer?: Array;
}
@@ -429,7 +432,7 @@ export interface NavigationTreeDefinitionUI {
export interface SolutionNavigationDefinition {
/** Unique id for the solution navigation. */
- id: string;
+ id: SolutionId;
/** Title for the solution navigation. */
title: string;
/** The navigation tree definition */
@@ -442,9 +445,9 @@ export interface SolutionNavigationDefinition {
`);
});
+ it('returns deprecated type deprecated route', async () => {
+ const getDeprecations = createGetApiDeprecations({ coreUsageData, http });
+ const deprecatedRoute = createDeprecatedRouteDetails({
+ routePath: '/api/test_deprecated/',
+ routeDeprecationOptions: { reason: { type: 'deprecate' }, message: 'additional message' },
+ });
+ http.getRegisteredDeprecatedApis.mockReturnValue([deprecatedRoute]);
+ usageClientMock.getDeprecatedApiUsageStats.mockResolvedValue([
+ createApiUsageStat(buildApiDeprecationId(deprecatedRoute)),
+ ]);
+
+ const deprecations = await getDeprecations();
+ expect(deprecations).toMatchInlineSnapshot(`
+ Array [
+ Object {
+ "apiId": "123|get|/api/test_deprecated",
+ "correctiveActions": Object {
+ "manualSteps": Array [
+ "Identify the origin of these API calls.",
+ "For now, the API will still work, but will be moved or removed in a future version. Check the Learn more link for more information. If you are no longer using the API, you can mark this issue as resolved. It will no longer appear in the Upgrade Assistant unless another call using this API is detected.",
+ ],
+ "mark_as_resolved_api": Object {
+ "apiTotalCalls": 13,
+ "routeMethod": "get",
+ "routePath": "/api/test_deprecated/",
+ "routeVersion": "123",
+ "timestamp": 2024-10-17T12:06:41.224Z,
+ "totalMarkedAsResolved": 1,
+ },
+ },
+ "deprecationType": "api",
+ "documentationUrl": "https://fake-url",
+ "domainId": "core.routes-deprecations",
+ "level": "critical",
+ "message": Array [
+ "The API \\"GET /api/test_deprecated/\\" has been called 13 times. The last call was on Sunday, September 1, 2024 6:06 AM -04:00.",
+ "This issue has been marked as resolved on Thursday, October 17, 2024 8:06 AM -04:00 but the API has been called 12 times since.",
+ "additional message",
+ ],
+ "title": "The \\"GET /api/test_deprecated/\\" route is deprecated",
+ },
+ ]
+ `);
+ });
+
it('does not return resolved deprecated route', async () => {
const getDeprecations = createGetApiDeprecations({ coreUsageData, http });
const deprecatedRoute = createDeprecatedRouteDetails({ routePath: '/api/test_resolved/' });
diff --git a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations/i18n_texts.ts b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations/i18n_texts.ts
index cb1dacc97bd91..e52dd1f3d8fd1 100644
--- a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations/i18n_texts.ts
+++ b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations/i18n_texts.ts
@@ -35,7 +35,7 @@ export const getApiDeprecationMessage = (
details: RouterDeprecatedRouteDetails,
apiUsageStats: CoreDeprecatedApiUsageStats
): string[] => {
- const { routePath, routeMethod } = details;
+ const { routePath, routeMethod, routeDeprecationOptions } = details;
const { apiLastCalledAt, apiTotalCalls, markedAsResolvedLastCalledAt, totalMarkedAsResolved } =
apiUsageStats;
@@ -71,6 +71,11 @@ export const getApiDeprecationMessage = (
);
}
+ if (routeDeprecationOptions.message) {
+ // Surfaces additional deprecation messages passed into the route in UA
+ messages.push(routeDeprecationOptions.message);
+ }
+
return messages;
};
@@ -106,6 +111,15 @@ export const getApiDeprecationsManualSteps = (details: RouterDeprecatedRouteDeta
);
break;
}
+ case 'deprecate': {
+ manualSteps.push(
+ i18n.translate('core.deprecations.deprecations.manualSteps.removeTypeExplainationStep', {
+ defaultMessage:
+ 'For now, the API will still work, but will be moved or removed in a future version. Check the Learn more link for more information. If you are no longer using the API, you can mark this issue as resolved. It will no longer appear in the Upgrade Assistant unless another call using this API is detected.',
+ })
+ );
+ break;
+ }
case 'migrate': {
const { newApiPath, newApiMethod } = routeDeprecationOptions.reason;
const newRouteWithMethod = `${newApiMethod.toUpperCase()} ${newApiPath}`;
@@ -121,12 +135,14 @@ export const getApiDeprecationsManualSteps = (details: RouterDeprecatedRouteDeta
}
}
- manualSteps.push(
- i18n.translate('core.deprecations.deprecations.manualSteps.markAsResolvedStep', {
- defaultMessage:
- 'Check that you are no longer using the old API in any requests, and mark this issue as resolved. It will no longer appear in the Upgrade Assistant unless another call using this API is detected.',
- })
- );
+ if (deprecationType !== 'deprecate') {
+ manualSteps.push(
+ i18n.translate('core.deprecations.deprecations.manualSteps.markAsResolvedStep', {
+ defaultMessage:
+ 'Check that you are no longer using the old API in any requests, and mark this issue as resolved. It will no longer appear in the Upgrade Assistant unless another call using this API is detected.',
+ })
+ );
+ }
return manualSteps;
};
diff --git a/packages/core/http/core-http-server/src/router/route.ts b/packages/core/http/core-http-server/src/router/route.ts
index 17fecd1c48b17..eec9a01f60562 100644
--- a/packages/core/http/core-http-server/src/router/route.ts
+++ b/packages/core/http/core-http-server/src/router/route.ts
@@ -120,36 +120,82 @@ export type Privilege = string;
* created from HTTP API introspection (like OAS).
*/
export interface RouteDeprecationInfo {
+ /**
+ * link to the documentation for more details on the deprecation.
+ */
documentationUrl: string;
+ /**
+ * The description message to be displayed for the deprecation.
+ * Check the README for writing deprecations in `src/core/server/deprecations/README.mdx`
+ */
+ message?: string;
+ /**
+ * levels:
+ * - warning: will not break deployment upon upgrade.
+ * - critical: needs to be addressed before upgrade.
+ */
severity: 'warning' | 'critical';
- reason: VersionBumpDeprecationType | RemovalApiDeprecationType | MigrationApiDeprecationType;
+ /**
+ * API deprecation reason:
+ * - bump: New version of the API is available.
+ * - remove: API was fully removed with no replacement.
+ * - migrate: API has been migrated to a different path.
+ * - deprecated: the deprecated API is deprecated, it might be removed or migrated, or got a version bump in the future.
+ * It is a catch-all deprecation for APIs but the API will work in the next upgrades.
+ */
+ reason:
+ | VersionBumpDeprecationType
+ | RemovalApiDeprecationType
+ | MigrationApiDeprecationType
+ | DeprecateApiDeprecationType;
}
-/**
- * bump deprecation reason denotes a new version of the API is available
- */
interface VersionBumpDeprecationType {
+ /**
+ * bump deprecation reason denotes a new version of the API is available
+ */
type: 'bump';
+ /**
+ * new version of the API to be used instead.
+ */
newApiVersion: string;
}
-/**
- * remove deprecation reason denotes the API was fully removed with no replacement
- */
interface RemovalApiDeprecationType {
+ /**
+ * remove deprecation reason denotes the API was fully removed with no replacement
+ */
type: 'remove';
}
-/**
- * migrate deprecation reason denotes the API has been migrated to a different API path
- * Please make sure that if you are only incrementing the version of the API to use 'bump' instead
- */
interface MigrationApiDeprecationType {
+ /**
+ * migrate deprecation reason denotes the API has been migrated to a different API path
+ * Please make sure that if you are only incrementing the version of the API to use 'bump' instead
+ */
type: 'migrate';
+ /**
+ * new API path to be used instead
+ */
newApiPath: string;
+ /**
+ * new API method (GET POST PUT DELETE) to be used with the new API.
+ */
newApiMethod: string;
}
+interface DeprecateApiDeprecationType {
+ /**
+ * deprecate deprecation reason denotes the API is deprecated but it doesnt have a replacement
+ * or a clear version that it will be removed in. This is useful to alert users that the API is deprecated
+ * to allow them as much time as possible to work around this fact before the deprecation
+ * turns into a `remove` or `migrate` or `bump` type.
+ *
+ * Recommended to pair this with `severity: 'warning'` to avoid blocking the upgrades for this type.
+ */
+ type: 'deprecate';
+}
+
/**
* A set of privileges that can be used to define complex authorization requirements.
*
diff --git a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
index bd50f4ffe0e44..9fd84ce731847 100644
--- a/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
+++ b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap
@@ -129,15 +129,14 @@ exports[`#start() returns \`Context\` component 1`] = `
"euiDatePopoverContent.startDateLabel": "Start date",
"euiDisplaySelector.buttonText": "Display options",
"euiDisplaySelector.densityLabel": "Density",
- "euiDisplaySelector.labelAuto": "Auto fit",
+ "euiDisplaySelector.labelAuto": "Auto",
"euiDisplaySelector.labelCompact": "Compact",
- "euiDisplaySelector.labelCustom": "Custom",
"euiDisplaySelector.labelExpanded": "Expanded",
+ "euiDisplaySelector.labelMax": "Max",
"euiDisplaySelector.labelNormal": "Normal",
- "euiDisplaySelector.labelSingle": "Single",
- "euiDisplaySelector.lineCountLabel": "Lines per row",
+ "euiDisplaySelector.labelStatic": "Static",
"euiDisplaySelector.resetButtonText": "Reset to default",
- "euiDisplaySelector.rowHeightLabel": "Row height",
+ "euiDisplaySelector.rowHeightLabel": "Lines per row",
"euiDualRange.sliderScreenReaderInstructions": "You are in a custom range slider. Use the Up and Down arrow keys to change the minimum value. Press Tab to interact with the maximum value.",
"euiErrorBoundary.error": "Error",
"euiExternalLinkIcon.externalTarget.screenReaderOnlyText": "(external)",
diff --git a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
index ad1ba505dc6f2..732c43a0593c7 100644
--- a/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
+++ b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx
@@ -724,19 +724,16 @@ export const getEuiContextMapping = (): EuiTokensObject => {
'euiDisplaySelector.labelExpanded': i18n.translate('core.euiDisplaySelector.labelExpanded', {
defaultMessage: 'Expanded',
}),
- 'euiDisplaySelector.labelSingle': i18n.translate('core.euiDisplaySelector.labelSingle', {
- defaultMessage: 'Single',
- }),
'euiDisplaySelector.labelAuto': i18n.translate('core.euiDisplaySelector.labelAuto', {
- defaultMessage: 'Auto fit',
+ defaultMessage: 'Auto',
}),
- 'euiDisplaySelector.labelCustom': i18n.translate('core.euiDisplaySelector.labelCustom', {
- defaultMessage: 'Custom',
+ 'euiDisplaySelector.labelStatic': i18n.translate('core.euiDisplaySelector.labelStatic', {
+ defaultMessage: 'Static',
}),
- 'euiDisplaySelector.rowHeightLabel': i18n.translate('core.euiDisplaySelector.rowHeightLabel', {
- defaultMessage: 'Row height',
+ 'euiDisplaySelector.labelMax': i18n.translate('core.euiDisplaySelector.labelMax', {
+ defaultMessage: 'Max',
}),
- 'euiDisplaySelector.lineCountLabel': i18n.translate('core.euiDisplaySelector.lineCountLabel', {
+ 'euiDisplaySelector.rowHeightLabel': i18n.translate('core.euiDisplaySelector.rowHeightLabel', {
defaultMessage: 'Lines per row',
}),
'euiFieldPassword.showPassword': i18n.translate('core.euiFieldPassword.showPassword', {
diff --git a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
index 44841ec0fbe3f..ace0399f242af 100644
--- a/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
+++ b/packages/core/rendering/core-rendering-server-internal/src/rendering_service.tsx
@@ -20,10 +20,10 @@ import type { IUiSettingsClient } from '@kbn/core-ui-settings-server';
import type { UiPlugins } from '@kbn/core-plugins-base-server-internal';
import type { CustomBranding } from '@kbn/core-custom-branding-common';
import {
- type UserProvidedValues,
type DarkModeValue,
parseDarkModeValue,
type UiSettingsParams,
+ type UserProvidedValues,
} from '@kbn/core-ui-settings-common';
import { Template } from './views';
import {
@@ -148,23 +148,29 @@ export class RenderingService {
const basePath = http.basePath.get(request);
const { serverBasePath, publicBaseUrl } = http.basePath;
- let settingsUserValues: Record = {};
- let globalSettingsUserValues: Record = {};
-
- if (!isAnonymousPage) {
- const userValues = await Promise.all([
- uiSettings.client?.getUserProvided(),
- uiSettings.globalClient?.getUserProvided(),
- ]);
-
- settingsUserValues = userValues[0];
- globalSettingsUserValues = userValues[1];
- }
-
- const defaultSettings = await withAsyncDefaultValues(
- request,
- uiSettings.client?.getRegistered()
- );
+ // Grouping all async HTTP requests to run them concurrently for performance reasons.
+ const [
+ defaultSettings,
+ settingsUserValues = {},
+ globalSettingsUserValues = {},
+ userSettingDarkMode,
+ ] = await Promise.all([
+ // All sites
+ withAsyncDefaultValues(request, uiSettings.client?.getRegistered()),
+ // Only non-anonymous pages
+ ...(!isAnonymousPage
+ ? ([
+ uiSettings.client?.getUserProvided(),
+ uiSettings.globalClient?.getUserProvided(),
+ // dark mode
+ userSettings?.getUserSettingDarkMode(request),
+ ] as [
+ Promise>,
+ Promise>,
+ Promise | undefined
+ ])
+ : []),
+ ]);
const settings = {
defaults: defaultSettings,
@@ -196,10 +202,6 @@ export class RenderingService {
}
// dark mode
- const userSettingDarkMode = isAnonymousPage
- ? undefined
- : await userSettings?.getUserSettingDarkMode(request);
-
const isThemeOverridden = settings.user['theme:darkMode']?.isOverridden ?? false;
let darkMode: DarkModeValue;
diff --git a/packages/core/root/core-root-browser-internal/src/kbn_bootstrap.ts b/packages/core/root/core-root-browser-internal/src/kbn_bootstrap.ts
index 80020b79427f5..a06abd107fd06 100644
--- a/packages/core/root/core-root-browser-internal/src/kbn_bootstrap.ts
+++ b/packages/core/root/core-root-browser-internal/src/kbn_bootstrap.ts
@@ -39,6 +39,76 @@ export async function __kbnBootstrap__() {
}),
]);
+ const isDomStorageDisabled = () => {
+ try {
+ const key = 'kbn_bootstrap_domStorageEnabled';
+ sessionStorage.setItem(key, 'true');
+ sessionStorage.removeItem(key);
+ localStorage.setItem(key, 'true');
+ localStorage.removeItem(key);
+ return false;
+ } catch (e) {
+ return true;
+ }
+ };
+
+ if (isDomStorageDisabled()) {
+ const defaultErrorTitle = `Couldn't load the page`;
+ const defaultErrorText = `Update your browser's settings to allow storage of cookies and site data, and reload the page.`;
+ const defaultErrorReload = 'Reload';
+
+ const errorTitle = i18nError
+ ? defaultErrorTitle
+ : i18n.translate('core.ui.welcomeErrorCouldNotLoadPage', {
+ defaultMessage: defaultErrorTitle,
+ });
+
+ const errorText = i18nError
+ ? defaultErrorText
+ : i18n.translate('core.ui.welcomeErrorDomStorageDisabled', {
+ defaultMessage: defaultErrorText,
+ });
+
+ const errorReload = i18nError
+ ? defaultErrorReload
+ : i18n.translate('core.ui.welcomeErrorReloadButton', {
+ defaultMessage: defaultErrorReload,
+ });
+
+ const err = document.createElement('div');
+ err.style.textAlign = 'center';
+ err.style.padding = '120px 20px';
+ err.style.fontFamily = 'Inter, BlinkMacSystemFont, Helvetica, Arial, sans-serif';
+
+ const errorTitleEl = document.createElement('h1');
+ errorTitleEl.innerText = errorTitle;
+ errorTitleEl.style.margin = '20px';
+ errorTitleEl.style.color = '#1a1c21';
+
+ const errorTextEl = document.createElement('p');
+ errorTextEl.innerText = errorText;
+ errorTextEl.style.margin = '20px';
+ errorTextEl.style.color = '#343741';
+
+ const errorReloadEl = document.createElement('button');
+ errorReloadEl.innerText = errorReload;
+ errorReloadEl.onclick = function () {
+ location.reload();
+ };
+ errorReloadEl.setAttribute(
+ 'style',
+ 'cursor: pointer; padding-inline: 12px; block-size: 40px; font-size: 1rem; line-height: 1.4286rem; border-radius: 6px; min-inline-size: 112px; color: rgb(255, 255, 255); background-color: rgb(0, 119, 204); outline-color: rgb(0, 0, 0); border:none'
+ );
+
+ err.appendChild(errorTitleEl);
+ err.appendChild(errorTextEl);
+ err.appendChild(errorReloadEl);
+
+ document.body.innerHTML = '';
+ document.body.appendChild(err);
+ return;
+ }
+
const coreSystem = new CoreSystem({
injectedMetadata,
rootDomElement: document.body,
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.test.ts
index 4c28f2003a986..12b14bb6f1a32 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.test.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.test.ts
@@ -344,6 +344,33 @@ describe('find', () => {
),
});
});
+
+ it('does not perform migrations when a partial document is requested by specifying no fields should be retrieved', async () => {
+ const noNamespaceSearchResults = generateIndexPatternSearchResults();
+ client.search.mockResolvedValueOnce(
+ elasticsearchClientMock.createSuccessTransportRequestPromise(noNamespaceSearchResults)
+ );
+ migrator.migrateDocument.mockImplementationOnce((doc) => ({ ...doc, migrated: true }));
+ await expect(
+ repository.find({
+ type,
+ fields: [], // don't return any fields
+ })
+ ).resolves.not.toHaveProperty('saved_objects.0.migrated');
+ expect(migrator.migrateDocument).not.toHaveBeenCalled();
+ });
+
+ it('does not perform migrations when a partial document is requested by specifying some fields', async () => {
+ const noNamespaceSearchResults = generateIndexPatternSearchResults();
+ client.search.mockResolvedValueOnce(
+ elasticsearchClientMock.createSuccessTransportRequestPromise(noNamespaceSearchResults)
+ );
+ migrator.migrateDocument.mockImplementationOnce((doc) => ({ ...doc, migrated: true }));
+ await expect(repository.find({ type, fields: ['title'] })).resolves.not.toHaveProperty(
+ 'saved_objects.0.migrated'
+ );
+ expect(migrator.migrateDocument).not.toHaveBeenCalled();
+ });
});
describe('search dsl', () => {
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.ts
index 1222425ac2150..40501a0d80a37 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/find.ts
@@ -16,6 +16,7 @@ import {
CheckAuthorizationResult,
SavedObjectsRawDocSource,
GetFindRedactTypeMapParams,
+ SavedObjectUnsanitizedDoc,
} from '@kbn/core-saved-objects-server';
import {
DEFAULT_NAMESPACE_STRING,
@@ -57,6 +58,7 @@ export const performFind = async (
common: commonHelper,
serializer: serializerHelper,
migration: migrationHelper,
+ encryption: encryptionHelper,
} = helpers;
const { securityExtension, spacesExtension } = extensions;
let namespaces!: string[];
@@ -266,13 +268,27 @@ export const performFind = async (
const migratedDocuments: Array> = [];
try {
for (const savedObject of savedObjects) {
+ let migrated: SavedObjectUnsanitizedDoc | undefined;
const { sort, score, ...rawObject } = savedObject;
- const migrated = disableExtensions
- ? migrationHelper.migrateStorageDocument(rawObject)
- : await migrationHelper.migrateAndDecryptStorageDocument({
- document: rawObject,
- typeMap: redactTypeMap,
- });
+
+ if (fields !== undefined) {
+ // If the fields argument is set, don't migrate.
+ // This document may only contains a subset of it's fields meaning the migration
+ // (transform and forwardCompatibilitySchema) is not guaranteed to succeed. We
+ // still try to decrypt/redact the fields that are present in the document.
+ migrated = await encryptionHelper.optionallyDecryptAndRedactSingleResult(
+ savedObject,
+ redactTypeMap
+ );
+ } else if (disableExtensions) {
+ migrated = migrationHelper.migrateStorageDocument(rawObject);
+ } else {
+ migrated = await migrationHelper.migrateAndDecryptStorageDocument({
+ document: rawObject,
+ typeMap: redactTypeMap,
+ });
+ }
+
migratedDocuments.push({ ...migrated, sort, score } as SavedObjectsFindResult);
}
} catch (error) {
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts
index 27bd0918b0f9b..870f6833b4edc 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts
@@ -105,10 +105,14 @@ export class CommonHelper {
if (!id) {
return SavedObjectsUtils.generateId();
}
- // only allow a specified ID if we're overwriting an existing ESO with a Version
- // this helps us ensure that the document really was previously created using ESO
- // and not being used to get around the specified ID limitation
- const canSpecifyID = (overwrite && version) || SavedObjectsUtils.isRandomId(id);
+
+ const shouldEnforceRandomId = this.encryptionExtension?.shouldEnforceRandomId(type);
+
+ // Allow specified ID if:
+ // 1. we're overwriting an existing ESO with a Version (this helps us ensure that the document really was previously created using ESO)
+ // 2. enforceRandomId is explicitly set to false
+ const canSpecifyID =
+ !shouldEnforceRandomId || (overwrite && version) || SavedObjectsUtils.isRandomId(id);
if (!canSpecifyID) {
throw SavedObjectsErrorHelpers.createBadRequestError(
'Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID.'
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts
index f5c8c8518a58a..cf66621565577 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts
@@ -261,6 +261,7 @@ describe('SavedObjectsRepository Encryption Extension', () => {
it(`fails if non-UUID ID is specified for encrypted type`, async () => {
mockEncryptionExt.isEncryptableType.mockReturnValue(true);
+ mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(true);
mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({
...encryptedSO,
...decryptedStrippedAttributes,
@@ -291,6 +292,25 @@ describe('SavedObjectsRepository Encryption Extension', () => {
).resolves.not.toThrowError();
});
+ it('allows to opt-out of random ID enforcement', async () => {
+ mockEncryptionExt.isEncryptableType.mockReturnValue(true);
+ mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(false);
+ mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({
+ ...encryptedSO,
+ ...decryptedStrippedAttributes,
+ });
+
+ const result = await repository.create(encryptedSO.type, encryptedSO.attributes, {
+ id: encryptedSO.id,
+ version: mockVersion,
+ });
+
+ expect(client.create).toHaveBeenCalled();
+ expect(mockEncryptionExt.isEncryptableType).toHaveBeenCalledWith(encryptedSO.type);
+ expect(mockEncryptionExt.shouldEnforceRandomId).toHaveBeenCalledWith(encryptedSO.type);
+ expect(result.id).toBe(encryptedSO.id);
+ });
+
describe('namespace', () => {
const doTest = async (optNamespace: string, expectNamespaceInDescriptor: boolean) => {
const options = { overwrite: true, namespace: optNamespace };
@@ -483,6 +503,7 @@ describe('SavedObjectsRepository Encryption Extension', () => {
it(`fails if non-UUID ID is specified for encrypted type`, async () => {
mockEncryptionExt.isEncryptableType.mockReturnValue(true);
+ mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(true);
const result = await bulkCreateSuccess(client, repository, [
encryptedSO, // Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID
]);
@@ -529,6 +550,25 @@ describe('SavedObjectsRepository Encryption Extension', () => {
expect(result.saved_objects.length).toBe(1);
expect(result.saved_objects[0].error).toBeUndefined();
});
+
+ it('allows to opt-out of random ID enforcement', async () => {
+ mockEncryptionExt.isEncryptableType.mockReturnValue(true);
+ mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(false);
+ mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({
+ ...encryptedSO,
+ ...decryptedStrippedAttributes,
+ });
+
+ const result = await bulkCreateSuccess(client, repository, [
+ { ...encryptedSO, version: mockVersion },
+ ]);
+
+ expect(client.bulk).toHaveBeenCalled();
+ expect(result.saved_objects).not.toBeUndefined();
+ expect(result.saved_objects.length).toBe(1);
+ expect(result.saved_objects[0].error).toBeUndefined();
+ expect(result.saved_objects[0].id).toBe(encryptedSO.id);
+ });
});
describe('#bulkUpdate', () => {
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts
index 2061bb63240b2..9dc7c0f0133c5 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts
@@ -17,6 +17,7 @@ const createEncryptionExtension = (): jest.Mocked => ({
diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts
index 2a2d121b568be..776ecfe3a7385 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts
@@ -18,6 +18,7 @@ const createEncryptionExtension = (): jest.Mocked => ({
diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts
index d8c2b0b25874f..06c8e351bc445 100644
--- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts
+++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts
@@ -19,6 +19,7 @@ import {
} from './import_saved_objects.test.mock';
import { Readable } from 'stream';
+import { loggerMock, type MockedLogger } from '@kbn/logging-mocks';
import { v4 as uuidv4 } from 'uuid';
import type {
SavedObjectsImportFailure,
@@ -40,8 +41,10 @@ import {
import type { ImportStateMap } from './lib';
describe('#importSavedObjectsFromStream', () => {
+ let logger: MockedLogger;
beforeEach(() => {
jest.clearAllMocks();
+ logger = loggerMock.create();
// mock empty output of each of these mocked modules so the import doesn't throw an error
mockCollectSavedObjects.mockResolvedValue({
errors: [],
@@ -72,7 +75,6 @@ describe('#importSavedObjectsFromStream', () => {
let savedObjectsClient: jest.Mocked;
let typeRegistry: jest.Mocked;
const namespace = 'some-namespace';
-
const setupOptions = ({
createNewCopies = false,
getTypeImpl = (type: string) =>
@@ -102,6 +104,7 @@ describe('#importSavedObjectsFromStream', () => {
createNewCopies,
importHooks,
managed,
+ log: logger,
};
};
const createObject = ({
diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts
index 4182daa610b37..7d6bf9668286a 100644
--- a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts
+++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts
@@ -17,6 +17,7 @@ import type {
ISavedObjectTypeRegistry,
SavedObjectsImportHook,
} from '@kbn/core-saved-objects-server';
+import type { Logger } from '@kbn/logging';
import {
checkReferenceOrigins,
validateReferences,
@@ -59,6 +60,7 @@ export interface ImportSavedObjectsOptions {
* If provided, Kibana will apply the given option to the `managed` property.
*/
managed?: boolean;
+ log: Logger;
}
/**
@@ -79,7 +81,11 @@ export async function importSavedObjectsFromStream({
refresh,
compatibilityMode,
managed,
+ log,
}: ImportSavedObjectsOptions): Promise