From c1681c8d49304f324895acbe73323ffacad3fcbc Mon Sep 17 00:00:00 2001
From: James Gowdy <jgowdy@elastic.co>
Date: Wed, 8 Nov 2023 09:37:10 +0000
Subject: [PATCH 001/147] [ML] Disable anomaly detection job creation from
 ES|QL lens visualizations (#170711)

Fixes https://github.com/elastic/kibana/issues/170670

We currently do not support ES|QL in anomaly detection jobs.

An ES|QL Lens vis cannot have mixed layers, as in one layer using ES|QL
and another using DSL, therefore we need to completely disable the ML
action item in the menu.

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../ml/public/application/jobs/new_job/job_from_lens/utils.ts   | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts
index e060017bc7fa0..88e66aab91933 100644
--- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts
+++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts
@@ -186,6 +186,8 @@ export async function getVisTypeFactory(lens: LensPublicStart) {
 export async function isCompatibleVisualizationType(chartInfo: ChartInfo) {
   return (
     chartInfo.visualizationType === COMPATIBLE_VISUALIZATION &&
+    // @ts-expect-error esql is missing in the type
+    chartInfo.query.esql === undefined &&
     chartInfo.layers.some((l) => l.layerType === layerTypes.DATA && l.dataView !== undefined)
   );
 }

From 0063691ad58311cd5cd111a7404d21be4a361c6b Mon Sep 17 00:00:00 2001
From: Juan Pablo Djeredjian <jpdjeredjian@gmail.com>
Date: Wed, 8 Nov 2023 11:40:48 +0100
Subject: [PATCH 002/147] [Security Solution] Detection Engine: Enable
 remaining Cypress tests and skip flaky Cypress tests (#170540)

## Summary

- skips flaky `can bulk open alerts` test on
`x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts`
- enables **serverless** for:
`x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts`
- removes outdated comments

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 .../detection_alerts/alert_status.cy.ts       |   2 +-
 .../entity_analytics_management_page.cy.ts    |   1 -
 .../add_edit_endpoint_exception.cy.ts         | 279 +++++++++---------
 3 files changed, 138 insertions(+), 144 deletions(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
index c55c8f62dc4a9..7f148e531fe12 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
@@ -38,7 +38,7 @@ import { visit } from '../../../tasks/navigation';
 import { ALERTS_URL } from '../../../urls/navigation';
 
 // FLAKY: https://github.com/elastic/kibana/issues/169091
-describe('Changing alert status', () => {
+describe.skip('Changing alert status', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
     cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
   });
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts
index a676fe5038d3e..24d13322f7d9d 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts
@@ -38,7 +38,6 @@ import {
   previewErrorButtonClick,
 } from '../../tasks/entity_analytics';
 
-// TODO: https://github.com/elastic/kibana/issues/161539
 describe(
   'Entity analytics management page',
   {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
index 7474fd2e5cf2d..b687821145f1a 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
@@ -50,179 +50,174 @@ import {
   createEndpointExceptionListItem,
 } from '../../../tasks/api_calls/exceptions';
 
-// TODO: https://github.com/elastic/kibana/issues/161539
-describe(
-  'Add endpoint exception from rule details',
-  { tags: ['@ess', '@serverless', '@brokenInServerless'] },
-  () => {
-    const ITEM_NAME = 'Sample Exception List Item';
-    const NEW_ITEM_NAME = 'Exception item-EDITED';
-    const ITEM_FIELD = 'event.code';
-    const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type';
-
+describe('Add endpoint exception from rule details', { tags: ['@ess', '@serverless'] }, () => {
+  const ITEM_NAME = 'Sample Exception List Item';
+  const NEW_ITEM_NAME = 'Exception item-EDITED';
+  const ITEM_FIELD = 'event.code';
+  const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type';
+
+  beforeEach(() => {
+    deleteExceptionLists();
+    deleteEndpointExceptionList();
+    login();
+    deleteAlertsAndRules();
+  });
+
+  describe('without exception items', () => {
     beforeEach(() => {
-      deleteExceptionLists();
-      deleteEndpointExceptionList();
-      login();
-      deleteAlertsAndRules();
-    });
-
-    describe('without exception items', () => {
-      beforeEach(() => {
-        createEndpointExceptionList().then((response) => {
-          createRule(
-            getNewRule({
-              query: 'event.code:*',
-              index: ['auditbeat*'],
-              exceptions_list: [
-                {
-                  id: response.body.id,
-                  list_id: response.body.list_id,
-                  type: response.body.type,
-                  namespace_type: response.body.namespace_type,
-                },
-              ],
-              rule_id: '2',
-              enabled: false,
-            })
-          ).then((rule) => visitRuleDetailsPage(rule.body.id, { tab: 'endpoint_exceptions' }));
-        });
+      createEndpointExceptionList().then((response) => {
+        createRule(
+          getNewRule({
+            query: 'event.code:*',
+            index: ['auditbeat*'],
+            exceptions_list: [
+              {
+                id: response.body.id,
+                list_id: response.body.list_id,
+                type: response.body.type,
+                namespace_type: response.body.namespace_type,
+              },
+            ],
+            rule_id: '2',
+            enabled: false,
+          })
+        ).then((rule) => visitRuleDetailsPage(rule.body.id, { tab: 'endpoint_exceptions' }));
       });
+    });
 
-      it('creates an exception item', () => {
-        // when no exceptions exist, empty component shows with action to add exception
-        cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('exist');
+    it('creates an exception item', () => {
+      // when no exceptions exist, empty component shows with action to add exception
+      cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('exist');
 
-        // open add exception modal
-        openExceptionFlyoutFromEmptyViewerPrompt();
+      // open add exception modal
+      openExceptionFlyoutFromEmptyViewerPrompt();
 
-        // submit button is disabled if no paramerters were added
-        cy.get(CONFIRM_BTN).should('have.attr', 'disabled');
+      // submit button is disabled if no paramerters were added
+      cy.get(CONFIRM_BTN).should('have.attr', 'disabled');
 
-        // for endpoint exceptions, must specify OS
-        selectOs('windows');
+      // for endpoint exceptions, must specify OS
+      selectOs('windows');
 
-        // add exception item conditions
-        addExceptionConditions({
-          field: 'event.code',
-          operator: 'is',
-          values: ['foo'],
-        });
+      // add exception item conditions
+      addExceptionConditions({
+        field: 'event.code',
+        operator: 'is',
+        values: ['foo'],
+      });
 
-        // Name is required so want to check that submit is still disabled
-        cy.get(CONFIRM_BTN).should('have.attr', 'disabled');
+      // Name is required so want to check that submit is still disabled
+      cy.get(CONFIRM_BTN).should('have.attr', 'disabled');
 
-        // add exception item name
-        addExceptionFlyoutItemName(ITEM_NAME);
+      // add exception item name
+      addExceptionFlyoutItemName(ITEM_NAME);
 
-        // Option to add to rule or add to list should NOT appear
-        cy.get(ADD_TO_RULE_OR_LIST_SECTION).should('not.exist');
+      // Option to add to rule or add to list should NOT appear
+      cy.get(ADD_TO_RULE_OR_LIST_SECTION).should('not.exist');
 
-        // not testing close alert functionality here, just ensuring that the options appear as expected
-        cy.get(CLOSE_SINGLE_ALERT_CHECKBOX).should('not.exist');
-        cy.get(CLOSE_ALERTS_CHECKBOX).should('exist');
+      // not testing close alert functionality here, just ensuring that the options appear as expected
+      cy.get(CLOSE_SINGLE_ALERT_CHECKBOX).should('not.exist');
+      cy.get(CLOSE_ALERTS_CHECKBOX).should('exist');
 
-        // submit
-        submitNewExceptionItem();
+      // submit
+      submitNewExceptionItem();
 
-        // new exception item displays
-        cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
-      });
+      // new exception item displays
+      cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
     });
+  });
+
+  describe('with exception items', () => {
+    beforeEach(() => {
+      createEndpointExceptionList().then((response) => {
+        createEndpointExceptionListItem({
+          comments: [],
+          description: 'Exception list item',
+          entries: [
+            {
+              field: ITEM_FIELD,
+              operator: 'included',
+              type: 'match',
+              value: 'foo',
+            },
+          ],
+          name: ITEM_NAME,
+          tags: [],
+          type: 'simple',
+          os_types: ['windows'],
+        });
 
-    describe('with exception items', () => {
-      beforeEach(() => {
-        createEndpointExceptionList().then((response) => {
-          createEndpointExceptionListItem({
-            comments: [],
-            description: 'Exception list item',
-            entries: [
+        createRule(
+          getNewRule({
+            name: 'Rule with exceptions',
+            query: 'event.code:*',
+            index: ['auditbeat*'],
+            exceptions_list: [
               {
-                field: ITEM_FIELD,
-                operator: 'included',
-                type: 'match',
-                value: 'foo',
+                id: response.body.id,
+                list_id: response.body.list_id,
+                type: response.body.type,
+                namespace_type: response.body.namespace_type,
               },
             ],
-            name: ITEM_NAME,
-            tags: [],
-            type: 'simple',
-            os_types: ['windows'],
-          });
-
-          createRule(
-            getNewRule({
-              name: 'Rule with exceptions',
-              query: 'event.code:*',
-              index: ['auditbeat*'],
-              exceptions_list: [
-                {
-                  id: response.body.id,
-                  list_id: response.body.list_id,
-                  type: response.body.type,
-                  namespace_type: response.body.namespace_type,
-                },
-              ],
-              rule_id: '2',
-              enabled: false,
-            })
-          ).then((rule) => {
-            visitRuleDetailsPage(rule.body.id, { tab: 'endpoint_exceptions' });
-            waitForRuleDetailsPageToBeLoaded('Rule with exceptions');
-          });
+            rule_id: '2',
+            enabled: false,
+          })
+        ).then((rule) => {
+          visitRuleDetailsPage(rule.body.id, { tab: 'endpoint_exceptions' });
+          waitForRuleDetailsPageToBeLoaded('Rule with exceptions');
         });
       });
+    });
 
-      it('edits an endpoint exception item', () => {
-        // displays existing exception items
-        cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
-        cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('not.exist');
-        cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', ITEM_NAME);
-        cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ` ${ITEM_FIELD}IS foo`);
+    it('edits an endpoint exception item', () => {
+      // displays existing exception items
+      cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
+      cy.get(NO_EXCEPTIONS_EXIST_PROMPT).should('not.exist');
+      cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', ITEM_NAME);
+      cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ` ${ITEM_FIELD}IS foo`);
 
-        // open edit exception modal
-        openEditException();
+      // open edit exception modal
+      openEditException();
 
-        // edit exception item name
-        editExceptionFlyoutItemName(NEW_ITEM_NAME);
+      // edit exception item name
+      editExceptionFlyoutItemName(NEW_ITEM_NAME);
 
-        // check that the existing item's field is being populated
-        cy.get(EXCEPTION_ITEM_CONTAINER)
-          .eq(0)
-          .find(FIELD_INPUT_PARENT)
-          .eq(0)
-          .should('have.text', ITEM_FIELD);
-        cy.get(VALUES_INPUT).should('have.text', 'foo');
+      // check that the existing item's field is being populated
+      cy.get(EXCEPTION_ITEM_CONTAINER)
+        .eq(0)
+        .find(FIELD_INPUT_PARENT)
+        .eq(0)
+        .should('have.text', ITEM_FIELD);
+      cy.get(VALUES_INPUT).should('have.text', 'foo');
 
-        // edit conditions
-        editException(FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD, 0, 0);
+      // edit conditions
+      editException(FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD, 0, 0);
 
-        // submit
-        submitEditedExceptionItem();
+      // submit
+      submitEditedExceptionItem();
 
-        // new exception item displays
-        cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
+      // new exception item displays
+      cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
 
-        // check that updates stuck
-        cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', NEW_ITEM_NAME);
-        cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.typeIS foo');
-      });
+      // check that updates stuck
+      cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', NEW_ITEM_NAME);
+      cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.typeIS foo');
+    });
 
-      it('allows user to search for items', () => {
-        cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
+    it('allows user to search for items', () => {
+      cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
 
-        // can search for an exception value
-        searchForExceptionItem('foo');
+      // can search for an exception value
+      searchForExceptionItem('foo');
 
-        // new exception item displays
-        cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
+      // new exception item displays
+      cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
 
-        // displays empty search result view if no matches found
-        searchForExceptionItem('abc');
+      // displays empty search result view if no matches found
+      searchForExceptionItem('abc');
 
-        // new exception item displays
-        cy.get(NO_EXCEPTIONS_SEARCH_RESULTS_PROMPT).should('exist');
-      });
+      // new exception item displays
+      cy.get(NO_EXCEPTIONS_SEARCH_RESULTS_PROMPT).should('exist');
     });
-  }
-);
+  });
+});

From e00566fa98e6211067c5aabd436f18a606da0249 Mon Sep 17 00:00:00 2001
From: Dmitrii Shevchenko <dmitrii.shevchenko@elastic.co>
Date: Wed, 8 Nov 2023 11:58:28 +0100
Subject: [PATCH 003/147] [Security Solution] Migrate remaining public
 Detection Engine APIs to OpenAPI and code generation (#170330)

**Related to: https://github.com/elastic/security-team/issues/7491**

## Summary

Migrated remaining public Detection Engine endpoints to OpenAPI schema
and code generation:

- `POST /api/detection_engine/rules/_bulk_action`
- `GET /api/detection_engine/rules/_find`

 Also completed the migration of internal APIs:

- `GET /internal/detection_engine/rules/{ruleId}/execution/events`
- `GET /internal/detection_engine/rules/{ruleId}/execution/results`

### Other notable changes

- Changed how we compose Zod error messages for unions, see
`packages/kbn-zod-helpers/src/stringify_zod_error.ts`. Now we are trying
to list the validation errors of all union members but limiting the
total number of validation errors displayed to users.
- Addressed some remaining `TODO
https://github.com/elastic/security-team/issues/7491`
- Removed dependencies of the risk engine and timelines on detection
engine schemas
- Removed outdated legacy rule schemas that are no longer in use
- Added new schema helpers that work with query params:
`BooleanFromString` and `ArrayFromString`

![image](https://github.com/elastic/kibana/assets/1938181/f4898f11-04e2-4c82-bce9-e662ba78f724)

![image](https://github.com/elastic/kibana/assets/1938181/235234e7-c86c-49a1-b39f-6f9f8dc780e7)
---
 .../templates/zod_operation_schema.handlebars |   2 +-
 .../templates/zod_query_item.handlebars       |  14 +-
 packages/kbn-zod-helpers/index.ts             |   3 +
 .../src/array_from_string.test.ts             |  34 ++
 .../kbn-zod-helpers/src/array_from_string.ts  |  24 +
 .../src/boolean_from_string.test.ts           |  32 ++
 .../src/boolean_from_string.ts                |  24 +
 .../src/expect_parse_success.ts               |   7 +-
 .../kbn-zod-helpers/src/safe_parse_result.ts  |  28 ++
 .../src/stringify_zod_error.ts                |  45 +-
 .../model/error_schema.mock.ts                |   4 +-
 .../api/detection_engine/model/index.ts       |  10 +-
 .../detection_engine/model/pagination.gen.ts  |  35 ++
 .../model/pagination.schema.yaml              |  31 ++
 .../api/detection_engine/model/pagination.ts  |  28 --
 .../model/rule_response_actions/index.ts      |   3 -
 .../rule_schema/common_attributes.gen.ts      |  38 +-
 .../rule_schema/common_attributes.schema.yaml |  30 +-
 .../rule_schema/rule_request_schema.test.ts   | 140 ++++--
 .../rule_schema/rule_response_schema.test.ts  |  16 +-
 .../response_actions.ts}                      |  17 +-
 .../model/rule_schema_legacy/rule_schemas.ts  | 274 +---------
 .../api/detection_engine/model/schemas.ts     |  17 -
 .../detection_engine/model/sorting.test.ts    |  99 +---
 .../detection_engine/model/sorting_legacy.ts  |  40 --
 .../create_rule_exceptions_route.ts           |   6 +-
 .../bulk_actions/bulk_actions_route.gen.ts    | 291 +++++++++++
 .../bulk_actions/bulk_actions_route.mock.ts   |  10 +-
 .../bulk_actions_route.schema.yaml            | 178 +++----
 .../bulk_actions/bulk_actions_route.test.ts   | 449 ++++++++---------
 .../bulk_actions/bulk_actions_route.ts        | 269 ----------
 .../bulk_actions/bulk_actions_types.ts        |  30 ++
 .../bulk_create_rules_route.test.ts           |  26 +-
 .../bulk_patch_rules_route.test.ts            |   4 +-
 .../bulk_update_rules_route.test.ts           |  26 +-
 .../bulk_crud/response_schema.test.ts         |   8 +-
 .../crud/patch_rule/patch_rule_route.test.ts  |  56 ++-
 .../export_rules/export_rules_route.gen.ts    |   9 +-
 .../export_rules/export_rules_route.test.ts   |   2 +-
 .../find_rules/find_rules_route.gen.ts        |  71 +++
 .../find_rules/find_rules_route.schema.yaml   |  98 ++++
 .../find_rules/find_rules_route.test.ts       | 167 +++----
 .../find_rules/find_rules_route.ts            |  54 --
 .../request_schema_validation.test.ts         |  10 +-
 .../find_rules/request_schema_validation.ts   |  13 +-
 .../import_rules/import_rules_route.gen.ts    |  33 +-
 .../detection_engine/rule_management/index.ts |   5 +-
 .../detection_engine/rule_monitoring/index.ts |   8 +-
 .../model/execution_event.gen.ts              |  44 ++
 .../model/execution_event.mock.ts             |  35 +-
 .../model/execution_event.schema.yaml         |  49 ++
 .../rule_monitoring/model/execution_event.ts  |  61 ---
 .../model/execution_metrics.gen.ts            |   9 +-
 .../model/execution_metrics.schema.yaml       |   7 +-
 .../model/execution_metrics.ts                |  28 --
 .../rule_monitoring/model/execution_status.ts |   4 -
 .../model/execution_summary.mock.ts           |   2 +-
 .../model/execution_summary.ts                |  22 -
 .../rule_monitoring/model/index.ts            |   6 +-
 .../rule_monitoring/model/log_level.ts        |  47 +-
 .../get_rule_execution_events_route.gen.ts    |  44 +-
 .../get_rule_execution_events_route.mock.ts   |   2 +-
 ...et_rule_execution_events_route.schema.yaml |  55 +-
 .../get_rule_execution_events_route.test.ts   |  88 ++--
 .../get_rule_execution_events_route.ts        |  60 ---
 .../get_rule_execution_results_route.gen.ts   |  10 +-
 .../create_signals_migration_route.ts         |   5 +-
 .../common/api/timeline/model/api.ts          |   6 +-
 .../api/timeline/model/error_schema.mock.ts   |  17 +
 .../model/error_schema.test.ts                |   4 +-
 .../model/error_schema.ts}                    |  14 +-
 .../transform_actions.test.ts                 |   8 +-
 .../detection_engine/transform_actions.ts     |  15 +-
 .../risk_score_calculation/request_schema.ts  |   5 +-
 .../risk_score_preview/request_schema.ts      |   5 +-
 .../common/types/response_actions/index.ts    |   4 +-
 .../components/event_details/osquery_tab.tsx  |   4 +-
 .../rule_management/api/api.test.ts           |  20 +-
 .../rule_management/api/api.ts                |  23 +-
 .../api/hooks/use_bulk_action_mutation.ts     |  12 +-
 .../logic/bulk_actions/translations.ts        |  65 +--
 .../bulk_actions/use_bulk_export.test.ts      |   6 +-
 .../logic/bulk_actions/use_bulk_export.ts     |   8 +-
 .../use_download_exported_rules.ts            |   6 +-
 .../use_execute_bulk_action.test.ts           |  26 +-
 .../bulk_actions/use_execute_bulk_action.ts   |  11 +-
 .../use_guess_rule_ids_for_bulk_action.ts     |   7 +-
 .../bulk_actions/use_show_bulk_error_toast.ts |   2 +-
 .../use_show_bulk_success_toast.ts            |   9 +-
 .../rule_management/logic/types.ts            |  17 +-
 .../bulk_action_dry_run_confirmation.tsx      |  10 +-
 .../bulk_action_rule_errors_list.test.tsx     |  22 +-
 .../bulk_action_rule_errors_list.tsx          |   6 +-
 .../bulk_actions/bulk_edit_flyout.tsx         |  27 +-
 .../forms/index_patterns_form.tsx             |  26 +-
 .../bulk_actions/forms/rule_actions_form.tsx  |   8 +-
 .../bulk_actions/forms/schedule_form.tsx      |   6 +-
 .../bulk_actions/forms/tags_form.tsx          |  22 +-
 .../forms/timeline_template_form.tsx          |   6 +-
 .../rules_table/bulk_actions/types.ts         |   4 +-
 .../bulk_actions/use_bulk_actions.tsx         |  39 +-
 .../use_bulk_actions_confirmation.ts          |  14 +-
 .../bulk_actions/use_bulk_edit_form_flyout.ts |  14 +-
 .../compute_dry_run_edit_payload.test.ts      |  19 +-
 .../utils/compute_dry_run_edit_payload.ts     |  27 +-
 .../rules_management_tour.tsx                 |   4 +-
 .../rules_table/rules_table_saved_state.ts    |  62 +--
 .../use_rules_table_saved_state.ts            |  16 +-
 .../components/rules_table/use_columns.tsx    |  11 +-
 .../rules_table/use_rules_table_actions.tsx   |   6 +-
 .../coverage_overview_dashboard_context.tsx   |   4 +-
 .../api/__mocks__/api_client.ts               |   8 +-
 .../rule_monitoring/api/api_client.test.ts    |  11 +-
 .../basic/filters/event_type_filter/index.tsx |   5 +-
 .../indicators/event_type_indicator/utils.ts  |  15 +-
 .../indicators/log_level_indicator/utils.ts   |  13 +-
 .../components/basic/tables/use_sorting.ts    |   9 +-
 .../use_execution_events.test.tsx             |   8 +-
 .../rule_response_actions/constants.ts        |   6 +-
 .../get_supported_response_actions.ts         |  15 +-
 .../response_action_type_form.tsx             |   6 +-
 .../rule_response_actions/utils.tsx           |   4 +-
 .../rules/rule_actions_overflow/index.tsx     |   6 +-
 .../components/rules/rule_switch/index.tsx    |   4 +-
 .../e2e/automated_response_actions/form.cy.ts |   6 +-
 .../rule_assets/prebuilt_rule_asset.test.ts   |  16 +-
 .../api/rules/bulk_actions/route.test.ts      |  18 +-
 .../api/rules/bulk_actions/route.ts           |  34 +-
 .../api/rules/bulk_patch_rules/route.test.ts  |   4 +-
 .../api/rules/create_rule/route.test.ts       |   4 +-
 .../api/rules/find_rules/route.test.ts        |   4 +-
 .../api/rules/find_rules/route.ts             |  10 +-
 .../api/rules/patch_rule/route.test.ts        |   4 +-
 .../api/rules/update_rule/route.test.ts       |   8 +-
 .../action_to_rules_client_operation.test.ts  |  16 +-
 .../action_to_rules_client_operation.ts       |  16 +-
 .../logic/bulk_actions/bulk_edit_rules.ts     |   2 +-
 .../bulk_actions/rule_params_modifier.test.ts |  38 +-
 .../bulk_actions/rule_params_modifier.ts      |  18 +-
 .../split_bulk_edit_actions.test.ts           |  32 +-
 .../bulk_actions/split_bulk_edit_actions.ts   |  16 +-
 .../logic/bulk_actions/utils.ts               |   9 +-
 .../logic/bulk_actions/validations.ts         |   8 +-
 .../logic/search/find_rules.ts                |  39 +-
 .../logic/search/transform_sort_field.ts      |   4 +-
 .../rule_management/utils/validate.test.ts    |   3 +-
 .../get_rule_execution_events_route.test.ts   |  12 +-
 .../get_rule_execution_events_route.ts        |   6 +-
 .../aggregations/rule_execution_stats.ts      |  39 +-
 .../event_log/register_event_log_provider.ts  |   2 +-
 .../client_for_executors/client.ts            |  25 +-
 .../event_log/event_log_reader.ts             |  22 +-
 .../event_log/event_log_writer.ts             |  15 +-
 ...dule_notification_response_actions.test.ts |   6 +-
 .../schedule_notification_response_actions.ts |   6 +-
 .../group1/create_rules_bulk.ts               |   4 +-
 .../group10/patch_rules.ts                    |   4 +-
 .../group10/patch_rules_bulk.ts               |   4 +-
 .../group10/perform_bulk_action.ts            | 473 +++++++++---------
 .../group10/perform_bulk_action_dry_run.ts    |  46 +-
 .../group10/update_rules.ts                   |   7 +-
 .../group10/update_rules_bulk.ts              |   4 +-
 .../rule_execution_logic/query.ts             |   4 +-
 .../rule_creation/create_rules.ts             |   7 +-
 164 files changed, 2566 insertions(+), 2582 deletions(-)
 create mode 100644 packages/kbn-zod-helpers/src/array_from_string.test.ts
 create mode 100644 packages/kbn-zod-helpers/src/array_from_string.ts
 create mode 100644 packages/kbn-zod-helpers/src/boolean_from_string.test.ts
 create mode 100644 packages/kbn-zod-helpers/src/boolean_from_string.ts
 create mode 100644 packages/kbn-zod-helpers/src/safe_parse_result.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.ts
 rename x-pack/plugins/security_solution/common/api/detection_engine/model/{rule_response_actions/response_actions_legacy.ts => rule_schema_legacy/response_actions.ts} (82%)
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/model/sorting_legacy.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.ts
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.ts
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.ts
 delete mode 100644 x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
 create mode 100644 x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts
 rename x-pack/plugins/security_solution/common/api/{detection_engine => timeline}/model/error_schema.test.ts (93%)
 rename x-pack/plugins/security_solution/common/api/{detection_engine/model/error_schema_legacy.ts => timeline/model/error_schema.ts} (69%)

diff --git a/packages/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars b/packages/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars
index 6bb6fccf7d3b3..5395edbcf5f25 100644
--- a/packages/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars
+++ b/packages/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars
@@ -6,7 +6,7 @@
  */
 
 import { z } from "zod";
-import { requiredOptional, isValidDateMath } from "@kbn/zod-helpers"
+import { requiredOptional, isValidDateMath, ArrayFromString, BooleanFromString } from "@kbn/zod-helpers"
 
 {{> disclaimer}}
 
diff --git a/packages/kbn-openapi-generator/src/template_service/templates/zod_query_item.handlebars b/packages/kbn-openapi-generator/src/template_service/templates/zod_query_item.handlebars
index 7fa146cd783e4..ad51f934b7fde 100644
--- a/packages/kbn-openapi-generator/src/template_service/templates/zod_query_item.handlebars
+++ b/packages/kbn-openapi-generator/src/template_service/templates/zod_query_item.handlebars
@@ -19,10 +19,7 @@
 {{~/if~}}
 
 {{~#if (eq type "array")}}
-  z.preprocess(
-    (value: unknown) => (typeof value === "string") ? value === '' ? [] : value.split(",") : value,
-    z.array({{~> zod_schema_item items ~}})
-  )
+  ArrayFromString({{~> zod_schema_item items ~}})
   {{~#if minItems}}.min({{minItems}}){{/if~}}
   {{~#if maxItems}}.max({{maxItems}}){{/if~}}
   {{~#if (eq requiredBool false)}}.optional(){{/if~}}
@@ -30,12 +27,9 @@
 {{~/if~}}
 
 {{~#if (eq type "boolean")}}
-  z.preprocess(
-    (value: unknown) => (typeof value === "boolean") ? String(value) : value,
-    z.enum(["true", "false"])
-    {{~#if (defined default)}}.default("{{{toJSON default}}}"){{/if~}}
-    .transform((value) => value === "true")
-  )
+  BooleanFromString
+  {{~#if (eq requiredBool false)}}.optional(){{/if~}}
+  {{~#if (defined default)}}.default({{{toJSON default}}}){{/if~}}
 {{~/if~}}
 
 {{~#if (eq type "string")}}
diff --git a/packages/kbn-zod-helpers/index.ts b/packages/kbn-zod-helpers/index.ts
index f1062064dc5cf..d8a62f58686b2 100644
--- a/packages/kbn-zod-helpers/index.ts
+++ b/packages/kbn-zod-helpers/index.ts
@@ -6,8 +6,11 @@
  * Side Public License, v 1.
  */
 
+export * from './src/array_from_string';
+export * from './src/boolean_from_string';
 export * from './src/expect_parse_error';
 export * from './src/expect_parse_success';
 export * from './src/is_valid_date_math';
 export * from './src/required_optional';
+export * from './src/safe_parse_result';
 export * from './src/stringify_zod_error';
diff --git a/packages/kbn-zod-helpers/src/array_from_string.test.ts b/packages/kbn-zod-helpers/src/array_from_string.test.ts
new file mode 100644
index 0000000000000..ba27fddb0c9b5
--- /dev/null
+++ b/packages/kbn-zod-helpers/src/array_from_string.test.ts
@@ -0,0 +1,34 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { ArrayFromString } from './array_from_string';
+import * as z from 'zod';
+
+describe('ArrayFromString', () => {
+  const itemsSchema = z.string();
+
+  it('should return an array when input is a string', () => {
+    const result = ArrayFromString(itemsSchema).parse('a,b,c');
+    expect(result).toEqual(['a', 'b', 'c']);
+  });
+
+  it('should return an empty array when input is an empty string', () => {
+    const result = ArrayFromString(itemsSchema).parse('');
+    expect(result).toEqual([]);
+  });
+
+  it('should return the input as is when it is not a string', () => {
+    const input = ['a', 'b', 'c'];
+    const result = ArrayFromString(itemsSchema).parse(input);
+    expect(result).toEqual(input);
+  });
+
+  it('should throw an error when input is not a string or an array', () => {
+    expect(() => ArrayFromString(itemsSchema).parse(123)).toThrow();
+  });
+});
diff --git a/packages/kbn-zod-helpers/src/array_from_string.ts b/packages/kbn-zod-helpers/src/array_from_string.ts
new file mode 100644
index 0000000000000..24247e2d14c40
--- /dev/null
+++ b/packages/kbn-zod-helpers/src/array_from_string.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import * as z from 'zod';
+
+/**
+ * This is a helper schema to convert comma separated strings to arrays. Useful
+ * for processing query params.
+ *
+ * @param schema Array items schema
+ * @returns Array schema that accepts a comma-separated string as input
+ */
+export function ArrayFromString<T extends z.ZodTypeAny>(schema: T) {
+  return z.preprocess(
+    (value: unknown) =>
+      typeof value === 'string' ? (value === '' ? [] : value.split(',')) : value,
+    z.array(schema)
+  );
+}
diff --git a/packages/kbn-zod-helpers/src/boolean_from_string.test.ts b/packages/kbn-zod-helpers/src/boolean_from_string.test.ts
new file mode 100644
index 0000000000000..842eda2d6e9a2
--- /dev/null
+++ b/packages/kbn-zod-helpers/src/boolean_from_string.test.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { BooleanFromString } from './boolean_from_string';
+
+describe('BooleanFromString', () => {
+  it('should return true when input is "true"', () => {
+    expect(BooleanFromString.parse('true')).toBe(true);
+  });
+
+  it('should return false when input is "false"', () => {
+    expect(BooleanFromString.parse('false')).toBe(false);
+  });
+
+  it('should return true when input is true', () => {
+    expect(BooleanFromString.parse(true)).toBe(true);
+  });
+
+  it('should return false when input is false', () => {
+    expect(BooleanFromString.parse(false)).toBe(false);
+  });
+
+  it('should throw an error when input is not a boolean or "true" or "false"', () => {
+    expect(() => BooleanFromString.parse('not a boolean')).toThrow();
+    expect(() => BooleanFromString.parse(42)).toThrow();
+  });
+});
diff --git a/packages/kbn-zod-helpers/src/boolean_from_string.ts b/packages/kbn-zod-helpers/src/boolean_from_string.ts
new file mode 100644
index 0000000000000..d73e77ea1bddc
--- /dev/null
+++ b/packages/kbn-zod-helpers/src/boolean_from_string.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+import * as z from 'zod';
+
+/**
+ * This is a helper schema to convert a boolean string ("true" or "false") to a
+ * boolean. Useful for processing query params.
+ *
+ * Accepts "true" or "false" as strings, or a boolean.
+ */
+export const BooleanFromString = z
+  .enum(['true', 'false'])
+  .or(z.boolean())
+  .transform((value) => {
+    if (typeof value === 'boolean') {
+      return value;
+    }
+    return value === 'true';
+  });
diff --git a/packages/kbn-zod-helpers/src/expect_parse_success.ts b/packages/kbn-zod-helpers/src/expect_parse_success.ts
index 4fc4a74047933..8c9e518c27b87 100644
--- a/packages/kbn-zod-helpers/src/expect_parse_success.ts
+++ b/packages/kbn-zod-helpers/src/expect_parse_success.ts
@@ -7,9 +7,14 @@
  */
 
 import type { SafeParseReturnType, SafeParseSuccess } from 'zod';
+import { stringifyZodError } from './stringify_zod_error';
 
 export function expectParseSuccess<Input, Output>(
   result: SafeParseReturnType<Input, Output>
 ): asserts result is SafeParseSuccess<Output> {
-  expect(result.success).toEqual(true);
+  if (!result.success) {
+    // We are throwing here instead of using assertions because we want to show
+    // the stringified error to assist with debugging.
+    throw new Error(`Expected parse success, got error: ${stringifyZodError(result.error)}`);
+  }
 }
diff --git a/packages/kbn-zod-helpers/src/safe_parse_result.ts b/packages/kbn-zod-helpers/src/safe_parse_result.ts
new file mode 100644
index 0000000000000..4e9b701a18faf
--- /dev/null
+++ b/packages/kbn-zod-helpers/src/safe_parse_result.ts
@@ -0,0 +1,28 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import * as z from 'zod';
+
+/**
+ * Safely parse a payload against a schema, returning the output or undefined.
+ * This method does not throw validation errors and is useful for validating
+ * optional objects when we don't care about errors.
+ *
+ * @param payload Schema payload
+ * @param schema Validation schema
+ * @returns Schema output or undefined
+ */
+export function safeParseResult<T extends z.ZodTypeAny>(
+  payload: unknown,
+  schema: T
+): T['_output'] | undefined {
+  const result = schema.safeParse(payload);
+  if (result.success) {
+    return result.data;
+  }
+}
diff --git a/packages/kbn-zod-helpers/src/stringify_zod_error.ts b/packages/kbn-zod-helpers/src/stringify_zod_error.ts
index b873870f99381..1fbaec8bbac85 100644
--- a/packages/kbn-zod-helpers/src/stringify_zod_error.ts
+++ b/packages/kbn-zod-helpers/src/stringify_zod_error.ts
@@ -6,16 +6,41 @@
  * Side Public License, v 1.
  */
 
-import { ZodError } from 'zod';
+import { ZodError, ZodIssue } from 'zod';
+
+const MAX_ERRORS = 5;
 
 export function stringifyZodError(err: ZodError<any>) {
-  return err.issues
-    .map((issue) => {
-      // If the path is empty, the error is for the root object
-      if (issue.path.length === 0) {
-        return issue.message;
-      }
-      return `${issue.path.join('.')}: ${issue.message}`;
-    })
-    .join(', ');
+  const errorMessages: string[] = [];
+
+  const issues = err.issues;
+
+  // Recursively traverse all issues
+  while (issues.length > 0) {
+    const issue = issues.shift()!;
+
+    // If the issue is an invalid union, we need to traverse all issues in the
+    // "unionErrors" array
+    if (issue.code === 'invalid_union') {
+      issues.push(...issue.unionErrors.flatMap((e) => e.issues));
+      continue;
+    }
+
+    errorMessages.push(stringifyIssue(issue));
+  }
+
+  const extraErrorCount = errorMessages.length - MAX_ERRORS;
+  if (extraErrorCount > 0) {
+    errorMessages.splice(MAX_ERRORS);
+    errorMessages.push(`and ${extraErrorCount} more`);
+  }
+
+  return errorMessages.join(', ');
+}
+
+function stringifyIssue(issue: ZodIssue) {
+  if (issue.path.length === 0) {
+    return issue.message;
+  }
+  return `${issue.path.join('.')}: ${issue.message}`;
 }
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts
index 22c507804e1d8..b52f61febbafb 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts
@@ -4,9 +4,7 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import type { ErrorSchema } from './error_schema_legacy';
+import type { ErrorSchema } from './error_schema.gen';
 
 export const getErrorSchemaMock = (
   id: string = '819eded6-e9c8-445b-a647-519aea39e063'
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts
index 0d243fc201fb9..f5c8440a07148 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts
@@ -8,12 +8,8 @@
 export * from './alerts';
 export * from './rule_response_actions';
 export * from './rule_schema';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-export * from './error_schema_legacy';
-export * from './pagination';
+export * from './error_schema.gen';
+export * from './pagination.gen';
 export * from './schemas';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-export * from './sorting_legacy';
+export * from './sorting.gen';
 export * from './warning_schema.gen';
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts
new file mode 100644
index 0000000000000..0a7336b8f78c3
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts
@@ -0,0 +1,35 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { z } from 'zod';
+
+/*
+ * NOTICE: Do not edit this file manually.
+ * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator.
+ */
+
+/**
+ * Page number
+ */
+export type Page = z.infer<typeof Page>;
+export const Page = z.number().int().min(1);
+
+/**
+ * Number of items per page
+ */
+export type PerPage = z.infer<typeof PerPage>;
+export const PerPage = z.number().int().min(0);
+
+export type PaginationResult = z.infer<typeof PaginationResult>;
+export const PaginationResult = z.object({
+  page: Page,
+  per_page: PerPage,
+  /**
+   * Total number of items
+   */
+  total: z.number().int().min(0),
+});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml
new file mode 100644
index 0000000000000..3afccce86e329
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml
@@ -0,0 +1,31 @@
+openapi: 3.0.0
+info:
+  title: Pagination Schema
+  version: 'not applicable'
+paths: {}
+components:
+  x-codegen-enabled: true
+  schemas:
+    Page:
+      type: integer
+      minimum: 1
+      description: Page number
+    PerPage:
+      type: integer
+      minimum: 0
+      description: Number of items per page
+    PaginationResult:
+      type: object
+      properties:
+        page:
+          $ref: '#/components/schemas/Page'
+        per_page:
+          $ref: '#/components/schemas/PerPage'
+        total:
+          type: integer
+          minimum: 0
+          description: Total number of items
+      required:
+        - page
+        - per_page
+        - total
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.ts
deleted file mode 100644
index bed2cade86df4..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-import { PositiveInteger, PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types';
-
-export type Page = t.TypeOf<typeof Page>;
-export const Page = PositiveIntegerGreaterThanZero;
-
-export type PageOrUndefined = t.TypeOf<typeof PageOrUndefined>;
-export const PageOrUndefined = t.union([Page, t.undefined]);
-
-export type PerPage = t.TypeOf<typeof PerPage>;
-export const PerPage = PositiveInteger;
-
-export type PerPageOrUndefined = t.TypeOf<typeof PerPageOrUndefined>;
-export const PerPageOrUndefined = t.union([PerPage, t.undefined]);
-
-export type PaginationResult = t.TypeOf<typeof PaginationResult>;
-export const PaginationResult = t.type({
-  page: Page,
-  per_page: PerPage,
-  total: PositiveInteger,
-});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts
index ccaf290dc5d33..e9956d88eb45a 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts
@@ -5,7 +5,4 @@
  * 2.0.
  */
 
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-export { RESPONSE_ACTION_TYPES, SUPPORTED_RESPONSE_ACTION_TYPES } from './response_actions_legacy';
 export * from './response_actions.gen';
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts
index 0d62dfd9c21f3..79ad21ddfb009 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts
@@ -367,26 +367,38 @@ export const RuleActionFrequency = z.object({
   throttle: RuleActionThrottle.nullable(),
 });
 
+export type RuleActionAlertsFilter = z.infer<typeof RuleActionAlertsFilter>;
+export const RuleActionAlertsFilter = z.object({}).catchall(z.unknown());
+
+/**
+ * Object containing the allowed connector fields, which varies according to the connector type.
+ */
+export type RuleActionParams = z.infer<typeof RuleActionParams>;
+export const RuleActionParams = z.object({}).catchall(z.unknown());
+
+/**
+ * Optionally groups actions by use cases. Use `default` for alert notifications.
+ */
+export type RuleActionGroup = z.infer<typeof RuleActionGroup>;
+export const RuleActionGroup = z.string();
+
+/**
+ * The connector ID.
+ */
+export type RuleActionId = z.infer<typeof RuleActionId>;
+export const RuleActionId = z.string();
+
 export type RuleAction = z.infer<typeof RuleAction>;
 export const RuleAction = z.object({
   /**
    * The action type used for sending notifications.
    */
   action_type_id: z.string(),
-  /**
-   * Optionally groups actions by use cases. Use `default` for alert notifications.
-   */
-  group: z.string(),
-  /**
-   * The connector ID.
-   */
-  id: z.string(),
-  /**
-   * Object containing the allowed connector fields, which varies according to the connector type.
-   */
-  params: z.object({}).catchall(z.unknown()),
+  group: RuleActionGroup,
+  id: RuleActionId,
+  params: RuleActionParams,
   uuid: NonEmptyString.optional(),
-  alerts_filter: z.object({}).catchall(z.unknown()).optional(),
+  alerts_filter: RuleActionAlertsFilter.optional(),
   frequency: RuleActionFrequency.optional(),
 });
 
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml
index 921f9350550b6..ad2bfaf76c4c0 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml
@@ -397,6 +397,23 @@ components:
         - notifyWhen
         - throttle
 
+    RuleActionAlertsFilter:
+      type: object
+      additionalProperties: true
+
+    RuleActionParams:
+      type: object
+      description: Object containing the allowed connector fields, which varies according to the connector type.
+      additionalProperties: true
+
+    RuleActionGroup:
+      type: string
+      description: Optionally groups actions by use cases. Use `default` for alert notifications.
+
+    RuleActionId:
+      type: string
+      description: The connector ID.
+
     RuleAction:
       type: object
       properties:
@@ -404,20 +421,15 @@ components:
           type: string
           description: The action type used for sending notifications.
         group:
-          type: string
-          description: Optionally groups actions by use cases. Use `default` for alert notifications.
+          $ref: '#/components/schemas/RuleActionGroup'
         id:
-          type: string
-          description: The connector ID.
+          $ref: '#/components/schemas/RuleActionId'
         params:
-          type: object
-          description: Object containing the allowed connector fields, which varies according to the connector type.
-          additionalProperties: true
+          $ref: '#/components/schemas/RuleActionParams'
         uuid:
           $ref: '#/components/schemas/NonEmptyString'
         alerts_filter:
-          type: object
-          additionalProperties: true
+          $ref: '#/components/schemas/RuleActionAlertsFilter'
         frequency:
           $ref: '#/components/schemas/RuleActionFrequency'
       required:
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts
index abbfa4903ea31..062c913354404 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts
@@ -25,7 +25,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, description: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", and 52 more"`
+    );
   });
 
   test('strips any unknown values', () => {
@@ -46,7 +48,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, description: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", and 52 more"`
+    );
   });
 
   test('[rule_id, description] does not validate', () => {
@@ -57,7 +61,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, and 44 more"`
+    );
   });
 
   test('[rule_id, description, from] does not validate', () => {
@@ -69,7 +75,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, and 44 more"`
+    );
   });
 
   test('[rule_id, description, from, to] does not validate', () => {
@@ -82,7 +90,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, and 44 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name] does not validate', () => {
@@ -96,7 +106,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, language: Invalid literal value, expected \\"eql\\", and 36 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name, severity] does not validate', () => {
@@ -111,7 +123,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, type: Invalid literal value, expected \\"eql\\", query: Required, language: Invalid literal value, expected \\"eql\\", risk_score: Required, and 28 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name, severity, type] does not validate', () => {
@@ -127,7 +141,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, type: Invalid literal value, expected \\"eql\\", query: Required, language: Invalid literal value, expected \\"eql\\", risk_score: Required, and 27 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name, severity, type, interval] does not validate', () => {
@@ -144,7 +160,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, type: Invalid literal value, expected \\"eql\\", query: Required, language: Invalid literal value, expected \\"eql\\", risk_score: Required, and 27 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name, severity, type, interval, index] does not validate', () => {
@@ -162,7 +180,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, type: Invalid literal value, expected \\"eql\\", query: Required, language: Invalid literal value, expected \\"eql\\", risk_score: Required, and 27 more"`
+    );
   });
 
   test('[rule_id, description, from, to, name, severity, type, query, index, interval] does validate', () => {
@@ -202,7 +222,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", risk_score: Required, risk_score: Required, and 22 more"`
+    );
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, query, language, risk_score] does validate', () => {
@@ -368,7 +390,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"references.0: Expected string, received number, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", references.0: Expected string, received number, references.0: Expected string, received number, and 22 more"`
+    );
   });
 
   test('indexes cannot be numbers', () => {
@@ -379,7 +403,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", index.0: Expected string, received number, index.0: Expected string, received number, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('saved_query type can have filters with it', () => {
@@ -401,7 +427,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", filters: Expected array, received string, filters: Expected array, received string, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('language validates with kuery', () => {
@@ -434,7 +462,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", language: Invalid enum value. Expected 'kuery' | 'lucene', received 'something-made-up', type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 19 more"`
+    );
   });
 
   test('max_signals cannot be negative', () => {
@@ -493,7 +523,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"tags.0: Expected string, received number, tags.1: Expected string, received number, tags.2: Expected string, received number, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", and 38 more"`
+    );
   });
 
   test('You cannot send in an array of threat that are missing "framework"', () => {
@@ -519,7 +551,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"threat.0.framework: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", threat.0.framework: Required, threat.0.framework: Required, and 22 more"`
+    );
   });
 
   test('You cannot send in an array of threat that are missing "tactic"', () => {
@@ -541,7 +575,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"threat.0.tactic: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", threat.0.tactic: Required, threat.0.tactic: Required, and 22 more"`
+    );
   });
 
   test('You can send in an array of threat that are missing "technique"', () => {
@@ -583,7 +619,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"false_positives.0: Expected string, received number, false_positives.1: Expected string, received number, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", false_positives.0: Expected string, received number, and 30 more"`
+    );
   });
 
   test('You cannot set the risk_score to 101', () => {
@@ -655,7 +693,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"meta: Expected object, received string, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", meta: Expected object, received string, meta: Expected object, received string, and 22 more"`
+    );
   });
 
   test('You can omit the query string when filters are present', () => {
@@ -690,7 +730,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', and 22 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "group"', () => {
@@ -701,7 +743,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.group: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.group: Required, actions.0.group: Required, and 22 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "id"', () => {
@@ -712,7 +756,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.id: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.id: Required, actions.0.id: Required, and 22 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "action_type_id"', () => {
@@ -723,7 +769,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.action_type_id: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.action_type_id: Required, actions.0.action_type_id: Required, and 22 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "params"', () => {
@@ -734,7 +782,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.params: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.params: Required, actions.0.params: Required, and 22 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are including "actionTypeId"', () => {
@@ -752,7 +802,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.action_type_id: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.action_type_id: Required, actions.0.action_type_id: Required, and 22 more"`
+    );
   });
 
   describe('note', () => {
@@ -788,7 +840,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"note: Expected string, received object, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", note: Expected string, received object, note: Expected string, received object, and 22 more"`
+      );
     });
 
     test('empty name is not valid', () => {
@@ -872,7 +926,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", type: Invalid literal value, expected \\"query\\", saved_id: Required, type: Invalid literal value, expected \\"threshold\\", and 14 more"`
+    );
   });
 
   test('threshold is required when type is threshold and will not validate without it', () => {
@@ -880,7 +936,9 @@ describe('rules schema', () => {
 
     const result = RuleCreateProps.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", type: Invalid literal value, expected \\"query\\", type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 14 more"`
+    );
   });
 
   test('threshold rules fail validation if threshold is not greater than 0', () => {
@@ -958,7 +1016,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"exceptions_list.0.list_id: Required, exceptions_list.0.type: Required, exceptions_list.0.namespace_type: Invalid enum value. Expected 'agnostic' | 'single', received 'not a namespace type', type: Invalid literal value, expected \\"eql\\", query: Required, and 43 more"`
+      );
     });
 
     test('[rule_id, description, from, to, index, name, severity, interval, type, filters, risk_score, note, and non-existent exceptions_list] does validate with empty exceptions_list', () => {
@@ -999,7 +1059,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", type: Invalid literal value, expected \\"query\\", type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 14 more"`
+      );
     });
 
     test('fails validation when threat_mapping is an empty array', () => {
@@ -1068,7 +1130,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", data_view_id: Expected string, received number, data_view_id: Expected string, received number, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+      );
     });
 
     test('it should validate a type of "query" with "data_view_id" defined', () => {
@@ -1131,7 +1195,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"investigation_fields.field_names: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", investigation_fields.field_names: Required, investigation_fields.field_names: Required, and 22 more"`
+      );
     });
 
     test('You can send in investigation_fields', () => {
@@ -1166,7 +1232,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"investigation_fields.field_names.0: Expected string, received number, investigation_fields.field_names.1: Expected string, received number, investigation_fields.field_names.2: Expected string, received number, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", and 38 more"`
+      );
     });
 
     test('You cannot send in investigation_fields without specifying fields', () => {
@@ -1177,7 +1245,9 @@ describe('rules schema', () => {
 
       const result = RuleCreateProps.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"investigation_fields.field_names: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", investigation_fields.field_names: Required, investigation_fields.field_names: Required, and 22 more"`
+      );
     });
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts
index e8573502cb662..d1432e5a67352 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts
@@ -40,7 +40,9 @@ describe('Rule response schema', () => {
 
     const result = RuleResponse.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", type: Invalid literal value, expected \\"query\\", type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 15 more"`
+    );
   });
 
   test('it should validate a type of "query" with a saved_id together', () => {
@@ -68,7 +70,9 @@ describe('Rule response schema', () => {
 
     const result = RuleResponse.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", type: Invalid literal value, expected \\"query\\", saved_id: Required, type: Invalid literal value, expected \\"threshold\\", and 14 more"`
+    );
   });
 
   test('it should validate a type of "timeline_id" if there is a "timeline_title" dependent', () => {
@@ -98,7 +102,9 @@ describe('Rule response schema', () => {
 
       const result = RuleResponse.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toEqual('Invalid input');
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"exceptions_list: Expected array, received string, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", exceptions_list: Expected array, received string, exceptions_list: Expected array, received string, and 22 more"`
+      );
     });
   });
 
@@ -232,6 +238,8 @@ describe('investigation_fields', () => {
 
     const result = RuleResponse.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toEqual('Invalid input');
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"investigation_fields: Expected object, received string, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", investigation_fields: Expected object, received string, investigation_fields: Expected object, received string, and 22 more"`
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions_legacy.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/response_actions.ts
similarity index 82%
rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions_legacy.ts
rename to x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/response_actions.ts
index 6947953b4d65d..8f176a9908041 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions_legacy.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/response_actions.ts
@@ -4,18 +4,9 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-
 import { arrayQueries, ecsMapping } from '@kbn/osquery-io-ts-types';
 import * as t from 'io-ts';
 import { ENABLED_AUTOMATED_RESPONSE_ACTION_COMMANDS } from '../../../../endpoint/service/response_actions/constants';
-import { ResponseActionTypesEnum } from './response_actions.gen';
-
-export const RESPONSE_ACTION_TYPES = {
-  OSQUERY: ResponseActionTypesEnum['.osquery'],
-  ENDPOINT: ResponseActionTypesEnum['.endpoint'],
-} as const;
-
-export const SUPPORTED_RESPONSE_ACTION_TYPES = Object.values(RESPONSE_ACTION_TYPES);
 
 // to enable using RESPONSE_ACTION_API_COMMANDS_NAMES as a type
 function keyObject<T extends readonly string[]>(arr: T): { [K in T[number]]: null } {
@@ -47,13 +38,13 @@ export const OsqueryParamsCamelCase = t.type({
 // When we create new response action types, create a union of types
 export type RuleResponseOsqueryAction = t.TypeOf<typeof RuleResponseOsqueryAction>;
 export const RuleResponseOsqueryAction = t.strict({
-  actionTypeId: t.literal(RESPONSE_ACTION_TYPES.OSQUERY),
+  actionTypeId: t.literal('.osquery'),
   params: OsqueryParamsCamelCase,
 });
 
 export type RuleResponseEndpointAction = t.TypeOf<typeof RuleResponseEndpointAction>;
 export const RuleResponseEndpointAction = t.strict({
-  actionTypeId: t.literal(RESPONSE_ACTION_TYPES.ENDPOINT),
+  actionTypeId: t.literal('.endpoint'),
   params: EndpointParams,
 });
 
@@ -67,12 +58,12 @@ export const ResponseActionRuleParamsOrUndefined = t.union([
 
 // When we create new response action types, create a union of types
 const OsqueryResponseAction = t.strict({
-  action_type_id: t.literal(RESPONSE_ACTION_TYPES.OSQUERY),
+  action_type_id: t.literal('.osquery'),
   params: OsqueryParams,
 });
 
 const EndpointResponseAction = t.strict({
-  action_type_id: t.literal(RESPONSE_ACTION_TYPES.ENDPOINT),
+  action_type_id: t.literal('.endpoint'),
   params: EndpointParams,
 });
 
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/rule_schemas.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/rule_schemas.ts
index e95fa38e0d2e6..4ec9ca19ee399 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/rule_schemas.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema_legacy/rule_schemas.ts
@@ -26,20 +26,10 @@ import {
   threat_mapping,
   threat_query,
 } from '@kbn/securitysolution-io-ts-alerting-types';
+import { PositiveInteger } from '@kbn/securitysolution-io-ts-types';
+import { ResponseActionArray } from './response_actions';
 
-import { RuleExecutionSummary } from '../../rule_monitoring/model';
-// eslint-disable-next-line no-restricted-imports
-import { ResponseActionArray } from '../rule_response_actions/response_actions_legacy';
-
-import {
-  anomaly_threshold,
-  created_at,
-  created_by,
-  revision,
-  saved_id,
-  updated_at,
-  updated_by,
-} from '../schemas';
+import { anomaly_threshold, saved_id } from '../schemas';
 
 import {
   AlertsIndex,
@@ -51,10 +41,7 @@ import {
   InvestigationFields,
   InvestigationGuide,
   IsRuleEnabled,
-  IsRuleImmutable,
   MaxSignals,
-  RelatedIntegrationArray,
-  RequiredFieldArray,
   RuleAuthorArray,
   RuleDescription,
   RuleFalsePositiveArray,
@@ -63,7 +50,6 @@ import {
   RuleMetadata,
   RuleName,
   RuleNameOverride,
-  RuleObjectId,
   RuleQuery,
   RuleReferenceArray,
   RuleSignatureId,
@@ -72,7 +58,6 @@ import {
   SavedObjectResolveAliasPurpose,
   SavedObjectResolveAliasTargetId,
   SavedObjectResolveOutcome,
-  SetupGuide,
   ThreatArray,
   TimelineTemplateId,
   TimelineTemplateTitle,
@@ -186,28 +171,24 @@ export const baseSchema = buildRuleSchemas({
   },
 });
 
-const responseRequiredFields = {
-  id: RuleObjectId,
-  rule_id: RuleSignatureId,
-  immutable: IsRuleImmutable,
-  updated_at,
-  updated_by,
-  created_at,
-  created_by,
-  revision,
-
-  // NOTE: For now, Related Integrations, Required Fields and Setup Guide are supported for prebuilt
-  // rules only. We don't want to allow users to edit these 3 fields via the API. If we added them
-  // to baseParams.defaultable, they would become a part of the request schema as optional fields.
-  // This is why we add them here, in order to add them only to the response schema.
-  related_integrations: RelatedIntegrationArray,
-  required_fields: RequiredFieldArray,
-  setup: SetupGuide,
-};
-
-const responseOptionalFields = {
-  execution_summary: RuleExecutionSummary,
-};
+export type DurationMetric = t.TypeOf<typeof DurationMetric>;
+export const DurationMetric = PositiveInteger;
+
+export type RuleExecutionMetrics = t.TypeOf<typeof RuleExecutionMetrics>;
+
+/**
+  @property total_search_duration_ms - "total time spent performing ES searches as measured by Kibana; 
+  includes network latency and time spent serializing/deserializing request/response",
+  @property total_indexing_duration_ms - "total time spent indexing documents during current rule execution cycle",
+  @property total_enrichment_duration_ms - total time spent enriching documents during current rule execution cycle
+  @property execution_gap_duration_s - "duration in seconds of execution gap"
+*/
+export const RuleExecutionMetrics = t.partial({
+  total_search_duration_ms: DurationMetric,
+  total_indexing_duration_ms: DurationMetric,
+  total_enrichment_duration_ms: DurationMetric,
+  execution_gap_duration_s: DurationMetric,
+});
 
 export type BaseCreateProps = t.TypeOf<typeof BaseCreateProps>;
 export const BaseCreateProps = baseSchema.create;
@@ -225,36 +206,9 @@ export const SharedCreateProps = t.intersection([
   t.exact(t.partial({ rule_id: RuleSignatureId })),
 ]);
 
-type SharedUpdateProps = t.TypeOf<typeof SharedUpdateProps>;
-const SharedUpdateProps = t.intersection([
-  baseSchema.create,
-  t.exact(t.partial({ rule_id: RuleSignatureId })),
-  t.exact(t.partial({ id: RuleObjectId })),
-]);
-
-type SharedPatchProps = t.TypeOf<typeof SharedPatchProps>;
-const SharedPatchProps = t.intersection([
-  baseSchema.patch,
-  t.exact(t.partial({ rule_id: RuleSignatureId, id: RuleObjectId })),
-]);
-
-export type SharedResponseProps = t.TypeOf<typeof SharedResponseProps>;
-export const SharedResponseProps = t.intersection([
-  baseSchema.response,
-  t.exact(t.type(responseRequiredFields)),
-  t.exact(t.partial(responseOptionalFields)),
-]);
-
 // -------------------------------------------------------------------------------------------------
 // EQL rule schema
 
-export enum QueryLanguage {
-  'kuery' = 'kuery',
-  'lucene' = 'lucene',
-  'eql' = 'eql',
-  'esql' = 'esql',
-}
-
 export type KqlQueryLanguage = t.TypeOf<typeof KqlQueryLanguage>;
 export const KqlQueryLanguage = t.keyof({ kuery: null, lucene: null });
 
@@ -278,21 +232,6 @@ const eqlSchema = buildRuleSchemas({
   defaultable: {},
 });
 
-export type EqlRule = t.TypeOf<typeof EqlRule>;
-export const EqlRule = t.intersection([SharedResponseProps, eqlSchema.response]);
-
-export type EqlRuleCreateProps = t.TypeOf<typeof EqlRuleCreateProps>;
-export const EqlRuleCreateProps = t.intersection([SharedCreateProps, eqlSchema.create]);
-
-export type EqlRuleUpdateProps = t.TypeOf<typeof EqlRuleUpdateProps>;
-export const EqlRuleUpdateProps = t.intersection([SharedUpdateProps, eqlSchema.create]);
-
-export type EqlRulePatchProps = t.TypeOf<typeof EqlRulePatchProps>;
-export const EqlRulePatchProps = t.intersection([SharedPatchProps, eqlSchema.patch]);
-
-export type EqlPatchParams = t.TypeOf<typeof EqlPatchParams>;
-export const EqlPatchParams = eqlSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // ES|QL rule schema
 
@@ -309,21 +248,6 @@ const esqlSchema = buildRuleSchemas({
   defaultable: {},
 });
 
-export type EsqlRule = t.TypeOf<typeof EsqlRule>;
-export const EsqlRule = t.intersection([SharedResponseProps, esqlSchema.response]);
-
-export type EsqlRuleCreateProps = t.TypeOf<typeof EsqlRuleCreateProps>;
-export const EsqlRuleCreateProps = t.intersection([SharedCreateProps, esqlSchema.create]);
-
-export type EsqlRuleUpdateProps = t.TypeOf<typeof EsqlRuleUpdateProps>;
-export const EsqlRuleUpdateProps = t.intersection([SharedUpdateProps, esqlSchema.create]);
-
-export type EsqlRulePatchProps = t.TypeOf<typeof EsqlRulePatchProps>;
-export const EsqlRulePatchProps = t.intersection([SharedPatchProps, esqlSchema.patch]);
-
-export type EsqlPatchParams = t.TypeOf<typeof EsqlPatchParams>;
-export const EsqlPatchParams = esqlSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Indicator Match rule schema
 
@@ -351,30 +275,6 @@ const threatMatchSchema = buildRuleSchemas({
   },
 });
 
-export type ThreatMatchRule = t.TypeOf<typeof ThreatMatchRule>;
-export const ThreatMatchRule = t.intersection([SharedResponseProps, threatMatchSchema.response]);
-
-export type ThreatMatchRuleCreateProps = t.TypeOf<typeof ThreatMatchRuleCreateProps>;
-export const ThreatMatchRuleCreateProps = t.intersection([
-  SharedCreateProps,
-  threatMatchSchema.create,
-]);
-
-export type ThreatMatchRuleUpdateProps = t.TypeOf<typeof ThreatMatchRuleUpdateProps>;
-export const ThreatMatchRuleUpdateProps = t.intersection([
-  SharedUpdateProps,
-  threatMatchSchema.create,
-]);
-
-export type ThreatMatchRulePatchProps = t.TypeOf<typeof ThreatMatchRulePatchProps>;
-export const ThreatMatchRulePatchProps = t.intersection([
-  SharedPatchProps,
-  threatMatchSchema.patch,
-]);
-
-export type ThreatMatchPatchParams = t.TypeOf<typeof ThreatMatchPatchParams>;
-export const ThreatMatchPatchParams = threatMatchSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Custom Query rule schema
 
@@ -396,21 +296,6 @@ const querySchema = buildRuleSchemas({
   },
 });
 
-export type QueryRule = t.TypeOf<typeof QueryRule>;
-export const QueryRule = t.intersection([SharedResponseProps, querySchema.response]);
-
-export type QueryRuleCreateProps = t.TypeOf<typeof QueryRuleCreateProps>;
-export const QueryRuleCreateProps = t.intersection([SharedCreateProps, querySchema.create]);
-
-export type QueryRuleUpdateProps = t.TypeOf<typeof QueryRuleUpdateProps>;
-export const QueryRuleUpdateProps = t.intersection([SharedUpdateProps, querySchema.create]);
-
-export type QueryRulePatchProps = t.TypeOf<typeof QueryRulePatchProps>;
-export const QueryRulePatchProps = t.intersection([SharedPatchProps, querySchema.patch]);
-
-export type QueryPatchParams = t.TypeOf<typeof QueryPatchParams>;
-export const QueryPatchParams = querySchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Saved Query rule schema
 
@@ -434,27 +319,6 @@ const savedQuerySchema = buildRuleSchemas({
   },
 });
 
-export type SavedQueryRule = t.TypeOf<typeof SavedQueryRule>;
-export const SavedQueryRule = t.intersection([SharedResponseProps, savedQuerySchema.response]);
-
-export type SavedQueryRuleCreateProps = t.TypeOf<typeof SavedQueryRuleCreateProps>;
-export const SavedQueryRuleCreateProps = t.intersection([
-  SharedCreateProps,
-  savedQuerySchema.create,
-]);
-
-export type SavedQueryRuleUpdateProps = t.TypeOf<typeof SavedQueryRuleUpdateProps>;
-export const SavedQueryRuleUpdateProps = t.intersection([
-  SharedUpdateProps,
-  savedQuerySchema.create,
-]);
-
-export type SavedQueryRulePatchProps = t.TypeOf<typeof SavedQueryRulePatchProps>;
-export const SavedQueryRulePatchProps = t.intersection([SharedPatchProps, savedQuerySchema.patch]);
-
-export type SavedQueryPatchParams = t.TypeOf<typeof SavedQueryPatchParams>;
-export const SavedQueryPatchParams = savedQuerySchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Threshold rule schema
 
@@ -475,21 +339,6 @@ const thresholdSchema = buildRuleSchemas({
   },
 });
 
-export type ThresholdRule = t.TypeOf<typeof ThresholdRule>;
-export const ThresholdRule = t.intersection([SharedResponseProps, thresholdSchema.response]);
-
-export type ThresholdRuleCreateProps = t.TypeOf<typeof ThresholdRuleCreateProps>;
-export const ThresholdRuleCreateProps = t.intersection([SharedCreateProps, thresholdSchema.create]);
-
-export type ThresholdRuleUpdateProps = t.TypeOf<typeof ThresholdRuleUpdateProps>;
-export const ThresholdRuleUpdateProps = t.intersection([SharedUpdateProps, thresholdSchema.create]);
-
-export type ThresholdRulePatchProps = t.TypeOf<typeof ThresholdRulePatchProps>;
-export const ThresholdRulePatchProps = t.intersection([SharedPatchProps, thresholdSchema.patch]);
-
-export type ThresholdPatchParams = t.TypeOf<typeof ThresholdPatchParams>;
-export const ThresholdPatchParams = thresholdSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Machine Learning rule schema
 
@@ -503,33 +352,6 @@ const machineLearningSchema = buildRuleSchemas({
   defaultable: {},
 });
 
-export type MachineLearningRule = t.TypeOf<typeof MachineLearningRule>;
-export const MachineLearningRule = t.intersection([
-  SharedResponseProps,
-  machineLearningSchema.response,
-]);
-
-export type MachineLearningRuleCreateProps = t.TypeOf<typeof MachineLearningRuleCreateProps>;
-export const MachineLearningRuleCreateProps = t.intersection([
-  SharedCreateProps,
-  machineLearningSchema.create,
-]);
-
-export type MachineLearningRuleUpdateProps = t.TypeOf<typeof MachineLearningRuleUpdateProps>;
-export const MachineLearningRuleUpdateProps = t.intersection([
-  SharedUpdateProps,
-  machineLearningSchema.create,
-]);
-
-export type MachineLearningRulePatchProps = t.TypeOf<typeof MachineLearningRulePatchProps>;
-export const MachineLearningRulePatchProps = t.intersection([
-  SharedPatchProps,
-  machineLearningSchema.patch,
-]);
-
-export type MachineLearningPatchParams = t.TypeOf<typeof MachineLearningPatchParams>;
-export const MachineLearningPatchParams = machineLearningSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // New Terms rule schema
 
@@ -550,21 +372,6 @@ const newTermsSchema = buildRuleSchemas({
   },
 });
 
-export type NewTermsRule = t.TypeOf<typeof NewTermsRule>;
-export const NewTermsRule = t.intersection([SharedResponseProps, newTermsSchema.response]);
-
-export type NewTermsRuleCreateProps = t.TypeOf<typeof NewTermsRuleCreateProps>;
-export const NewTermsRuleCreateProps = t.intersection([SharedCreateProps, newTermsSchema.create]);
-
-export type NewTermsRuleUpdateProps = t.TypeOf<typeof NewTermsRuleUpdateProps>;
-export const NewTermsRuleUpdateProps = t.intersection([SharedUpdateProps, newTermsSchema.create]);
-
-export type NewTermsRulePatchProps = t.TypeOf<typeof NewTermsRulePatchProps>;
-export const NewTermsRulePatchProps = t.intersection([SharedPatchProps, newTermsSchema.patch]);
-
-export type NewTermsPatchParams = t.TypeOf<typeof NewTermsPatchParams>;
-export const NewTermsPatchParams = newTermsSchema.patch;
-
 // -------------------------------------------------------------------------------------------------
 // Combined type specific schemas
 
@@ -579,42 +386,3 @@ export const TypeSpecificCreateProps = t.union([
   machineLearningSchema.create,
   newTermsSchema.create,
 ]);
-
-export type TypeSpecificPatchProps = t.TypeOf<typeof TypeSpecificPatchProps>;
-export const TypeSpecificPatchProps = t.union([
-  eqlSchema.patch,
-  esqlSchema.patch,
-  threatMatchSchema.patch,
-  querySchema.patch,
-  savedQuerySchema.patch,
-  thresholdSchema.patch,
-  machineLearningSchema.patch,
-  newTermsSchema.patch,
-]);
-
-export type TypeSpecificResponse = t.TypeOf<typeof TypeSpecificResponse>;
-export const TypeSpecificResponse = t.union([
-  eqlSchema.response,
-  esqlSchema.response,
-  threatMatchSchema.response,
-  querySchema.response,
-  savedQuerySchema.response,
-  thresholdSchema.response,
-  machineLearningSchema.response,
-  newTermsSchema.response,
-]);
-
-// -------------------------------------------------------------------------------------------------
-// Final combined schemas
-
-export type RuleCreateProps = t.TypeOf<typeof RuleCreateProps>;
-export const RuleCreateProps = t.intersection([TypeSpecificCreateProps, SharedCreateProps]);
-
-export type RuleUpdateProps = t.TypeOf<typeof RuleUpdateProps>;
-export const RuleUpdateProps = t.intersection([TypeSpecificCreateProps, SharedUpdateProps]);
-
-export type RulePatchProps = t.TypeOf<typeof RulePatchProps>;
-export const RulePatchProps = t.intersection([TypeSpecificPatchProps, SharedPatchProps]);
-
-export type RuleResponse = t.TypeOf<typeof RuleResponse>;
-export const RuleResponse = t.intersection([TypeSpecificResponse, SharedResponseProps]);
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
index 9c325d1e70fc0..35a394edcb6ad 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
@@ -33,12 +33,6 @@ export type Status = t.TypeOf<typeof status>;
 
 export const conflicts = t.keyof({ abort: null, proceed: null });
 
-export const queryFilter = t.string;
-export type QueryFilter = t.TypeOf<typeof queryFilter>;
-
-export const queryFilterOrUndefined = t.union([queryFilter, t.undefined]);
-export type QueryFilterOrUndefined = t.TypeOf<typeof queryFilterOrUndefined>;
-
 export const signal_ids = t.array(t.string);
 export type SignalIds = t.TypeOf<typeof signal_ids>;
 
@@ -48,23 +42,12 @@ export const signal_status_query = t.object;
 export const alert_tag_ids = t.array(t.string);
 export type AlertTagIds = t.TypeOf<typeof alert_tag_ids>;
 
-export const fields = t.array(t.string);
-export type Fields = t.TypeOf<typeof fields>;
-export const fieldsOrUndefined = t.union([fields, t.undefined]);
-export type FieldsOrUndefined = t.TypeOf<typeof fieldsOrUndefined>;
-
 export const created_at = IsoDateString;
 export const updated_at = IsoDateString;
 export const created_by = t.string;
 export const updated_by = t.string;
 
-export const status_code = PositiveInteger;
-export const message = t.string;
-export const perPage = PositiveInteger;
-export const total = PositiveInteger;
 export const revision = PositiveInteger;
-export const success = t.boolean;
-export const success_count = PositiveInteger;
 
 export const indexRecord = t.record(
   t.string,
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts
index 17ad724039d7e..04a5fadefe051 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts
@@ -5,85 +5,30 @@
  * 2.0.
  */
 
-import { pipe } from 'fp-ts/lib/pipeable';
-import { left } from 'fp-ts/lib/Either';
-import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { DefaultSortOrderAsc, DefaultSortOrderDesc } from './sorting_legacy';
-
-describe('Common sorting schemas', () => {
-  describe('DefaultSortOrderAsc', () => {
-    describe('Validation succeeds', () => {
-      it('when valid sort order is passed', () => {
-        const payload = 'desc';
-        const decoded = DefaultSortOrderAsc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
-      });
-    });
-
-    describe('Validation fails', () => {
-      it('when invalid sort order is passed', () => {
-        const payload = 'behind_you';
-        const decoded = DefaultSortOrderAsc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "behind_you" supplied to "DefaultSortOrderAsc"',
-        ]);
-        expect(message.schema).toEqual({});
-      });
-    });
-
-    describe('Validation sets the default sort order "asc"', () => {
-      it('when sort order is not passed', () => {
-        const payload = undefined;
-        const decoded = DefaultSortOrderAsc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual('asc');
-      });
-    });
+import { expectParseError, expectParseSuccess, stringifyZodError } from '@kbn/zod-helpers';
+import { SortOrder } from './sorting.gen';
+
+describe('SortOrder schema', () => {
+  it('accepts asc value', () => {
+    const payload = 'asc';
+    const result = SortOrder.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data).toEqual(payload);
   });
 
-  describe('DefaultSortOrderDesc', () => {
-    describe('Validation succeeds', () => {
-      it('when valid sort order is passed', () => {
-        const payload = 'asc';
-        const decoded = DefaultSortOrderDesc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
-      });
-    });
-
-    describe('Validation fails', () => {
-      it('when invalid sort order is passed', () => {
-        const payload = 'behind_you';
-        const decoded = DefaultSortOrderDesc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "behind_you" supplied to "DefaultSortOrderDesc"',
-        ]);
-        expect(message.schema).toEqual({});
-      });
-    });
-
-    describe('Validation sets the default sort order "desc"', () => {
-      it('when sort order is not passed', () => {
-        const payload = null;
-        const decoded = DefaultSortOrderDesc.decode(payload);
-        const message = pipe(decoded, foldLeftRight);
+  it('accepts desc value', () => {
+    const payload = 'desc';
+    const result = SortOrder.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data).toEqual(payload);
+  });
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual('desc');
-      });
-    });
+  it('fails on unknown value', () => {
+    const payload = 'invalid';
+    const result = SortOrder.safeParse(payload);
+    expectParseError(result);
+    expect(stringifyZodError(result.error)).toEqual(
+      "Invalid enum value. Expected 'asc' | 'desc', received 'invalid'"
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting_legacy.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting_legacy.ts
deleted file mode 100644
index 8aa8cf2831ea1..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting_legacy.ts
+++ /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; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-import type { Either } from 'fp-ts/lib/Either';
-import { capitalize } from 'lodash';
-
-export type SortOrder = t.TypeOf<typeof SortOrder>;
-export const SortOrder = t.keyof({ asc: null, desc: null });
-
-export type SortOrderOrUndefined = t.TypeOf<typeof SortOrderOrUndefined>;
-export const SortOrderOrUndefined = t.union([SortOrder, t.undefined]);
-
-const defaultSortOrder = (order: SortOrder): t.Type<SortOrder, SortOrder, unknown> => {
-  return new t.Type<SortOrder, SortOrder, unknown>(
-    `DefaultSortOrder${capitalize(order)}`,
-    SortOrder.is,
-    (input, context): Either<t.Errors, SortOrder> =>
-      input == null ? t.success(order) : SortOrder.validate(input, context),
-    t.identity
-  );
-};
-
-/**
- * Types the DefaultSortOrderAsc as:
- *   - If undefined, then a default sort order of 'asc' will be set
- *   - If a string is sent in, then the string will be validated to ensure it's a valid SortOrder
- */
-export const DefaultSortOrderAsc = defaultSortOrder('asc');
-
-/**
- * Types the DefaultSortOrderDesc as:
- *   - If undefined, then a default sort order of 'desc' will be set
- *   - If a string is sent in, then the string will be validated to ensure it's a valid SortOrder
- */
-export const DefaultSortOrderDesc = defaultSortOrder('desc');
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts
index feecf23faf293..75eb2b543d337 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts
@@ -12,9 +12,7 @@ import type {
   ExceptionListItemSchema,
 } from '@kbn/securitysolution-io-ts-list-types';
 import { createRuleExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { RuleObjectId } from '../../model/rule_schema_legacy';
+import { UUID } from '@kbn/securitysolution-io-ts-types';
 
 /**
  * URL path parameters of the API route.
@@ -22,7 +20,7 @@ import { RuleObjectId } from '../../model/rule_schema_legacy';
 export type CreateRuleExceptionsRequestParams = t.TypeOf<typeof CreateRuleExceptionsRequestParams>;
 export const CreateRuleExceptionsRequestParams = t.exact(
   t.type({
-    id: RuleObjectId,
+    id: UUID,
   })
 );
 
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts
new file mode 100644
index 0000000000000..d11eea7b16711
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts
@@ -0,0 +1,291 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { z } from 'zod';
+import { BooleanFromString } from '@kbn/zod-helpers';
+
+/*
+ * NOTICE: Do not edit this file manually.
+ * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator.
+ */
+
+import { RuleResponse } from '../../model/rule_schema/rule_schemas.gen';
+import {
+  RuleActionGroup,
+  RuleActionId,
+  RuleActionParams,
+  RuleActionFrequency,
+  RuleActionAlertsFilter,
+  IndexPatternArray,
+  RuleTagArray,
+  TimelineTemplateId,
+  TimelineTemplateTitle,
+} from '../../model/rule_schema/common_attributes.gen';
+
+export type BulkEditSkipReason = z.infer<typeof BulkEditSkipReason>;
+export const BulkEditSkipReason = z.literal('RULE_NOT_MODIFIED');
+
+export type BulkActionSkipResult = z.infer<typeof BulkActionSkipResult>;
+export const BulkActionSkipResult = z.object({
+  id: z.string(),
+  name: z.string().optional(),
+  skip_reason: BulkEditSkipReason,
+});
+
+export type RuleDetailsInError = z.infer<typeof RuleDetailsInError>;
+export const RuleDetailsInError = z.object({
+  id: z.string(),
+  name: z.string().optional(),
+});
+
+export type BulkActionsDryRunErrCode = z.infer<typeof BulkActionsDryRunErrCode>;
+export const BulkActionsDryRunErrCode = z.enum([
+  'IMMUTABLE',
+  'MACHINE_LEARNING_AUTH',
+  'MACHINE_LEARNING_INDEX_PATTERN',
+  'ESQL_INDEX_PATTERN',
+]);
+export type BulkActionsDryRunErrCodeEnum = typeof BulkActionsDryRunErrCode.enum;
+export const BulkActionsDryRunErrCodeEnum = BulkActionsDryRunErrCode.enum;
+
+export type NormalizedRuleError = z.infer<typeof NormalizedRuleError>;
+export const NormalizedRuleError = z.object({
+  message: z.string(),
+  status_code: z.number().int(),
+  err_code: BulkActionsDryRunErrCode.optional(),
+  rules: z.array(RuleDetailsInError),
+});
+
+export type BulkEditActionResults = z.infer<typeof BulkEditActionResults>;
+export const BulkEditActionResults = z.object({
+  updated: z.array(RuleResponse),
+  created: z.array(RuleResponse),
+  deleted: z.array(RuleResponse),
+  skipped: z.array(BulkActionSkipResult),
+});
+
+export type BulkEditActionSummary = z.infer<typeof BulkEditActionSummary>;
+export const BulkEditActionSummary = z.object({
+  failed: z.number().int(),
+  skipped: z.number().int(),
+  succeeded: z.number().int(),
+  total: z.number().int(),
+});
+
+export type BulkEditActionResponse = z.infer<typeof BulkEditActionResponse>;
+export const BulkEditActionResponse = z.object({
+  success: z.boolean().optional(),
+  status_code: z.number().int().optional(),
+  message: z.string().optional(),
+  rules_count: z.number().int().optional(),
+  attributes: z.object({
+    results: BulkEditActionResults,
+    summary: BulkEditActionSummary,
+    errors: z.array(NormalizedRuleError).optional(),
+  }),
+});
+
+export type BulkExportActionResponse = z.infer<typeof BulkExportActionResponse>;
+export const BulkExportActionResponse = z.string();
+
+export type BulkActionBase = z.infer<typeof BulkActionBase>;
+export const BulkActionBase = z.object({
+  /**
+   * Query to filter rules
+   */
+  query: z.string().optional(),
+  /**
+   * Array of rule IDs
+   */
+  ids: z.array(z.string()).min(1).optional(),
+});
+
+export type BulkDeleteRules = z.infer<typeof BulkDeleteRules>;
+export const BulkDeleteRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('delete'),
+  })
+);
+
+export type BulkDisableRules = z.infer<typeof BulkDisableRules>;
+export const BulkDisableRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('disable'),
+  })
+);
+
+export type BulkEnableRules = z.infer<typeof BulkEnableRules>;
+export const BulkEnableRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('enable'),
+  })
+);
+
+export type BulkExportRules = z.infer<typeof BulkExportRules>;
+export const BulkExportRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('export'),
+  })
+);
+
+export type BulkDuplicateRules = z.infer<typeof BulkDuplicateRules>;
+export const BulkDuplicateRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('duplicate'),
+    duplicate: z
+      .object({
+        /**
+         * Whether to copy exceptions from the original rule
+         */
+        include_exceptions: z.boolean(),
+        /**
+         * Whether to copy expired exceptions from the original rule
+         */
+        include_expired_exceptions: z.boolean(),
+      })
+      .optional(),
+  })
+);
+
+/**
+ * The condition for throttling the notification: 'rule', 'no_actions', or time duration
+ */
+export type ThrottleForBulkActions = z.infer<typeof ThrottleForBulkActions>;
+export const ThrottleForBulkActions = z.enum(['rule', '1h', '1d', '7d']);
+export type ThrottleForBulkActionsEnum = typeof ThrottleForBulkActions.enum;
+export const ThrottleForBulkActionsEnum = ThrottleForBulkActions.enum;
+
+export type BulkActionType = z.infer<typeof BulkActionType>;
+export const BulkActionType = z.enum([
+  'enable',
+  'disable',
+  'export',
+  'delete',
+  'duplicate',
+  'edit',
+]);
+export type BulkActionTypeEnum = typeof BulkActionType.enum;
+export const BulkActionTypeEnum = BulkActionType.enum;
+
+export type BulkActionEditType = z.infer<typeof BulkActionEditType>;
+export const BulkActionEditType = z.enum([
+  'add_tags',
+  'delete_tags',
+  'set_tags',
+  'add_index_patterns',
+  'delete_index_patterns',
+  'set_index_patterns',
+  'set_timeline',
+  'add_rule_actions',
+  'set_rule_actions',
+  'set_schedule',
+]);
+export type BulkActionEditTypeEnum = typeof BulkActionEditType.enum;
+export const BulkActionEditTypeEnum = BulkActionEditType.enum;
+
+export type NormalizedRuleAction = z.infer<typeof NormalizedRuleAction>;
+export const NormalizedRuleAction = z
+  .object({
+    group: RuleActionGroup,
+    id: RuleActionId,
+    params: RuleActionParams,
+    frequency: RuleActionFrequency.optional(),
+    alerts_filter: RuleActionAlertsFilter.optional(),
+  })
+  .strict();
+
+export type BulkActionEditPayloadRuleActions = z.infer<typeof BulkActionEditPayloadRuleActions>;
+export const BulkActionEditPayloadRuleActions = z.object({
+  type: z.enum(['add_rule_actions', 'set_rule_actions']),
+  value: z.object({
+    throttle: ThrottleForBulkActions.optional(),
+    actions: z.array(NormalizedRuleAction),
+  }),
+});
+
+export type BulkActionEditPayloadSchedule = z.infer<typeof BulkActionEditPayloadSchedule>;
+export const BulkActionEditPayloadSchedule = z.object({
+  type: z.literal('set_schedule'),
+  value: z.object({
+    /**
+     * Interval in which the rule is executed
+     */
+    interval: z.string().regex(/^[1-9]\d*[smh]$/),
+    /**
+     * Lookback time for the rule
+     */
+    lookback: z.string().regex(/^[1-9]\d*[smh]$/),
+  }),
+});
+
+export type BulkActionEditPayloadIndexPatterns = z.infer<typeof BulkActionEditPayloadIndexPatterns>;
+export const BulkActionEditPayloadIndexPatterns = z.object({
+  type: z.enum(['add_index_patterns', 'delete_index_patterns', 'set_index_patterns']),
+  value: IndexPatternArray,
+  overwrite_data_views: z.boolean().optional(),
+});
+
+export type BulkActionEditPayloadTags = z.infer<typeof BulkActionEditPayloadTags>;
+export const BulkActionEditPayloadTags = z.object({
+  type: z.enum(['add_tags', 'delete_tags', 'set_tags']),
+  value: RuleTagArray,
+});
+
+export type BulkActionEditPayloadTimeline = z.infer<typeof BulkActionEditPayloadTimeline>;
+export const BulkActionEditPayloadTimeline = z.object({
+  type: z.literal('set_timeline'),
+  value: z.object({
+    timeline_id: TimelineTemplateId,
+    timeline_title: TimelineTemplateTitle,
+  }),
+});
+
+export type BulkActionEditPayload = z.infer<typeof BulkActionEditPayload>;
+export const BulkActionEditPayload = z.union([
+  BulkActionEditPayloadTags,
+  BulkActionEditPayloadIndexPatterns,
+  BulkActionEditPayloadTimeline,
+  BulkActionEditPayloadRuleActions,
+  BulkActionEditPayloadSchedule,
+]);
+
+export type BulkEditRules = z.infer<typeof BulkEditRules>;
+export const BulkEditRules = BulkActionBase.and(
+  z.object({
+    action: z.literal('edit'),
+    /**
+     * Array of objects containing the edit operations
+     */
+    edit: z.array(BulkActionEditPayload).min(1),
+  })
+);
+
+export type PerformBulkActionRequestQuery = z.infer<typeof PerformBulkActionRequestQuery>;
+export const PerformBulkActionRequestQuery = z.object({
+  /**
+   * Enables dry run mode for the request call.
+   */
+  dry_run: BooleanFromString.optional(),
+});
+export type PerformBulkActionRequestQueryInput = z.input<typeof PerformBulkActionRequestQuery>;
+
+export type PerformBulkActionRequestBody = z.infer<typeof PerformBulkActionRequestBody>;
+export const PerformBulkActionRequestBody = z.union([
+  BulkDeleteRules,
+  BulkDisableRules,
+  BulkEnableRules,
+  BulkExportRules,
+  BulkDuplicateRules,
+  BulkEditRules,
+]);
+export type PerformBulkActionRequestBodyInput = z.input<typeof PerformBulkActionRequestBody>;
+
+export type PerformBulkActionResponse = z.infer<typeof PerformBulkActionResponse>;
+export const PerformBulkActionResponse = z.union([
+  BulkEditActionResponse,
+  BulkExportActionResponse,
+]);
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts
index 66ce78ff9b615..fa4fcefbcad1a 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts
@@ -5,18 +5,18 @@
  * 2.0.
  */
 
-import { BulkActionType, BulkActionEditType } from './bulk_actions_route';
-import type { PerformBulkActionRequestBody } from './bulk_actions_route';
+import type { PerformBulkActionRequestBody } from './bulk_actions_route.gen';
+import { BulkActionEditTypeEnum, BulkActionTypeEnum } from './bulk_actions_route.gen';
 
 export const getPerformBulkActionSchemaMock = (): PerformBulkActionRequestBody => ({
   query: '',
   ids: undefined,
-  action: BulkActionType.disable,
+  action: BulkActionTypeEnum.disable,
 });
 
 export const getPerformBulkActionEditSchemaMock = (): PerformBulkActionRequestBody => ({
   query: '',
   ids: undefined,
-  action: BulkActionType.edit,
-  [BulkActionType.edit]: [{ type: BulkActionEditType.add_tags, value: ['tag1'] }],
+  action: BulkActionTypeEnum.edit,
+  [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.add_tags, value: ['tag1'] }],
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml
index 8eba09881bbd9..583782f086ae7 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml
@@ -6,7 +6,7 @@ paths:
   /api/detection_engine/rules/_bulk_action:
     post:
       operationId: PerformBulkAction
-      x-codegen-enabled: false
+      x-codegen-enabled: true
       summary: Applies a bulk action to multiple rules
       description: The bulk action is applied to all rules that match the filter or to the list of rules by their IDs.
       tags:
@@ -22,19 +22,24 @@ paths:
         content:
           application/json:
             schema:
-              $ref: '#/components/schemas/PerformBulkActionRequest'
+              oneOf:
+                - $ref: '#/components/schemas/BulkDeleteRules'
+                - $ref: '#/components/schemas/BulkDisableRules'
+                - $ref: '#/components/schemas/BulkEnableRules'
+                - $ref: '#/components/schemas/BulkExportRules'
+                - $ref: '#/components/schemas/BulkDuplicateRules'
+                - $ref: '#/components/schemas/BulkEditRules'
       responses:
         200:
           description: OK
           content:
             application/json:
               schema:
-                type: array
-                items:
-                  $ref: '#/components/schemas/BulkEditActionResponse'
+                oneOf:
+                  - $ref: '#/components/schemas/BulkEditActionResponse'
+                  - $ref: '#/components/schemas/BulkExportActionResponse'
 
 components:
-  x-codegen-enabled: false
   schemas:
     BulkEditSkipReason:
       type: string
@@ -66,6 +71,11 @@ components:
 
     BulkActionsDryRunErrCode:
       type: string
+      enum:
+        - IMMUTABLE
+        - MACHINE_LEARNING_AUTH
+        - MACHINE_LEARNING_INDEX_PATTERN
+        - ESQL_INDEX_PATTERN
 
     NormalizedRuleError:
       type: object
@@ -127,35 +137,17 @@ components:
         - succeeded
         - total
 
-    BulkEditActionSuccessResponse:
+    BulkEditActionResponse:
       type: object
       properties:
         success:
           type: boolean
-        rules_count:
-          type: integer
-        attributes:
-          type: object
-          properties:
-            results:
-              $ref: '#/components/schemas/BulkEditActionResults'
-            summary:
-              $ref: '#/components/schemas/BulkEditActionSummary'
-          required:
-            - results
-            - summary
-      required:
-        - success
-        - rules_count
-        - attributes
-
-    BulkEditActionErrorResponse:
-      type: object
-      properties:
         status_code:
           type: integer
         message:
           type: string
+        rules_count:
+          type: integer
         attributes:
           type: object
           properties:
@@ -171,35 +163,23 @@ components:
             - results
             - summary
       required:
-        - status_code
-        - message
         - attributes
 
-    BulkEditActionResponse:
-      oneOf:
-        - $ref: '#/components/schemas/BulkEditActionSuccessResponse'
-        - $ref: '#/components/schemas/BulkEditActionErrorResponse'
+    BulkExportActionResponse:
+      type: string
 
     BulkActionBase:
-      oneOf:
-        - type: object
-          properties:
-            query:
-              type: string
-              description: Query to filter rules
-          required:
-            - query
-          additionalProperties: false
-
-        - type: object
-          properties:
-            ids:
-              type: array
-              description: Array of rule IDs
-              minItems: 1
-              items:
-                type: string
-          additionalProperties: false
+      type: object
+      properties:
+        query:
+          type: string
+          description: Query to filter rules
+        ids:
+          type: array
+          description: Array of rule IDs
+          minItems: 1
+          items:
+            type: string
 
     BulkDeleteRules:
       allOf:
@@ -262,35 +242,20 @@ components:
                 include_expired_exceptions:
                   type: boolean
                   description: Whether to copy expired exceptions from the original rule
+              required:
+                - include_exceptions
+                - include_expired_exceptions
           required:
             - action
 
-    RuleActionSummary:
-      type: boolean
-      description: Action summary indicates whether we will send a summary notification about all the generate alerts or notification per individual alert
-
-    RuleActionNotifyWhen:
-      type: string
-      description: "The condition for throttling the notification: 'onActionGroupChange', 'onActiveAlert',  or 'onThrottleInterval'"
-      enum:
-        - onActionGroupChange
-        - onActiveAlert
-        - onThrottleInterval
-
-    RuleActionThrottle:
+    ThrottleForBulkActions:
       type: string
       description: "The condition for throttling the notification: 'rule', 'no_actions', or time duration"
-
-    RuleActionFrequency:
-      type: object
-      properties:
-        summary:
-          $ref: '#/components/schemas/RuleActionSummary'
-        notifyWhen:
-          $ref: '#/components/schemas/RuleActionNotifyWhen'
-        throttle:
-          $ref: '#/components/schemas/RuleActionThrottle'
-          nullable: true
+      enum:
+        - rule
+        - 1h
+        - 1d
+        - 7d
 
     BulkActionType:
       type: string
@@ -316,6 +281,26 @@ components:
         - set_rule_actions
         - set_schedule
 
+    # Per rulesClient.bulkEdit rules actions operation contract (x-pack/plugins/alerting/server/rules_client/rules_client.ts) normalized rule action object is expected (NormalizedAlertAction) as value for the edit operation
+    NormalizedRuleAction:
+      type: object
+      properties:
+        group:
+          $ref: '../../model/rule_schema/common_attributes.schema.yaml#/components/schemas/RuleActionGroup'
+        id:
+          $ref: '../../model/rule_schema/common_attributes.schema.yaml#/components/schemas/RuleActionId'
+        params:
+          $ref: '../../model/rule_schema/common_attributes.schema.yaml#/components/schemas/RuleActionParams'
+        frequency:
+          $ref: '../../model/rule_schema/common_attributes.schema.yaml#/components/schemas/RuleActionFrequency'
+        alerts_filter:
+          $ref: '../../model/rule_schema/common_attributes.schema.yaml#/components/schemas/RuleActionAlertsFilter'
+      required:
+        - group
+        - id
+        - params
+      additionalProperties: false
+
     BulkActionEditPayloadRuleActions:
       type: object
       properties:
@@ -326,28 +311,11 @@ components:
           type: object
           properties:
             throttle:
-              $ref: '#/components/schemas/RuleActionThrottle'
+              $ref: '#/components/schemas/ThrottleForBulkActions'
             actions:
               type: array
               items:
-                type: object
-                properties:
-                  group:
-                    type: string
-                    description: Action group
-                  id:
-                    type: string
-                    description: Action ID
-                  params:
-                    type: object
-                    description: Action parameters
-                  frequency:
-                    $ref: '#/components/schemas/RuleActionFrequency'
-                    description: Action frequency
-                required:
-                  - group
-                  - id
-                  - params
+                $ref: '#/components/schemas/NormalizedRuleAction'
           required:
             - actions
       required:
@@ -366,12 +334,19 @@ components:
             interval:
               type: string
               description: Interval in which the rule is executed
+              pattern: '^[1-9]\d*[smh]$' # any number except zero followed by one of the suffixes 's', 'm', 'h'
+              example: '1h'
             lookback:
               type: string
               description: Lookback time for the rule
+              pattern: '^[1-9]\d*[smh]$' # any number except zero followed by one of the suffixes 's', 'm', 'h'
+              example: '1h'
           required:
             - interval
             - lookback
+      required:
+        - type
+        - value
 
     BulkActionEditPayloadIndexPatterns:
       type: object
@@ -441,22 +416,13 @@ components:
           properties:
             action:
               type: string
-              x-type: literal
               enum: [edit]
             edit:
               type: array
               description: Array of objects containing the edit operations
               items:
                 $ref: '#/components/schemas/BulkActionEditPayload'
+              minItems: 1
           required:
             - action
-            - rule
-
-    PerformBulkActionRequest:
-      oneOf:
-        - $ref: '#/components/schemas/BulkDeleteRules'
-        - $ref: '#/components/schemas/BulkDisableRules'
-        - $ref: '#/components/schemas/BulkEnableRules'
-        - $ref: '#/components/schemas/BulkExportRules'
-        - $ref: '#/components/schemas/BulkDuplicateRules'
-        - $ref: '#/components/schemas/BulkEditRules'
+            - edit
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts
index 70ae548674332..ff5289f79d98d 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts
@@ -5,19 +5,12 @@
  * 2.0.
  */
 
-import { left } from 'fp-ts/lib/Either';
-import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
+import { expectParseError, expectParseSuccess, stringifyZodError } from '@kbn/zod-helpers';
 import {
+  BulkActionEditTypeEnum,
+  BulkActionTypeEnum,
   PerformBulkActionRequestBody,
-  BulkActionType,
-  BulkActionEditType,
-} from './bulk_actions_route';
-
-const retrieveValidationMessage = (payload: unknown) => {
-  const decoded = PerformBulkActionRequestBody.decode(payload);
-  const checked = exactCheck(payload, decoded);
-  return foldLeftRight(checked);
-};
+} from './bulk_actions_route.gen';
 
 describe('Perform bulk action request schema', () => {
   describe('cases common to every bulk action', () => {
@@ -25,62 +18,64 @@ describe('Perform bulk action request schema', () => {
     test('valid request: missing query', () => {
       const payload: PerformBulkActionRequestBody = {
         query: undefined,
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
       };
-      const message = retrieveValidationMessage(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
 
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
 
     test('invalid request: missing action', () => {
       const payload: Omit<PerformBulkActionRequestBody, 'action'> = {
         query: 'name: test',
       };
-      const message = retrieveValidationMessage(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseError(result);
 
-      expect(getPaths(left(message.errors))).toEqual([
-        'Invalid value "undefined" supplied to "action"',
-        'Invalid value "undefined" supplied to "edit"',
-      ]);
-      expect(message.schema).toEqual({});
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 2 more"`
+      );
     });
 
     test('invalid request: unknown action', () => {
       const payload: Omit<PerformBulkActionRequestBody, 'action'> & { action: 'unknown' } = {
-        query: 'name: test',
         action: 'unknown',
       };
-      const message = retrieveValidationMessage(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseError(result);
 
-      expect(getPaths(left(message.errors))).toEqual([
-        'Invalid value "unknown" supplied to "action"',
-        'Invalid value "undefined" supplied to "edit"',
-      ]);
-      expect(message.schema).toEqual({});
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 2 more"`
+      );
     });
 
-    test('invalid request: unknown property', () => {
+    test('strips unknown properties', () => {
       const payload = {
         query: 'name: test',
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
         mock: ['id'],
       };
-      const message = retrieveValidationMessage(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
 
-      expect(getPaths(left(message.errors))).toEqual(['invalid keys "mock,["id"]"']);
-      expect(message.schema).toEqual({});
+      expect(result.data).toEqual({
+        query: 'name: test',
+        action: BulkActionTypeEnum.enable,
+      });
     });
 
     test('invalid request: wrong type for ids', () => {
       const payload = {
         ids: 'mock',
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
       };
-      const message = retrieveValidationMessage(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseError(result);
 
-      expect(getPaths(left(message.errors))).toEqual(['Invalid value "mock" supplied to "ids"']);
-      expect(message.schema).toEqual({});
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"ids: Expected array, received string, action: Invalid literal value, expected \\"delete\\", ids: Expected array, received string, action: Invalid literal value, expected \\"disable\\", ids: Expected array, received string, and 7 more"`
+      );
     });
   });
 
@@ -88,11 +83,11 @@ describe('Perform bulk action request schema', () => {
     test('valid request', () => {
       const payload: PerformBulkActionRequestBody = {
         query: 'name: test',
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
       };
-      const message = retrieveValidationMessage(payload);
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
   });
 
@@ -100,11 +95,11 @@ describe('Perform bulk action request schema', () => {
     test('valid request', () => {
       const payload: PerformBulkActionRequestBody = {
         query: 'name: test',
-        action: BulkActionType.disable,
+        action: BulkActionTypeEnum.disable,
       };
-      const message = retrieveValidationMessage(payload);
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
   });
 
@@ -112,11 +107,11 @@ describe('Perform bulk action request schema', () => {
     test('valid request', () => {
       const payload: PerformBulkActionRequestBody = {
         query: 'name: test',
-        action: BulkActionType.export,
+        action: BulkActionTypeEnum.export,
       };
-      const message = retrieveValidationMessage(payload);
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
   });
 
@@ -124,11 +119,11 @@ describe('Perform bulk action request schema', () => {
     test('valid request', () => {
       const payload: PerformBulkActionRequestBody = {
         query: 'name: test',
-        action: BulkActionType.delete,
+        action: BulkActionTypeEnum.delete,
       };
-      const message = retrieveValidationMessage(payload);
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
   });
 
@@ -136,15 +131,15 @@ describe('Perform bulk action request schema', () => {
     test('valid request', () => {
       const payload: PerformBulkActionRequestBody = {
         query: 'name: test',
-        action: BulkActionType.duplicate,
-        [BulkActionType.duplicate]: {
+        action: BulkActionTypeEnum.duplicate,
+        [BulkActionTypeEnum.duplicate]: {
           include_exceptions: false,
           include_expired_exceptions: false,
         },
       };
-      const message = retrieveValidationMessage(payload);
-      expect(getPaths(left(message.errors))).toEqual([]);
-      expect(message.schema).toEqual(payload);
+      const result = PerformBulkActionRequestBody.safeParse(payload);
+      expectParseSuccess(result);
+      expect(result.data).toEqual(payload);
     });
   });
 
@@ -153,47 +148,30 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: missing edit payload', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-        };
-
-        const message = retrieveValidationMessage(payload);
-
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "undefined" supplied to "edit"',
-        ]);
-        expect(message.schema).toEqual({});
-      });
-
-      test('invalid request: specified edit payload for another action', () => {
-        const payload = {
-          query: 'name: test',
-          action: BulkActionType.enable,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_tags, value: ['test-tag'] }],
+          action: BulkActionTypeEnum.edit,
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
+        expectParseError(result);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'invalid keys "edit,[{"type":"set_tags","value":["test-tag"]}]"',
-        ]);
-        expect(message.schema).toEqual({});
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 1 more"`
+        );
       });
 
       test('invalid request: wrong type for edit payload', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: { type: BulkActionEditType.set_tags, value: ['test-tag'] },
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: { type: BulkActionEditTypeEnum.set_tags, value: ['test-tag'] },
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
+        expectParseError(result);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "{"type":"set_tags","value":["test-tag"]}" supplied to "edit"',
-        ]);
-        expect(message.schema).toEqual({});
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 1 more"`
+        );
       });
     });
 
@@ -201,57 +179,61 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: wrong tags type', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_tags, value: 'test-tag' }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.set_tags, value: 'test-tag' }],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
+        expectParseError(result);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "test-tag" supplied to "edit,value"',
-          'Invalid value "set_tags" supplied to "edit,type"',
-        ]);
-        expect(message.schema).toEqual({});
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 9 more"`
+        );
       });
 
       test('valid request: add_tags edit action', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.add_tags, value: ['test-tag'] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.add_tags, value: ['test-tag'] },
+          ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
 
       test('valid request: set_tags edit action', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_tags, value: ['test-tag'] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.set_tags, value: ['test-tag'] },
+          ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
 
       test('valid request: delete_tags edit action', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.delete_tags, value: ['test-tag'] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.delete_tags, value: ['test-tag'] },
+          ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
     });
 
@@ -259,63 +241,61 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: wrong index_patterns type', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_tags, value: 'logs-*' }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.set_tags, value: 'logs-*' }],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
+        expectParseError(result);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "logs-*" supplied to "edit,value"',
-          'Invalid value "set_tags" supplied to "edit,type"',
-        ]);
-        expect(message.schema).toEqual({});
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 9 more"`
+        );
       });
 
       test('valid request: set_index_patterns edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
-            { type: BulkActionEditType.set_index_patterns, value: ['logs-*'] },
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.set_index_patterns, value: ['logs-*'] },
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
 
       test('valid request: add_index_patterns edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
-            { type: BulkActionEditType.add_index_patterns, value: ['logs-*'] },
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.add_index_patterns, value: ['logs-*'] },
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
 
       test('valid request: delete_index_patterns edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
-            { type: BulkActionEditType.delete_index_patterns, value: ['logs-*'] },
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
+            { type: BulkActionEditTypeEnum.delete_index_patterns, value: ['logs-*'] },
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
     });
 
@@ -323,27 +303,25 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: wrong timeline payload type', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_timeline, value: [] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.set_timeline, value: [] }],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "set_timeline" supplied to "edit,type"',
-          'Invalid value "[]" supplied to "edit,value"',
-        ]);
-        expect(message.schema).toEqual({});
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 7 more"`
+        );
       });
 
       test('invalid request: missing timeline_id', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_timeline,
+              type: BulkActionEditTypeEnum.set_timeline,
               value: {
                 timeline_title: 'Test timeline title',
               },
@@ -351,24 +329,21 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining([
-            'Invalid value "{"timeline_title":"Test timeline title"}" supplied to "edit,value"',
-            'Invalid value "undefined" supplied to "edit,value,timeline_id"',
-          ])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 10 more"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('valid request: set_timeline edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_timeline,
+              type: BulkActionEditTypeEnum.set_timeline,
               value: {
                 timeline_id: 'timelineid',
                 timeline_title: 'Test timeline title',
@@ -377,10 +352,10 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
     });
 
@@ -388,27 +363,25 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: wrong schedules payload type', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.set_schedule, value: [] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.set_schedule, value: [] }],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([
-          'Invalid value "edit" supplied to "action"',
-          'Invalid value "set_schedule" supplied to "edit,type"',
-          'Invalid value "[]" supplied to "edit,value"',
-        ]);
-        expect(message.schema).toEqual({});
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 7 more"`
+        );
       });
 
       test('invalid request: wrong type of payload data', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_schedule,
+              type: BulkActionEditTypeEnum.set_schedule,
               value: {
                 interval: '-10m',
                 lookback: '1m',
@@ -417,25 +390,21 @@ describe('Perform bulk action request schema', () => {
           ],
         } as PerformBulkActionRequestBody;
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining([
-            'Invalid value "edit" supplied to "action"',
-            'Invalid value "{"interval":"-10m","lookback":"1m"}" supplied to "edit,value"',
-            'Invalid value "-10m" supplied to "edit,value,interval"',
-          ])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"edit.0.value.interval: Invalid"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('invalid request: missing interval', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_schedule,
+              type: BulkActionEditTypeEnum.set_schedule,
               value: {
                 lookback: '1m',
               },
@@ -443,25 +412,21 @@ describe('Perform bulk action request schema', () => {
           ],
         } as PerformBulkActionRequestBody;
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining([
-            'Invalid value "edit" supplied to "action"',
-            'Invalid value "{"lookback":"1m"}" supplied to "edit,value"',
-            'Invalid value "undefined" supplied to "edit,value,interval"',
-          ])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 10 more"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('invalid request: missing lookback', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_schedule,
+              type: BulkActionEditTypeEnum.set_schedule,
               value: {
                 interval: '1m',
               },
@@ -469,25 +434,21 @@ describe('Perform bulk action request schema', () => {
           ],
         } as PerformBulkActionRequestBody;
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining([
-            'Invalid value "edit" supplied to "action"',
-            'Invalid value "{"interval":"1m"}" supplied to "edit,value"',
-            'Invalid value "undefined" supplied to "edit,value,lookback"',
-          ])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 10 more"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('valid request: set_schedule edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_schedule,
+              type: BulkActionEditTypeEnum.set_schedule,
               value: {
                 interval: '1m',
                 lookback: '1m',
@@ -496,10 +457,10 @@ describe('Perform bulk action request schema', () => {
           ],
         } as PerformBulkActionRequestBody;
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
     });
 
@@ -507,25 +468,25 @@ describe('Perform bulk action request schema', () => {
       test('invalid request: invalid rule actions payload', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [{ type: BulkActionEditType.add_rule_actions, value: [] }],
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [{ type: BulkActionEditTypeEnum.add_rule_actions, value: [] }],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining(['Invalid value "[]" supplied to "edit,value"'])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 7 more"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('invalid request: missing actions in payload', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.add_rule_actions,
+              type: BulkActionEditTypeEnum.add_rule_actions,
               value: {
                 throttle: '1h',
               },
@@ -533,21 +494,21 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining(['Invalid value "undefined" supplied to "edit,value,actions"'])
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"action: Invalid literal value, expected \\"delete\\", action: Invalid literal value, expected \\"disable\\", action: Invalid literal value, expected \\"enable\\", action: Invalid literal value, expected \\"export\\", action: Invalid literal value, expected \\"duplicate\\", and 11 more"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('invalid request: invalid action_type_id property in actions array', () => {
         const payload = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.add_rule_actions,
+              type: BulkActionEditTypeEnum.add_rule_actions,
               value: {
                 throttle: '1h',
                 actions: [
@@ -567,20 +528,20 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
-        expect(getPaths(left(message.errors))).toEqual(
-          expect.arrayContaining(['invalid keys "action_type_id"'])
+        const result = PerformBulkActionRequestBody.safeParse(payload);
+        expectParseError(result);
+        expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+          `"edit.0.value.actions.0: Unrecognized key(s) in object: 'action_type_id'"`
         );
-        expect(message.schema).toEqual({});
       });
 
       test('valid request: add_rule_actions edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.add_rule_actions,
+              type: BulkActionEditTypeEnum.add_rule_actions,
               value: {
                 throttle: '1h',
                 actions: [
@@ -599,19 +560,19 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
 
       test('valid request: set_rule_actions edit action', () => {
         const payload: PerformBulkActionRequestBody = {
           query: 'name: test',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_rule_actions,
+              type: BulkActionEditTypeEnum.set_rule_actions,
               value: {
                 throttle: '1h',
                 actions: [
@@ -632,10 +593,10 @@ describe('Perform bulk action request schema', () => {
           ],
         };
 
-        const message = retrieveValidationMessage(payload);
+        const result = PerformBulkActionRequestBody.safeParse(payload);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(payload);
+        expectParseSuccess(result);
+        expect(result.data).toEqual(payload);
       });
     });
   });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.ts
deleted file mode 100644
index 768626d08769d..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.ts
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-
-import { NonEmptyArray, TimeDuration } from '@kbn/securitysolution-io-ts-types';
-import {
-  RuleActionAlertsFilter,
-  RuleActionFrequency,
-  RuleActionGroup,
-  RuleActionId,
-  RuleActionParams,
-} from '@kbn/securitysolution-io-ts-alerting-types';
-
-import type { BulkActionSkipResult } from '@kbn/alerting-plugin/common';
-import type { RuleResponse } from '../../model';
-import type { BulkActionsDryRunErrCode } from '../../../../constants';
-
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import {
-  IndexPatternArray,
-  RuleQuery,
-  RuleTagArray,
-  TimelineTemplateId,
-  TimelineTemplateTitle,
-} from '../../model/rule_schema_legacy';
-
-export enum BulkActionType {
-  'enable' = 'enable',
-  'disable' = 'disable',
-  'export' = 'export',
-  'delete' = 'delete',
-  'duplicate' = 'duplicate',
-  'edit' = 'edit',
-}
-
-export enum BulkActionEditType {
-  'add_tags' = 'add_tags',
-  'delete_tags' = 'delete_tags',
-  'set_tags' = 'set_tags',
-  'add_index_patterns' = 'add_index_patterns',
-  'delete_index_patterns' = 'delete_index_patterns',
-  'set_index_patterns' = 'set_index_patterns',
-  'set_timeline' = 'set_timeline',
-  'add_rule_actions' = 'add_rule_actions',
-  'set_rule_actions' = 'set_rule_actions',
-  'set_schedule' = 'set_schedule',
-}
-
-export type ThrottleForBulkActions = t.TypeOf<typeof ThrottleForBulkActions>;
-export const ThrottleForBulkActions = t.union([
-  t.literal('rule'),
-  t.literal('1h'),
-  t.literal('1d'),
-  t.literal('7d'),
-]);
-
-type BulkActionEditPayloadTags = t.TypeOf<typeof BulkActionEditPayloadTags>;
-const BulkActionEditPayloadTags = t.type({
-  type: t.union([
-    t.literal(BulkActionEditType.add_tags),
-    t.literal(BulkActionEditType.delete_tags),
-    t.literal(BulkActionEditType.set_tags),
-  ]),
-  value: RuleTagArray,
-});
-
-export type BulkActionEditPayloadIndexPatterns = t.TypeOf<
-  typeof BulkActionEditPayloadIndexPatterns
->;
-const BulkActionEditPayloadIndexPatterns = t.intersection([
-  t.type({
-    type: t.union([
-      t.literal(BulkActionEditType.add_index_patterns),
-      t.literal(BulkActionEditType.delete_index_patterns),
-      t.literal(BulkActionEditType.set_index_patterns),
-    ]),
-    value: IndexPatternArray,
-  }),
-  t.exact(t.partial({ overwrite_data_views: t.boolean })),
-]);
-
-type BulkActionEditPayloadTimeline = t.TypeOf<typeof BulkActionEditPayloadTimeline>;
-const BulkActionEditPayloadTimeline = t.type({
-  type: t.literal(BulkActionEditType.set_timeline),
-  value: t.type({
-    timeline_id: TimelineTemplateId,
-    timeline_title: TimelineTemplateTitle,
-  }),
-});
-
-/**
- * per rulesClient.bulkEdit rules actions operation contract (x-pack/plugins/alerting/server/rules_client/rules_client.ts)
- * normalized rule action object is expected (NormalizedAlertAction) as value for the edit operation
- */
-export type NormalizedRuleAction = t.TypeOf<typeof NormalizedRuleAction>;
-export const NormalizedRuleAction = t.exact(
-  t.intersection([
-    t.type({
-      group: RuleActionGroup,
-      id: RuleActionId,
-      params: RuleActionParams,
-    }),
-    t.partial({ frequency: RuleActionFrequency }),
-    t.partial({ alerts_filter: RuleActionAlertsFilter }),
-  ])
-);
-
-export type BulkActionEditPayloadRuleActions = t.TypeOf<typeof BulkActionEditPayloadRuleActions>;
-export const BulkActionEditPayloadRuleActions = t.type({
-  type: t.union([
-    t.literal(BulkActionEditType.add_rule_actions),
-    t.literal(BulkActionEditType.set_rule_actions),
-  ]),
-  value: t.intersection([
-    t.partial({ throttle: ThrottleForBulkActions }),
-    t.type({
-      actions: t.array(NormalizedRuleAction),
-    }),
-  ]),
-});
-
-type BulkActionEditPayloadSchedule = t.TypeOf<typeof BulkActionEditPayloadSchedule>;
-const BulkActionEditPayloadSchedule = t.type({
-  type: t.literal(BulkActionEditType.set_schedule),
-  value: t.type({
-    interval: TimeDuration({ allowedUnits: ['s', 'm', 'h'] }),
-    lookback: TimeDuration({ allowedUnits: ['s', 'm', 'h'] }),
-  }),
-});
-
-export type BulkActionEditPayload = t.TypeOf<typeof BulkActionEditPayload>;
-export const BulkActionEditPayload = t.union([
-  BulkActionEditPayloadTags,
-  BulkActionEditPayloadIndexPatterns,
-  BulkActionEditPayloadTimeline,
-  BulkActionEditPayloadRuleActions,
-  BulkActionEditPayloadSchedule,
-]);
-
-const bulkActionDuplicatePayload = t.exact(
-  t.type({
-    include_exceptions: t.boolean,
-    include_expired_exceptions: t.boolean,
-  })
-);
-
-export type BulkActionDuplicatePayload = t.TypeOf<typeof bulkActionDuplicatePayload>;
-
-/**
- * actions that modify rules attributes
- */
-export type BulkActionEditForRuleAttributes =
-  | BulkActionEditPayloadTags
-  | BulkActionEditPayloadRuleActions
-  | BulkActionEditPayloadSchedule;
-
-/**
- * actions that modify rules params
- */
-export type BulkActionEditForRuleParams =
-  | BulkActionEditPayloadIndexPatterns
-  | BulkActionEditPayloadTimeline
-  | BulkActionEditPayloadSchedule;
-
-/**
- * Request body parameters of the API route.
- */
-export type PerformBulkActionRequestBody = t.TypeOf<typeof PerformBulkActionRequestBody>;
-export const PerformBulkActionRequestBody = t.intersection([
-  t.exact(
-    t.type({
-      query: t.union([RuleQuery, t.undefined]),
-    })
-  ),
-  t.exact(t.partial({ ids: NonEmptyArray(t.string) })),
-  t.union([
-    t.exact(
-      t.type({
-        action: t.union([
-          t.literal(BulkActionType.delete),
-          t.literal(BulkActionType.disable),
-          t.literal(BulkActionType.enable),
-          t.literal(BulkActionType.export),
-        ]),
-      })
-    ),
-    t.intersection([
-      t.exact(
-        t.type({
-          action: t.literal(BulkActionType.duplicate),
-        })
-      ),
-      t.exact(
-        t.partial({
-          [BulkActionType.duplicate]: bulkActionDuplicatePayload,
-        })
-      ),
-    ]),
-    t.exact(
-      t.type({
-        action: t.literal(BulkActionType.edit),
-        [BulkActionType.edit]: NonEmptyArray(BulkActionEditPayload),
-      })
-    ),
-  ]),
-]);
-
-/**
- * Query string parameters of the API route.
- */
-export type PerformBulkActionRequestQuery = t.TypeOf<typeof PerformBulkActionRequestQuery>;
-export const PerformBulkActionRequestQuery = t.exact(
-  t.partial({
-    dry_run: t.union([t.literal('true'), t.literal('false')]),
-  })
-);
-
-export interface RuleDetailsInError {
-  id: string;
-  name?: string;
-}
-export interface NormalizedRuleError {
-  message: string;
-  status_code: number;
-  err_code?: BulkActionsDryRunErrCode;
-  rules: RuleDetailsInError[];
-}
-export interface BulkEditActionResults {
-  updated: RuleResponse[];
-  created: RuleResponse[];
-  deleted: RuleResponse[];
-  skipped: BulkActionSkipResult[];
-}
-
-export interface BulkEditActionSummary {
-  failed: number;
-  skipped: number;
-  succeeded: number;
-  total: number;
-}
-export interface BulkEditActionSuccessResponse {
-  success: boolean;
-  rules_count: number;
-  attributes: {
-    results: BulkEditActionResults;
-    summary: BulkEditActionSummary;
-  };
-}
-export interface BulkEditActionErrorResponse {
-  status_code: number;
-  message: string;
-  attributes: {
-    results: BulkEditActionResults;
-    summary: BulkEditActionSummary;
-    errors?: NormalizedRuleError[];
-  };
-}
-
-export type BulkEditActionResponse = BulkEditActionSuccessResponse | BulkEditActionErrorResponse;
-
-export type BulkExportActionResponse = string;
-
-export type PerformBulkActionResponse = BulkEditActionResponse | BulkExportActionResponse;
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts
new file mode 100644
index 0000000000000..6e57e5abe2410
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts
@@ -0,0 +1,30 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type {
+  BulkActionEditPayloadIndexPatterns,
+  BulkActionEditPayloadRuleActions,
+  BulkActionEditPayloadSchedule,
+  BulkActionEditPayloadTags,
+  BulkActionEditPayloadTimeline,
+} from './bulk_actions_route.gen';
+
+/**
+ * actions that modify rules attributes
+ */
+export type BulkActionEditForRuleAttributes =
+  | BulkActionEditPayloadTags
+  | BulkActionEditPayloadRuleActions
+  | BulkActionEditPayloadSchedule;
+
+/**
+ * actions that modify rules params
+ */
+export type BulkActionEditForRuleParams =
+  | BulkActionEditPayloadIndexPatterns
+  | BulkActionEditPayloadTimeline
+  | BulkActionEditPayloadSchedule;
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts
index 40955f2eba40a..2e6cff31f8f7d 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts
@@ -26,7 +26,9 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.name: Required, 0.description: Required, 0.risk_score: Required, 0.severity: Required, 0.type: Invalid literal value, expected \\"eql\\", and 52 more"`
+    );
   });
 
   test('single array element does validate', () => {
@@ -56,7 +58,9 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where the first is valid but the second is invalid (risk_score) will not validate', () => {
@@ -68,7 +72,9 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"1: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"1.risk_score: Required, 1.type: Invalid literal value, expected \\"eql\\", 1.language: Invalid literal value, expected \\"eql\\", 1.risk_score: Required, 1.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where the first is invalid (risk_score) but the second is valid will not validate', () => {
@@ -80,7 +86,9 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where both are invalid (risk_score) will not validate', () => {
@@ -95,7 +103,7 @@ describe('Bulk create rules request schema', () => {
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
     expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
-      `"0: Invalid input, 1: Invalid input"`
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 49 more"`
     );
   });
 
@@ -121,7 +129,9 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', 0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', and 22 more"`
+    );
   });
 
   test('You can set "note" to a string', () => {
@@ -154,6 +164,8 @@ describe('Bulk create rules request schema', () => {
 
     const result = BulkCreateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.note: Expected string, received object, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.note: Expected string, received object, 0.note: Expected string, received object, and 22 more"`
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts
index 443a3e0862b45..d5325ad5ed13f 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts
@@ -70,6 +70,8 @@ describe('Bulk patch rules request schema', () => {
 
     const result = BulkPatchRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"1: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"1.note: Expected string, received object, 1.note: Expected string, received object, 1.note: Expected string, received object, 1.note: Expected string, received object, 1.note: Expected string, received object, and 3 more"`
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts
index 86a3a943b6626..3fa69c6ad24dc 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts
@@ -27,7 +27,9 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.name: Required, 0.description: Required, 0.risk_score: Required, 0.severity: Required, 0.type: Invalid literal value, expected \\"eql\\", and 52 more"`
+    );
   });
 
   test('single array element does validate', () => {
@@ -57,7 +59,9 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where the first is valid but the second is invalid (risk_score) will not validate', () => {
@@ -69,7 +73,9 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"1: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"1.risk_score: Required, 1.type: Invalid literal value, expected \\"eql\\", 1.language: Invalid literal value, expected \\"eql\\", 1.risk_score: Required, 1.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where the first is invalid (risk_score) but the second is valid will not validate', () => {
@@ -81,7 +87,9 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 22 more"`
+    );
   });
 
   test('two array elements where both are invalid (risk_score) will not validate', () => {
@@ -96,7 +104,7 @@ describe('Bulk update rules request schema', () => {
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
     expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
-      `"0: Invalid input, 1: Invalid input"`
+      `"0.risk_score: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.risk_score: Required, 0.risk_score: Required, and 49 more"`
     );
   });
 
@@ -122,7 +130,9 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', 0.severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'madeup', and 22 more"`
+    );
   });
 
   test('You can set "namespace" to a string', () => {
@@ -165,6 +175,8 @@ describe('Bulk update rules request schema', () => {
 
     const result = BulkUpdateRulesRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.note: Expected string, received object, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", 0.note: Expected string, received object, 0.note: Expected string, received object, and 22 more"`
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts
index d8e3c997e2279..413d83f9fee01 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts
@@ -45,7 +45,9 @@ describe('Bulk CRUD rules response schema', () => {
 
     const result = BulkCrudRulesResponse.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.error: Required, 0: Unrecognized key(s) in object: 'author', 'created_at', 'updated_at', 'created_by', 'description', 'enabled', 'false_positives', 'from', 'immutable', 'references', 'revision', 'severity', 'severity_mapping', 'updated_by', 'tags', 'to', 'threat', 'version', 'output_index', 'max_signals', 'risk_score', 'risk_score_mapping', 'interval', 'exceptions_list', 'related_integrations', 'required_fields', 'setup', 'throttle', 'actions', 'building_block_type', 'note', 'license', 'outcome', 'alias_target_id', 'alias_purpose', 'timeline_id', 'timeline_title', 'meta', 'rule_name_override', 'timestamp_override', 'timestamp_override_fallback_disabled', 'namespace', 'investigation_fields', 'query', 'type', 'language', 'index', 'data_view_id', 'filters', 'saved_id', 'response_actions', 'alert_suppression', 0.name: Required, 0.type: Invalid literal value, expected \\"eql\\", 0.language: Invalid literal value, expected \\"eql\\", and 24 more"`
+    );
   });
 
   test('it should NOT validate an invalid error message with a deleted value', () => {
@@ -56,7 +58,9 @@ describe('Bulk CRUD rules response schema', () => {
 
     const result = BulkCrudRulesResponse.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"0: Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"0.error: Required, 0.name: Required, 0.description: Required, 0.risk_score: Required, 0.severity: Required, and 267 more"`
+    );
   });
 
   test('it should omit any extra rule props', () => {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts
index b70b5a6a7d908..1994b3de5d453 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts
@@ -373,7 +373,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"references.0: Expected string, received number, references.0: Expected string, received number, references.0: Expected string, received number, references.0: Expected string, received number, references.0: Expected string, received number, and 3 more"`
+    );
   });
 
   test('indexes cannot be numbers', () => {
@@ -385,7 +387,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", index.0: Expected string, received number, index.0: Expected string, received number, type: Invalid literal value, expected \\"saved_query\\", index.0: Expected string, received number, and 8 more"`
+    );
   });
 
   test('saved_id is not required when type is saved_query and will validate without it', () => {
@@ -456,7 +460,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", language: Invalid enum value. Expected 'kuery' | 'lucene', received 'something-made-up', type: Invalid literal value, expected \\"saved_query\\", language: Invalid enum value. Expected 'kuery' | 'lucene', received 'something-made-up', and 9 more"`
+    );
   });
 
   test('max_signals cannot be negative', () => {
@@ -518,7 +524,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"meta: Expected object, received string, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", meta: Expected object, received string, meta: Expected object, received string, and 12 more"`
+    );
   });
 
   test('filters cannot be a string', () => {
@@ -529,7 +537,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", filters: Expected array, received string, filters: Expected array, received string, type: Invalid literal value, expected \\"saved_query\\", and 10 more"`
+    );
   });
 
   test('name cannot be an empty string', () => {
@@ -631,7 +641,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"threat.0.framework: Required, threat.0.framework: Required, threat.0.framework: Required, threat.0.framework: Required, threat.0.framework: Required, and 3 more"`
+    );
   });
 
   test('threat is invalid when updated with missing tactic sub-object', () => {
@@ -655,7 +667,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"threat.0.tactic: Required, threat.0.tactic: Required, threat.0.tactic: Required, threat.0.tactic: Required, threat.0.tactic: Required, and 3 more"`
+    );
   });
 
   test('threat is valid when updated with missing technique', () => {
@@ -700,7 +714,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk', and 3 more"`
+    );
   });
 
   describe('note', () => {
@@ -744,7 +760,9 @@ describe('Patch rule request schema', () => {
 
       const result = PatchRuleRequestBody.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"note: Expected string, received object, note: Expected string, received object, note: Expected string, received object, note: Expected string, received object, note: Expected string, received object, and 3 more"`
+      );
     });
   });
 
@@ -756,7 +774,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.group: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.group: Required, actions.0.group: Required, and 12 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "id"', () => {
@@ -767,7 +787,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.id: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.id: Required, actions.0.id: Required, and 12 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "params"', () => {
@@ -778,7 +800,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.params: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.params: Required, actions.0.params: Required, and 12 more"`
+    );
   });
 
   test('You cannot send in an array of actions that are including "actionTypeId"', () => {
@@ -796,7 +820,9 @@ describe('Patch rule request schema', () => {
 
     const result = PatchRuleRequestBody.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.action_type_id: Required, type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", actions.0.action_type_id: Required, actions.0.action_type_id: Required, and 12 more"`
+    );
   });
 
   describe('exception_list', () => {
@@ -862,7 +888,9 @@ describe('Patch rule request schema', () => {
 
       const result = PatchRuleRequestBody.safeParse(payload);
       expectParseError(result);
-      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"exceptions_list.0.list_id: Required, exceptions_list.0.type: Required, exceptions_list.0.namespace_type: Invalid enum value. Expected 'agnostic' | 'single', received 'not a namespace type', type: Invalid literal value, expected \\"eql\\", exceptions_list.0.list_id: Required, and 26 more"`
+      );
     });
 
     test('[rule_id, description, from, to, index, name, severity, interval, type, filters, risk_score, note, and non-existent exceptions_list] does validate with empty exceptions_list', () => {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts
index 01cd91216753f..2dfb54396c9ce 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts
@@ -6,6 +6,7 @@
  */
 
 import { z } from 'zod';
+import { BooleanFromString } from '@kbn/zod-helpers';
 
 /*
  * NOTICE: Do not edit this file manually.
@@ -19,13 +20,7 @@ export const ExportRulesRequestQuery = z.object({
   /**
    * Determines whether a summary of the exported rules is returned.
    */
-  exclude_export_details: z.preprocess(
-    (value: unknown) => (typeof value === 'boolean' ? String(value) : value),
-    z
-      .enum(['true', 'false'])
-      .default('false')
-      .transform((value) => value === 'true')
-  ),
+  exclude_export_details: BooleanFromString.optional().default(false),
   /**
    * File name for saving the exported rules.
    */
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts
index 49b56c6673218..783556d2076af 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts
@@ -120,7 +120,7 @@ describe('Export rules request schema', () => {
       const result = ExportRulesRequestQuery.safeParse(payload);
       expectParseError(result);
       expect(stringifyZodError(result.error)).toEqual(
-        `exclude_export_details: Invalid enum value. Expected 'true' | 'false', received 'invalid string'`
+        `exclude_export_details: Invalid enum value. Expected 'true' | 'false', received 'invalid string', exclude_export_details: Expected boolean, received string`
       );
     });
   });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts
new file mode 100644
index 0000000000000..a515cf70f9513
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts
@@ -0,0 +1,71 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { z } from 'zod';
+import { ArrayFromString } from '@kbn/zod-helpers';
+
+/*
+ * NOTICE: Do not edit this file manually.
+ * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator.
+ */
+
+import { SortOrder } from '../../model/sorting.gen';
+import { RuleResponse } from '../../model/rule_schema/rule_schemas.gen';
+
+export type FindRulesSortField = z.infer<typeof FindRulesSortField>;
+export const FindRulesSortField = z.enum([
+  'created_at',
+  'createdAt',
+  'enabled',
+  'execution_summary.last_execution.date',
+  'execution_summary.last_execution.metrics.execution_gap_duration_s',
+  'execution_summary.last_execution.metrics.total_indexing_duration_ms',
+  'execution_summary.last_execution.metrics.total_search_duration_ms',
+  'execution_summary.last_execution.status',
+  'name',
+  'risk_score',
+  'riskScore',
+  'severity',
+  'updated_at',
+  'updatedAt',
+]);
+export type FindRulesSortFieldEnum = typeof FindRulesSortField.enum;
+export const FindRulesSortFieldEnum = FindRulesSortField.enum;
+
+export type FindRulesRequestQuery = z.infer<typeof FindRulesRequestQuery>;
+export const FindRulesRequestQuery = z.object({
+  fields: ArrayFromString(z.string()).optional(),
+  /**
+   * Search query
+   */
+  filter: z.string().optional(),
+  /**
+   * Field to sort by
+   */
+  sort_field: FindRulesSortField.optional(),
+  /**
+   * Sort order
+   */
+  sort_order: SortOrder.optional(),
+  /**
+   * Page number
+   */
+  page: z.coerce.number().int().min(1).optional().default(1),
+  /**
+   * Rules per page
+   */
+  per_page: z.coerce.number().int().min(0).optional().default(20),
+});
+export type FindRulesRequestQueryInput = z.input<typeof FindRulesRequestQuery>;
+
+export type FindRulesResponse = z.infer<typeof FindRulesResponse>;
+export const FindRulesResponse = z.object({
+  page: z.number().int(),
+  perPage: z.number().int(),
+  total: z.number().int(),
+  data: z.array(RuleResponse),
+});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml
new file mode 100644
index 0000000000000..4fa1c14542ed0
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml
@@ -0,0 +1,98 @@
+openapi: 3.0.0
+info:
+  title: Find Rules API endpoint
+  version: 2023-10-31
+paths:
+  /api/detection_engine/rules/_find:
+    get:
+      operationId: FindRules
+      x-codegen-enabled: true
+      description: Finds rules that match the given query.
+      tags:
+        - Rules API
+      parameters:
+        - name: 'fields'
+          in: query
+          required: false
+          schema:
+            type: array
+            items:
+              type: string
+        - name: 'filter'
+          in: query
+          description: Search query
+          required: false
+          schema:
+            type: string
+        - name: 'sort_field'
+          in: query
+          description: Field to sort by
+          required: false
+          schema:
+            $ref: '#/components/schemas/FindRulesSortField'
+        - name: 'sort_order'
+          in: query
+          description: Sort order
+          required: false
+          schema:
+            $ref: '../../model/sorting.schema.yaml#/components/schemas/SortOrder'
+        - name: 'page'
+          in: query
+          description: Page number
+          required: false
+          schema:
+            type: integer
+            minimum: 1
+            default: 1
+        - name: 'per_page'
+          in: query
+          description: Rules per page
+          required: false
+          schema:
+            type: integer
+            minimum: 0
+            default: 20
+
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                type: object
+                properties:
+                  page:
+                    type: integer
+                  perPage:
+                    type: integer
+                  total:
+                    type: integer
+                  data:
+                    type: array
+                    items:
+                      $ref: '../../model/rule_schema/rule_schemas.schema.yaml#/components/schemas/RuleResponse'
+                required:
+                  - page
+                  - perPage
+                  - total
+                  - data
+
+components:
+  schemas:
+    FindRulesSortField:
+      type: string
+      enum:
+        - 'created_at'
+        - 'createdAt' # Legacy notation, keeping for backwards compatibility
+        - 'enabled'
+        - 'execution_summary.last_execution.date'
+        - 'execution_summary.last_execution.metrics.execution_gap_duration_s'
+        - 'execution_summary.last_execution.metrics.total_indexing_duration_ms'
+        - 'execution_summary.last_execution.metrics.total_search_duration_ms'
+        - 'execution_summary.last_execution.status'
+        - 'name'
+        - 'risk_score'
+        - 'riskScore' # Legacy notation, keeping for backwards compatibility
+        - 'severity'
+        - 'updated_at'
+        - 'updatedAt' # Legacy notation, keeping for backwards compatibility
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts
index 391826fed9923..aa4bb53ab7481 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts
@@ -5,21 +5,17 @@
  * 2.0.
  */
 
-import { left } from 'fp-ts/lib/Either';
-import { pipe } from 'fp-ts/lib/pipeable';
-import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
-
-import { FindRulesRequestQuery } from './find_rules_route';
+import { expectParseError, expectParseSuccess, stringifyZodError } from '@kbn/zod-helpers';
+import type { FindRulesRequestQueryInput } from './find_rules_route.gen';
+import { FindRulesRequestQuery } from './find_rules_route.gen';
 
 describe('Find rules request schema', () => {
   test('empty objects do validate', () => {
-    const payload: FindRulesRequestQuery = {};
+    const payload: FindRulesRequestQueryInput = {};
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect(message.schema).toEqual({
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data).toEqual({
       page: 1,
       per_page: 20,
     });
@@ -35,167 +31,126 @@ describe('Find rules request schema', () => {
       sort_order: 'asc',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect(message.schema).toEqual(payload);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data).toEqual(payload);
   });
 
-  test('made up parameters do not validate', () => {
-    const payload: Partial<FindRulesRequestQuery> & { madeUp: string } = {
+  test('made up parameters are ignored', () => {
+    const payload: Partial<FindRulesRequestQueryInput> & { madeUp: string } = {
       madeUp: 'invalid value',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['invalid keys "madeUp"']);
-    expect(message.schema).toEqual({});
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data).toEqual({
+      page: 1,
+      per_page: 20,
+    });
   });
 
   test('per_page validates', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       per_page: 5,
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).per_page).toEqual(payload.per_page);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.per_page).toEqual(payload.per_page);
   });
 
   test('page validates', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       page: 5,
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).page).toEqual(payload.page);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.page).toEqual(payload.page);
   });
 
   test('sort_field validates', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       sort_field: 'name',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).sort_field).toEqual('name');
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.sort_field).toEqual(payload.sort_field);
   });
 
   test('fields validates with a string', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       fields: ['some value'],
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).fields).toEqual(payload.fields);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.fields).toEqual(payload.fields);
   });
 
   test('fields validates with multiple strings', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       fields: ['some value 1', 'some value 2'],
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).fields).toEqual(payload.fields);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.fields).toEqual(payload.fields);
   });
 
   test('fields does not validate with a number', () => {
-    const payload: Omit<FindRulesRequestQuery, 'fields'> & { fields: number } = {
+    const payload: Omit<FindRulesRequestQueryInput, 'fields'> & { fields: number } = {
       fields: 5,
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "fields"']);
-    expect(message.schema).toEqual({});
-  });
-
-  test('per_page has a default of 20', () => {
-    const payload: FindRulesRequestQuery = {};
-
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).per_page).toEqual(20);
-  });
-
-  test('page has a default of 1', () => {
-    const payload: FindRulesRequestQuery = {};
-
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).page).toEqual(1);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseError(result);
+    expect(stringifyZodError(result.error)).toEqual('fields: Expected array, received number');
   });
 
   test('filter works with a string', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       filter: 'some value 1',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).filter).toEqual(payload.filter);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.filter).toEqual(payload.filter);
   });
 
   test('filter does not work with a number', () => {
-    const payload: Omit<FindRulesRequestQuery, 'filter'> & { filter: number } = {
+    const payload: Omit<FindRulesRequestQueryInput, 'filter'> & { filter: number } = {
       filter: 5,
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "filter"']);
-    expect(message.schema).toEqual({});
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseError(result);
+    expect(stringifyZodError(result.error)).toEqual('filter: Expected string, received number');
   });
 
   test('sort_order validates with desc and sort_field', () => {
-    const payload: FindRulesRequestQuery = {
+    const payload: FindRulesRequestQueryInput = {
       sort_order: 'desc',
       sort_field: 'name',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
-    expect((message.schema as FindRulesRequestQuery).sort_order).toEqual(payload.sort_order);
-    expect((message.schema as FindRulesRequestQuery).sort_field).toEqual(payload.sort_field);
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseSuccess(result);
+    expect(result.data.sort_order).toEqual(payload.sort_order);
+    expect(result.data.sort_field).toEqual(payload.sort_field);
   });
 
   test('sort_order does not validate with a string other than asc and desc', () => {
-    const payload: Omit<FindRulesRequestQuery, 'sort_order'> & { sort_order: string } = {
+    const payload: Omit<FindRulesRequestQueryInput, 'sort_order'> & { sort_order: string } = {
       sort_order: 'some other string',
       sort_field: 'name',
     };
 
-    const decoded = FindRulesRequestQuery.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "some other string" supplied to "sort_order"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = FindRulesRequestQuery.safeParse(payload);
+    expectParseError(result);
+    expect(stringifyZodError(result.error)).toEqual(
+      "sort_order: Invalid enum value. Expected 'asc' | 'desc', received 'some other string'"
+    );
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.ts
deleted file mode 100644
index 7e16b696bdd70..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-import { DefaultPerPage, DefaultPage } from '@kbn/securitysolution-io-ts-alerting-types';
-import type { RuleResponse } from '../../model';
-import { SortOrder, queryFilter, fields } from '../../model';
-
-export type FindRulesSortField = t.TypeOf<typeof FindRulesSortField>;
-export const FindRulesSortField = t.union([
-  t.literal('created_at'),
-  t.literal('createdAt'), // Legacy notation, keeping for backwards compatibility
-  t.literal('enabled'),
-  t.literal('execution_summary.last_execution.date'),
-  t.literal('execution_summary.last_execution.metrics.execution_gap_duration_s'),
-  t.literal('execution_summary.last_execution.metrics.total_indexing_duration_ms'),
-  t.literal('execution_summary.last_execution.metrics.total_search_duration_ms'),
-  t.literal('execution_summary.last_execution.status'),
-  t.literal('name'),
-  t.literal('risk_score'),
-  t.literal('riskScore'), // Legacy notation, keeping for backwards compatibility
-  t.literal('severity'),
-  t.literal('updated_at'),
-  t.literal('updatedAt'), // Legacy notation, keeping for backwards compatibility
-]);
-
-export type FindRulesSortFieldOrUndefined = t.TypeOf<typeof FindRulesSortFieldOrUndefined>;
-export const FindRulesSortFieldOrUndefined = t.union([FindRulesSortField, t.undefined]);
-
-/**
- * Query string parameters of the API route.
- */
-export type FindRulesRequestQuery = t.TypeOf<typeof FindRulesRequestQuery>;
-export const FindRulesRequestQuery = t.exact(
-  t.partial({
-    fields,
-    filter: queryFilter,
-    sort_field: FindRulesSortField,
-    sort_order: SortOrder,
-    page: DefaultPage, // defaults to 1
-    per_page: DefaultPerPage, // defaults to 20
-  })
-);
-
-export interface FindRulesResponse {
-  page: number;
-  perPage: number;
-  total: number;
-  data: RuleResponse[];
-}
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts
index 93cded33f6d94..c9fb9ce9a3524 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts
@@ -5,19 +5,19 @@
  * 2.0.
  */
 
-import type { FindRulesRequestQuery } from './find_rules_route';
+import type { FindRulesRequestQueryInput } from './find_rules_route.gen';
 import { validateFindRulesRequestQuery } from './request_schema_validation';
 
 describe('Find rules request schema, additional validation', () => {
   describe('validateFindRulesRequestQuery', () => {
     test('You can have an empty sort_field and empty sort_order', () => {
-      const schema: FindRulesRequestQuery = {};
+      const schema: FindRulesRequestQueryInput = {};
       const errors = validateFindRulesRequestQuery(schema);
       expect(errors).toEqual([]);
     });
 
     test('You can have both a sort_field and and a sort_order', () => {
-      const schema: FindRulesRequestQuery = {
+      const schema: FindRulesRequestQueryInput = {
         sort_field: 'name',
         sort_order: 'asc',
       };
@@ -26,7 +26,7 @@ describe('Find rules request schema, additional validation', () => {
     });
 
     test('You cannot have sort_field without sort_order', () => {
-      const schema: FindRulesRequestQuery = {
+      const schema: FindRulesRequestQueryInput = {
         sort_field: 'name',
       };
       const errors = validateFindRulesRequestQuery(schema);
@@ -36,7 +36,7 @@ describe('Find rules request schema, additional validation', () => {
     });
 
     test('You cannot have sort_order without sort_field', () => {
-      const schema: FindRulesRequestQuery = {
+      const schema: FindRulesRequestQueryInput = {
         sort_order: 'asc',
       };
       const errors = validateFindRulesRequestQuery(schema);
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts
index 769ef566d1efd..69d94be334e3f 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts
@@ -5,23 +5,16 @@
  * 2.0.
  */
 
-import type { FindRulesRequestQuery } from './find_rules_route';
+import type { FindRulesRequestQueryInput } from './find_rules_route.gen';
 
 /**
  * Additional validation that is implemented outside of the schema itself.
  */
-export const validateFindRulesRequestQuery = (query: FindRulesRequestQuery): string[] => {
-  return [...validateSortOrder(query)];
-};
-
-const validateSortOrder = (query: FindRulesRequestQuery): string[] => {
+export const validateFindRulesRequestQuery = (query: FindRulesRequestQueryInput): string[] => {
   if (query.sort_order != null || query.sort_field != null) {
     if (query.sort_order == null || query.sort_field == null) {
       return ['when "sort_order" and "sort_field" must exist together or not at all'];
-    } else {
-      return [];
     }
-  } else {
-    return [];
   }
+  return [];
 };
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts
index d0a105e28c2c8..225179a6c0489 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts
@@ -6,6 +6,7 @@
  */
 
 import { z } from 'zod';
+import { BooleanFromString } from '@kbn/zod-helpers';
 
 /*
  * NOTICE: Do not edit this file manually.
@@ -20,43 +21,19 @@ export const ImportRulesRequestQuery = z.object({
   /**
    * Determines whether existing rules with the same `rule_id` are overwritten.
    */
-  overwrite: z.preprocess(
-    (value: unknown) => (typeof value === 'boolean' ? String(value) : value),
-    z
-      .enum(['true', 'false'])
-      .default('false')
-      .transform((value) => value === 'true')
-  ),
+  overwrite: BooleanFromString.optional().default(false),
   /**
    * Determines whether existing exception lists with the same `list_id` are overwritten.
    */
-  overwrite_exceptions: z.preprocess(
-    (value: unknown) => (typeof value === 'boolean' ? String(value) : value),
-    z
-      .enum(['true', 'false'])
-      .default('false')
-      .transform((value) => value === 'true')
-  ),
+  overwrite_exceptions: BooleanFromString.optional().default(false),
   /**
    * Determines whether existing actions with the same `kibana.alert.rule.actions.id` are overwritten.
    */
-  overwrite_action_connectors: z.preprocess(
-    (value: unknown) => (typeof value === 'boolean' ? String(value) : value),
-    z
-      .enum(['true', 'false'])
-      .default('false')
-      .transform((value) => value === 'true')
-  ),
+  overwrite_action_connectors: BooleanFromString.optional().default(false),
   /**
    * Generates a new list ID for each imported exception list.
    */
-  as_new_list: z.preprocess(
-    (value: unknown) => (typeof value === 'boolean' ? String(value) : value),
-    z
-      .enum(['true', 'false'])
-      .default('false')
-      .transform((value) => value === 'true')
-  ),
+  as_new_list: BooleanFromString.optional().default(false),
 });
 export type ImportRulesRequestQueryInput = z.input<typeof ImportRulesRequestQuery>;
 
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts
index 7fdab0816d650..709e63a6ec402 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts
@@ -5,7 +5,8 @@
  * 2.0.
  */
 
-export * from './bulk_actions/bulk_actions_route';
+export * from './bulk_actions/bulk_actions_types';
+export * from './bulk_actions/bulk_actions_route.gen';
 export * from './bulk_crud/bulk_create_rules/bulk_create_rules_route.gen';
 export * from './bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen';
 export * from './bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen';
@@ -22,7 +23,7 @@ export * from './crud/update_rule/request_schema_validation';
 export * from './crud/update_rule/update_rule_route.gen';
 export * from './export_rules/export_rules_details_schema';
 export * from './export_rules/export_rules_route.gen';
-export * from './find_rules/find_rules_route';
+export * from './find_rules/find_rules_route.gen';
 export * from './find_rules/request_schema_validation';
 export * from './get_rule_management_filters/get_rule_management_filters_route';
 export * from './import_rules/import_rules_route.gen';
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts
index 1494e09b9c51a..ddb132ebf64bb 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts
@@ -10,15 +10,15 @@ export * from './detection_engine_health/get_rule_health/get_rule_health_route';
 export * from './detection_engine_health/get_space_health/get_space_health_route';
 export * from './detection_engine_health/setup_health/setup_health_route';
 export * from './detection_engine_health/model';
-export * from './rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route';
+export * from './rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen';
 export * from './rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen';
 export * from './urls';
 
-export * from './model/execution_event';
-export * from './model/execution_metrics';
+export * from './model/execution_event.gen';
+export * from './model/execution_metrics.gen';
 export * from './model/execution_result.gen';
 export * from './model/execution_settings';
 export * from './model/execution_status.gen';
 export * from './model/execution_status';
-export * from './model/execution_summary';
+export * from './model/execution_summary.gen';
 export * from './model/log_level';
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts
new file mode 100644
index 0000000000000..e493c5233a03d
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts
@@ -0,0 +1,44 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { z } from 'zod';
+
+/*
+ * NOTICE: Do not edit this file manually.
+ * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator.
+ */
+
+export type LogLevel = z.infer<typeof LogLevel>;
+export const LogLevel = z.enum(['trace', 'debug', 'info', 'warn', 'error']);
+export type LogLevelEnum = typeof LogLevel.enum;
+export const LogLevelEnum = LogLevel.enum;
+
+/**
+  * Type of a plain rule execution event:
+- message: Simple log message of some log level, such as debug, info or error.
+- status-change: We log an event of this type each time a rule changes its status during an execution.
+- execution-metrics: We log an event of this type at the end of a rule execution. It contains various execution metrics such as search and indexing durations.
+  */
+export type RuleExecutionEventType = z.infer<typeof RuleExecutionEventType>;
+export const RuleExecutionEventType = z.enum(['message', 'status-change', 'execution-metrics']);
+export type RuleExecutionEventTypeEnum = typeof RuleExecutionEventType.enum;
+export const RuleExecutionEventTypeEnum = RuleExecutionEventType.enum;
+
+/**
+  * Plain rule execution event. A rule can write many of them during each execution. Events can be of different types and log levels.
+
+NOTE: This is a read model of rule execution events and it is pretty generic. It contains only a subset of their fields: only those fields that are common to all types of execution events.
+  */
+export type RuleExecutionEvent = z.infer<typeof RuleExecutionEvent>;
+export const RuleExecutionEvent = z.object({
+  timestamp: z.string().datetime(),
+  sequence: z.number().int(),
+  level: LogLevel,
+  type: RuleExecutionEventType,
+  execution_id: z.string().min(1),
+  message: z.string(),
+});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts
index c8efaa8dd85b8..3d987356a37c9 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts
@@ -5,9 +5,8 @@
  * 2.0.
  */
 
-import type { RuleExecutionEvent } from './execution_event';
-import { RuleExecutionEventType } from './execution_event';
-import { LogLevel } from './log_level';
+import type { RuleExecutionEvent } from './execution_event.gen';
+import { LogLevelEnum, RuleExecutionEventTypeEnum } from './execution_event.gen';
 
 const DEFAULT_TIMESTAMP = '2021-12-28T10:10:00.806Z';
 const DEFAULT_SEQUENCE_NUMBER = 0;
@@ -17,13 +16,13 @@ const getMessageEvent = (props: Partial<RuleExecutionEvent> = {}): RuleExecution
     // Default values
     timestamp: DEFAULT_TIMESTAMP,
     sequence: DEFAULT_SEQUENCE_NUMBER,
-    level: LogLevel.debug,
+    level: LogLevelEnum.debug,
     execution_id: 'execution-id-1',
     message: 'Some message',
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    type: RuleExecutionEventType.message,
+    type: RuleExecutionEventTypeEnum.message,
   };
 };
 
@@ -37,8 +36,8 @@ const getRunningStatusChange = (props: Partial<RuleExecutionEvent> = {}): RuleEx
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    level: LogLevel.info,
-    type: RuleExecutionEventType['status-change'],
+    level: LogLevelEnum.info,
+    type: RuleExecutionEventTypeEnum['status-change'],
   };
 };
 
@@ -54,8 +53,8 @@ const getPartialFailureStatusChange = (
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    level: LogLevel.warn,
-    type: RuleExecutionEventType['status-change'],
+    level: LogLevelEnum.warn,
+    type: RuleExecutionEventTypeEnum['status-change'],
   };
 };
 
@@ -69,8 +68,8 @@ const getFailedStatusChange = (props: Partial<RuleExecutionEvent> = {}): RuleExe
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    level: LogLevel.error,
-    type: RuleExecutionEventType['status-change'],
+    level: LogLevelEnum.error,
+    type: RuleExecutionEventTypeEnum['status-change'],
   };
 };
 
@@ -84,8 +83,8 @@ const getSucceededStatusChange = (props: Partial<RuleExecutionEvent> = {}): Rule
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    level: LogLevel.info,
-    type: RuleExecutionEventType['status-change'],
+    level: LogLevelEnum.info,
+    type: RuleExecutionEventTypeEnum['status-change'],
   };
 };
 
@@ -99,8 +98,8 @@ const getExecutionMetricsEvent = (props: Partial<RuleExecutionEvent> = {}): Rule
     // Overridden values
     ...props,
     // Mandatory values for this type of event
-    level: LogLevel.debug,
-    type: RuleExecutionEventType['execution-metrics'],
+    level: LogLevelEnum.debug,
+    type: RuleExecutionEventTypeEnum['execution-metrics'],
   };
 };
 
@@ -120,7 +119,7 @@ const getSomeEvents = (): RuleExecutionEvent[] => [
   getMessageEvent({
     timestamp: '2021-12-28T10:10:06.806Z',
     sequence: 6,
-    level: LogLevel.debug,
+    level: LogLevelEnum.debug,
     message: 'Rule execution started',
   }),
   getFailedStatusChange({
@@ -138,7 +137,7 @@ const getSomeEvents = (): RuleExecutionEvent[] => [
   getMessageEvent({
     timestamp: '2021-12-28T10:10:02.806Z',
     sequence: 2,
-    level: LogLevel.error,
+    level: LogLevelEnum.error,
     message: 'Some error',
   }),
   getRunningStatusChange({
@@ -148,7 +147,7 @@ const getSomeEvents = (): RuleExecutionEvent[] => [
   getMessageEvent({
     timestamp: '2021-12-28T10:10:00.806Z',
     sequence: 0,
-    level: LogLevel.debug,
+    level: LogLevelEnum.debug,
     message: 'Rule execution started',
   }),
 ];
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml
new file mode 100644
index 0000000000000..d49a49d222401
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml
@@ -0,0 +1,49 @@
+openapi: '3.0.0'
+info:
+  title: Execution Event Schema
+  version: 'not applicable'
+paths: {}
+components:
+  x-codegen-enabled: true
+  schemas:
+    LogLevel:
+      type: string
+      enum: ['trace', 'debug', 'info', 'warn', 'error']
+
+    RuleExecutionEventType:
+      type: string
+      enum: ['message', 'status-change', 'execution-metrics']
+      description: |-
+        Type of a plain rule execution event:
+        - message: Simple log message of some log level, such as debug, info or error.
+        - status-change: We log an event of this type each time a rule changes its status during an execution.
+        - execution-metrics: We log an event of this type at the end of a rule execution. It contains various execution metrics such as search and indexing durations.
+
+    RuleExecutionEvent:
+      type: object
+      properties:
+        timestamp:
+          type: string
+          format: date-time
+        sequence:
+          type: integer
+        level:
+          $ref: '#/components/schemas/LogLevel'
+        type:
+          $ref: '#/components/schemas/RuleExecutionEventType'
+        execution_id:
+          type: string
+          minLength: 1
+        message:
+          type: string
+      required:
+        - timestamp
+        - sequence
+        - level
+        - type
+        - execution_id
+        - message
+      description: |-
+        Plain rule execution event. A rule can write many of them during each execution. Events can be of different types and log levels.
+
+        NOTE: This is a read model of rule execution events and it is pretty generic. It contains only a subset of their fields: only those fields that are common to all types of execution events.
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.ts
deleted file mode 100644
index 64acfb01e2e2a..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-import { enumeration, IsoDateString, NonEmptyString } from '@kbn/securitysolution-io-ts-types';
-import { enumFromString } from '../../../../utils/enum_from_string';
-import { TLogLevel } from './log_level';
-
-/**
- * Type of a plain rule execution event.
- */
-export enum RuleExecutionEventType {
-  /**
-   * Simple log message of some log level, such as debug, info or error.
-   */
-  'message' = 'message',
-
-  /**
-   * We log an event of this type each time a rule changes its status during an execution.
-   */
-  'status-change' = 'status-change',
-
-  /**
-   * We log an event of this type at the end of a rule execution. It contains various execution
-   * metrics such as search and indexing durations.
-   */
-  'execution-metrics' = 'execution-metrics',
-}
-
-export const TRuleExecutionEventType = enumeration(
-  'RuleExecutionEventType',
-  RuleExecutionEventType
-);
-
-/**
- * An array of supported types of rule execution events.
- */
-export const RULE_EXECUTION_EVENT_TYPES = Object.values(RuleExecutionEventType);
-
-export const ruleExecutionEventTypeFromString = enumFromString(RuleExecutionEventType);
-
-/**
- * Plain rule execution event. A rule can write many of them during each execution. Events can be
- * of different types and log levels.
- *
- * NOTE: This is a read model of rule execution events and it is pretty generic. It contains only a
- * subset of their fields: only those fields that are common to all types of execution events.
- */
-export type RuleExecutionEvent = t.TypeOf<typeof RuleExecutionEvent>;
-export const RuleExecutionEvent = t.type({
-  timestamp: IsoDateString,
-  sequence: t.number,
-  level: TLogLevel,
-  type: TRuleExecutionEventType,
-  execution_id: NonEmptyString,
-  message: t.string,
-});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts
index 235437cc5ed68..67aac49310a7d 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts
@@ -15,16 +15,19 @@ import { z } from 'zod';
 export type RuleExecutionMetrics = z.infer<typeof RuleExecutionMetrics>;
 export const RuleExecutionMetrics = z.object({
   /**
-   * Total time spent searching for events
+   * Total time spent performing ES searches as measured by Kibana; includes network latency and time spent serializing/deserializing request/response
    */
   total_search_duration_ms: z.number().int().min(0).optional(),
   /**
-   * Total time spent indexing alerts
+   * Total time spent indexing documents during current rule execution cycle
    */
   total_indexing_duration_ms: z.number().int().min(0).optional(),
+  /**
+   * Total time spent enriching documents during current rule execution cycle
+   */
   total_enrichment_duration_ms: z.number().int().min(0).optional(),
   /**
-   * Time gap between last execution and current execution
+   * Duration in seconds of execution gap
    */
   execution_gap_duration_s: z.number().int().min(0).optional(),
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml
index 7e04ef38a0a87..985da08e1df88 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml
@@ -10,17 +10,18 @@ components:
       type: object
       properties:
         total_search_duration_ms:
-          description: Total time spent searching for events
+          description: Total time spent performing ES searches as measured by Kibana; includes network latency and time spent serializing/deserializing request/response
           type: integer
           minimum: 0
         total_indexing_duration_ms:
-          description: Total time spent indexing alerts
+          description: Total time spent indexing documents during current rule execution cycle
           type: integer
           minimum: 0
         total_enrichment_duration_ms:
+          description: Total time spent enriching documents during current rule execution cycle
           type: integer
           minimum: 0
         execution_gap_duration_s:
-          description: Time gap between last execution and current execution
+          description: Duration in seconds of execution gap
           type: integer
           minimum: 0
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.ts
deleted file mode 100644
index b15c76119e441..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-import { PositiveInteger } from '@kbn/securitysolution-io-ts-types';
-
-export type DurationMetric = t.TypeOf<typeof DurationMetric>;
-export const DurationMetric = PositiveInteger;
-
-export type RuleExecutionMetrics = t.TypeOf<typeof RuleExecutionMetrics>;
-
-/**
-  @property total_search_duration_ms - "total time spent performing ES searches as measured by Kibana; 
-  includes network latency and time spent serializing/deserializing request/response",
-  @property total_indexing_duration_ms - "total time spent indexing documents during current rule execution cycle",
-  @property total_enrichment_duration_ms - total time spent enriching documents during current rule execution cycle
-  @property execution_gap_duration_s - "duration in seconds of execution gap"
-*/
-export const RuleExecutionMetrics = t.partial({
-  total_search_duration_ms: DurationMetric,
-  total_indexing_duration_ms: DurationMetric,
-  total_enrichment_duration_ms: DurationMetric,
-  execution_gap_duration_s: DurationMetric,
-});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts
index ae031191fd74d..903912b39cbb2 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts
@@ -6,14 +6,10 @@
  */
 
 import type { RuleLastRunOutcomes } from '@kbn/alerting-plugin/common';
-import { enumeration } from '@kbn/securitysolution-io-ts-types';
 import { assertUnreachable } from '../../../../utility_types';
 import type { RuleExecutionStatus, RuleExecutionStatusOrder } from './execution_status.gen';
 import { RuleExecutionStatusEnum } from './execution_status.gen';
 
-// TODO remove after the migration to Zod is done
-export const TRuleExecutionStatus = enumeration('RuleExecutionStatus', RuleExecutionStatusEnum);
-
 export const ruleExecutionStatusToNumber = (
   status: RuleExecutionStatus
 ): RuleExecutionStatusOrder => {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts
index 59482e759f902..5ffc034edd172 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts
@@ -6,7 +6,7 @@
  */
 
 import { RuleExecutionStatusEnum } from './execution_status.gen';
-import type { RuleExecutionSummary } from './execution_summary';
+import type { RuleExecutionSummary } from './execution_summary.gen';
 
 const getSummarySucceeded = (): RuleExecutionSummary => ({
   last_execution: {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.ts
deleted file mode 100644
index a747d2f021b7c..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { IsoDateString } from '@kbn/securitysolution-io-ts-types';
-import * as t from 'io-ts';
-import { RuleExecutionMetrics } from './execution_metrics';
-import { TRuleExecutionStatus } from './execution_status';
-
-export type RuleExecutionSummary = t.TypeOf<typeof RuleExecutionSummary>;
-export const RuleExecutionSummary = t.type({
-  last_execution: t.type({
-    date: IsoDateString,
-    status: TRuleExecutionStatus,
-    status_order: t.number,
-    message: t.string,
-    metrics: RuleExecutionMetrics,
-  }),
-});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts
index b4f003cf48228..7fbb16e206197 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts
@@ -5,10 +5,10 @@
  * 2.0.
  */
 
-export * from './execution_event';
-export * from './execution_metrics';
+export * from './execution_event.gen';
+export * from './execution_metrics.gen';
 export * from './execution_result.gen';
 export * from './execution_settings';
 export * from './execution_status.gen';
-export * from './execution_summary';
+export * from './execution_summary.gen';
 export * from './log_level';
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts
index 495589b3cd432..e7004455160bd 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts
@@ -5,42 +5,31 @@
  * 2.0.
  */
 
-import { enumeration } from '@kbn/securitysolution-io-ts-types';
-import { enumFromString } from '../../../../utils/enum_from_string';
 import { assertUnreachable } from '../../../../utility_types';
 import type { RuleExecutionStatus } from './execution_status.gen';
 import { RuleExecutionStatusEnum } from './execution_status.gen';
-
-export enum LogLevel {
-  'trace' = 'trace',
-  'debug' = 'debug',
-  'info' = 'info',
-  'warn' = 'warn',
-  'error' = 'error',
-}
-
-export const TLogLevel = enumeration('LogLevel', LogLevel);
+import { LogLevel, LogLevelEnum } from './execution_event.gen';
 
 /**
  * An array of supported log levels.
  */
-export const LOG_LEVELS = Object.values(LogLevel);
+export const LOG_LEVELS = LogLevel.options;
 
-export const logLevelToNumber = (level: keyof typeof LogLevel | null | undefined): number => {
+export const logLevelToNumber = (level: LogLevel | null | undefined): number => {
   if (!level) {
     return 0;
   }
 
   switch (level) {
-    case 'trace':
+    case LogLevelEnum.trace:
       return 0;
-    case 'debug':
+    case LogLevelEnum.debug:
       return 10;
-    case 'info':
+    case LogLevelEnum.info:
       return 20;
-    case 'warn':
+    case LogLevelEnum.warn:
       return 30;
-    case 'error':
+    case LogLevelEnum.error:
       return 40;
     default:
       assertUnreachable(level);
@@ -50,34 +39,32 @@ export const logLevelToNumber = (level: keyof typeof LogLevel | null | undefined
 
 export const logLevelFromNumber = (num: number | null | undefined): LogLevel => {
   if (num === null || num === undefined || num < 10) {
-    return LogLevel.trace;
+    return LogLevelEnum.trace;
   }
   if (num < 20) {
-    return LogLevel.debug;
+    return LogLevelEnum.debug;
   }
   if (num < 30) {
-    return LogLevel.info;
+    return LogLevelEnum.info;
   }
   if (num < 40) {
-    return LogLevel.warn;
+    return LogLevelEnum.warn;
   }
-  return LogLevel.error;
+  return LogLevelEnum.error;
 };
 
-export const logLevelFromString = enumFromString(LogLevel);
-
 export const logLevelFromExecutionStatus = (status: RuleExecutionStatus): LogLevel => {
   switch (status) {
     case RuleExecutionStatusEnum['going to run']:
     case RuleExecutionStatusEnum.running:
     case RuleExecutionStatusEnum.succeeded:
-      return LogLevel.info;
+      return LogLevelEnum.info;
     case RuleExecutionStatusEnum['partial failure']:
-      return LogLevel.warn;
+      return LogLevelEnum.warn;
     case RuleExecutionStatusEnum.failed:
-      return LogLevel.error;
+      return LogLevelEnum.error;
     default:
       assertUnreachable(status);
-      return LogLevel.trace;
+      return LogLevelEnum.trace;
   }
 };
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts
index 751e571aae3fd..352a8cbdf89b0 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts
@@ -6,48 +6,43 @@
  */
 
 import { z } from 'zod';
+import { ArrayFromString } from '@kbn/zod-helpers';
 
 /*
  * NOTICE: Do not edit this file manually.
  * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator.
  */
 
-import { RuleExecutionStatus } from '../../model/execution_status.gen';
 import {
-  SortFieldOfRuleExecutionResult,
-  RuleExecutionResult,
-} from '../../model/execution_result.gen';
+  RuleExecutionEventType,
+  LogLevel,
+  RuleExecutionEvent,
+} from '../../model/execution_event.gen';
 import { SortOrder } from '../../../model/sorting.gen';
+import { PaginationResult } from '../../../model/pagination.gen';
 
 export type GetRuleExecutionEventsRequestQuery = z.infer<typeof GetRuleExecutionEventsRequestQuery>;
 export const GetRuleExecutionEventsRequestQuery = z.object({
   /**
-   * Start date of the time range to query
+   * Include events of matching the search term. If omitted, all events will be included.
    */
-  start: z.string().datetime(),
+  search_term: z.string().optional(),
   /**
-   * End date of the time range to query
+   * Include events of the specified types. If omitted, all types of events will be included.
    */
-  end: z.string().datetime(),
+  event_types: ArrayFromString(RuleExecutionEventType).optional().default([]),
   /**
-   * Query text to filter results by
+   * Include events having these log levels. If omitted, events of all levels will be included.
    */
-  query_text: z.string().optional().default(''),
+  log_levels: ArrayFromString(LogLevel).optional().default([]),
   /**
-   * Comma-separated list of rule execution statuses to filter results by
+   * Start date of the time range to query
    */
-  status_filters: z
-    .preprocess(
-      (value: unknown) =>
-        typeof value === 'string' ? (value === '' ? [] : value.split(',')) : value,
-      z.array(RuleExecutionStatus)
-    )
-    .optional()
-    .default([]),
+  date_start: z.string().datetime().optional(),
   /**
-   * Field to sort results by
+   * End date of the time range to query
    */
-  sort_field: SortFieldOfRuleExecutionResult.optional().default('timestamp'),
+  date_end: z.string().datetime().optional(),
   /**
    * Sort order to sort results by
    */
@@ -69,9 +64,6 @@ export type GetRuleExecutionEventsRequestParams = z.infer<
   typeof GetRuleExecutionEventsRequestParams
 >;
 export const GetRuleExecutionEventsRequestParams = z.object({
-  /**
-   * Saved object ID of the rule to get execution results for
-   */
   ruleId: z.string().min(1),
 });
 export type GetRuleExecutionEventsRequestParamsInput = z.input<
@@ -80,6 +72,6 @@ export type GetRuleExecutionEventsRequestParamsInput = z.input<
 
 export type GetRuleExecutionEventsResponse = z.infer<typeof GetRuleExecutionEventsResponse>;
 export const GetRuleExecutionEventsResponse = z.object({
-  events: z.array(RuleExecutionResult).optional(),
-  total: z.number().int().optional(),
+  events: z.array(RuleExecutionEvent),
+  pagination: PaginationResult,
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts
index b46f8d9b13870..e730350215f8e 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts
@@ -6,7 +6,7 @@
  */
 
 import { ruleExecutionEventMock } from '../../model/execution_event.mock';
-import type { GetRuleExecutionEventsResponse } from './get_rule_execution_events_route';
+import type { GetRuleExecutionEventsResponse } from './get_rule_execution_events_route.gen';
 
 const getSomeResponse = (): GetRuleExecutionEventsResponse => {
   const events = ruleExecutionEventMock.getSomeEvents();
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml
index 677213bae4f2e..990ea4ef64876 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml
@@ -14,47 +14,47 @@ paths:
         - name: ruleId
           in: path
           required: true
-          description: Saved object ID of the rule to get execution results for
           schema:
             type: string
             minLength: 1
-        - name: start
+        - name: search_term
           in: query
-          required: true
-          description: Start date of the time range to query
-          schema:
-            type: string
-            format: date-time
-        - name: end
-          in: query
-          required: true
-          description: End date of the time range to query
+          required: false
+          description: Include events of matching the search term. If omitted, all events will be included.
           schema:
             type: string
-            format: date-time
-        - name: query_text
+        - name: event_types
           in: query
           required: false
-          description: Query text to filter results by
+          description: Include events of the specified types. If omitted, all types of events will be included.
           schema:
-            type: string
-            default: ''
-        - name: status_filters
+            type: array
+            items:
+              $ref: '../../model/execution_event.schema.yaml#/components/schemas/RuleExecutionEventType'
+            default: []
+        - name: log_levels
           in: query
           required: false
-          description: Comma-separated list of rule execution statuses to filter results by
+          description: Include events having these log levels. If omitted, events of all levels will be included.
           schema:
             type: array
             items:
-              $ref: '../../model/execution_status.schema.yaml#/components/schemas/RuleExecutionStatus'
+              $ref: '../../model/execution_event.schema.yaml#/components/schemas/LogLevel'
             default: []
-        - name: sort_field
+        - name: date_start
           in: query
           required: false
-          description: Field to sort results by
+          description: Start date of the time range to query
           schema:
-            $ref: '../../model/execution_result.schema.yaml#/components/schemas/SortFieldOfRuleExecutionResult'
-            default: timestamp
+            type: string
+            format: date-time
+        - name: date_end
+          in: query
+          required: false
+          description: End date of the time range to query
+          schema:
+            type: string
+            format: date-time
         - name: sort_order
           in: query
           required: false
@@ -87,6 +87,9 @@ paths:
                   events:
                     type: array
                     items:
-                      $ref: '../../model/execution_result.schema.yaml#/components/schemas/RuleExecutionResult'
-                  total:
-                    type: integer
+                      $ref: '../../model/execution_event.schema.yaml#/components/schemas/RuleExecutionEvent'
+                  pagination:
+                    $ref: '../../../model/pagination.schema.yaml#/components/schemas/PaginationResult'
+                required:
+                  - events
+                  - pagination
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
index ecf94032039ac..5f73b6109e820 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
@@ -5,14 +5,11 @@
  * 2.0.
  */
 
-import { pipe } from 'fp-ts/lib/pipeable';
-import { left } from 'fp-ts/lib/Either';
-import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
-
+import { expectParseError, expectParseSuccess } from '@kbn/zod-helpers';
 import {
   GetRuleExecutionEventsRequestParams,
   GetRuleExecutionEventsRequestQuery,
-} from './get_rule_execution_events_route';
+} from './get_rule_execution_events_route.gen';
 
 describe('Request schema of Get rule execution events', () => {
   describe('GetRuleExecutionEventsRequestParams', () => {
@@ -22,11 +19,10 @@ describe('Request schema of Get rule execution events', () => {
           ruleId: 'some id',
         };
 
-        const decoded = GetRuleExecutionEventsRequestParams.decode(input);
-        const message = pipe(decoded, foldLeftRight);
+        const results = GetRuleExecutionEventsRequestParams.safeParse(input);
+        expectParseSuccess(results);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(
+        expect(results.data).toEqual(
           expect.objectContaining({
             ruleId: 'some id',
           })
@@ -39,23 +35,21 @@ describe('Request schema of Get rule execution events', () => {
           foo: 'bar', // this one is not in the schema and will be stripped
         };
 
-        const decoded = GetRuleExecutionEventsRequestParams.decode(input);
-        const message = pipe(decoded, foldLeftRight);
+        const results = GetRuleExecutionEventsRequestParams.safeParse(input);
+        expectParseSuccess(results);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual({
-          ruleId: 'some id',
-        });
+        expect(results.data).toEqual(
+          expect.objectContaining({
+            ruleId: 'some id',
+          })
+        );
       });
     });
 
     describe('Validation fails', () => {
       const test = (input: unknown) => {
-        const decoded = GetRuleExecutionEventsRequestParams.decode(input);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors)).length).toBeGreaterThan(0);
-        expect(message.schema).toEqual({});
+        const results = GetRuleExecutionEventsRequestParams.safeParse(input);
+        expectParseError(results);
       };
 
       it('when not all the required parameters are passed', () => {
@@ -84,11 +78,10 @@ describe('Request schema of Get rule execution events', () => {
           per_page: 6,
         };
 
-        const decoded = GetRuleExecutionEventsRequestQuery.decode(input);
-        const message = pipe(decoded, foldLeftRight);
+        const result = GetRuleExecutionEventsRequestQuery.safeParse(input);
+        expectParseSuccess(result);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual({
+        expect(result.data).toEqual({
           event_types: ['message', 'status-change'],
           log_levels: ['debug', 'info', 'error'],
           sort_order: 'asc',
@@ -107,11 +100,10 @@ describe('Request schema of Get rule execution events', () => {
           foo: 'bar', // this one is not in the schema and will be stripped
         };
 
-        const decoded = GetRuleExecutionEventsRequestQuery.decode(input);
-        const message = pipe(decoded, foldLeftRight);
+        const result = GetRuleExecutionEventsRequestQuery.safeParse(input);
+        expectParseSuccess(result);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual({
+        expect(result.data).toEqual({
           event_types: ['message', 'status-change'],
           log_levels: ['debug', 'info', 'error'],
           sort_order: 'asc',
@@ -119,25 +111,12 @@ describe('Request schema of Get rule execution events', () => {
           per_page: 6,
         });
       });
-
-      it('when no parameters are passed (all are have default values)', () => {
-        const input = {};
-
-        const decoded = GetRuleExecutionEventsRequestQuery.decode(input);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual(expect.any(Object));
-      });
     });
 
     describe('Validation fails', () => {
       const test = (input: unknown) => {
-        const decoded = GetRuleExecutionEventsRequestQuery.decode(input);
-        const message = pipe(decoded, foldLeftRight);
-
-        expect(getPaths(left(message.errors)).length).toBeGreaterThan(0);
-        expect(message.schema).toEqual({});
+        const result = GetRuleExecutionEventsRequestQuery.safeParse(input);
+        expectParseError(result);
       };
 
       it('when invalid parameters are passed', () => {
@@ -147,21 +126,18 @@ describe('Request schema of Get rule execution events', () => {
       });
     });
 
-    describe('Validation sets default values', () => {
-      it('when optional parameters are not passed', () => {
-        const input = {};
+    it('Validation sets default values when optional parameters are not passed', () => {
+      const input = {};
 
-        const decoded = GetRuleExecutionEventsRequestQuery.decode(input);
-        const message = pipe(decoded, foldLeftRight);
+      const result = GetRuleExecutionEventsRequestQuery.safeParse(input);
+      expectParseSuccess(result);
 
-        expect(getPaths(left(message.errors))).toEqual([]);
-        expect(message.schema).toEqual({
-          event_types: [],
-          log_levels: [],
-          sort_order: 'desc',
-          page: 1,
-          per_page: 20,
-        });
+      expect(result.data).toEqual({
+        event_types: [],
+        log_levels: [],
+        sort_order: 'desc',
+        page: 1,
+        per_page: 20,
       });
     });
   });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
deleted file mode 100644
index 628e71cf51790..0000000000000
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as t from 'io-ts';
-
-import { DefaultPerPage, DefaultPage } from '@kbn/securitysolution-io-ts-alerting-types';
-import { defaultCsvArray, IsoDateString, NonEmptyString } from '@kbn/securitysolution-io-ts-types';
-
-import { DefaultSortOrderDesc, PaginationResult } from '../../../model';
-import { RuleExecutionEvent, TRuleExecutionEventType, TLogLevel } from '../../model';
-
-/**
- * URL path parameters of the API route.
- */
-export type GetRuleExecutionEventsRequestParams = t.TypeOf<
-  typeof GetRuleExecutionEventsRequestParams
->;
-export const GetRuleExecutionEventsRequestParams = t.exact(
-  t.type({
-    ruleId: NonEmptyString,
-  })
-);
-
-/**
- * Query string parameters of the API route.
- */
-export type GetRuleExecutionEventsRequestQuery = t.TypeOf<
-  typeof GetRuleExecutionEventsRequestQuery
->;
-export const GetRuleExecutionEventsRequestQuery = t.exact(
-  t.intersection([
-    t.partial({
-      search_term: NonEmptyString,
-      event_types: defaultCsvArray(TRuleExecutionEventType),
-      log_levels: defaultCsvArray(TLogLevel),
-      date_start: IsoDateString,
-      date_end: IsoDateString,
-    }),
-    t.type({
-      sort_order: DefaultSortOrderDesc, // defaults to 'desc'
-      page: DefaultPage, // defaults to 1
-      per_page: DefaultPerPage, // defaults to 20
-    }),
-  ])
-);
-
-/**
- * Response body of the API route.
- */
-export type GetRuleExecutionEventsResponse = t.TypeOf<typeof GetRuleExecutionEventsResponse>;
-export const GetRuleExecutionEventsResponse = t.exact(
-  t.type({
-    events: t.array(RuleExecutionEvent),
-    pagination: PaginationResult,
-  })
-);
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts
index 442c45f3e8dc9..cb8e2f1d8ffa5 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts
@@ -6,6 +6,7 @@
  */
 
 import { z } from 'zod';
+import { ArrayFromString } from '@kbn/zod-helpers';
 
 /*
  * NOTICE: Do not edit this file manually.
@@ -38,14 +39,7 @@ export const GetRuleExecutionResultsRequestQuery = z.object({
   /**
    * Comma-separated list of rule execution statuses to filter results by
    */
-  status_filters: z
-    .preprocess(
-      (value: unknown) =>
-        typeof value === 'string' ? (value === '' ? [] : value.split(',')) : value,
-      z.array(RuleExecutionStatus)
-    )
-    .optional()
-    .default([]),
+  status_filters: ArrayFromString(RuleExecutionStatus).optional().default([]),
   /**
    * Field to sort results by
    */
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.ts
index dd1ecc4208ef7..9089efeb87d05 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.ts
@@ -8,9 +8,6 @@
 import * as t from 'io-ts';
 
 import { PositiveInteger, PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { IndexPatternArray } from '../../model/rule_schema_legacy';
 
 export const signalsReindexOptions = t.partial({
   requests_per_second: t.number,
@@ -23,7 +20,7 @@ export type SignalsReindexOptions = t.TypeOf<typeof signalsReindexOptions>;
 export const createSignalsMigrationSchema = t.intersection([
   t.exact(
     t.type({
-      index: IndexPatternArray,
+      index: t.array(t.string),
     })
   ),
   t.exact(signalsReindexOptions),
diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/api.ts b/x-pack/plugins/security_solution/common/api/timeline/model/api.ts
index 864b4613857e2..c423b2a4418bb 100644
--- a/x-pack/plugins/security_solution/common/api/timeline/model/api.ts
+++ b/x-pack/plugins/security_solution/common/api/timeline/model/api.ts
@@ -21,7 +21,7 @@ import {
   SavedObjectResolveAliasTargetId,
   SavedObjectResolveOutcome,
 } from '../../detection_engine/model/rule_schema_legacy';
-import { ErrorSchema, success, success_count as successCount } from '../../detection_engine';
+import { ErrorSchema } from './error_schema';
 
 export const BareNoteSchema = runtimeTypes.intersection([
   runtimeTypes.type({
@@ -497,8 +497,8 @@ export interface ExportTimelineNotFoundError {
 
 export const importTimelineResultSchema = runtimeTypes.exact(
   runtimeTypes.type({
-    success,
-    success_count: successCount,
+    success: runtimeTypes.boolean,
+    success_count: PositiveInteger,
     timelines_installed: PositiveInteger,
     timelines_updated: PositiveInteger,
     errors: runtimeTypes.array(ErrorSchema),
diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts
new file mode 100644
index 0000000000000..7c24d605d5f98
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import type { ErrorSchema } from './error_schema';
+
+export const getErrorSchemaMock = (
+  id: string = '819eded6-e9c8-445b-a647-519aea39e063'
+): ErrorSchema => ({
+  id,
+  error: {
+    status_code: 404,
+    message: 'id: "819eded6-e9c8-445b-a647-519aea39e063" not found',
+  },
+});
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.test.ts b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.test.ts
similarity index 93%
rename from x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.test.ts
rename to x-pack/plugins/security_solution/common/api/timeline/model/error_schema.test.ts
index 164f5ee854efc..8326479db9c14 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.test.ts
+++ b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.test.ts
@@ -8,9 +8,7 @@
 import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
 import { left } from 'fp-ts/lib/Either';
 import { pipe } from 'fp-ts/lib/pipeable';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { ErrorSchema } from './error_schema_legacy';
+import { ErrorSchema } from './error_schema';
 import { getErrorSchemaMock } from './error_schema.mock';
 
 describe('error_schema', () => {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema_legacy.ts b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.ts
similarity index 69%
rename from x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema_legacy.ts
rename to x-pack/plugins/security_solution/common/api/timeline/model/error_schema.ts
index c2efee05269c1..a0ac17765c3a8 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema_legacy.ts
+++ b/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.ts
@@ -5,22 +5,16 @@
  * 2.0.
  */
 
-import { NonEmptyString } from '@kbn/securitysolution-io-ts-types';
+import { NonEmptyString, PositiveInteger } from '@kbn/securitysolution-io-ts-types';
 import * as t from 'io-ts';
 
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { RuleSignatureId } from './rule_schema_legacy';
-
-import { status_code, message } from './schemas';
-
 // We use id: t.string intentionally and _never_ the id from global schemas as
 // sometimes echo back out the id that the user gave us and it is not guaranteed
 // to be a UUID but rather just a string
 const partial = t.exact(
   t.partial({
     id: t.string,
-    rule_id: RuleSignatureId,
+    rule_id: NonEmptyString,
     list_id: NonEmptyString,
     item_id: NonEmptyString,
   })
@@ -28,8 +22,8 @@ const partial = t.exact(
 const required = t.exact(
   t.type({
     error: t.type({
-      status_code,
-      message,
+      status_code: PositiveInteger,
+      message: t.string,
     }),
   })
 );
diff --git a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts b/x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts
index 6bdce7573ed4c..1e2db97225580 100644
--- a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts
+++ b/x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts
@@ -17,8 +17,8 @@ import type {
   ResponseAction,
   RuleResponseAction,
 } from '../api/detection_engine/model/rule_response_actions';
-import { RESPONSE_ACTION_TYPES } from '../api/detection_engine/model/rule_response_actions';
-import type { NormalizedRuleAction } from '../api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { ResponseActionTypesEnum } from '../api/detection_engine/model/rule_response_actions';
+import type { NormalizedRuleAction } from '../api/detection_engine/rule_management';
 import type { RuleAction } from '@kbn/alerting-plugin/common';
 
 describe('transform_actions', () => {
@@ -93,7 +93,7 @@ describe('transform_actions', () => {
   });
   test('it should transform ResponseAction[] to RuleResponseAction[]', () => {
     const ruleAction: ResponseAction = {
-      action_type_id: RESPONSE_ACTION_TYPES.OSQUERY,
+      action_type_id: ResponseActionTypesEnum['.osquery'],
       params: {
         ecs_mapping: {},
         saved_query_id: undefined,
@@ -117,7 +117,7 @@ describe('transform_actions', () => {
 
   test('it should transform RuleResponseAction[] to ResponseAction[]', () => {
     const alertAction: RuleResponseAction = {
-      actionTypeId: RESPONSE_ACTION_TYPES.OSQUERY,
+      actionTypeId: ResponseActionTypesEnum['.osquery'],
       params: {
         ecsMapping: {},
         savedQueryId: undefined,
diff --git a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts b/x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts
index 5750f35d893e2..1f3727e6e4e0b 100644
--- a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts
+++ b/x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts
@@ -7,12 +7,12 @@
 
 import type { RuleAction as AlertingRuleAction } from '@kbn/alerting-plugin/common';
 import type { NormalizedAlertAction } from '@kbn/alerting-plugin/server/rules_client';
-import type { NormalizedRuleAction } from '../api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { NormalizedRuleAction } from '../api/detection_engine/rule_management';
 import type {
   ResponseAction,
   RuleResponseAction,
 } from '../api/detection_engine/model/rule_response_actions';
-import { RESPONSE_ACTION_TYPES } from '../api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../api/detection_engine/model/rule_response_actions';
 import type { RuleAction } from '../api/detection_engine/model';
 
 export const transformRuleToAlertAction = ({
@@ -63,7 +63,12 @@ export const transformNormalizedRuleToAlertAction = ({
   group,
   id,
   params: params as AlertingRuleAction['params'],
-  ...(alertsFilter && { alertsFilter }),
+  ...(alertsFilter && {
+    // We use "unknown" as the alerts filter type which is stricter than the one
+    // used in the alerting plugin (what they use is essentially "any"). So we
+    // have to to cast here
+    alertsFilter: alertsFilter as AlertingRuleAction['alertsFilter'],
+  }),
   ...(frequency && { frequency }),
 });
 
@@ -85,7 +90,7 @@ export const transformRuleToAlertResponseAction = ({
   action_type_id: actionTypeId,
   params,
 }: ResponseAction): RuleResponseAction => {
-  if (actionTypeId === RESPONSE_ACTION_TYPES.OSQUERY) {
+  if (actionTypeId === ResponseActionTypesEnum['.osquery']) {
     const {
       saved_query_id: savedQueryId,
       ecs_mapping: ecsMapping,
@@ -113,7 +118,7 @@ export const transformAlertToRuleResponseAction = ({
   actionTypeId,
   params,
 }: RuleResponseAction): ResponseAction => {
-  if (actionTypeId === RESPONSE_ACTION_TYPES.OSQUERY) {
+  if (actionTypeId === ResponseActionTypesEnum['.osquery']) {
     const { savedQueryId, ecsMapping, packId, ...rest } = params;
     return {
       params: {
diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_score_calculation/request_schema.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_score_calculation/request_schema.ts
index 6058f60e1e1c6..c05ca782aface 100644
--- a/x-pack/plugins/security_solution/common/risk_engine/risk_score_calculation/request_schema.ts
+++ b/x-pack/plugins/security_solution/common/risk_engine/risk_score_calculation/request_schema.ts
@@ -6,9 +6,6 @@
  */
 
 import * as t from 'io-ts';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { DataViewId } from '../../api/detection_engine/model/rule_schema_legacy';
 import { afterKeysSchema } from '../after_keys';
 import { identifierTypeSchema } from '../identifier_types';
 import { riskWeightsSchema } from '../risk_weights/schema';
@@ -16,7 +13,7 @@ import { riskWeightsSchema } from '../risk_weights/schema';
 export const riskScoreCalculationRequestSchema = t.exact(
   t.intersection([
     t.type({
-      data_view_id: DataViewId,
+      data_view_id: t.string,
       identifier_type: identifierTypeSchema,
       range: t.type({
         start: t.string,
diff --git a/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts b/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts
index c440248311636..76ee6a303532b 100644
--- a/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts
+++ b/x-pack/plugins/security_solution/common/risk_engine/risk_score_preview/request_schema.ts
@@ -6,9 +6,6 @@
  */
 
 import * as t from 'io-ts';
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
-import { DataViewId } from '../../api/detection_engine/model/rule_schema_legacy';
 import { afterKeysSchema } from '../after_keys';
 import { identifierTypeSchema } from '../identifier_types';
 import { rangeSchema } from '../range';
@@ -17,7 +14,7 @@ import { riskWeightsSchema } from '../risk_weights/schema';
 export const riskScorePreviewRequestSchema = t.exact(
   t.intersection([
     t.type({
-      data_view_id: DataViewId,
+      data_view_id: t.string,
     }),
     t.partial({
       after_keys: afterKeysSchema,
diff --git a/x-pack/plugins/security_solution/common/types/response_actions/index.ts b/x-pack/plugins/security_solution/common/types/response_actions/index.ts
index 07124b6bc5e45..35333bdc54eb7 100644
--- a/x-pack/plugins/security_solution/common/types/response_actions/index.ts
+++ b/x-pack/plugins/security_solution/common/types/response_actions/index.ts
@@ -13,7 +13,7 @@ export interface RawEventData {
   _index: string;
 }
 
-export enum RESPONSE_ACTION_TYPES {
+export enum ResponseActionTypesEnum {
   OSQUERY = '.osquery',
   ENDPOINT = '.endpoint',
 }
@@ -34,7 +34,7 @@ export interface ExpandedEventFieldsObject {
 
 type RuleParameters = Array<{
   response_actions: Array<{
-    action_type_id: RESPONSE_ACTION_TYPES;
+    action_type_id: ResponseActionTypesEnum;
     params: Record<string, unknown>;
   }>;
 }>;
diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/osquery_tab.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/osquery_tab.tsx
index 289561c0bc4aa..274c649ece9dc 100644
--- a/x-pack/plugins/security_solution/public/common/components/event_details/osquery_tab.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/event_details/osquery_tab.tsx
@@ -20,7 +20,7 @@ import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_fe
 import { useKibana } from '../../lib/kibana';
 import { EventsViewType } from './event_details';
 import * as i18n from './translations';
-import { RESPONSE_ACTION_TYPES } from '../../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../../common/api/detection_engine/model/rule_response_actions';
 
 const TabContentWrapper = styled.div`
   height: 100%;
@@ -71,7 +71,7 @@ export const useOsqueryTab = ({
   }
 
   const osqueryResponseActions = responseActions.filter(
-    (responseAction) => responseAction.action_type_id === RESPONSE_ACTION_TYPES.OSQUERY
+    (responseAction) => responseAction.action_type_id === ResponseActionTypesEnum['.osquery']
   );
 
   if (!osqueryResponseActions?.length) {
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts
index 9e09a1754a04d..226d0a2bd16ed 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts
@@ -16,9 +16,9 @@ import {
   getRulesSchemaMock,
 } from '../../../../common/api/detection_engine/model/rule_schema/mocks';
 import {
-  BulkActionType,
-  BulkActionEditType,
-} from '../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+  BulkActionTypeEnum,
+  BulkActionEditTypeEnum,
+} from '../../../../common/api/detection_engine/rule_management';
 import { rulesMock } from '../logic/mock';
 import type { FindRulesReferencedByExceptionsListProp } from '../logic/types';
 
@@ -701,7 +701,9 @@ describe('Detections Rules API', () => {
     });
 
     test('passes a query', async () => {
-      await performBulkAction({ bulkAction: { type: BulkActionType.enable, query: 'some query' } });
+      await performBulkAction({
+        bulkAction: { type: BulkActionTypeEnum.enable, query: 'some query' },
+      });
 
       expect(fetchMock).toHaveBeenCalledWith(
         '/api/detection_engine/rules/_bulk_action',
@@ -720,7 +722,7 @@ describe('Detections Rules API', () => {
 
     test('passes ids', async () => {
       await performBulkAction({
-        bulkAction: { type: BulkActionType.disable, ids: ['ruleId1', 'ruleId2'] },
+        bulkAction: { type: BulkActionTypeEnum.disable, ids: ['ruleId1', 'ruleId2'] },
       });
 
       expect(fetchMock).toHaveBeenCalledWith(
@@ -741,10 +743,10 @@ describe('Detections Rules API', () => {
     test('passes edit payload', async () => {
       await performBulkAction({
         bulkAction: {
-          type: BulkActionType.edit,
+          type: BulkActionTypeEnum.edit,
           ids: ['ruleId1'],
           editPayload: [
-            { type: BulkActionEditType.add_index_patterns, value: ['some-index-pattern'] },
+            { type: BulkActionEditTypeEnum.add_index_patterns, value: ['some-index-pattern'] },
           ],
         },
       });
@@ -767,7 +769,7 @@ describe('Detections Rules API', () => {
 
     test('executes dry run', async () => {
       await performBulkAction({
-        bulkAction: { type: BulkActionType.disable, query: 'some query' },
+        bulkAction: { type: BulkActionTypeEnum.disable, query: 'some query' },
         dryRun: true,
       });
 
@@ -787,7 +789,7 @@ describe('Detections Rules API', () => {
     test('returns result', async () => {
       const result = await performBulkAction({
         bulkAction: {
-          type: BulkActionType.disable,
+          type: BulkActionTypeEnum.disable,
           query: 'some query',
         },
       });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts
index 860e0fc86e850..70f0a56ef74cd 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts
@@ -27,12 +27,16 @@ import type {
   ReviewRuleInstallationResponseBody,
 } from '../../../../common/api/detection_engine/prebuilt_rules';
 import type {
+  BulkDuplicateRules,
+  BulkActionEditPayload,
+  BulkActionType,
   CoverageOverviewResponse,
   GetRuleManagementFiltersResponse,
 } from '../../../../common/api/detection_engine/rule_management';
 import {
   RULE_MANAGEMENT_FILTERS_URL,
   RULE_MANAGEMENT_COVERAGE_OVERVIEW_URL,
+  BulkActionTypeEnum,
 } from '../../../../common/api/detection_engine/rule_management';
 import type { BulkActionsDryRunErrCode } from '../../../../common/constants';
 import {
@@ -54,11 +58,6 @@ import {
 import type { RulesReferencedByExceptionListsSchema } from '../../../../common/api/detection_engine/rule_exceptions';
 import { DETECTION_ENGINE_RULES_EXCEPTIONS_REFERENCE_URL } from '../../../../common/api/detection_engine/rule_exceptions';
 
-import type {
-  BulkActionDuplicatePayload,
-  BulkActionEditPayload,
-} from '../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionType } from '../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
 import type { PreviewResponse, RuleResponse } from '../../../../common/api/detection_engine';
 
 import { KibanaServices } from '../../../common/lib/kibana';
@@ -331,18 +330,18 @@ export type QueryOrIds = { query: string; ids?: undefined } | { query?: undefine
 type PlainBulkAction = {
   type: Exclude<
     BulkActionType,
-    BulkActionType.edit | BulkActionType.export | BulkActionType.duplicate
+    BulkActionTypeEnum['edit'] | BulkActionTypeEnum['export'] | BulkActionTypeEnum['duplicate']
   >;
 } & QueryOrIds;
 
 type EditBulkAction = {
-  type: BulkActionType.edit;
+  type: BulkActionTypeEnum['edit'];
   editPayload: BulkActionEditPayload[];
 } & QueryOrIds;
 
 type DuplicateBulkAction = {
-  type: BulkActionType.duplicate;
-  duplicatePayload?: BulkActionDuplicatePayload;
+  type: BulkActionTypeEnum['duplicate'];
+  duplicatePayload?: BulkDuplicateRules['duplicate'];
 } & QueryOrIds;
 
 export type BulkAction = PlainBulkAction | EditBulkAction | DuplicateBulkAction;
@@ -368,9 +367,9 @@ export async function performBulkAction({
     action: bulkAction.type,
     query: bulkAction.query,
     ids: bulkAction.ids,
-    edit: bulkAction.type === BulkActionType.edit ? bulkAction.editPayload : undefined,
+    edit: bulkAction.type === BulkActionTypeEnum.edit ? bulkAction.editPayload : undefined,
     duplicate:
-      bulkAction.type === BulkActionType.duplicate ? bulkAction.duplicatePayload : undefined,
+      bulkAction.type === BulkActionTypeEnum.duplicate ? bulkAction.duplicatePayload : undefined,
   };
 
   return KibanaServices.get().http.fetch<BulkActionResponse>(DETECTION_ENGINE_RULES_BULK_ACTION, {
@@ -392,7 +391,7 @@ export type BulkExportResponse = Blob;
  */
 export async function bulkExportRules(queryOrIds: QueryOrIds): Promise<BulkExportResponse> {
   const params = {
-    action: BulkActionType.export,
+    action: BulkActionTypeEnum.export,
     query: queryOrIds.query,
     ids: queryOrIds.ids,
   };
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts
index 1a52bbb0a8194..9e54e41f1b091 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts
@@ -7,7 +7,7 @@
 import type { UseMutationOptions } from '@tanstack/react-query';
 import { useMutation } from '@tanstack/react-query';
 import type { IHttpFetchError } from '@kbn/core/public';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import type { BulkActionErrorResponse, BulkActionResponse, PerformBulkActionProps } from '../api';
 import { performBulkAction } from '../api';
 import { DETECTION_ENGINE_RULES_BULK_ACTION } from '../../../../../common/constants';
@@ -59,8 +59,8 @@ export const useBulkActionMutation = (
         response?.attributes?.results?.updated ?? error?.body?.attributes?.results?.updated;
 
       switch (actionType) {
-        case BulkActionType.enable:
-        case BulkActionType.disable: {
+        case BulkActionTypeEnum.enable:
+        case BulkActionTypeEnum.disable: {
           invalidateFetchRuleByIdQuery();
           invalidateFetchCoverageOverviewQuery();
           if (updatedRules) {
@@ -72,7 +72,7 @@ export const useBulkActionMutation = (
           }
           break;
         }
-        case BulkActionType.delete:
+        case BulkActionTypeEnum.delete:
           invalidateFindRulesQuery();
           invalidateFetchRuleByIdQuery();
           invalidateFetchRuleManagementFilters();
@@ -81,12 +81,12 @@ export const useBulkActionMutation = (
           invalidateFetchPrebuiltRulesUpgradeReviewQuery();
           invalidateFetchCoverageOverviewQuery();
           break;
-        case BulkActionType.duplicate:
+        case BulkActionTypeEnum.duplicate:
           invalidateFindRulesQuery();
           invalidateFetchRuleManagementFilters();
           invalidateFetchCoverageOverviewQuery();
           break;
-        case BulkActionType.edit:
+        case BulkActionTypeEnum.edit:
           if (updatedRules) {
             // We have a list of updated rules, no need to invalidate all
             updateRulesCache(updatedRules);
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts
index 40877d8fcb2fd..99bad79536bd7 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts
@@ -6,54 +6,57 @@
  */
 
 import type { HTTPError } from '../../../../../common/detection_engine/types';
-import type { BulkActionEditPayload } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import {
-  BulkActionEditType,
+import type {
+  BulkActionEditPayload,
   BulkActionType,
-} from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+} from '../../../../../common/api/detection_engine/rule_management';
+import {
+  BulkActionEditTypeEnum,
+  BulkActionTypeEnum,
+} from '../../../../../common/api/detection_engine/rule_management';
 import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
 import type { BulkActionResponse, BulkActionSummary } from '../../api/api';
 
 export function summarizeBulkSuccess(action: BulkActionType): string {
   switch (action) {
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return i18n.RULES_BULK_EXPORT_SUCCESS;
 
-    case BulkActionType.duplicate:
+    case BulkActionTypeEnum.duplicate:
       return i18n.RULES_BULK_DUPLICATE_SUCCESS;
 
-    case BulkActionType.delete:
+    case BulkActionTypeEnum.delete:
       return i18n.RULES_BULK_DELETE_SUCCESS;
 
-    case BulkActionType.enable:
+    case BulkActionTypeEnum.enable:
       return i18n.RULES_BULK_ENABLE_SUCCESS;
 
-    case BulkActionType.disable:
+    case BulkActionTypeEnum.disable:
       return i18n.RULES_BULK_DISABLE_SUCCESS;
 
-    case BulkActionType.edit:
+    case BulkActionTypeEnum.edit:
       return i18n.RULES_BULK_EDIT_SUCCESS;
   }
 }
 
 export function explainBulkSuccess(
-  action: Exclude<BulkActionType, BulkActionType.edit>,
+  action: Exclude<BulkActionType, BulkActionTypeEnum['edit']>,
   summary: BulkActionSummary
 ): string {
   switch (action) {
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return getExportSuccessToastMessage(summary.succeeded, summary.total);
 
-    case BulkActionType.duplicate:
+    case BulkActionTypeEnum.duplicate:
       return i18n.RULES_BULK_DUPLICATE_SUCCESS_DESCRIPTION(summary.succeeded);
 
-    case BulkActionType.delete:
+    case BulkActionTypeEnum.delete:
       return i18n.RULES_BULK_DELETE_SUCCESS_DESCRIPTION(summary.succeeded);
 
-    case BulkActionType.enable:
+    case BulkActionTypeEnum.enable:
       return i18n.RULES_BULK_ENABLE_SUCCESS_DESCRIPTION(summary.succeeded);
 
-    case BulkActionType.disable:
+    case BulkActionTypeEnum.disable:
       return i18n.RULES_BULK_DISABLE_SUCCESS_DESCRIPTION(summary.succeeded);
   }
 }
@@ -67,9 +70,9 @@ export function explainBulkEditSuccess(
   if (
     editPayload.some(
       (x) =>
-        x.type === BulkActionEditType.add_index_patterns ||
-        x.type === BulkActionEditType.set_index_patterns ||
-        x.type === BulkActionEditType.delete_index_patterns
+        x.type === BulkActionEditTypeEnum.add_index_patterns ||
+        x.type === BulkActionEditTypeEnum.set_index_patterns ||
+        x.type === BulkActionEditTypeEnum.delete_index_patterns
     )
   ) {
     return `${i18n.RULES_BULK_EDIT_SUCCESS_DESCRIPTION(
@@ -83,22 +86,22 @@ export function explainBulkEditSuccess(
 
 export function summarizeBulkError(action: BulkActionType): string {
   switch (action) {
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return i18n.RULES_BULK_EXPORT_FAILURE;
 
-    case BulkActionType.duplicate:
+    case BulkActionTypeEnum.duplicate:
       return i18n.RULES_BULK_DUPLICATE_FAILURE;
 
-    case BulkActionType.delete:
+    case BulkActionTypeEnum.delete:
       return i18n.RULES_BULK_DELETE_FAILURE;
 
-    case BulkActionType.enable:
+    case BulkActionTypeEnum.enable:
       return i18n.RULES_BULK_ENABLE_FAILURE;
 
-    case BulkActionType.disable:
+    case BulkActionTypeEnum.disable:
       return i18n.RULES_BULK_DISABLE_FAILURE;
 
-    case BulkActionType.edit:
+    case BulkActionTypeEnum.edit:
       return i18n.RULES_BULK_EDIT_FAILURE;
   }
 }
@@ -112,22 +115,22 @@ export function explainBulkError(action: BulkActionType, error: HTTPError): stri
   }
 
   switch (action) {
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return i18n.RULES_BULK_EXPORT_FAILURE_DESCRIPTION(summary.failed);
 
-    case BulkActionType.duplicate:
+    case BulkActionTypeEnum.duplicate:
       return i18n.RULES_BULK_DUPLICATE_FAILURE_DESCRIPTION(summary.failed);
 
-    case BulkActionType.delete:
+    case BulkActionTypeEnum.delete:
       return i18n.RULES_BULK_DELETE_FAILURE_DESCRIPTION(summary.failed);
 
-    case BulkActionType.enable:
+    case BulkActionTypeEnum.enable:
       return i18n.RULES_BULK_ENABLE_FAILURE_DESCRIPTION(summary.failed);
 
-    case BulkActionType.disable:
+    case BulkActionTypeEnum.disable:
       return i18n.RULES_BULK_DISABLE_FAILURE_DESCRIPTION(summary.failed);
 
-    case BulkActionType.edit:
+    case BulkActionTypeEnum.edit:
       return i18n.RULES_BULK_EDIT_FAILURE_DESCRIPTION(summary.failed, summary.skipped);
   }
 }
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts
index 1ac62109cc626..968b40c7a6026 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { renderHook } from '@testing-library/react-hooks';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
 import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
 import { useBulkExportMutation } from '../../api/hooks/use_bulk_export_mutation';
@@ -92,7 +92,7 @@ describe('useBulkExport', () => {
 
       expect(setLoadingRules).toHaveBeenCalledWith({
         ids: ['ruleId1', 'ruleId2'],
-        action: BulkActionType.export,
+        action: BulkActionTypeEnum.export,
       });
     });
 
@@ -101,7 +101,7 @@ describe('useBulkExport', () => {
 
       expect(setLoadingRules).toHaveBeenCalledWith({
         ids: [],
-        action: BulkActionType.export,
+        action: BulkActionTypeEnum.export,
       });
     });
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts
index 5554ba2296302..651b2b0e4b86c 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts
@@ -6,7 +6,7 @@
  */
 
 import { useCallback } from 'react';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
 import { useBulkExportMutation } from '../../api/hooks/use_bulk_export_mutation';
 import { useShowBulkErrorToast } from './use_show_bulk_error_toast';
@@ -24,12 +24,12 @@ export function useBulkExport() {
     async (queryOrIds: QueryOrIds) => {
       try {
         setLoadingRules?.({
-          ids: queryOrIds.ids ?? guessRuleIdsForBulkAction(BulkActionType.export),
-          action: BulkActionType.export,
+          ids: queryOrIds.ids ?? guessRuleIdsForBulkAction(BulkActionTypeEnum.export),
+          action: BulkActionTypeEnum.export,
         });
         return await mutateAsync(queryOrIds);
       } catch (error) {
-        showBulkErrorToast({ actionType: BulkActionType.export, error });
+        showBulkErrorToast({ actionType: BulkActionTypeEnum.export, error });
       } finally {
         setLoadingRules?.({ ids: [], action: null });
       }
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts
index 94c26b278d1b1..7be106090bcfa 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts
@@ -6,7 +6,7 @@
  */
 
 import { useCallback } from 'react';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { downloadBlob } from '../../../../common/utils/download_blob';
 import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
 import { getExportedRulesCounts } from '../../../rule_management_ui/components/rules_table/helpers';
@@ -27,11 +27,11 @@ export function useDownloadExportedRules() {
       try {
         downloadBlob(response, DEFAULT_EXPORT_FILENAME);
         showBulkSuccessToast({
-          actionType: BulkActionType.export,
+          actionType: BulkActionTypeEnum.export,
           summary: await getExportedRulesCounts(response),
         });
       } catch (error) {
-        showBulkErrorToast({ actionType: BulkActionType.export, error });
+        showBulkErrorToast({ actionType: BulkActionTypeEnum.export, error });
       }
     },
     [showBulkSuccessToast, showBulkErrorToast]
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts
index 3c211247b94ec..6309d8b629bc2 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { renderHook } from '@testing-library/react-hooks';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
 import { METRIC_TYPE, TELEMETRY_EVENT, track } from '../../../../common/lib/telemetry';
 import { useBulkActionMutation } from '../../api/hooks/use_bulk_action_mutation';
@@ -61,7 +61,7 @@ describe('useExecuteBulkAction', () => {
 
   it('executes bulk action', async () => {
     const bulkAction = {
-      type: BulkActionType.enable,
+      type: BulkActionTypeEnum.enable,
       query: 'some query',
     } as const;
 
@@ -73,7 +73,7 @@ describe('useExecuteBulkAction', () => {
   describe('state handlers', () => {
     it('shows success toast upon completion', async () => {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: ['ruleId1'],
       });
 
@@ -84,7 +84,7 @@ describe('useExecuteBulkAction', () => {
     it('does not shows success toast upon completion if suppressed', async () => {
       await executeBulkAction(
         {
-          type: BulkActionType.enable,
+          type: BulkActionTypeEnum.enable,
           ids: ['ruleId1'],
         },
         { suppressSuccessToast: true }
@@ -100,7 +100,7 @@ describe('useExecuteBulkAction', () => {
       });
 
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: ['ruleId1'],
       });
 
@@ -126,31 +126,31 @@ describe('useExecuteBulkAction', () => {
 
     it('sets the loading state before execution', async () => {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: ['ruleId1', 'ruleId2'],
       });
 
       expect(setLoadingRules).toHaveBeenCalledWith({
         ids: ['ruleId1', 'ruleId2'],
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
       });
     });
 
     it('sets the empty loading state before execution when query is set', async () => {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         query: 'some query',
       });
 
       expect(setLoadingRules).toHaveBeenCalledWith({
         ids: [],
-        action: BulkActionType.enable,
+        action: BulkActionTypeEnum.enable,
       });
     });
 
     it('clears loading state for the processing rules after execution', async () => {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: ['ruleId1', 'ruleId2'],
       });
 
@@ -163,7 +163,7 @@ describe('useExecuteBulkAction', () => {
       });
 
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: ['ruleId1', 'ruleId2'],
       });
 
@@ -174,7 +174,7 @@ describe('useExecuteBulkAction', () => {
   describe('telemetry', () => {
     it('sends for enable action', async () => {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         query: 'some query',
       });
 
@@ -184,7 +184,7 @@ describe('useExecuteBulkAction', () => {
 
     it('sends for disable action', async () => {
       await executeBulkAction({
-        type: BulkActionType.disable,
+        type: BulkActionTypeEnum.disable,
         query: 'some query',
       });
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts
index 9fbfb0c310f20..0a294647aad3f 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts
@@ -9,7 +9,8 @@ import type { NavigateToAppOptions } from '@kbn/core/public';
 import { useCallback } from 'react';
 import type { BulkActionResponse } from '..';
 import { APP_UI_ID } from '../../../../../common/constants';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionType } from '../../../../../common/api/detection_engine/rule_management';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { SecurityPageName } from '../../../../app/types';
 import { getEditRuleUrl } from '../../../../common/components/link_to/redirect_to_detection_engine';
 import { METRIC_TYPE, TELEMETRY_EVENT, track } from '../../../../common/lib/telemetry';
@@ -58,7 +59,7 @@ export const useExecuteBulkAction = (options?: UseExecuteBulkActionOptions) => {
             actionType: bulkAction.type,
             summary: response.attributes.summary,
             editPayload:
-              bulkAction.type === BulkActionType.edit ? bulkAction.editPayload : undefined,
+              bulkAction.type === BulkActionTypeEnum.edit ? bulkAction.editPayload : undefined,
           });
         }
 
@@ -83,14 +84,14 @@ export const useExecuteBulkAction = (options?: UseExecuteBulkActionOptions) => {
 };
 
 function sendTelemetry(action: BulkActionType, response: BulkActionResponse): void {
-  if (action !== BulkActionType.disable && action !== BulkActionType.enable) {
+  if (action !== BulkActionTypeEnum.disable && action !== BulkActionTypeEnum.enable) {
     return;
   }
 
   if (response.attributes.results.updated.some((rule) => rule.immutable)) {
     track(
       METRIC_TYPE.COUNT,
-      action === BulkActionType.enable
+      action === BulkActionTypeEnum.enable
         ? TELEMETRY_EVENT.SIEM_RULE_ENABLED
         : TELEMETRY_EVENT.SIEM_RULE_DISABLED
     );
@@ -99,7 +100,7 @@ function sendTelemetry(action: BulkActionType, response: BulkActionResponse): vo
   if (response.attributes.results.updated.some((rule) => !rule.immutable)) {
     track(
       METRIC_TYPE.COUNT,
-      action === BulkActionType.disable
+      action === BulkActionTypeEnum.disable
         ? TELEMETRY_EVENT.CUSTOM_RULE_DISABLED
         : TELEMETRY_EVENT.CUSTOM_RULE_ENABLED
     );
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts
index ce262ce940f43..2a1acc7a3d4c8 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts
@@ -6,7 +6,8 @@
  */
 
 import { useCallback } from 'react';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionType } from '../../../../../common/api/detection_engine/rule_management';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
 
 export function useGuessRuleIdsForBulkAction(): (bulkActionType: BulkActionType) => string[] {
@@ -16,9 +17,9 @@ export function useGuessRuleIdsForBulkAction(): (bulkActionType: BulkActionType)
     (bulkActionType: BulkActionType) => {
       const allRules = rulesTableContext?.state.isAllSelected ? rulesTableContext.state.rules : [];
       const processingRules =
-        bulkActionType === BulkActionType.enable
+        bulkActionType === BulkActionTypeEnum.enable
           ? allRules.filter((x) => !x.enabled)
-          : bulkActionType === BulkActionType.disable
+          : bulkActionType === BulkActionTypeEnum.disable
           ? allRules.filter((x) => x.enabled)
           : allRules;
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts
index 3f9230a36da34..bb72429ad6b0b 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts
@@ -8,7 +8,7 @@
 import { useCallback } from 'react';
 import type { HTTPError } from '../../../../../common/detection_engine/types';
 import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
-import type { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionType } from '../../../../../common/api/detection_engine/rule_management';
 import { explainBulkError, summarizeBulkError } from './translations';
 
 interface ShowBulkErrorToastProps {
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts
index dfc2ca5dcb918..03113c772818c 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts
@@ -8,8 +8,11 @@
 import { useCallback } from 'react';
 import type { BulkActionSummary } from '..';
 import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
-import type { BulkActionEditPayload } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type {
+  BulkActionEditPayload,
+  BulkActionType,
+} from '../../../../../common/api/detection_engine/rule_management';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { explainBulkEditSuccess, explainBulkSuccess, summarizeBulkSuccess } from './translations';
 
 interface ShowBulkSuccessToastProps {
@@ -24,7 +27,7 @@ export function useShowBulkSuccessToast() {
   return useCallback(
     ({ actionType, summary, editPayload }: ShowBulkSuccessToastProps) => {
       const text =
-        actionType === BulkActionType.edit
+        actionType === BulkActionTypeEnum.edit
           ? explainBulkEditSuccess(editPayload ?? [], summary)
           : explainBulkSuccess(actionType, summary);
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts
index d44c4effd265f..94a3d47c90ecf 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts
@@ -5,12 +5,11 @@
  * 2.0.
  */
 
-import * as t from 'io-ts';
+import * as z from 'zod';
 
 import type { RuleSnooze } from '@kbn/alerting-plugin/common';
 import type { Type } from '@kbn/securitysolution-io-ts-alerting-types';
 import type { NamespaceType } from '@kbn/securitysolution-io-ts-list-types';
-import { PositiveInteger } from '@kbn/securitysolution-io-ts-types';
 import type { RuleSnoozeSettings } from '@kbn/triggers-actions-ui-plugin/public/types';
 import type { WarningSchema } from '../../../../common/api/detection_engine';
 import type { RuleExecutionStatus } from '../../../../common/api/detection_engine/rule_monitoring';
@@ -49,11 +48,11 @@ export interface PatchRuleProps {
 
 export type Rule = RuleResponse;
 
-export type PaginationOptions = t.TypeOf<typeof PaginationOptions>;
-export const PaginationOptions = t.type({
-  page: PositiveInteger,
-  perPage: PositiveInteger,
-  total: PositiveInteger,
+export type PaginationOptions = z.infer<typeof PaginationOptions>;
+export const PaginationOptions = z.object({
+  page: z.number().int().min(0),
+  perPage: z.number().int().min(0),
+  total: z.number().int().min(0),
 });
 
 export interface FetchRulesProps {
@@ -81,8 +80,8 @@ export interface RulesSnoozeSettingsBatchResponse {
   data: RuleSnoozeSettingsResponse[];
 }
 
-export type SortingOptions = t.TypeOf<typeof SortingOptions>;
-export const SortingOptions = t.type({
+export type SortingOptions = z.infer<typeof SortingOptions>;
+export const SortingOptions = z.object({
   field: FindRulesSortField,
   order: SortOrder,
 });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx
index 9e3e9c8b602b1..23bb9106d62cf 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx
@@ -10,7 +10,7 @@ import { EuiConfirmModal } from '@elastic/eui';
 
 import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
 import { BulkActionRuleErrorsList } from './bulk_action_rule_errors_list';
-import { BulkActionType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import { assertUnreachable } from '../../../../../../common/utility_types';
 
 import type { BulkActionForConfirmation, DryRunResult } from './types';
@@ -20,9 +20,9 @@ const getActionRejectedTitle = (
   failedRulesCount: number
 ) => {
   switch (bulkAction) {
-    case BulkActionType.edit:
+    case BulkActionTypeEnum.edit:
       return i18n.BULK_EDIT_CONFIRMATION_REJECTED_TITLE(failedRulesCount);
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return i18n.BULK_EXPORT_CONFIRMATION_REJECTED_TITLE(failedRulesCount);
     default:
       assertUnreachable(bulkAction);
@@ -34,9 +34,9 @@ const getActionConfirmLabel = (
   succeededRulesCount: number
 ) => {
   switch (bulkAction) {
-    case BulkActionType.edit:
+    case BulkActionTypeEnum.edit:
       return i18n.BULK_EDIT_CONFIRMATION_CONFIRM(succeededRulesCount);
-    case BulkActionType.export:
+    case BulkActionTypeEnum.export:
       return i18n.BULK_EXPORT_CONFIRMATION_CONFIRM(succeededRulesCount);
     default:
       assertUnreachable(bulkAction);
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx
index 05a27a17274a1..5b90a457a6bd4 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx
@@ -13,7 +13,7 @@ import { render, screen } from '@testing-library/react';
 import { BulkActionRuleErrorsList } from './bulk_action_rule_errors_list';
 import { BulkActionsDryRunErrCode } from '../../../../../../common/constants';
 import type { DryRunResult } from './types';
-import { BulkActionType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 const Wrapper: FC = ({ children }) => {
   return (
@@ -26,7 +26,7 @@ const Wrapper: FC = ({ children }) => {
 describe('Component BulkEditRuleErrorsList', () => {
   test('should not render component if no errors present', () => {
     const { container } = render(
-      <BulkActionRuleErrorsList bulkAction={BulkActionType.edit} ruleErrors={[]} />,
+      <BulkActionRuleErrorsList bulkAction={BulkActionTypeEnum.edit} ruleErrors={[]} />,
       {
         wrapper: Wrapper,
       }
@@ -46,9 +46,12 @@ describe('Component BulkEditRuleErrorsList', () => {
         ruleIds: ['rule:1'],
       },
     ];
-    render(<BulkActionRuleErrorsList bulkAction={BulkActionType.edit} ruleErrors={ruleErrors} />, {
-      wrapper: Wrapper,
-    });
+    render(
+      <BulkActionRuleErrorsList bulkAction={BulkActionTypeEnum.edit} ruleErrors={ruleErrors} />,
+      {
+        wrapper: Wrapper,
+      }
+    );
 
     expect(screen.getByText("2 rules can't be edited (test failure)")).toBeInTheDocument();
     expect(screen.getByText("1 rule can't be edited (another failure)")).toBeInTheDocument();
@@ -80,9 +83,12 @@ describe('Component BulkEditRuleErrorsList', () => {
         ruleIds: ['rule:1', 'rule:2'],
       },
     ];
-    render(<BulkActionRuleErrorsList bulkAction={BulkActionType.edit} ruleErrors={ruleErrors} />, {
-      wrapper: Wrapper,
-    });
+    render(
+      <BulkActionRuleErrorsList bulkAction={BulkActionTypeEnum.edit} ruleErrors={ruleErrors} />,
+      {
+        wrapper: Wrapper,
+      }
+    );
 
     expect(screen.getByText(value)).toBeInTheDocument();
   });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx
index 674206446f85c..907e67f658bc4 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx
@@ -10,7 +10,7 @@ import { EuiSpacer } from '@elastic/eui';
 import { FormattedMessage } from '@kbn/i18n-react';
 
 import { BulkActionsDryRunErrCode } from '../../../../../../common/constants';
-import { BulkActionType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 import type { DryRunResult, BulkActionForConfirmation } from './types';
 
@@ -132,7 +132,7 @@ const BulkActionRuleErrorsListComponent = ({
         {ruleErrors.map(({ message, errorCode, ruleIds }) => {
           const rulesCount = ruleIds.length;
           switch (bulkAction) {
-            case BulkActionType.edit:
+            case BulkActionTypeEnum.edit:
               return (
                 <BulkEditRuleErrorItem
                   message={message}
@@ -141,7 +141,7 @@ const BulkActionRuleErrorsListComponent = ({
                 />
               );
 
-            case BulkActionType.export:
+            case BulkActionTypeEnum.export:
               return (
                 <BulkExportRuleErrorItem
                   message={message}
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx
index 99def53591335..8ef1f9723cd39 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx
@@ -7,8 +7,11 @@
 
 import React from 'react';
 
-import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type {
+  BulkActionEditPayload,
+  BulkActionEditType,
+} from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 import { IndexPatternsForm } from './forms/index_patterns_form';
 import { TagsForm } from './forms/tags_form';
@@ -25,23 +28,23 @@ interface BulkEditFlyoutProps {
 
 const BulkEditFlyoutComponent = ({ editAction, ...props }: BulkEditFlyoutProps) => {
   switch (editAction) {
-    case BulkActionEditType.add_index_patterns:
-    case BulkActionEditType.delete_index_patterns:
-    case BulkActionEditType.set_index_patterns:
+    case BulkActionEditTypeEnum.add_index_patterns:
+    case BulkActionEditTypeEnum.delete_index_patterns:
+    case BulkActionEditTypeEnum.set_index_patterns:
       return <IndexPatternsForm {...props} editAction={editAction} />;
 
-    case BulkActionEditType.add_tags:
-    case BulkActionEditType.delete_tags:
-    case BulkActionEditType.set_tags:
+    case BulkActionEditTypeEnum.add_tags:
+    case BulkActionEditTypeEnum.delete_tags:
+    case BulkActionEditTypeEnum.set_tags:
       return <TagsForm {...props} editAction={editAction} />;
 
-    case BulkActionEditType.set_timeline:
+    case BulkActionEditTypeEnum.set_timeline:
       return <TimelineTemplateForm {...props} />;
 
-    case BulkActionEditType.add_rule_actions:
-    case BulkActionEditType.set_rule_actions:
+    case BulkActionEditTypeEnum.add_rule_actions:
+    case BulkActionEditTypeEnum.set_rule_actions:
       return <RuleActionsForm {...props} />;
-    case BulkActionEditType.set_schedule:
+    case BulkActionEditTypeEnum.set_schedule:
       return <ScheduleForm {...props} />;
 
     default:
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx
index c9d4900e9adc7..e124e23bd0aea 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx
@@ -14,8 +14,8 @@ import * as i18n from '../../../../../../detections/pages/detection_engine/rules
 import { DEFAULT_INDEX_KEY } from '../../../../../../../common/constants';
 import { useKibana } from '../../../../../../common/lib/kibana';
 
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
+import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
 
 import type { FormSchema } from '../../../../../../shared_imports';
 import {
@@ -31,9 +31,9 @@ import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';
 const CommonUseField = getUseField({ component: Field });
 
 type IndexPatternsEditActions =
-  | BulkActionEditType.add_index_patterns
-  | BulkActionEditType.delete_index_patterns
-  | BulkActionEditType.set_index_patterns;
+  | BulkActionEditTypeEnum['add_index_patterns']
+  | BulkActionEditTypeEnum['delete_index_patterns']
+  | BulkActionEditTypeEnum['set_index_patterns'];
 
 interface IndexPatternsFormData {
   index: string[];
@@ -70,7 +70,7 @@ const initialFormData: IndexPatternsFormData = {
 };
 
 const getFormConfig = (editAction: IndexPatternsEditActions) =>
-  editAction === BulkActionEditType.add_index_patterns
+  editAction === BulkActionEditTypeEnum.add_index_patterns
     ? {
         indexLabel: i18n.BULK_EDIT_FLYOUT_FORM_ADD_INDEX_PATTERNS_LABEL,
         indexHelpText: i18n.BULK_EDIT_FLYOUT_FORM_ADD_INDEX_PATTERNS_HELP_TEXT,
@@ -115,13 +115,11 @@ const IndexPatternsFormComponent = ({
       return;
     }
 
-    const payload = {
+    onConfirm({
       value: data.index,
-      type: data.overwrite ? BulkActionEditType.set_index_patterns : editAction,
+      type: data.overwrite ? BulkActionEditTypeEnum.set_index_patterns : editAction,
       overwrite_data_views: data.overwriteDataViews,
-    };
-
-    onConfirm(payload);
+    });
   };
 
   return (
@@ -140,7 +138,7 @@ const IndexPatternsFormComponent = ({
           },
         }}
       />
-      {editAction === BulkActionEditType.add_index_patterns && (
+      {editAction === BulkActionEditTypeEnum.add_index_patterns && (
         <CommonUseField
           path="overwrite"
           componentProps={{
@@ -161,7 +159,7 @@ const IndexPatternsFormComponent = ({
           </EuiCallOut>
         </EuiFormRow>
       )}
-      {editAction === BulkActionEditType.add_index_patterns && (
+      {editAction === BulkActionEditTypeEnum.add_index_patterns && (
         <CommonUseField
           path="overwriteDataViews"
           componentProps={{
@@ -180,7 +178,7 @@ const IndexPatternsFormComponent = ({
           </EuiCallOut>
         </EuiFormRow>
       )}
-      {editAction === BulkActionEditType.delete_index_patterns && (
+      {editAction === BulkActionEditTypeEnum.delete_index_patterns && (
         <EuiFormRow fullWidth>
           <EuiCallOut color="warning" size="s" data-test-subj="bulkEditRulesDataViewsWarning">
             <FormattedMessage
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx
index a60bce6488d70..22f2f4abd8418 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx
@@ -23,8 +23,8 @@ import {
   getUseField,
   Field,
 } from '../../../../../../shared_imports';
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
+import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
 
 import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';
 import { bulkAddRuleActions as i18n } from '../translations';
@@ -99,8 +99,8 @@ const RuleActionsFormComponent = ({ rulesCount, onClose, onConfirm }: RuleAction
 
     const { actions = [], overwrite: overwriteValue } = data;
     const editAction = overwriteValue
-      ? BulkActionEditType.set_rule_actions
-      : BulkActionEditType.add_rule_actions;
+      ? BulkActionEditTypeEnum.set_rule_actions
+      : BulkActionEditTypeEnum.add_rule_actions;
 
     onConfirm({
       type: editAction,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx
index fe580dab3a6de..7098638b31633 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx
@@ -7,8 +7,8 @@
 
 import { EuiCallOut } from '@elastic/eui';
 import React, { useCallback } from 'react';
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 import { ScheduleItem } from '../../../../../../detections/components/rules/schedule_item_form';
 import type { FormSchema } from '../../../../../../shared_imports';
 import { UseField, useForm } from '../../../../../../shared_imports';
@@ -55,7 +55,7 @@ export const ScheduleForm = ({ rulesCount, onClose, onConfirm }: ScheduleFormCom
     }
 
     onConfirm({
-      type: BulkActionEditType.set_schedule,
+      type: BulkActionEditTypeEnum.set_schedule,
       value: {
         interval: data.interval,
         lookback: data.lookback,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx
index 6ed90307f4af2..bcb23e3802edb 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx
@@ -10,8 +10,8 @@ import { FormattedMessage } from '@kbn/i18n-react';
 import React, { useMemo } from 'react';
 
 import { useRuleManagementFilters } from '../../../../../rule_management/logic/use_rule_management_filters';
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 import * as i18n from '../../../../../../detections/pages/detection_engine/rules/translations';
 import { caseInsensitiveSort } from '../../helpers';
 
@@ -28,9 +28,9 @@ import {
 import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';
 
 type TagsEditActions =
-  | BulkActionEditType.add_tags
-  | BulkActionEditType.delete_tags
-  | BulkActionEditType.set_tags;
+  | BulkActionEditTypeEnum['add_tags']
+  | BulkActionEditTypeEnum['delete_tags']
+  | BulkActionEditTypeEnum['set_tags'];
 
 const CommonUseField = getUseField({ component: Field });
 
@@ -58,7 +58,7 @@ const schema: FormSchema<TagsFormData> = {
 const initialFormData: TagsFormData = { tags: [], overwrite: false };
 
 const getFormConfig = (editAction: TagsEditActions) =>
-  editAction === BulkActionEditType.add_tags
+  editAction === BulkActionEditTypeEnum.add_tags
     ? {
         tagsLabel: i18n.BULK_EDIT_FLYOUT_FORM_ADD_TAGS_LABEL,
         tagsHelpText: i18n.BULK_EDIT_FLYOUT_FORM_ADD_TAGS_HELP_TEXT,
@@ -97,12 +97,10 @@ const TagsFormComponent = ({ editAction, rulesCount, onClose, onConfirm }: TagsF
       return;
     }
 
-    const payload = {
+    onConfirm({
       value: data.tags,
-      type: data.overwrite ? BulkActionEditType.set_tags : editAction,
-    };
-
-    onConfirm(payload);
+      type: data.overwrite ? BulkActionEditTypeEnum.set_tags : editAction,
+    });
   };
 
   return (
@@ -121,7 +119,7 @@ const TagsFormComponent = ({ editAction, rulesCount, onClose, onConfirm }: TagsF
           },
         }}
       />
-      {editAction === BulkActionEditType.add_tags ? (
+      {editAction === BulkActionEditTypeEnum.add_tags ? (
         <CommonUseField
           path="overwrite"
           componentProps={{
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx
index beded49efb24b..88312ffb2a021 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx
@@ -11,8 +11,8 @@ import { EuiCallOut } from '@elastic/eui';
 import type { FormSchema } from '../../../../../../shared_imports';
 import { useForm, UseField } from '../../../../../../shared_imports';
 import { PickTimeline } from '../../../../../../detections/components/rules/pick_timeline';
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 
 import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';
 import { bulkApplyTimelineTemplate as i18n } from '../translations';
@@ -62,7 +62,7 @@ const TimelineTemplateFormComponent = (props: TimelineTemplateFormProps) => {
     const timelineTitle = timelineId ? data.timeline.title : '';
 
     onConfirm({
-      type: BulkActionEditType.set_timeline,
+      type: BulkActionEditTypeEnum.set_timeline,
       value: {
         timeline_id: timelineId,
         timeline_title: timelineTitle,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts
index 000a7e37a9cec..409ee722c6383 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts
@@ -6,14 +6,14 @@
  */
 
 import type { BulkActionsDryRunErrCode } from '../../../../../../common/constants';
-import type { BulkActionType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 /**
  * Only 2 bulk actions are supported for for confirmation dry run modal:
  * * export
  * * edit
  */
-export type BulkActionForConfirmation = BulkActionType.export | BulkActionType.edit;
+export type BulkActionForConfirmation = BulkActionTypeEnum['export'] | BulkActionTypeEnum['edit'];
 
 /**
  * transformed results of dry run
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx
index a7c5e35ff3341..41802a4738b8d 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx
@@ -14,11 +14,14 @@ import { euiThemeVars } from '@kbn/ui-theme';
 import React, { useCallback } from 'react';
 import { convertRulesFilterToKQL } from '../../../../../../common/detection_engine/rule_management/rule_filtering';
 import { DuplicateOptions } from '../../../../../../common/detection_engine/rule_management/constants';
-import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management';
-import {
-  BulkActionType,
+import type {
+  BulkActionEditPayload,
   BulkActionEditType,
 } from '../../../../../../common/api/detection_engine/rule_management';
+import {
+  BulkActionTypeEnum,
+  BulkActionEditTypeEnum,
+} from '../../../../../../common/api/detection_engine/rule_management';
 import { isMlRule } from '../../../../../../common/machine_learning/helpers';
 import { useAppToasts } from '../../../../../common/hooks/use_app_toasts';
 import { BULK_RULE_ACTIONS } from '../../../../../common/lib/apm/user_actions';
@@ -106,7 +109,7 @@ export const useBulkActions = ({
           : disabledRulesNoML.map(({ id }) => id);
 
         await executeBulkAction({
-          type: BulkActionType.enable,
+          type: BulkActionTypeEnum.enable,
           ...(isAllSelected ? { query: kql } : { ids: ruleIds }),
         });
       };
@@ -118,7 +121,7 @@ export const useBulkActions = ({
         const enabledIds = selectedRules.filter(({ enabled }) => enabled).map(({ id }) => id);
 
         await executeBulkAction({
-          type: BulkActionType.disable,
+          type: BulkActionTypeEnum.disable,
           ...(isAllSelected ? { query: kql } : { ids: enabledIds }),
         });
       };
@@ -132,7 +135,7 @@ export const useBulkActions = ({
           return;
         }
         await executeBulkAction({
-          type: BulkActionType.duplicate,
+          type: BulkActionTypeEnum.duplicate,
           duplicatePayload: {
             include_exceptions:
               modalDuplicationConfirmationResult === DuplicateOptions.withExceptions ||
@@ -159,7 +162,7 @@ export const useBulkActions = ({
         startTransaction({ name: BULK_RULE_ACTIONS.DELETE });
 
         await executeBulkAction({
-          type: BulkActionType.delete,
+          type: BulkActionTypeEnum.delete,
           ...(isAllSelected ? { query: kql } : { ids: selectedRuleIds }),
         });
       };
@@ -183,7 +186,7 @@ export const useBulkActions = ({
         // they can either cancel action or proceed with export of succeeded rules
         const hasActionBeenConfirmed = await showBulkActionConfirmation(
           transformExportDetailsToDryRunResult(details),
-          BulkActionType.export
+          BulkActionTypeEnum.export
         );
         if (hasActionBeenConfirmed === false) {
           return;
@@ -201,7 +204,7 @@ export const useBulkActions = ({
         setIsPreflightInProgress(true);
 
         const dryRunResult = await executeBulkActionsDryRun({
-          type: BulkActionType.edit,
+          type: BulkActionTypeEnum.edit,
           ...(isAllSelected
             ? { query: convertRulesFilterToKQL(filterOptions) }
             : { ids: selectedRuleIds }),
@@ -213,7 +216,7 @@ export const useBulkActions = ({
         // User has cancelled edit action or there are no custom rules to proceed
         const hasActionBeenConfirmed = await showBulkActionConfirmation(
           dryRunResult,
-          BulkActionType.edit
+          BulkActionTypeEnum.edit
         );
         if (hasActionBeenConfirmed === false) {
           return;
@@ -264,7 +267,7 @@ export const useBulkActions = ({
         }, 5 * 1000);
 
         await executeBulkAction({
-          type: BulkActionType.edit,
+          type: BulkActionTypeEnum.edit,
           ...prepareSearchParams({
             ...(isAllSelected ? { filterOptions } : { selectedRuleIds }),
             dryRunResult,
@@ -330,7 +333,7 @@ export const useBulkActions = ({
               name: i18n.BULK_ACTION_ADD_RULE_ACTIONS,
               'data-test-subj': 'addRuleActionsBulk',
               disabled: !hasActionsPrivileges || isEditDisabled,
-              onClick: handleBulkEdit(BulkActionEditType.add_rule_actions),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.add_rule_actions),
               toolTipContent: !hasActionsPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
                 : undefined,
@@ -342,7 +345,7 @@ export const useBulkActions = ({
               name: i18n.BULK_ACTION_SET_SCHEDULE,
               'data-test-subj': 'setScheduleBulk',
               disabled: isEditDisabled,
-              onClick: handleBulkEdit(BulkActionEditType.set_schedule),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.set_schedule),
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
                 : undefined,
@@ -354,7 +357,7 @@ export const useBulkActions = ({
               name: i18n.BULK_ACTION_APPLY_TIMELINE_TEMPLATE,
               'data-test-subj': 'applyTimelineTemplateBulk',
               disabled: isEditDisabled,
-              onClick: handleBulkEdit(BulkActionEditType.set_timeline),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.set_timeline),
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
                 : undefined,
@@ -407,7 +410,7 @@ export const useBulkActions = ({
               key: i18n.BULK_ACTION_ADD_TAGS,
               name: i18n.BULK_ACTION_ADD_TAGS,
               'data-test-subj': 'addTagsBulkEditRule',
-              onClick: handleBulkEdit(BulkActionEditType.add_tags),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.add_tags),
               disabled: isEditDisabled,
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
@@ -418,7 +421,7 @@ export const useBulkActions = ({
               key: i18n.BULK_ACTION_DELETE_TAGS,
               name: i18n.BULK_ACTION_DELETE_TAGS,
               'data-test-subj': 'deleteTagsBulkEditRule',
-              onClick: handleBulkEdit(BulkActionEditType.delete_tags),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.delete_tags),
               disabled: isEditDisabled,
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
@@ -435,7 +438,7 @@ export const useBulkActions = ({
               key: i18n.BULK_ACTION_ADD_INDEX_PATTERNS,
               name: i18n.BULK_ACTION_ADD_INDEX_PATTERNS,
               'data-test-subj': 'addIndexPatternsBulkEditRule',
-              onClick: handleBulkEdit(BulkActionEditType.add_index_patterns),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.add_index_patterns),
               disabled: isEditDisabled,
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
@@ -446,7 +449,7 @@ export const useBulkActions = ({
               key: i18n.BULK_ACTION_DELETE_INDEX_PATTERNS,
               name: i18n.BULK_ACTION_DELETE_INDEX_PATTERNS,
               'data-test-subj': 'deleteIndexPatternsBulkEditRule',
-              onClick: handleBulkEdit(BulkActionEditType.delete_index_patterns),
+              onClick: handleBulkEdit(BulkActionEditTypeEnum.delete_index_patterns),
               disabled: isEditDisabled,
               toolTipContent: missingActionPrivileges
                 ? i18n.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts
index 9ce813fc6d9a2..5ef159bed856b 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts
@@ -11,11 +11,23 @@ import { useBoolState } from '../../../../../common/hooks/use_bool_state';
 
 import type { DryRunResult, BulkActionForConfirmation } from './types';
 
+interface BulkActionsConfirmation {
+  bulkActionsDryRunResult: DryRunResult | undefined;
+  bulkAction: BulkActionForConfirmation | undefined;
+  isBulkActionConfirmationVisible: boolean;
+  showBulkActionConfirmation: (
+    result: DryRunResult | undefined,
+    action: BulkActionForConfirmation
+  ) => Promise<boolean>;
+  cancelBulkActionConfirmation: () => void;
+  approveBulkActionConfirmation: () => void;
+}
+
 /**
  * hook that controls bulk actions confirmation modal window and its content
  */
 // TODO Why does this hook exist? Consider removing it altogether
-export const useBulkActionsConfirmation = () => {
+export const useBulkActionsConfirmation = (): BulkActionsConfirmation => {
   const [bulkAction, setBulkAction] = useState<BulkActionForConfirmation>();
   const [dryRunResult, setDryRunResult] = useState<DryRunResult>();
   const [isBulkActionConfirmationVisible, showModal, hideModal] = useBoolState();
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts
index 260e187e46fbe..f2dc15233cb6b 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts
@@ -10,10 +10,20 @@ import { useAsyncConfirmation } from '../rules_table/use_async_confirmation';
 import type {
   BulkActionEditPayload,
   BulkActionEditType,
-} from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+} from '../../../../../../common/api/detection_engine/rule_management';
 import { useBoolState } from '../../../../../common/hooks/use_bool_state';
 
-export const useBulkEditFormFlyout = () => {
+interface UseBulkEditFormFlyout {
+  bulkEditActionType: BulkActionEditType | undefined;
+  isBulkEditFlyoutVisible: boolean;
+  handleBulkEditFormConfirm: (data: BulkActionEditPayload) => void;
+  handleBulkEditFormCancel: () => void;
+  completeBulkEditForm: (
+    editActionType: BulkActionEditType
+  ) => Promise<BulkActionEditPayload | null>;
+}
+
+export const useBulkEditFormFlyout = (): UseBulkEditFormFlyout => {
   const dataFormRef = useRef<BulkActionEditPayload | null>(null);
   const [actionType, setActionType] = useState<BulkActionEditType>();
   const [isBulkEditFlyoutVisible, showBulkEditFlyout, hideBulkEditFlyout] = useBoolState();
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts
index 3adae50d99adf..0549306036fd2 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts
@@ -5,19 +5,20 @@
  * 2.0.
  */
 
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 
 import { computeDryRunEditPayload } from './compute_dry_run_edit_payload';
 
 describe('computeDryRunEditPayload', () => {
-  test.each([
-    [BulkActionEditType.set_index_patterns, []],
-    [BulkActionEditType.delete_index_patterns, []],
-    [BulkActionEditType.add_index_patterns, []],
-    [BulkActionEditType.add_tags, []],
-    [BulkActionEditType.delete_index_patterns, []],
-    [BulkActionEditType.set_tags, []],
-    [BulkActionEditType.set_timeline, { timeline_id: '', timeline_title: '' }],
+  test.each<[BulkActionEditType, unknown]>([
+    [BulkActionEditTypeEnum.set_index_patterns, []],
+    [BulkActionEditTypeEnum.delete_index_patterns, []],
+    [BulkActionEditTypeEnum.add_index_patterns, []],
+    [BulkActionEditTypeEnum.add_tags, []],
+    [BulkActionEditTypeEnum.delete_index_patterns, []],
+    [BulkActionEditTypeEnum.set_tags, []],
+    [BulkActionEditTypeEnum.set_timeline, { timeline_id: '', timeline_title: '' }],
   ])('should return correct payload for bulk edit action %s', (editAction, value) => {
     const payload = computeDryRunEditPayload(editAction);
     expect(payload).toHaveLength(1);
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts
index d31bbfaa91790..ba5d565e393d0 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts
@@ -5,8 +5,11 @@
  * 2.0.
  */
 
-import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type {
+  BulkActionEditPayload,
+  BulkActionEditType,
+} from '../../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 import { assertUnreachable } from '../../../../../../../common/utility_types';
 
 /**
@@ -17,9 +20,9 @@ import { assertUnreachable } from '../../../../../../../common/utility_types';
  */
 export function computeDryRunEditPayload(editAction: BulkActionEditType): BulkActionEditPayload[] {
   switch (editAction) {
-    case BulkActionEditType.add_index_patterns:
-    case BulkActionEditType.delete_index_patterns:
-    case BulkActionEditType.set_index_patterns:
+    case BulkActionEditTypeEnum.add_index_patterns:
+    case BulkActionEditTypeEnum.delete_index_patterns:
+    case BulkActionEditTypeEnum.set_index_patterns:
       return [
         {
           type: editAction,
@@ -27,9 +30,9 @@ export function computeDryRunEditPayload(editAction: BulkActionEditType): BulkAc
         },
       ];
 
-    case BulkActionEditType.add_tags:
-    case BulkActionEditType.delete_tags:
-    case BulkActionEditType.set_tags:
+    case BulkActionEditTypeEnum.add_tags:
+    case BulkActionEditTypeEnum.delete_tags:
+    case BulkActionEditTypeEnum.set_tags:
       return [
         {
           type: editAction,
@@ -37,7 +40,7 @@ export function computeDryRunEditPayload(editAction: BulkActionEditType): BulkAc
         },
       ];
 
-    case BulkActionEditType.set_timeline:
+    case BulkActionEditTypeEnum.set_timeline:
       return [
         {
           type: editAction,
@@ -45,15 +48,15 @@ export function computeDryRunEditPayload(editAction: BulkActionEditType): BulkAc
         },
       ];
 
-    case BulkActionEditType.add_rule_actions:
-    case BulkActionEditType.set_rule_actions:
+    case BulkActionEditTypeEnum.add_rule_actions:
+    case BulkActionEditTypeEnum.set_rule_actions:
       return [
         {
           type: editAction,
           value: { actions: [] },
         },
       ];
-    case BulkActionEditType.set_schedule:
+    case BulkActionEditTypeEnum.set_schedule:
       return [
         {
           type: editAction,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx
index e27910df0b7e0..fbb81fd0b66f4 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx
@@ -12,7 +12,7 @@ import React, { useCallback, useEffect, useMemo } from 'react';
 import useObservable from 'react-use/lib/useObservable';
 import { of } from 'rxjs';
 import { siemGuideId } from '../../../../../../../common/guided_onboarding/siem_guide_config';
-import { BulkActionType } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
 import { useKibana } from '../../../../../../common/lib/kibana';
 import { useFindRulesQuery } from '../../../../../rule_management/api/hooks/use_find_rules_query';
 import { useExecuteBulkAction } from '../../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
@@ -113,7 +113,7 @@ export const RulesManagementTour = () => {
   const enableDemoRule = useCallback(async () => {
     if (demoRule) {
       await executeBulkAction({
-        type: BulkActionType.enable,
+        type: BulkActionTypeEnum.enable,
         ids: [demoRule.id],
       });
     }
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts
index 84c23a248a0db..1a4efe7517ac9 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts
@@ -5,41 +5,45 @@
  * 2.0.
  */
 
-import * as t from 'io-ts';
-import { enumeration } from '@kbn/securitysolution-io-ts-types';
-import { SortingOptions, PaginationOptions } from '../../../../rule_management/logic';
-import { TRuleExecutionStatus } from '../../../../../../common/api/detection_engine/rule_monitoring/model/execution_status';
+import * as z from 'zod';
+import { RuleExecutionStatus } from '../../../../../../common/api/detection_engine';
+import { PaginationOptions, SortingOptions } from '../../../../rule_management/logic';
 
 export enum RuleSource {
   Prebuilt = 'prebuilt',
   Custom = 'custom',
 }
 
-export type RulesTableSavedFilter = t.TypeOf<typeof RulesTableSavedFilter>;
-export const RulesTableSavedFilter = t.partial({
-  searchTerm: t.string,
-  source: enumeration('RuleSource', RuleSource),
-  tags: t.array(t.string),
-  enabled: t.boolean,
-  ruleExecutionStatus: TRuleExecutionStatus,
-});
-
-export type RulesTableSavedSorting = t.TypeOf<typeof RulesTableSavedSorting>;
-export const RulesTableSavedSorting = t.partial({
-  field: SortingOptions.props.field,
-  order: SortingOptions.props.order,
-});
-
-export type RulesTableStorageSavedPagination = t.TypeOf<typeof RulesTableStorageSavedPagination>;
-export const RulesTableStorageSavedPagination = t.partial({
-  perPage: PaginationOptions.props.perPage,
-});
-
-export type RulesTableUrlSavedPagination = t.TypeOf<typeof RulesTableUrlSavedPagination>;
-export const RulesTableUrlSavedPagination = t.partial({
-  page: PaginationOptions.props.page,
-  perPage: PaginationOptions.props.perPage,
-});
+export const RulesTableSavedFilter = z
+  .object({
+    searchTerm: z.string(),
+    source: z.nativeEnum(RuleSource),
+    tags: z.array(z.string()),
+    enabled: z.boolean(),
+    ruleExecutionStatus: RuleExecutionStatus,
+  })
+  .partial();
+
+export type RulesTableSavedFilter = z.infer<typeof RulesTableSavedFilter>;
+
+export const RulesTableSavedSorting = SortingOptions.pick({
+  field: true,
+  order: true,
+}).partial();
+
+export type RulesTableSavedSorting = z.infer<typeof RulesTableSavedSorting>;
+
+export const RulesTableStorageSavedPagination = PaginationOptions.pick({
+  perPage: true,
+}).partial();
+
+export type RulesTableStorageSavedPagination = z.infer<typeof RulesTableStorageSavedPagination>;
+
+export type RulesTableUrlSavedPagination = z.infer<typeof RulesTableUrlSavedPagination>;
+export const RulesTableUrlSavedPagination = PaginationOptions.pick({
+  page: true,
+  perPage: true,
+}).partial();
 
 export type RulesTableStorageSavedState = RulesTableSavedFilter &
   RulesTableSavedSorting &
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts
index bc1b28ee72a41..3055c9cbdcbba 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts
@@ -6,7 +6,7 @@
  */
 
 import type { Storage } from '@kbn/kibana-utils-plugin/public';
-import { validateNonExact } from '@kbn/securitysolution-io-ts-utils';
+import { safeParseResult } from '@kbn/zod-helpers';
 import { useGetInitialUrlParamValue } from '../../../../../common/utils/global_query_string/helpers';
 import { RULES_TABLE_MAX_PAGE_SIZE } from '../../../../../../common/constants';
 import { useKibana } from '../../../../../common/lib/kibana';
@@ -57,8 +57,8 @@ function validateState(
   urlState: RulesTableUrlSavedState | null,
   storageState: RulesTableStorageSavedState | null
 ): [RulesTableSavedFilter, RulesTableSavedSorting, RulesTableUrlSavedPagination] {
-  const [filterFromUrl] = validateNonExact(urlState, RulesTableSavedFilter);
-  const [filterFromStorage] = validateNonExact(storageState, RulesTableSavedFilter);
+  const filterFromUrl = safeParseResult(urlState, RulesTableSavedFilter);
+  const filterFromStorage = safeParseResult(storageState, RulesTableSavedFilter);
   // We have to expose filter, sorting and pagination objects by explicitly specifying each field
   // since urlState and/or storageState may contain unnecessary fields (e.g. outdated or explicitly added by user)
   // and validateNonExact doesn't truncate fields not included in the type RulesTableSavedFilter and etc.
@@ -71,15 +71,15 @@ function validateState(
       filterFromUrl?.ruleExecutionStatus ?? filterFromStorage?.ruleExecutionStatus,
   };
 
-  const [sortingFromUrl] = validateNonExact(urlState, RulesTableSavedSorting);
-  const [sortingFromStorage] = validateNonExact(storageState, RulesTableSavedSorting);
+  const sortingFromUrl = safeParseResult(urlState, RulesTableSavedSorting);
+  const sortingFromStorage = safeParseResult(storageState, RulesTableSavedSorting);
   const sorting = {
     field: sortingFromUrl?.field ?? sortingFromStorage?.field,
     order: sortingFromUrl?.order ?? sortingFromStorage?.order,
-  };
+  } as const;
 
-  const [paginationFromUrl] = validateNonExact(urlState, RulesTableUrlSavedPagination);
-  const [paginationFromStorage] = validateNonExact(storageState, RulesTableStorageSavedPagination);
+  const paginationFromUrl = safeParseResult(urlState, RulesTableUrlSavedPagination);
+  const paginationFromStorage = safeParseResult(storageState, RulesTableStorageSavedPagination);
   const pagination = {
     page: paginationFromUrl?.page, // We don't persist page number in the session storage since it may be outdated when restored
     perPage: paginationFromUrl?.perPage ?? paginationFromStorage?.perPage,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx
index 3525793caa3a3..acf43ebf2c36e 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx
@@ -16,10 +16,7 @@ import {
   SecurityPageName,
   SHOW_RELATED_INTEGRATIONS_SETTING,
 } from '../../../../../common/constants';
-import type {
-  DurationMetric,
-  RuleExecutionSummary,
-} from '../../../../../common/api/detection_engine/rule_monitoring';
+import type { RuleExecutionSummary } from '../../../../../common/api/detection_engine/rule_monitoring';
 import { isMlRule } from '../../../../../common/machine_learning/helpers';
 import { getEmptyTagValue } from '../../../../common/components/empty_value';
 import { RuleSnoozeBadge } from '../../../rule_management/components/rule_snooze_badge';
@@ -402,7 +399,7 @@ export const useMonitoringColumns = ({
             tooltipContent={i18n.COLUMN_INDEXING_TIMES_TOOLTIP}
           />
         ),
-        render: (value: DurationMetric | undefined) => (
+        render: (value: number | undefined) => (
           <EuiText data-test-subj="total_indexing_duration_ms" size="s">
             {value != null ? value.toFixed() : getEmptyTagValue()}
           </EuiText>
@@ -419,7 +416,7 @@ export const useMonitoringColumns = ({
             tooltipContent={i18n.COLUMN_QUERY_TIMES_TOOLTIP}
           />
         ),
-        render: (value: DurationMetric | undefined) => (
+        render: (value: number | undefined) => (
           <EuiText data-test-subj="total_search_duration_ms" size="s">
             {value != null ? value.toFixed() : getEmptyTagValue()}
           </EuiText>
@@ -459,7 +456,7 @@ export const useMonitoringColumns = ({
             }
           />
         ),
-        render: (value: DurationMetric | undefined) => (
+        render: (value: number | undefined) => (
           <EuiText data-test-subj="gap" size="s">
             {value != null ? moment.duration(value, 'seconds').humanize() : getEmptyTagValue()}
           </EuiText>
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx
index 1d9d6ad45c8fa..04fc59da5e027 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx
@@ -9,7 +9,7 @@ import type { DefaultItemAction } from '@elastic/eui';
 import { EuiToolTip } from '@elastic/eui';
 import React from 'react';
 import { DuplicateOptions } from '../../../../../common/detection_engine/rule_management/constants';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
 import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
 import { useKibana } from '../../../../common/lib/kibana';
@@ -75,7 +75,7 @@ export const useRulesTableActions = ({
           return;
         }
         const result = await executeBulkAction({
-          type: BulkActionType.duplicate,
+          type: BulkActionTypeEnum.duplicate,
           ids: [rule.id],
           duplicatePayload: {
             include_exceptions:
@@ -123,7 +123,7 @@ export const useRulesTableActions = ({
 
         startTransaction({ name: SINGLE_RULE_ACTIONS.DELETE });
         await executeBulkAction({
-          type: BulkActionType.delete,
+          type: BulkActionTypeEnum.delete,
           ids: [rule.id],
         });
       },
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx
index 3a2424664f8ab..057a75d9a5a51 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx
@@ -15,7 +15,7 @@ import React, {
 } from 'react';
 import { invariant } from '../../../../../common/utils/invariant';
 import {
-  BulkActionType,
+  BulkActionTypeEnum,
   CoverageOverviewRuleActivity,
   CoverageOverviewRuleSource,
 } from '../../../../../common/api/detection_engine';
@@ -114,7 +114,7 @@ export const CoverageOverviewDashboardContextProvider = ({
 
   const enableAllDisabled = useCallback(
     async (ruleIds: string[]) => {
-      await executeBulkAction({ type: BulkActionType.enable, ids: ruleIds });
+      await executeBulkAction({ type: BulkActionTypeEnum.enable, ids: ruleIds });
     },
     [executeBulkAction]
   );
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts
index b5b8f201f0ff3..a70a9bd66671b 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts
@@ -10,8 +10,8 @@ import type {
   GetRuleExecutionResultsResponse,
 } from '../../../../../common/api/detection_engine/rule_monitoring';
 import {
-  LogLevel,
-  RuleExecutionEventType,
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
 } from '../../../../../common/api/detection_engine/rule_monitoring';
 
 import type {
@@ -30,8 +30,8 @@ export const api: jest.Mocked<IRuleMonitoringApiClient> = {
         {
           timestamp: '2021-12-29T10:42:59.996Z',
           sequence: 0,
-          level: LogLevel.info,
-          type: RuleExecutionEventType['status-change'],
+          level: LogLevelEnum.info,
+          type: RuleExecutionEventTypeEnum['status-change'],
           execution_id: 'execution-id-1',
           message: 'Rule changed status to "succeeded". Rule execution completed without errors',
         },
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts
index d1317e2f74252..640cc1a86e423 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts
@@ -12,11 +12,12 @@ import type {
   GetRuleExecutionResultsResponse,
 } from '../../../../common/api/detection_engine/rule_monitoring';
 import {
-  LogLevel,
-  RuleExecutionEventType,
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
 } from '../../../../common/api/detection_engine/rule_monitoring';
 
 import { api } from './api_client';
+import type { FetchRuleExecutionEventsArgs } from './api_client_interface';
 
 jest.mock('../../../common/lib/kibana');
 
@@ -74,7 +75,7 @@ describe('Rule Monitoring API Client', () => {
 
     const ISO_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
 
-    it.each([
+    it.each<[string, Omit<FetchRuleExecutionEventsArgs, 'ruleId'>, Record<string, unknown>]>([
       [
         'search term filter',
         { searchTerm: 'something to search' },
@@ -82,12 +83,12 @@ describe('Rule Monitoring API Client', () => {
       ],
       [
         'event types filter',
-        { eventTypes: [RuleExecutionEventType.message] },
+        { eventTypes: [RuleExecutionEventTypeEnum.message] },
         { event_types: 'message' },
       ],
       [
         'log level filter',
-        { logLevels: [LogLevel.warn, LogLevel.error] },
+        { logLevels: [LogLevelEnum.warn, LogLevelEnum.error] },
         { log_levels: 'warn,error' },
       ],
       [
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx
index 2c87a184f5b1c..5edc079ef5c42 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx
@@ -7,8 +7,7 @@
 
 import React, { useCallback } from 'react';
 
-import type { RuleExecutionEventType } from '../../../../../../../common/api/detection_engine/rule_monitoring';
-import { RULE_EXECUTION_EVENT_TYPES } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import { RuleExecutionEventType } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import { EventTypeIndicator } from '../../indicators/event_type_indicator';
 import { MultiselectFilter } from '../multiselect_filter';
 
@@ -28,7 +27,7 @@ const EventTypeFilterComponent: React.FC<EventTypeFilterProps> = ({ selectedItem
     <MultiselectFilter<RuleExecutionEventType>
       dataTestSubj="eventTypeFilter"
       title={i18n.FILTER_TITLE}
-      items={RULE_EXECUTION_EVENT_TYPES}
+      items={RuleExecutionEventType.options}
       selectedItems={selectedItems}
       onSelectionChange={onChange}
       renderItem={renderItem}
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts
index 07b3b3a6b096a..9e86215228078 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts
@@ -6,18 +6,19 @@
  */
 
 import type { IconType } from '@elastic/eui';
-import { RuleExecutionEventType } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import type { RuleExecutionEventType } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import { RuleExecutionEventTypeEnum } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import { assertUnreachable } from '../../../../../../../common/utility_types';
 
 import * as i18n from './translations';
 
 export const getBadgeIcon = (type: RuleExecutionEventType): IconType => {
   switch (type) {
-    case RuleExecutionEventType.message:
+    case RuleExecutionEventTypeEnum.message:
       return 'console';
-    case RuleExecutionEventType['status-change']:
+    case RuleExecutionEventTypeEnum['status-change']:
       return 'dot';
-    case RuleExecutionEventType['execution-metrics']:
+    case RuleExecutionEventTypeEnum['execution-metrics']:
       return 'gear';
     default:
       return assertUnreachable(type, 'Unknown rule execution event type');
@@ -26,11 +27,11 @@ export const getBadgeIcon = (type: RuleExecutionEventType): IconType => {
 
 export const getBadgeText = (type: RuleExecutionEventType): string => {
   switch (type) {
-    case RuleExecutionEventType.message:
+    case RuleExecutionEventTypeEnum.message:
       return i18n.TYPE_MESSAGE;
-    case RuleExecutionEventType['status-change']:
+    case RuleExecutionEventTypeEnum['status-change']:
       return i18n.TYPE_STATUS_CHANGE;
-    case RuleExecutionEventType['execution-metrics']:
+    case RuleExecutionEventTypeEnum['execution-metrics']:
       return i18n.TYPE_EXECUTION_METRICS;
     default:
       return assertUnreachable(type, 'Unknown rule execution event type');
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts
index 639c648de0241..702d3edddda5b 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts
@@ -7,20 +7,21 @@
 
 import { upperCase } from 'lodash';
 import type { IconColor } from '@elastic/eui';
-import { LogLevel } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import type { LogLevel } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import { LogLevelEnum } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import { assertUnreachable } from '../../../../../../../common/utility_types';
 
 export const getBadgeColor = (logLevel: LogLevel): IconColor => {
   switch (logLevel) {
-    case LogLevel.trace:
+    case LogLevelEnum.trace:
       return 'hollow';
-    case LogLevel.debug:
+    case LogLevelEnum.debug:
       return 'hollow';
-    case LogLevel.info:
+    case LogLevelEnum.info:
       return 'default';
-    case LogLevel.warn:
+    case LogLevelEnum.warn:
       return 'warning';
-    case LogLevel.error:
+    case LogLevelEnum.error:
       return 'danger';
     default:
       return assertUnreachable(logLevel, 'Unknown log level');
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts
index 39e48c3997478..5fb9c0fb32215 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts
@@ -11,11 +11,18 @@ import type { SortOrder } from '../../../../../../common/api/detection_engine';
 
 type TableItem = Record<string, unknown>;
 
+interface SortingState<T extends TableItem> {
+  sort: {
+    field: keyof T;
+    direction: SortOrder;
+  };
+}
+
 export const useSorting = <T extends TableItem>(defaultField: keyof T, defaultOrder: SortOrder) => {
   const [sortField, setSortField] = useState<keyof T>(defaultField);
   const [sortOrder, setSortOrder] = useState<SortOrder>(defaultOrder);
 
-  const state = useMemo(() => {
+  const state = useMemo<SortingState<T>>(() => {
     return {
       sort: {
         field: sortField,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx
index 866e0e44b6c77..5459968b6c497 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx
@@ -10,8 +10,8 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { renderHook, cleanup } from '@testing-library/react-hooks';
 
 import {
-  LogLevel,
-  RuleExecutionEventType,
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
 } from '../../../../../common/api/detection_engine/rule_monitoring';
 
 import { useExecutionEvents } from './use_execution_events';
@@ -85,8 +85,8 @@ describe('useExecutionEvents', () => {
         {
           timestamp: '2021-12-29T10:42:59.996Z',
           sequence: 0,
-          level: LogLevel.info,
-          type: RuleExecutionEventType['status-change'],
+          level: LogLevelEnum.info,
+          type: RuleExecutionEventTypeEnum['status-change'],
           execution_id: 'execution-id-1',
           message: 'Rule changed status to "succeeded". Rule execution completed without errors',
         },
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts
index d99be0c13e70b..19d6111b5a936 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts
@@ -5,13 +5,13 @@
  * 2.0.
  */
 
-import { RESPONSE_ACTION_TYPES } from '../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../common/api/detection_engine/model/rule_response_actions';
 
 export const getActionDetails = (actionTypeId: string) => {
   switch (actionTypeId) {
-    case RESPONSE_ACTION_TYPES.OSQUERY:
+    case ResponseActionTypesEnum['.osquery']:
       return { logo: 'logoOsquery', name: 'Osquery' };
-    case RESPONSE_ACTION_TYPES.ENDPOINT:
+    case ResponseActionTypesEnum['.endpoint']:
       return { logo: 'logoSecurity', name: 'Endpoint Security' };
     // update when new responseActions are provided
     default:
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts
index ad3e3f8392eb1..e8afdd91d1ff3 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts
@@ -6,10 +6,9 @@
  */
 
 import type { EnabledFeatures } from '@kbn/spaces-plugin/public/management/edit_space/enabled_features';
-import type { ResponseActionTypes } from '../../../common/api/detection_engine/model/rule_response_actions';
 import {
-  RESPONSE_ACTION_TYPES,
-  SUPPORTED_RESPONSE_ACTION_TYPES,
+  ResponseActionTypes,
+  ResponseActionTypesEnum,
 } from '../../../common/api/detection_engine/model/rule_response_actions';
 
 export interface ResponseActionType {
@@ -29,9 +28,9 @@ export const getSupportedResponseActions = (
   userPermissions: EnabledFeatures
 ): ResponseActionType[] =>
   actionTypes.reduce((acc: ResponseActionType[], actionType) => {
-    const isEndpointAction = actionType.id === RESPONSE_ACTION_TYPES.ENDPOINT;
+    const isEndpointAction = actionType.id === ResponseActionTypesEnum['.endpoint'];
     if (!enabledFeatures.endpoint && isEndpointAction) return acc;
-    if (SUPPORTED_RESPONSE_ACTION_TYPES.includes(actionType.id))
+    if (ResponseActionTypes.options.includes(actionType.id))
       return [
         ...acc,
         { ...actionType, disabled: isEndpointAction ? !userPermissions.endpoint : undefined },
@@ -39,14 +38,14 @@ export const getSupportedResponseActions = (
     return acc;
   }, []);
 
-export const responseActionTypes = [
+export const responseActionTypes: ResponseActionType[] = [
   {
-    id: RESPONSE_ACTION_TYPES.OSQUERY,
+    id: ResponseActionTypesEnum['.osquery'],
     name: 'Osquery',
     iconClass: 'logoOsquery',
   },
   {
-    id: RESPONSE_ACTION_TYPES.ENDPOINT,
+    id: ResponseActionTypesEnum['.endpoint'],
     name: 'Endpoint Security',
     iconClass: 'logoSecurity',
   },
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx
index 7b176b96c2948..97f3e932e81fe 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx
@@ -21,7 +21,7 @@ import styled from 'styled-components';
 import { useCheckEndpointPermissions } from './endpoint/check_permissions';
 import { EndpointResponseAction } from './endpoint/endpoint_response_action';
 import type { RuleResponseAction } from '../../../common/api/detection_engine/model/rule_response_actions';
-import { RESPONSE_ACTION_TYPES } from '../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../common/api/detection_engine/model/rule_response_actions';
 import { OsqueryResponseAction } from './osquery/osquery_response_action';
 import { getActionDetails } from './constants';
 import { useFormData } from '../../shared_imports';
@@ -48,10 +48,10 @@ const ResponseActionTypeFormComponent = ({ item, onDeleteAction }: ResponseActio
   const editDisabled = useCheckEndpointPermissions(action) ?? false;
 
   const getResponseActionTypeForm = useMemo(() => {
-    if (action?.actionTypeId === RESPONSE_ACTION_TYPES.OSQUERY) {
+    if (action?.actionTypeId === ResponseActionTypesEnum['.osquery']) {
       return <OsqueryResponseAction item={item} />;
     }
-    if (action?.actionTypeId === RESPONSE_ACTION_TYPES.ENDPOINT) {
+    if (action?.actionTypeId === ResponseActionTypesEnum['.endpoint']) {
       return <EndpointResponseAction item={item} editDisabled={editDisabled} />;
     }
     // Place for other ResponseActionTypes
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx
index 5b1e57e6386f4..22d190d80b9c4 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx
@@ -11,7 +11,7 @@ import { filter, reduce } from 'lodash';
 
 import type { ECSMapping } from '@kbn/osquery-io-ts-types';
 import type { RuleResponseAction } from '../../../common/api/detection_engine/model/rule_response_actions';
-import { RESPONSE_ACTION_TYPES } from '../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../common/api/detection_engine/model/rule_response_actions';
 import { OsqueryParser } from '../../common/components/markdown_editor/plugins/osquery/parser';
 
 interface OsqueryNoteQuery {
@@ -38,7 +38,7 @@ export const getResponseActionsFromNote = (
     (acc: { responseActions: RuleResponseAction[] }, { configuration }: OsqueryNoteQuery) => {
       const responseActionPath = 'responseActions';
       acc[responseActionPath].push({
-        actionTypeId: RESPONSE_ACTION_TYPES.OSQUERY,
+        actionTypeId: ResponseActionTypesEnum['.osquery'],
         params: {
           savedQueryId: undefined,
           packId: undefined,
diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx
index 50c8a5bf50d1b..9a351af0803c7 100644
--- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx
@@ -16,7 +16,7 @@ import React, { useCallback, useMemo } from 'react';
 import styled from 'styled-components';
 import { APP_UI_ID, SecurityPageName } from '../../../../../common/constants';
 import { DuplicateOptions } from '../../../../../common/detection_engine/rule_management/constants';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { getRulesUrl } from '../../../../common/components/link_to/redirect_to_detection_engine';
 import { useBoolState } from '../../../../common/hooks/use_bool_state';
 import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
@@ -94,7 +94,7 @@ const RuleActionsOverflowComponent = ({
                   return;
                 }
                 const result = await executeBulkAction({
-                  type: BulkActionType.duplicate,
+                  type: BulkActionTypeEnum.duplicate,
                   ids: [rule.id],
                   duplicatePayload: {
                     include_exceptions:
@@ -156,7 +156,7 @@ const RuleActionsOverflowComponent = ({
 
                 startTransaction({ name: SINGLE_RULE_ACTIONS.DELETE });
                 await executeBulkAction({
-                  type: BulkActionType.delete,
+                  type: BulkActionTypeEnum.delete,
                   ids: [rule.id],
                 });
 
diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx
index 7e4881800f738..35434a711768e 100644
--- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx
@@ -9,7 +9,7 @@ import type { EuiSwitchEvent } from '@elastic/eui';
 import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner, EuiSwitch } from '@elastic/eui';
 import React, { useCallback, useMemo, useState } from 'react';
 import styled from 'styled-components';
-import { BulkActionType } from '../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
 import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
 import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
 import { useExecuteBulkAction } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
@@ -60,7 +60,7 @@ export const RuleSwitchComponent = ({
         await startMlJobsIfNeeded?.();
       }
       const bulkActionResponse = await executeBulkAction({
-        type: enableRule ? BulkActionType.enable : BulkActionType.disable,
+        type: enableRule ? BulkActionTypeEnum.enable : BulkActionTypeEnum.disable,
         ids: [id],
       });
       if (bulkActionResponse?.attributes.results.updated.length) {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts
index a370f2a89cb6f..fb1285fb89f05 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts
@@ -15,7 +15,7 @@ import {
   visitRuleActions,
 } from '../../tasks/response_actions';
 import { cleanupRule, generateRandomStringName, loadRule } from '../../tasks/api_fixtures';
-import { RESPONSE_ACTION_TYPES } from '../../../../../common/api/detection_engine';
+import { ResponseActionTypesEnum } from '../../../../../common/api/detection_engine';
 import { login, ROLE } from '../../tasks/login';
 
 describe(
@@ -78,7 +78,7 @@ describe(
         cy.getByTestSubj(`command-type-${testedCommand}`).click();
         cy.intercept('POST', '/api/detection_engine/rules', (request) => {
           const result = {
-            action_type_id: RESPONSE_ACTION_TYPES.ENDPOINT,
+            action_type_id: ResponseActionTypesEnum['.endpoint'],
             params: {
               command: testedCommand,
               comment: 'example1',
@@ -127,7 +127,7 @@ describe(
         cy.getByTestSubj('ruleEditSubmitButton').click();
         cy.wait('@updateResponseAction').should(({ request }) => {
           const query = {
-            action_type_id: RESPONSE_ACTION_TYPES.ENDPOINT,
+            action_type_id: ResponseActionTypesEnum['.endpoint'],
             params: {
               command: testedCommand,
               comment: newDescription,
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts
index 73350b48941db..0ec1d5580f40b 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts
@@ -17,7 +17,7 @@ describe('Prebuilt rule asset schema', () => {
     const result = PrebuiltRuleAsset.safeParse(payload);
     expectParseError(result);
     expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
-      `"name: Required, description: Required, risk_score: Required, severity: Required, Invalid input, rule_id: Required, version: Required"`
+      `"name: Required, description: Required, risk_score: Required, severity: Required, rule_id: Required, and 26 more"`
     );
   });
 
@@ -40,7 +40,7 @@ describe('Prebuilt rule asset schema', () => {
     const result = PrebuiltRuleAsset.safeParse(payload);
     expectParseError(result);
     expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
-      `"name: Required, description: Required, risk_score: Required, severity: Required, Invalid input, version: Required"`
+      `"name: Required, description: Required, risk_score: Required, severity: Required, version: Required, and 25 more"`
     );
   });
 
@@ -176,7 +176,9 @@ describe('Prebuilt rule asset schema', () => {
 
     const result = PrebuiltRuleAsset.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", index.0: Expected string, received number, index.0: Expected string, received number, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('saved_query type can have filters with it', () => {
@@ -198,7 +200,9 @@ describe('Prebuilt rule asset schema', () => {
 
     const result = PrebuiltRuleAsset.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", filters: Expected array, received string, filters: Expected array, received string, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('language validates with kuery', () => {
@@ -231,7 +235,9 @@ describe('Prebuilt rule asset schema', () => {
 
     const result = PrebuiltRuleAsset.safeParse(payload);
     expectParseError(result);
-    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"Invalid input"`);
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", language: Invalid enum value. Expected 'kuery' | 'lucene', received 'something-made-up', type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 19 more"`
+    );
   });
 
   test('max_signals cannot be negative', () => {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts
index 428010033c5b2..cd01a251a3c75 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts
@@ -486,7 +486,7 @@ describe('Perform bulk action route', () => {
       });
       const result = server.validate(request);
       expect(result.badRequest).toHaveBeenCalledWith(
-        'Invalid value "undefined" supplied to "action",Invalid value "undefined" supplied to "edit"'
+        'action: Invalid literal value, expected "delete", action: Invalid literal value, expected "disable", action: Invalid literal value, expected "enable", action: Invalid literal value, expected "export", action: Invalid literal value, expected "duplicate", and 2 more'
       );
     });
 
@@ -498,7 +498,7 @@ describe('Perform bulk action route', () => {
       });
       const result = server.validate(request);
       expect(result.badRequest).toHaveBeenCalledWith(
-        'Invalid value "unknown" supplied to "action",Invalid value "undefined" supplied to "edit"'
+        'action: Invalid literal value, expected "delete", action: Invalid literal value, expected "disable", action: Invalid literal value, expected "enable", action: Invalid literal value, expected "export", action: Invalid literal value, expected "duplicate", and 2 more'
       );
     });
 
@@ -531,7 +531,9 @@ describe('Perform bulk action route', () => {
         body: { ...getPerformBulkActionSchemaMock(), ids: 'test fake' },
       });
       const result = server.validate(request);
-      expect(result.badRequest).toHaveBeenCalledWith('Invalid value "test fake" supplied to "ids"');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        'ids: Expected array, received string, action: Invalid literal value, expected "delete", ids: Expected array, received string, ids: Expected array, received string, action: Invalid literal value, expected "enable", and 7 more'
+      );
     });
 
     it('rejects payload if there is more than 100 ids in payload', async () => {
@@ -577,7 +579,9 @@ describe('Perform bulk action route', () => {
         body: { ...getPerformBulkActionSchemaMock(), ids: [] },
       });
       const result = server.validate(request);
-      expect(result.badRequest).toHaveBeenCalledWith('Invalid value "[]" supplied to "ids"');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        'ids: Array must contain at least 1 element(s)'
+      );
     });
 
     it('rejects payloads if property "edit" actions is empty', async () => {
@@ -588,7 +592,7 @@ describe('Perform bulk action route', () => {
       });
       const result = server.validate(request);
       expect(result.badRequest).toHaveBeenCalledWith(
-        expect.stringContaining('Invalid value "[]" supplied to "edit"')
+        expect.stringContaining('edit: Array must contain at least 1 element(s)')
       );
     });
 
@@ -601,7 +605,9 @@ describe('Perform bulk action route', () => {
       });
       const result = server.validate(request);
       expect(result.badRequest).toHaveBeenCalledWith(
-        expect.stringContaining('Invalid value "invalid" supplied to "dry_run"')
+        expect.stringContaining(
+          "dry_run: Invalid enum value. Expected 'true' | 'false', received 'invalid', dry_run: Expected boolean, received string"
+        )
       );
     });
   });
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts
index 14022e9e44af2..8af5eeaa1a021 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts
@@ -20,22 +20,24 @@ import {
   MAX_RULES_TO_UPDATE_IN_PARALLEL,
   RULES_TABLE_MAX_PAGE_SIZE,
 } from '../../../../../../../common/constants';
-import type { PerformBulkActionResponse } from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type {
+  BulkEditActionResponse,
+  PerformBulkActionResponse,
+} from '../../../../../../../common/api/detection_engine/rule_management';
 import {
-  BulkActionType,
+  BulkActionTypeEnum,
   PerformBulkActionRequestBody,
   PerformBulkActionRequestQuery,
-} from '../../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+} from '../../../../../../../common/api/detection_engine/rule_management';
 import type {
   NormalizedRuleError,
   RuleDetailsInError,
-  BulkEditActionResponse,
   BulkEditActionResults,
   BulkEditActionSummary,
 } from '../../../../../../../common/api/detection_engine';
 import type { SetupPlugins } from '../../../../../../plugin';
 import type { SecuritySolutionPluginRouter } from '../../../../../../types';
-import { buildRouteValidation } from '../../../../../../utils/build_validation/route_validation';
+import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation';
 import { routeLimitedConcurrencyTag } from '../../../../../../utils/route_limited_concurrency_tag';
 import type { PromisePoolError, PromisePoolOutcome } from '../../../../../../utils/promise_pool';
 import { initPromisePool } from '../../../../../../utils/promise_pool';
@@ -249,8 +251,8 @@ export const performBulkActionRoute = (
         version: '2023-10-31',
         validate: {
           request: {
-            body: buildRouteValidation(PerformBulkActionRequestBody),
-            query: buildRouteValidation(PerformBulkActionRequestQuery),
+            body: buildRouteValidationWithZod(PerformBulkActionRequestBody),
+            query: buildRouteValidationWithZod(PerformBulkActionRequestQuery),
           },
         },
       },
@@ -272,10 +274,10 @@ export const performBulkActionRoute = (
           });
         }
 
-        const isDryRun = request.query.dry_run === 'true';
+        const isDryRun = request.query.dry_run;
 
         // dry run is not supported for export, as it doesn't change ES state and has different response format(exported JSON file)
-        if (isDryRun && body.action === BulkActionType.export) {
+        if (isDryRun && body.action === BulkActionTypeEnum.export) {
           return siemResponse.error({
             body: `Export action doesn't support dry_run mode`,
             statusCode: 400,
@@ -318,7 +320,7 @@ export const performBulkActionRoute = (
 
           // handling this action before switch statement as bulkEditRules fetch rules within
           // rulesClient method, hence there is no need to use fetchRulesByQueryOrIds utility
-          if (body.action === BulkActionType.edit && !isDryRun) {
+          if (body.action === BulkActionTypeEnum.edit && !isDryRun) {
             const { rules, errors, skipped } = await bulkEditRules({
               rulesClient,
               filter: query,
@@ -348,7 +350,7 @@ export const performBulkActionRoute = (
           let deleted: RuleAlertType[] = [];
 
           switch (body.action) {
-            case BulkActionType.enable:
+            case BulkActionTypeEnum.enable:
               bulkActionOutcome = await initPromisePool({
                 concurrency: MAX_RULES_TO_UPDATE_IN_PARALLEL,
                 items: rules,
@@ -375,7 +377,7 @@ export const performBulkActionRoute = (
                 .map(({ result }) => result)
                 .filter((rule): rule is RuleAlertType => rule !== null);
               break;
-            case BulkActionType.disable:
+            case BulkActionTypeEnum.disable:
               bulkActionOutcome = await initPromisePool({
                 concurrency: MAX_RULES_TO_UPDATE_IN_PARALLEL,
                 items: rules,
@@ -403,7 +405,7 @@ export const performBulkActionRoute = (
                 .filter((rule): rule is RuleAlertType => rule !== null);
               break;
 
-            case BulkActionType.delete:
+            case BulkActionTypeEnum.delete:
               bulkActionOutcome = await initPromisePool({
                 concurrency: MAX_RULES_TO_UPDATE_IN_PARALLEL,
                 items: rules,
@@ -427,7 +429,7 @@ export const performBulkActionRoute = (
                 .filter((rule): rule is RuleAlertType => rule !== null);
               break;
 
-            case BulkActionType.duplicate:
+            case BulkActionTypeEnum.duplicate:
               bulkActionOutcome = await initPromisePool({
                 concurrency: MAX_RULES_TO_UPDATE_IN_PARALLEL,
                 items: rules,
@@ -486,7 +488,7 @@ export const performBulkActionRoute = (
                 .filter((rule): rule is RuleAlertType => rule !== null);
               break;
 
-            case BulkActionType.export:
+            case BulkActionTypeEnum.export:
               const exported = await getExportByObjectIds(
                 rulesClient,
                 exceptionsClient,
@@ -510,7 +512,7 @@ export const performBulkActionRoute = (
 
             // will be processed only when isDryRun === true
             // during dry run only validation is getting performed and rule is not saved in ES
-            case BulkActionType.edit:
+            case BulkActionTypeEnum.edit:
               bulkActionOutcome = await initPromisePool({
                 concurrency: MAX_RULES_TO_UPDATE_IN_PARALLEL,
                 items: rules,
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts
index fc3d87d32b432..ca3cde890b738 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts
@@ -191,7 +191,9 @@ describe('Bulk patch rules route', () => {
       });
       const result = server.validate(request);
 
-      expect(result.badRequest).toHaveBeenCalledWith('0: Invalid input');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        '0.type: Invalid literal value, expected "eql", 0.language: Invalid literal value, expected "eql", 0.type: Invalid literal value, expected "query", 0.type: Invalid literal value, expected "saved_query", 0.type: Invalid literal value, expected "threshold", and 5 more'
+      );
     });
 
     test('allows rule type of query and custom from and interval', async () => {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts
index 5fed0b4e3446a..a1d74b1445508 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts
@@ -236,7 +236,9 @@ describe('Create rule route', () => {
         },
       });
       const result = await server.validate(request);
-      expect(result.badRequest).toHaveBeenCalledWith('Invalid input');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        'type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "saved_query", saved_id: Required, type: Invalid literal value, expected "threshold", and 18 more'
+      );
     });
   });
 });
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts
index 76d63ddcd54b0..b9a68994a0e58 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts
@@ -76,7 +76,7 @@ describe('Find rules route', () => {
       expect(result.ok).toHaveBeenCalled();
     });
 
-    test('rejects unknown query params', async () => {
+    test('ignores unknown query params', async () => {
       const request = requestMock.create({
         method: 'get',
         path: DETECTION_ENGINE_RULES_URL_FIND,
@@ -86,7 +86,7 @@ describe('Find rules route', () => {
       });
       const result = server.validate(request);
 
-      expect(result.badRequest).toHaveBeenCalledWith('invalid keys "invalid_value"');
+      expect(result.ok).toHaveBeenCalled();
     });
   });
 });
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts
index 76496d26cb856..3cbd164586a9d 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts
@@ -18,7 +18,7 @@ import {
 import type { SecuritySolutionPluginRouter } from '../../../../../../types';
 import { findRules } from '../../../logic/search/find_rules';
 import { buildSiemResponse } from '../../../../routes/utils';
-import { buildRouteValidation } from '../../../../../../utils/build_validation/route_validation';
+import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation';
 import { transformFindAlerts } from '../../../utils/utils';
 
 export const findRulesRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => {
@@ -35,7 +35,7 @@ export const findRulesRoute = (router: SecuritySolutionPluginRouter, logger: Log
         version: '2023-10-31',
         validate: {
           request: {
-            query: buildRouteValidation(FindRulesRequestQuery),
+            query: buildRouteValidationWithZod(FindRulesRequestQuery),
           },
         },
       },
@@ -63,11 +63,7 @@ export const findRulesRoute = (router: SecuritySolutionPluginRouter, logger: Log
           });
 
           const transformed = transformFindAlerts(rules);
-          if (transformed == null) {
-            return siemResponse.error({ statusCode: 500, body: 'Internal error transforming' });
-          } else {
-            return response.ok({ body: transformed ?? {} });
-          }
+          return response.ok({ body: transformed ?? {} });
         } catch (err) {
           const error = transformError(err);
           return siemResponse.error({
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts
index 677556f314239..1255287cf52f5 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts
@@ -199,7 +199,9 @@ describe('Patch rule route', () => {
       });
       const result = server.validate(request);
 
-      expect(result.badRequest).toHaveBeenCalledWith('Invalid input');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        'type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "query", type: Invalid literal value, expected "saved_query", type: Invalid literal value, expected "threshold", and 5 more'
+      );
     });
 
     test('allows rule type of query and custom from and interval', async () => {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts
index e580f5cc11662..f95b10fa6154f 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts
@@ -23,7 +23,7 @@ import {
   getUpdateRulesSchemaMock,
 } from '../../../../../../../common/api/detection_engine/model/rule_schema/mocks';
 import { getQueryRuleParams } from '../../../../rule_schema/mocks';
-import { RESPONSE_ACTION_TYPES } from '../../../../../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../../../../../common/api/detection_engine/model/rule_response_actions';
 
 jest.mock('../../../../../machine_learning/authz');
 
@@ -245,7 +245,7 @@ describe('Update rule route', () => {
             ...getQueryRuleParams(),
             responseActions: [
               {
-                actionTypeId: RESPONSE_ACTION_TYPES.ENDPOINT,
+                actionTypeId: ResponseActionTypesEnum['.endpoint'],
                 params: {
                   command: 'isolate',
                   comment: '',
@@ -283,7 +283,9 @@ describe('Update rule route', () => {
         },
       });
       const result = await server.validate(request);
-      expect(result.badRequest).toHaveBeenCalledWith('Invalid input');
+      expect(result.badRequest).toHaveBeenCalledWith(
+        'type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "saved_query", saved_id: Required, type: Invalid literal value, expected "threshold", and 18 more'
+      );
     });
   });
 });
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts
index e598715e8f9ec..e214b7dc3b341 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts
@@ -5,13 +5,16 @@
  * 2.0.
  */
 
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import { bulkEditActionToRulesClientOperation } from './action_to_rules_client_operation';
 
 describe('bulkEditActionToRulesClientOperation', () => {
   test('should transform tags bulk edit actions correctly', () => {
     expect(
-      bulkEditActionToRulesClientOperation({ type: BulkActionEditType.add_tags, value: ['test'] })
+      bulkEditActionToRulesClientOperation({
+        type: BulkActionEditTypeEnum.add_tags,
+        value: ['test'],
+      })
     ).toEqual([
       {
         field: 'tags',
@@ -22,7 +25,7 @@ describe('bulkEditActionToRulesClientOperation', () => {
   });
 
   expect(
-    bulkEditActionToRulesClientOperation({ type: BulkActionEditType.set_tags, value: ['test'] })
+    bulkEditActionToRulesClientOperation({ type: BulkActionEditTypeEnum.set_tags, value: ['test'] })
   ).toEqual([
     {
       field: 'tags',
@@ -32,7 +35,10 @@ describe('bulkEditActionToRulesClientOperation', () => {
   ]);
 
   expect(
-    bulkEditActionToRulesClientOperation({ type: BulkActionEditType.delete_tags, value: ['test'] })
+    bulkEditActionToRulesClientOperation({
+      type: BulkActionEditTypeEnum.delete_tags,
+      value: ['test'],
+    })
   ).toEqual([
     {
       field: 'tags',
@@ -44,7 +50,7 @@ describe('bulkEditActionToRulesClientOperation', () => {
   test('should transform schedule bulk edit correctly', () => {
     expect(
       bulkEditActionToRulesClientOperation({
-        type: BulkActionEditType.set_schedule,
+        type: BulkActionEditTypeEnum.set_schedule,
         value: {
           interval: '100m',
           lookback: '10m',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts
index dfd4ee64c0787..eac694f97944b 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts
@@ -8,8 +8,8 @@
 import type { BulkEditOperation } from '@kbn/alerting-plugin/server';
 import { transformNormalizedRuleToAlertAction } from '../../../../../../common/detection_engine/transform_actions';
 
-import type { BulkActionEditForRuleAttributes } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditForRuleAttributes } from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import { assertUnreachable } from '../../../../../../common/utility_types';
 import { transformToActionFrequency } from '../../normalization/rule_actions';
 
@@ -23,7 +23,7 @@ export const bulkEditActionToRulesClientOperation = (
 ): BulkEditOperation[] => {
   switch (action.type) {
     // tags actions
-    case BulkActionEditType.add_tags:
+    case BulkActionEditTypeEnum.add_tags:
       return [
         {
           field: 'tags',
@@ -32,7 +32,7 @@ export const bulkEditActionToRulesClientOperation = (
         },
       ];
 
-    case BulkActionEditType.delete_tags:
+    case BulkActionEditTypeEnum.delete_tags:
       return [
         {
           field: 'tags',
@@ -41,7 +41,7 @@ export const bulkEditActionToRulesClientOperation = (
         },
       ];
 
-    case BulkActionEditType.set_tags:
+    case BulkActionEditTypeEnum.set_tags:
       return [
         {
           field: 'tags',
@@ -51,7 +51,7 @@ export const bulkEditActionToRulesClientOperation = (
       ];
 
     // rule actions
-    case BulkActionEditType.add_rule_actions:
+    case BulkActionEditTypeEnum.add_rule_actions:
       return [
         {
           field: 'actions',
@@ -62,7 +62,7 @@ export const bulkEditActionToRulesClientOperation = (
         },
       ];
 
-    case BulkActionEditType.set_rule_actions:
+    case BulkActionEditTypeEnum.set_rule_actions:
       return [
         {
           field: 'actions',
@@ -74,7 +74,7 @@ export const bulkEditActionToRulesClientOperation = (
       ];
 
     // schedule actions
-    case BulkActionEditType.set_schedule:
+    case BulkActionEditTypeEnum.set_schedule:
       return [
         {
           field: 'schedule',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts
index 76034819b508d..fd2f1644480c0 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts
@@ -7,7 +7,7 @@
 
 import type { RulesClient } from '@kbn/alerting-plugin/server';
 
-import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management';
 
 import type { MlAuthz } from '../../../../machine_learning/authz';
 
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts
index 0337558099532..93044fc0fed18 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { addItemsToArray, deleteItemsFromArray, ruleParamsModifier } from './rule_params_modifier';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import type { RuleAlertType } from '../../../rule_schema';
 
 describe('addItemsToArray', () => {
@@ -47,7 +47,7 @@ describe('ruleParamsModifier', () => {
   test('should increment version if rule is custom (immutable === false)', () => {
     const { modifiedParams } = ruleParamsModifier(ruleParamsMock, [
       {
-        type: BulkActionEditType.add_index_patterns,
+        type: BulkActionEditTypeEnum.add_index_patterns,
         value: ['my-index-*'],
       },
     ]);
@@ -57,7 +57,7 @@ describe('ruleParamsModifier', () => {
   test('should not increment version if rule is prebuilt (immutable === true)', () => {
     const { modifiedParams } = ruleParamsModifier({ ...ruleParamsMock, immutable: true }, [
       {
-        type: BulkActionEditType.add_index_patterns,
+        type: BulkActionEditTypeEnum.add_index_patterns,
         value: ['my-index-*'],
       },
     ]);
@@ -130,7 +130,7 @@ describe('ruleParamsModifier', () => {
             { ...ruleParamsMock, index: existingIndexPatterns } as RuleAlertType['params'],
             [
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: indexPatternsToAdd,
               },
             ]
@@ -194,7 +194,7 @@ describe('ruleParamsModifier', () => {
             { ...ruleParamsMock, index: existingIndexPatterns } as RuleAlertType['params'],
             [
               {
-                type: BulkActionEditType.delete_index_patterns,
+                type: BulkActionEditTypeEnum.delete_index_patterns,
                 value: indexPatternsToDelete,
               },
             ]
@@ -249,7 +249,7 @@ describe('ruleParamsModifier', () => {
             { ...ruleParamsMock, index: existingIndexPatterns } as RuleAlertType['params'],
             [
               {
-                type: BulkActionEditType.set_index_patterns,
+                type: BulkActionEditTypeEnum.set_index_patterns,
                 value: indexPatternsToOverwrite,
               },
             ]
@@ -267,7 +267,7 @@ describe('ruleParamsModifier', () => {
         { dataViewId: testDataViewId } as RuleAlertType['params'],
         [
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['index-2-*'],
           },
         ]
@@ -281,7 +281,7 @@ describe('ruleParamsModifier', () => {
         { dataViewId: 'test-data-view', index: ['test-*'] } as RuleAlertType['params'],
         [
           {
-            type: BulkActionEditType.set_index_patterns,
+            type: BulkActionEditTypeEnum.set_index_patterns,
             value: ['index'],
             overwrite_data_views: true,
           },
@@ -296,7 +296,7 @@ describe('ruleParamsModifier', () => {
         { dataViewId: 'test-data-view', index: ['test-*'] } as RuleAlertType['params'],
         [
           {
-            type: BulkActionEditType.add_index_patterns,
+            type: BulkActionEditTypeEnum.add_index_patterns,
             value: ['index'],
             overwrite_data_views: true,
           },
@@ -311,7 +311,7 @@ describe('ruleParamsModifier', () => {
         { dataViewId: 'test-data-view', index: ['test-*', 'index'] } as RuleAlertType['params'],
         [
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['index'],
             overwrite_data_views: true,
           },
@@ -327,7 +327,7 @@ describe('ruleParamsModifier', () => {
         { dataViewId: 'test-data-view', index: undefined } as RuleAlertType['params'],
         [
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['index'],
             overwrite_data_views: true,
           },
@@ -342,7 +342,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'machine_learning' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.add_index_patterns,
+            type: BulkActionEditTypeEnum.add_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -355,7 +355,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'machine_learning' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -368,7 +368,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'machine_learning' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.set_index_patterns,
+            type: BulkActionEditTypeEnum.set_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -381,7 +381,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'esql' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.add_index_patterns,
+            type: BulkActionEditTypeEnum.add_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -392,7 +392,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'esql' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -403,7 +403,7 @@ describe('ruleParamsModifier', () => {
       expect(() =>
         ruleParamsModifier({ type: 'esql' } as RuleAlertType['params'], [
           {
-            type: BulkActionEditType.set_index_patterns,
+            type: BulkActionEditTypeEnum.set_index_patterns,
             value: ['my-index-*'],
           },
         ])
@@ -417,7 +417,7 @@ describe('ruleParamsModifier', () => {
     test('should set timeline', () => {
       const { modifiedParams, isParamsUpdateSkipped } = ruleParamsModifier(ruleParamsMock, [
         {
-          type: BulkActionEditType.set_timeline,
+          type: BulkActionEditTypeEnum.set_timeline,
           value: {
             timeline_id: '91832785-286d-4ebe-b884-1a208d111a70',
             timeline_title: 'Test timeline',
@@ -438,7 +438,7 @@ describe('ruleParamsModifier', () => {
       const FROM_IN_SECONDS = (INTERVAL_IN_MINUTES + LOOKBACK_IN_MINUTES) * 60;
       const { modifiedParams, isParamsUpdateSkipped } = ruleParamsModifier(ruleParamsMock, [
         {
-          type: BulkActionEditType.set_schedule,
+          type: BulkActionEditTypeEnum.set_schedule,
           value: {
             interval: `${INTERVAL_IN_MINUTES}m`,
             lookback: `${LOOKBACK_IN_MINUTES}m`,
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts
index a519aee713bec..2994d2bf7f157 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts
@@ -12,8 +12,8 @@ import type { RuleAlertType } from '../../../rule_schema';
 import type {
   BulkActionEditForRuleParams,
   BulkActionEditPayloadIndexPatterns,
-} from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+} from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import { invariant } from '../../../../../../common/utils/invariant';
 
 export const addItemsToArray = <T>(arr: T[], items: T[]): T[] =>
@@ -52,11 +52,11 @@ const shouldSkipIndexPatternsBulkAction = (
     return true;
   }
 
-  if (action.type === BulkActionEditType.add_index_patterns) {
+  if (action.type === BulkActionEditTypeEnum.add_index_patterns) {
     return hasIndexPatterns(indexPatterns, action);
   }
 
-  if (action.type === BulkActionEditType.delete_index_patterns) {
+  if (action.type === BulkActionEditTypeEnum.delete_index_patterns) {
     return hasNotIndexPattern(indexPatterns, action);
   }
 
@@ -80,7 +80,7 @@ const applyBulkActionEditToRuleParams = (
   switch (action.type) {
     // index_patterns actions
     // index pattern is not present in machine learning rule type, so we throw error on it
-    case BulkActionEditType.add_index_patterns: {
+    case BulkActionEditTypeEnum.add_index_patterns: {
       invariant(
         ruleParams.type !== 'machine_learning',
         "Index patterns can't be added. Machine learning rule doesn't have index patterns property"
@@ -102,7 +102,7 @@ const applyBulkActionEditToRuleParams = (
       ruleParams.index = addItemsToArray(ruleParams.index ?? [], action.value);
       break;
     }
-    case BulkActionEditType.delete_index_patterns: {
+    case BulkActionEditTypeEnum.delete_index_patterns: {
       invariant(
         ruleParams.type !== 'machine_learning',
         "Index patterns can't be deleted. Machine learning rule doesn't have index patterns property"
@@ -129,7 +129,7 @@ const applyBulkActionEditToRuleParams = (
       }
       break;
     }
-    case BulkActionEditType.set_index_patterns: {
+    case BulkActionEditTypeEnum.set_index_patterns: {
       invariant(
         ruleParams.type !== 'machine_learning',
         "Index patterns can't be overwritten. Machine learning rule doesn't have index patterns property"
@@ -152,7 +152,7 @@ const applyBulkActionEditToRuleParams = (
       break;
     }
     // timeline actions
-    case BulkActionEditType.set_timeline: {
+    case BulkActionEditTypeEnum.set_timeline: {
       ruleParams = {
         ...ruleParams,
         timelineId: action.value.timeline_id || undefined,
@@ -162,7 +162,7 @@ const applyBulkActionEditToRuleParams = (
       break;
     }
     // update look-back period in from and meta.from fields
-    case BulkActionEditType.set_schedule: {
+    case BulkActionEditTypeEnum.set_schedule: {
       const interval = parseInterval(action.value.interval) ?? moment.duration(0);
       const parsedFrom = parseInterval(action.value.lookback) ?? moment.duration(0);
 
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts
index 5bde6c29e6082..cdaa6ed1afb80 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts
@@ -5,20 +5,20 @@
  * 2.0.
  */
 
-import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 import { splitBulkEditActions } from './split_bulk_edit_actions';
 
 const bulkEditActions: BulkActionEditPayload[] = [
-  { type: BulkActionEditType.add_index_patterns, value: ['test'] },
-  { type: BulkActionEditType.set_index_patterns, value: ['test'] },
-  { type: BulkActionEditType.delete_index_patterns, value: ['test'] },
-  { type: BulkActionEditType.add_tags, value: ['test'] },
-  { type: BulkActionEditType.delete_tags, value: ['test'] },
-  { type: BulkActionEditType.set_tags, value: ['test'] },
+  { type: BulkActionEditTypeEnum.add_index_patterns, value: ['test'] },
+  { type: BulkActionEditTypeEnum.set_index_patterns, value: ['test'] },
+  { type: BulkActionEditTypeEnum.delete_index_patterns, value: ['test'] },
+  { type: BulkActionEditTypeEnum.add_tags, value: ['test'] },
+  { type: BulkActionEditTypeEnum.delete_tags, value: ['test'] },
+  { type: BulkActionEditTypeEnum.set_tags, value: ['test'] },
   {
-    type: BulkActionEditType.set_timeline,
+    type: BulkActionEditTypeEnum.set_timeline,
     value: { timeline_id: 'a-1', timeline_title: 'Test title' },
   },
 ];
@@ -28,16 +28,16 @@ describe('splitBulkEditActions', () => {
     const { attributesActions, paramsActions } = splitBulkEditActions(bulkEditActions);
 
     expect(attributesActions).toEqual([
-      { type: BulkActionEditType.add_tags, value: ['test'] },
-      { type: BulkActionEditType.delete_tags, value: ['test'] },
-      { type: BulkActionEditType.set_tags, value: ['test'] },
+      { type: BulkActionEditTypeEnum.add_tags, value: ['test'] },
+      { type: BulkActionEditTypeEnum.delete_tags, value: ['test'] },
+      { type: BulkActionEditTypeEnum.set_tags, value: ['test'] },
     ]);
     expect(paramsActions).toEqual([
-      { type: BulkActionEditType.add_index_patterns, value: ['test'] },
-      { type: BulkActionEditType.set_index_patterns, value: ['test'] },
-      { type: BulkActionEditType.delete_index_patterns, value: ['test'] },
+      { type: BulkActionEditTypeEnum.add_index_patterns, value: ['test'] },
+      { type: BulkActionEditTypeEnum.set_index_patterns, value: ['test'] },
+      { type: BulkActionEditTypeEnum.delete_index_patterns, value: ['test'] },
       {
-        type: BulkActionEditType.set_timeline,
+        type: BulkActionEditTypeEnum.set_timeline,
         value: { timeline_id: 'a-1', timeline_title: 'Test title' },
       },
     ]);
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts
index 2896acbea0e85..da626722155ed 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts
@@ -5,12 +5,12 @@
  * 2.0.
  */
 
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import type {
   BulkActionEditPayload,
   BulkActionEditForRuleAttributes,
   BulkActionEditForRuleParams,
-} from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+} from '../../../../../../common/api/detection_engine/rule_management';
 
 /**
  * Split bulk edit actions in 2 chunks: actions applied to params and
@@ -29,15 +29,15 @@ export const splitBulkEditActions = (actions: BulkActionEditPayload[]) => {
 
   return actions.reduce((acc, action) => {
     switch (action.type) {
-      case BulkActionEditType.set_schedule:
+      case BulkActionEditTypeEnum.set_schedule:
         acc.attributesActions.push(action);
         acc.paramsActions.push(action);
         break;
-      case BulkActionEditType.add_tags:
-      case BulkActionEditType.set_tags:
-      case BulkActionEditType.delete_tags:
-      case BulkActionEditType.add_rule_actions:
-      case BulkActionEditType.set_rule_actions:
+      case BulkActionEditTypeEnum.add_tags:
+      case BulkActionEditTypeEnum.set_tags:
+      case BulkActionEditTypeEnum.delete_tags:
+      case BulkActionEditTypeEnum.add_rule_actions:
+      case BulkActionEditTypeEnum.set_rule_actions:
         acc.attributesActions.push(action);
         break;
       default:
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts
index 214fc16b40a49..d624d9033f299 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts
@@ -4,7 +4,8 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 
 /**
  * helper utility that defines whether bulk edit action is related to index patterns, i.e. one of:
@@ -14,7 +15,7 @@ import { BulkActionEditType } from '../../../../../../common/api/detection_engin
  */
 export const isIndexPatternsBulkEditAction = (editAction: BulkActionEditType) =>
   [
-    BulkActionEditType.add_index_patterns,
-    BulkActionEditType.delete_index_patterns,
-    BulkActionEditType.set_index_patterns,
+    BulkActionEditTypeEnum.add_index_patterns,
+    BulkActionEditTypeEnum.delete_index_patterns,
+    BulkActionEditTypeEnum.set_index_patterns,
   ].includes(editAction);
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts
index fc8d13c27c567..4a1aef9ed28d7 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts
@@ -10,8 +10,8 @@ import { invariant } from '../../../../../../common/utils/invariant';
 import { isMlRule } from '../../../../../../common/machine_learning/helpers';
 import { isEsqlRule } from '../../../../../../common/detection_engine/utils';
 import { BulkActionsDryRunErrCode } from '../../../../../../common/constants';
-import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
-import { BulkActionEditType } from '../../../../../../common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route';
+import type { BulkActionEditPayload } from '../../../../../../common/api/detection_engine/rule_management';
+import { BulkActionEditTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
 import type { RuleAlertType } from '../../../rule_schema';
 import { isIndexPatternsBulkEditAction } from './utils';
 import { throwDryRunError } from './dry_run';
@@ -100,7 +100,9 @@ export const validateBulkEditRule = async ({
  */
 const istEditApplicableToImmutableRule = (edit: BulkActionEditPayload[]): boolean => {
   return edit.every(({ type }) =>
-    [BulkActionEditType.set_rule_actions, BulkActionEditType.add_rule_actions].includes(type)
+    [BulkActionEditTypeEnum.set_rule_actions, BulkActionEditTypeEnum.add_rule_actions].includes(
+      type
+    )
   );
 };
 
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts
index 8fb5f348ae224..892610df03bea 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts
@@ -5,42 +5,29 @@
  * 2.0.
  */
 
-import * as t from 'io-ts';
-
 import type { FindResult, RulesClient } from '@kbn/alerting-plugin/server';
-import { NonEmptyString, UUID } from '@kbn/securitysolution-io-ts-types';
-import type { FindRulesSortFieldOrUndefined } from '../../../../../../common/api/detection_engine/rule_management';
+import type { FindRulesSortField } from '../../../../../../common/api/detection_engine/rule_management';
 
-import type {
-  FieldsOrUndefined,
-  PageOrUndefined,
-  PerPageOrUndefined,
-  QueryFilterOrUndefined,
-  SortOrderOrUndefined,
-} from '../../../../../../common/api/detection_engine';
+import type { Page, PerPage, SortOrder } from '../../../../../../common/api/detection_engine';
 
 import type { RuleParams } from '../../../rule_schema';
 import { enrichFilterWithRuleTypeMapping } from './enrich_filter_with_rule_type_mappings';
 import { transformSortField } from './transform_sort_field';
 
-type HasReferences = t.TypeOf<typeof HasReferences>;
-const HasReferences = t.type({
-  type: NonEmptyString,
-  id: UUID,
-});
-
-type HasReferencesOrUndefined = t.TypeOf<typeof HasReferencesOrUndefined>;
-const HasReferencesOrUndefined = t.union([HasReferences, t.undefined]);
+interface HasReferences {
+  type: string;
+  id: string;
+}
 
 export interface FindRuleOptions {
   rulesClient: RulesClient;
-  filter: QueryFilterOrUndefined;
-  fields: FieldsOrUndefined;
-  sortField: FindRulesSortFieldOrUndefined;
-  sortOrder: SortOrderOrUndefined;
-  page: PageOrUndefined;
-  perPage: PerPageOrUndefined;
-  hasReference?: HasReferencesOrUndefined;
+  filter: string | undefined;
+  fields: string[] | undefined;
+  sortField: FindRulesSortField | undefined;
+  sortOrder: SortOrder | undefined;
+  page: Page | undefined;
+  perPage: PerPage | undefined;
+  hasReference?: HasReferences | undefined;
 }
 
 export const findRules = ({
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts
index 53573879d07df..b55e51882345a 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { FindRulesSortFieldOrUndefined } from '../../../../../../common/api/detection_engine/rule_management';
+import type { FindRulesSortField } from '../../../../../../common/api/detection_engine/rule_management';
 import { assertUnreachable } from '../../../../../../common/utility_types';
 
 /**
@@ -37,7 +37,7 @@ import { assertUnreachable } from '../../../../../../common/utility_types';
  * @param sortField Sort field parameter from the request
  * @returns Sort field matching the Alerting framework schema
  */
-export function transformSortField(sortField: FindRulesSortFieldOrUndefined): string | undefined {
+export function transformSortField(sortField?: FindRulesSortField): string | undefined {
   if (!sortField) {
     return undefined;
   }
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts
index 07b9c9d0cbcd8..a513e8468d577 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts
@@ -113,7 +113,8 @@ describe('validate', () => {
       const validatedOrError = transformValidateBulkError('rule-1', ruleAlert);
       const expected: BulkError = {
         error: {
-          message: 'Invalid input',
+          message:
+            'name: Required, type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", name: Required, name: Required, and 22 more',
           status_code: 500,
         },
         rule_id: 'rule-1',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
index c01f09f1b0534..cf6054c689cdd 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts
@@ -9,8 +9,8 @@ import { serverMock, requestContextMock, requestMock } from '../../../../routes/
 
 import {
   GET_RULE_EXECUTION_EVENTS_URL,
-  LogLevel,
-  RuleExecutionEventType,
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
 } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import { getRuleExecutionEventsResponseMock } from '../../../../../../../common/api/detection_engine/rule_monitoring/mocks';
 import type { GetExecutionEventsArgs } from '../../../logic/rule_execution_log';
@@ -35,8 +35,8 @@ describe('getRuleExecutionEventsRoute', () => {
         ruleId: '04128c15-0d1b-4716-a4c5-46997ac7f3bd',
       },
       query: {
-        event_types: `${RuleExecutionEventType['status-change']}`,
-        log_levels: `${LogLevel.debug},${LogLevel.info}`,
+        event_types: `${RuleExecutionEventTypeEnum['status-change']}`,
+        log_levels: `${LogLevelEnum.debug},${LogLevelEnum.info}`,
         page: 3,
       },
     });
@@ -44,8 +44,8 @@ describe('getRuleExecutionEventsRoute', () => {
   it('passes request arguments to rule execution log', async () => {
     const expectedArgs: GetExecutionEventsArgs = {
       ruleId: '04128c15-0d1b-4716-a4c5-46997ac7f3bd',
-      eventTypes: [RuleExecutionEventType['status-change']],
-      logLevels: [LogLevel.debug, LogLevel.info],
+      eventTypes: [RuleExecutionEventTypeEnum['status-change']],
+      logLevels: [LogLevelEnum.debug, LogLevelEnum.info],
       sortOrder: 'desc',
       page: 3,
       perPage: 20,
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
index 1049cbb5c89e1..4a01a6550cabc 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts
@@ -7,7 +7,7 @@
 
 import { transformError } from '@kbn/securitysolution-es-utils';
 import type { IKibanaResponse } from '@kbn/core/server';
-import { buildRouteValidation } from '../../../../../../utils/build_validation/route_validation';
+import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation';
 import { buildSiemResponse } from '../../../../routes/utils';
 import type { SecuritySolutionPluginRouter } from '../../../../../../types';
 
@@ -36,8 +36,8 @@ export const getRuleExecutionEventsRoute = (router: SecuritySolutionPluginRouter
         version: '1',
         validate: {
           request: {
-            params: buildRouteValidation(GetRuleExecutionEventsRequestParams),
-            query: buildRouteValidation(GetRuleExecutionEventsRequestQuery),
+            params: buildRouteValidationWithZod(GetRuleExecutionEventsRequestParams),
+            query: buildRouteValidationWithZod(GetRuleExecutionEventsRequestQuery),
           },
         },
       },
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts
index 4151355419586..5b667770ffa5d 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts
@@ -5,31 +5,32 @@
  * 2.0.
  */
 
-import { mapValues } from 'lodash';
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { mapValues } from 'lodash';
 
 import type {
   AggregatedMetric,
+  HealthOverviewStats,
+  LogLevel,
   NumberOfDetectedGaps,
   NumberOfExecutions,
   NumberOfLoggedMessages,
-  HealthOverviewStats,
-  TopMessages,
   RuleExecutionStatus,
+  TopMessages,
 } from '../../../../../../../../common/api/detection_engine/rule_monitoring';
 import {
-  RuleExecutionEventType,
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
   RuleExecutionStatusEnum,
-  LogLevel,
 } from '../../../../../../../../common/api/detection_engine/rule_monitoring';
 
-import { DEFAULT_PERCENTILES } from '../../../utils/es_aggregations';
-import type { RawData } from '../../../utils/normalization';
-import * as f from '../../../event_log/event_log_fields';
 import {
   ALERTING_PROVIDER,
   RULE_EXECUTION_LOG_PROVIDER,
 } from '../../../event_log/event_log_constants';
+import * as f from '../../../event_log/event_log_fields';
+import { DEFAULT_PERCENTILES } from '../../../utils/es_aggregations';
+import type { RawData } from '../../../utils/normalization';
 
 export type RuleExecutionStatsAggregationLevel = 'whole-interval' | 'histogram';
 
@@ -74,7 +75,7 @@ export const getRuleExecutionStatsAggregation = (
         bool: {
           filter: [
             { term: { [f.EVENT_PROVIDER]: RULE_EXECUTION_LOG_PROVIDER } },
-            { term: { [f.EVENT_ACTION]: RuleExecutionEventType['status-change'] } },
+            { term: { [f.EVENT_ACTION]: RuleExecutionEventTypeEnum['status-change'] } },
           ],
           must_not: [
             {
@@ -101,7 +102,7 @@ export const getRuleExecutionStatsAggregation = (
         bool: {
           filter: [
             { term: { [f.EVENT_PROVIDER]: RULE_EXECUTION_LOG_PROVIDER } },
-            { term: { [f.EVENT_ACTION]: RuleExecutionEventType['execution-metrics'] } },
+            { term: { [f.EVENT_ACTION]: RuleExecutionEventTypeEnum['execution-metrics'] } },
           ],
         },
       },
@@ -144,8 +145,8 @@ export const getRuleExecutionStatsAggregation = (
             {
               terms: {
                 [f.EVENT_ACTION]: [
-                  RuleExecutionEventType['status-change'],
-                  RuleExecutionEventType.message,
+                  RuleExecutionEventTypeEnum['status-change'],
+                  RuleExecutionEventTypeEnum.message,
                 ],
               },
             },
@@ -162,7 +163,7 @@ export const getRuleExecutionStatsAggregation = (
           ? {
               errors: {
                 filter: {
-                  term: { [f.LOG_LEVEL]: LogLevel.error },
+                  term: { [f.LOG_LEVEL]: LogLevelEnum.error },
                 },
                 aggs: {
                   topErrors: {
@@ -176,7 +177,7 @@ export const getRuleExecutionStatsAggregation = (
               },
               warnings: {
                 filter: {
-                  term: { [f.LOG_LEVEL]: LogLevel.warn },
+                  term: { [f.LOG_LEVEL]: LogLevelEnum.warn },
                 },
                 aggs: {
                   topWarnings: {
@@ -263,11 +264,11 @@ const normalizeNumberOfLoggedMessages = (
   return {
     total: Number(messageContainingEvents.doc_count || 0),
     by_level: {
-      error: getMessageCount(LogLevel.error),
-      warn: getMessageCount(LogLevel.warn),
-      info: getMessageCount(LogLevel.info),
-      debug: getMessageCount(LogLevel.debug),
-      trace: getMessageCount(LogLevel.trace),
+      error: getMessageCount(LogLevelEnum.error),
+      warn: getMessageCount(LogLevelEnum.warn),
+      info: getMessageCount(LogLevelEnum.info),
+      debug: getMessageCount(LogLevelEnum.debug),
+      trace: getMessageCount(LogLevelEnum.trace),
     },
   };
 };
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts
index 61a321c427205..6c1accab273ad 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts
@@ -12,6 +12,6 @@ import { RULE_EXECUTION_LOG_PROVIDER } from './event_log_constants';
 export const registerEventLogProvider = (eventLogService: IEventLogService) => {
   eventLogService.registerProviderActions(
     RULE_EXECUTION_LOG_PROVIDER,
-    Object.keys(RuleExecutionEventType)
+    RuleExecutionEventType.options
   );
 };
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts
index 101884b284ebc..8e9a2970f5dbf 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts
@@ -16,9 +16,9 @@ import type {
 import type {
   RuleExecutionSettings,
   RuleExecutionStatus,
+  LogLevel,
 } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import {
-  LogLevel,
   logLevelFromExecutionStatus,
   LogLevelSetting,
   logLevelToNumber,
@@ -38,6 +38,7 @@ import type {
   StatusChangeArgs,
 } from './client_interface';
 import type { RuleExecutionMetrics } from '../../../../../../../common/api/detection_engine/rule_monitoring/model';
+import { LogLevelEnum } from '../../../../../../../common/api/detection_engine/rule_monitoring/model';
 
 export const createRuleExecutionLogClientForExecutors = (
   settings: RuleExecutionSettings,
@@ -59,23 +60,23 @@ export const createRuleExecutionLogClientForExecutors = (
     },
 
     trace(...messages: string[]): void {
-      writeMessage(messages, LogLevel.trace);
+      writeMessage(messages, LogLevelEnum.trace);
     },
 
     debug(...messages: string[]): void {
-      writeMessage(messages, LogLevel.debug);
+      writeMessage(messages, LogLevelEnum.debug);
     },
 
     info(...messages: string[]): void {
-      writeMessage(messages, LogLevel.info);
+      writeMessage(messages, LogLevelEnum.info);
     },
 
     warn(...messages: string[]): void {
-      writeMessage(messages, LogLevel.warn);
+      writeMessage(messages, LogLevelEnum.warn);
     },
 
     error(...messages: string[]): void {
-      writeMessage(messages, LogLevel.error);
+      writeMessage(messages, LogLevelEnum.error);
     },
 
     async logStatusChange(args: StatusChangeArgs): Promise<void> {
@@ -107,19 +108,19 @@ export const createRuleExecutionLogClientForExecutors = (
 
   const writeMessageToConsole = (message: string, logLevel: LogLevel, logMeta: ExtMeta): void => {
     switch (logLevel) {
-      case LogLevel.trace:
+      case LogLevelEnum.trace:
         logger.trace(`${message} ${baseLogSuffix}`, logMeta);
         break;
-      case LogLevel.debug:
+      case LogLevelEnum.debug:
         logger.debug(`${message} ${baseLogSuffix}`, logMeta);
         break;
-      case LogLevel.info:
+      case LogLevelEnum.info:
         logger.info(`${message} ${baseLogSuffix}`, logMeta);
         break;
-      case LogLevel.warn:
+      case LogLevelEnum.warn:
         logger.warn(`${message} ${baseLogSuffix}`, logMeta);
         break;
-      case LogLevel.error:
+      case LogLevelEnum.error:
         logger.error(`${message} ${baseLogSuffix}`, logMeta);
         break;
       default:
@@ -152,7 +153,7 @@ export const createRuleExecutionLogClientForExecutors = (
 
   const writeExceptionToConsole = (e: unknown, message: string, logMeta: ExtMeta): void => {
     const logReason = e instanceof Error ? e.stack ?? e.message : String(e);
-    writeMessageToConsole(`${message}. Reason: ${logReason}`, LogLevel.error, logMeta);
+    writeMessageToConsole(`${message}. Reason: ${logReason}`, LogLevelEnum.error, logMeta);
   };
 
   const writeStatusChangeToConsole = (args: NormalizedStatusChangeArgs, logMeta: ExtMeta): void => {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts
index fae8b6cfe9f5c..669f3d7e5ee04 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts
@@ -9,7 +9,6 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import type { IEventLogClient, IValidatedEvent } from '@kbn/event-log-plugin/server';
 import { MAX_EXECUTION_EVENTS_DISPLAYED } from '@kbn/securitysolution-rules';
 
-import { prepareKQLStringParam } from '../../../../../../../common/utils/kql';
 import type {
   GetRuleExecutionEventsResponse,
   GetRuleExecutionResultsResponse,
@@ -17,10 +16,11 @@ import type {
 } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import {
   LogLevel,
-  logLevelFromString,
+  LogLevelEnum,
   RuleExecutionEventType,
-  ruleExecutionEventTypeFromString,
+  RuleExecutionEventTypeEnum,
 } from '../../../../../../../common/api/detection_engine/rule_monitoring';
+import { prepareKQLStringParam } from '../../../../../../../common/utils/kql';
 
 import { assertUnreachable } from '../../../../../../../common/utility_types';
 import { invariant } from '../../../../../../../common/utils/invariant';
@@ -38,11 +38,11 @@ import {
 } from './aggregations/execution_results';
 import type { ExecutionUuidAggResult } from './aggregations/execution_results/types';
 
-import * as f from '../../event_log/event_log_fields';
 import {
   RULE_EXECUTION_LOG_PROVIDER,
   RULE_SAVED_OBJECT_TYPE,
 } from '../../event_log/event_log_constants';
+import * as f from '../../event_log/event_log_fields';
 
 export interface IEventLogReader {
   getExecutionEvents(args: GetExecutionEventsArgs): Promise<GetRuleExecutionEventsResponse>;
@@ -211,25 +211,27 @@ const normalizeEventSequence = (event: RawEvent): number => {
 const normalizeLogLevel = (event: RawEvent): LogLevel => {
   const value = event.log?.level;
   if (!value) {
-    return LogLevel.debug;
+    return LogLevelEnum.debug;
   }
 
-  return logLevelFromString(value) ?? LogLevel.trace;
+  const result = LogLevel.safeParse(value);
+  return result.success ? result.data : LogLevelEnum.trace;
 };
 
 const normalizeEventType = (event: RawEvent): RuleExecutionEventType => {
   const value = event.event?.action;
   invariant(value, 'Required "event.action" field is not found');
 
-  return ruleExecutionEventTypeFromString(value) ?? RuleExecutionEventType.message;
+  const result = RuleExecutionEventType.safeParse(value);
+  return result.success ? result.data : RuleExecutionEventTypeEnum.message;
 };
 
 const normalizeEventMessage = (event: RawEvent, type: RuleExecutionEventType): string => {
-  if (type === RuleExecutionEventType.message) {
+  if (type === RuleExecutionEventTypeEnum.message) {
     return event.message || '';
   }
 
-  if (type === RuleExecutionEventType['status-change']) {
+  if (type === RuleExecutionEventTypeEnum['status-change']) {
     invariant(
       event.kibana?.alert?.rule?.execution?.status,
       'Required "kibana.alert.rule.execution.status" field is not found'
@@ -241,7 +243,7 @@ const normalizeEventMessage = (event: RawEvent, type: RuleExecutionEventType): s
     return `Rule changed status to "${status}". ${message}`;
   }
 
-  if (type === RuleExecutionEventType['execution-metrics']) {
+  if (type === RuleExecutionEventTypeEnum['execution-metrics']) {
     invariant(
       event.kibana?.alert?.rule?.execution?.metrics,
       'Required "kibana.alert.rule.execution.metrics" field is not found'
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts
index 89696e7175a30..b0963546100e2 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts
@@ -8,17 +8,20 @@
 import { SavedObjectsUtils } from '@kbn/core/server';
 import type { IEventLogService } from '@kbn/event-log-plugin/server';
 import { SAVED_OBJECT_REL_PRIMARY } from '@kbn/event-log-plugin/server';
+import type { LogLevel } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import {
-  LogLevel,
   logLevelFromExecutionStatus,
   logLevelToNumber,
-  RuleExecutionEventType,
   ruleExecutionStatusToNumber,
 } from '../../../../../../../common/api/detection_engine/rule_monitoring';
 import type {
   RuleExecutionMetrics,
   RuleExecutionStatus,
 } from '../../../../../../../common/api/detection_engine/rule_monitoring/model';
+import {
+  LogLevelEnum,
+  RuleExecutionEventTypeEnum,
+} from '../../../../../../../common/api/detection_engine/rule_monitoring/model';
 import {
   RULE_SAVED_OBJECT_TYPE,
   RULE_EXECUTION_LOG_PROVIDER,
@@ -74,7 +77,7 @@ export const createEventLogWriter = (eventLogService: IEventLogService): IEventL
         },
         event: {
           kind: 'event',
-          action: RuleExecutionEventType.message,
+          action: RuleExecutionEventTypeEnum.message,
           sequence: sequence++,
           severity: logLevelToNumber(args.logLevel),
         },
@@ -116,7 +119,7 @@ export const createEventLogWriter = (eventLogService: IEventLogService): IEventL
         },
         event: {
           kind: 'event',
-          action: RuleExecutionEventType['status-change'],
+          action: RuleExecutionEventTypeEnum['status-change'],
           sequence: sequence++,
           severity: logLevelToNumber(logLevel),
         },
@@ -148,7 +151,7 @@ export const createEventLogWriter = (eventLogService: IEventLogService): IEventL
     },
 
     logExecutionMetrics: (args: ExecutionMetricsArgs): void => {
-      const logLevel = LogLevel.debug;
+      const logLevel = LogLevelEnum.debug;
       eventLogger.logEvent({
         '@timestamp': nowISO(),
         rule: {
@@ -159,7 +162,7 @@ export const createEventLogWriter = (eventLogService: IEventLogService): IEventL
         },
         event: {
           kind: 'metric',
-          action: RuleExecutionEventType['execution-metrics'],
+          action: RuleExecutionEventTypeEnum['execution-metrics'],
           sequence: sequence++,
           severity: logLevelToNumber(logLevel),
         },
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts
index fcec7e98c06c2..672434bfc94d0 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts
@@ -7,7 +7,7 @@
 
 import { getScheduleNotificationResponseActionsService } from './schedule_notification_response_actions';
 import type { RuleResponseAction } from '../../../../common/api/detection_engine/model/rule_response_actions';
-import { RESPONSE_ACTION_TYPES } from '../../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../../common/api/detection_engine/model/rule_response_actions';
 
 describe('ScheduleNotificationResponseActions', () => {
   const signalOne = { agent: { id: 'agent-id-1' }, _id: 'alert-id-1', user: { id: 'S-1-5-20' } };
@@ -68,7 +68,7 @@ describe('ScheduleNotificationResponseActions', () => {
   it('should handle osquery response actions with query', async () => {
     const responseActions: RuleResponseAction[] = [
       {
-        actionTypeId: RESPONSE_ACTION_TYPES.OSQUERY,
+        actionTypeId: ResponseActionTypesEnum['.osquery'],
         params: {
           ...defaultQueryParams,
           query: simpleQuery,
@@ -86,7 +86,7 @@ describe('ScheduleNotificationResponseActions', () => {
   it('should handle osquery response actions with packs', async () => {
     const responseActions: RuleResponseAction[] = [
       {
-        actionTypeId: RESPONSE_ACTION_TYPES.OSQUERY,
+        actionTypeId: ResponseActionTypesEnum['.osquery'],
         params: {
           ...defaultPackParams,
           queries: [
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts
index 25efe01d15f05..a02fafe69d8f6 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts
@@ -8,7 +8,7 @@
 import { each } from 'lodash';
 import type { EndpointAppContextService } from '../../../endpoint/endpoint_app_context_services';
 import type { SetupPlugins } from '../../../plugin_contract';
-import { RESPONSE_ACTION_TYPES } from '../../../../common/api/detection_engine/model/rule_response_actions';
+import { ResponseActionTypesEnum } from '../../../../common/api/detection_engine/model/rule_response_actions';
 import { osqueryResponseAction } from './osquery_response_action';
 import { endpointResponseAction } from './endpoint_response_action';
 import type { ScheduleNotificationActions } from '../rule_types/types';
@@ -29,14 +29,14 @@ export const getScheduleNotificationResponseActionsService =
 
     each(responseActions, (responseAction) => {
       if (
-        responseAction.actionTypeId === RESPONSE_ACTION_TYPES.OSQUERY &&
+        responseAction.actionTypeId === ResponseActionTypesEnum['.osquery'] &&
         osqueryCreateActionService
       ) {
         osqueryResponseAction(responseAction, osqueryCreateActionService, {
           alerts,
         });
       }
-      if (responseAction.actionTypeId === RESPONSE_ACTION_TYPES.ENDPOINT) {
+      if (responseAction.actionTypeId === ResponseActionTypesEnum['.endpoint']) {
         endpointResponseAction(responseAction, endpointAppContextService, {
           alerts,
         });
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules_bulk.ts
index 382e902424b5f..6404da38cdde7 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules_bulk.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_rules_bulk.ts
@@ -446,7 +446,9 @@ export default ({ getService }: FtrProviderContext): void => {
             .send([{ ...getSimpleRule(), investigation_fields: ['foo'] }])
             .expect(400);
 
-          expect(body.message).to.eql('[request body]: 0: Invalid input');
+          expect(body.message).to.eql(
+            '[request body]: 0.investigation_fields: Expected object, received array, 0.type: Invalid literal value, expected "eql", 0.language: Invalid literal value, expected "eql", 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, and 22 more'
+          );
         });
       });
     });
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules.ts
index 1b2fcee9c7143..b2000305a4dbb 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules.ts
@@ -719,7 +719,9 @@ export default ({ getService }: FtrProviderContext) => {
             })
             .expect(400);
 
-          expect(body.message).to.eql('[request body]: Invalid input');
+          expect(body.message).to.eql(
+            '[request body]: investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, and 3 more'
+          );
         });
 
         it('should patch a rule with a legacy investigation field and transform response', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules_bulk.ts
index 4e7010a37dd49..91c18b2cfa6cc 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules_bulk.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/patch_rules_bulk.ts
@@ -542,7 +542,9 @@ export default ({ getService }: FtrProviderContext) => {
           ])
           .expect(400);
 
-        expect(body.message).to.eql('[request body]: 0: Invalid input');
+        expect(body.message).to.eql(
+          '[request body]: 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, and 3 more'
+        );
       });
 
       it('should patch a rule with a legacy investigation field and transform field in response', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action.ts
index e9234d47a1816..2529e794089a9 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action.ts
@@ -16,8 +16,8 @@ import {
 } from '@kbn/security-solution-plugin/common/constants';
 import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine';
 import {
-  BulkActionType,
-  BulkActionEditType,
+  BulkActionTypeEnum,
+  BulkActionEditTypeEnum,
 } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management';
 import { getCreateExceptionListDetectionSchemaMock } from '@kbn/lists-plugin/common/schemas/request/create_exception_list_schema.mock';
 import { EXCEPTION_LIST_ITEM_URL, EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants';
@@ -106,7 +106,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule());
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.export })
+        .send({ query: '', action: BulkActionTypeEnum.export })
         .expect(200)
         .expect('Content-Type', 'application/ndjson')
         .expect('Content-Disposition', 'attachment; filename="rules_export.ndjson"')
@@ -177,7 +177,7 @@ export default ({ getService }: FtrProviderContext): void => {
       };
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.export })
+        .send({ query: '', action: BulkActionTypeEnum.export })
         .expect(200)
         .expect('Content-Type', 'application/ndjson')
         .expect('Content-Disposition', 'attachment; filename="rules_export.ndjson"')
@@ -234,7 +234,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, testRule);
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.delete })
+        .send({ query: '', action: BulkActionTypeEnum.delete })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -269,7 +269,7 @@ export default ({ getService }: FtrProviderContext): void => {
       expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id);
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.delete })
+        .send({ query: '', action: BulkActionTypeEnum.delete })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -290,7 +290,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule(ruleId));
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.enable })
+        .send({ query: '', action: BulkActionTypeEnum.enable })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -326,7 +326,7 @@ export default ({ getService }: FtrProviderContext): void => {
       expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id);
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.enable })
+        .send({ query: '', action: BulkActionTypeEnum.enable })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -363,7 +363,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule(ruleId, true));
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.disable })
+        .send({ query: '', action: BulkActionTypeEnum.disable })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -399,7 +399,7 @@ export default ({ getService }: FtrProviderContext): void => {
       expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id);
 
       const { body } = await postBulkAction()
-        .send({ query: '', action: BulkActionType.disable })
+        .send({ query: '', action: BulkActionTypeEnum.disable })
         .expect(200);
 
       expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -437,7 +437,7 @@ export default ({ getService }: FtrProviderContext): void => {
       const { body } = await postBulkAction()
         .send({
           query: '',
-          action: BulkActionType.duplicate,
+          action: BulkActionTypeEnum.duplicate,
           duplicate: { include_exceptions: false, include_expired_exceptions: false },
         })
         .expect(200);
@@ -516,7 +516,7 @@ export default ({ getService }: FtrProviderContext): void => {
       const { body } = await postBulkAction()
         .send({
           query: '',
-          action: BulkActionType.duplicate,
+          action: BulkActionTypeEnum.duplicate,
           duplicate: { include_exceptions: true, include_expired_exceptions: true },
         })
         .expect(200);
@@ -622,7 +622,7 @@ export default ({ getService }: FtrProviderContext): void => {
       const { body } = await postBulkAction()
         .send({
           query: '',
-          action: BulkActionType.duplicate,
+          action: BulkActionTypeEnum.duplicate,
           duplicate: { include_exceptions: true, include_expired_exceptions: false },
         })
         .expect(200);
@@ -696,7 +696,7 @@ export default ({ getService }: FtrProviderContext): void => {
       const { body } = await postBulkAction()
         .send({
           query: '',
-          action: BulkActionType.duplicate,
+          action: BulkActionTypeEnum.duplicate,
           duplicate: { include_exceptions: false, include_expired_exceptions: false },
         })
         .expect(200);
@@ -778,10 +778,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body: bulkEditResponse } = await postBulkAction()
               .send({
                 query: '',
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_tags,
+                    type: BulkActionEditTypeEnum.set_tags,
                     value: tagsToOverwrite,
                   },
                 ],
@@ -835,10 +835,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body: bulkEditResponse } = await postBulkAction()
               .send({
                 query: '',
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.delete_tags,
+                    type: BulkActionEditTypeEnum.delete_tags,
                     value: tagsToDelete,
                   },
                 ],
@@ -891,10 +891,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body: bulkEditResponse } = await postBulkAction()
               .send({
                 query: '',
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_tags,
+                    type: BulkActionEditTypeEnum.add_tags,
                     value: addedTags,
                   },
                 ],
@@ -925,21 +925,21 @@ export default ({ getService }: FtrProviderContext): void => {
             existingTags: ['tag1', 'tag2', 'tag3'],
             tagsToUpdate: [],
             resultingTags: ['tag1', 'tag2', 'tag3'],
-            operation: BulkActionEditType.delete_tags,
+            operation: BulkActionEditTypeEnum.delete_tags,
           },
           {
             caseName: '0 existing tags - 2 tags = 0 tags',
             existingTags: [],
             tagsToUpdate: ['tag4', 'tag5'],
             resultingTags: [],
-            operation: BulkActionEditType.delete_tags,
+            operation: BulkActionEditTypeEnum.delete_tags,
           },
           {
             caseName: '3 existing tags - 2 other tags (none of them) = 3 tags',
             existingTags: ['tag1', 'tag2', 'tag3'],
             tagsToUpdate: ['tag4', 'tag5'],
             resultingTags: ['tag1', 'tag2', 'tag3'],
-            operation: BulkActionEditType.delete_tags,
+            operation: BulkActionEditTypeEnum.delete_tags,
           },
           // Add no-ops
           {
@@ -947,14 +947,14 @@ export default ({ getService }: FtrProviderContext): void => {
             existingTags: ['tag1', 'tag2', 'tag3'],
             tagsToUpdate: ['tag1', 'tag2'],
             resultingTags: ['tag1', 'tag2', 'tag3'],
-            operation: BulkActionEditType.add_tags,
+            operation: BulkActionEditTypeEnum.add_tags,
           },
           {
             caseName: '3 existing tags + 0 tags = 3 tags',
             existingTags: ['tag1', 'tag2', 'tag3'],
             tagsToUpdate: [],
             resultingTags: ['tag1', 'tag2', 'tag3'],
-            operation: BulkActionEditType.add_tags,
+            operation: BulkActionEditTypeEnum.add_tags,
           },
         ];
 
@@ -968,8 +968,8 @@ export default ({ getService }: FtrProviderContext): void => {
               const { body: bulkEditResponse } = await postBulkAction()
                 .send({
                   query: '',
-                  action: BulkActionType.edit,
-                  [BulkActionType.edit]: [
+                  action: BulkActionTypeEnum.edit,
+                  [BulkActionTypeEnum.edit]: [
                     {
                       type: operation,
                       value: tagsToUpdate,
@@ -1007,10 +1007,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body: bulkEditResponse } = await postBulkAction()
             .send({
               query: '',
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.set_index_patterns,
+                  type: BulkActionEditTypeEnum.set_index_patterns,
                   value: ['initial-index-*'],
                 },
               ],
@@ -1042,10 +1042,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body: bulkEditResponse } = await postBulkAction()
             .send({
               query: '',
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.add_index_patterns,
+                  type: BulkActionEditTypeEnum.add_index_patterns,
                   value: ['index3-*'],
                 },
               ],
@@ -1079,10 +1079,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body: bulkEditResponse } = await postBulkAction()
             .send({
               query: '',
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.delete_index_patterns,
+                  type: BulkActionEditTypeEnum.delete_index_patterns,
                   value: ['index2-*'],
                 },
               ],
@@ -1113,10 +1113,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               ids: [mlRule.id],
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.add_index_patterns,
+                  type: BulkActionEditTypeEnum.add_index_patterns,
                   value: ['index-*'],
                 },
               ],
@@ -1143,10 +1143,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               ids: [esqlRule.id],
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.add_index_patterns,
+                  type: BulkActionEditTypeEnum.add_index_patterns,
                   value: ['index-*'],
                 },
               ],
@@ -1176,10 +1176,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               ids: [rule.id],
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.delete_index_patterns,
+                  type: BulkActionEditTypeEnum.delete_index_patterns,
                   value: ['simple-index-*'],
                 },
               ],
@@ -1209,10 +1209,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               ids: [rule.id],
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.set_index_patterns,
+                  type: BulkActionEditTypeEnum.set_index_patterns,
                   value: [],
                 },
               ],
@@ -1244,21 +1244,21 @@ export default ({ getService }: FtrProviderContext): void => {
             existingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
             indexPatternsToUpdate: [],
             resultingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
-            operation: BulkActionEditType.delete_index_patterns,
+            operation: BulkActionEditTypeEnum.delete_index_patterns,
           },
           {
             caseName: '0 existing indeces - 2 indeces = 0 indeces',
             existingIndexPatterns: [],
             indexPatternsToUpdate: ['index1-*', 'index2-*'],
             resultingIndexPatterns: [],
-            operation: BulkActionEditType.delete_index_patterns,
+            operation: BulkActionEditTypeEnum.delete_index_patterns,
           },
           {
             caseName: '3 existing indeces - 2 other indeces (none of them) = 3 indeces',
             existingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
             indexPatternsToUpdate: ['index8-*', 'index9-*'],
             resultingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
-            operation: BulkActionEditType.delete_index_patterns,
+            operation: BulkActionEditTypeEnum.delete_index_patterns,
           },
           // Add no-ops
           {
@@ -1266,14 +1266,14 @@ export default ({ getService }: FtrProviderContext): void => {
             existingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
             indexPatternsToUpdate: ['index1-*', 'index2-*'],
             resultingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
-            operation: BulkActionEditType.add_index_patterns,
+            operation: BulkActionEditTypeEnum.add_index_patterns,
           },
           {
             caseName: '3 existing indeces + 0 indeces = 3 indeces',
             existingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
             indexPatternsToUpdate: [],
             resultingIndexPatterns: ['index1-*', 'index2-*', 'index3-*'],
-            operation: BulkActionEditType.add_index_patterns,
+            operation: BulkActionEditTypeEnum.add_index_patterns,
           },
         ];
 
@@ -1296,8 +1296,8 @@ export default ({ getService }: FtrProviderContext): void => {
               const { body: bulkEditResponse } = await postBulkAction()
                 .send({
                   query: '',
-                  action: BulkActionType.edit,
-                  [BulkActionType.edit]: [
+                  action: BulkActionTypeEnum.edit,
+                  [BulkActionTypeEnum.edit]: [
                     {
                       type: operation,
                       value: indexPatternsToUpdate,
@@ -1353,10 +1353,10 @@ export default ({ getService }: FtrProviderContext): void => {
 
         const { body: setTagsBody } = await postBulkAction().send({
           query: '',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_tags,
+              type: BulkActionEditTypeEnum.set_tags,
               value: ['reset-tag'],
             },
           ],
@@ -1401,10 +1401,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_timeline,
+                type: BulkActionEditTypeEnum.set_timeline,
                 value: {
                   timeline_id: timelineId,
                   timeline_title: timelineTitle,
@@ -1444,10 +1444,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_timeline,
+                type: BulkActionEditTypeEnum.set_timeline,
                 value: {
                   timeline_id: '',
                   timeline_title: '',
@@ -1476,10 +1476,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [mlRule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['index-*'],
               },
             ],
@@ -1509,10 +1509,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.delete_index_patterns,
+                type: BulkActionEditTypeEnum.delete_index_patterns,
                 value: ['simple-index-*'],
               },
             ],
@@ -1538,10 +1538,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.add_tags,
+                type: BulkActionEditTypeEnum.add_tags,
                 value: ['test'],
               },
             ],
@@ -1559,35 +1559,35 @@ export default ({ getService }: FtrProviderContext): void => {
       describe('prebuilt rules', () => {
         const cases = [
           {
-            type: BulkActionEditType.add_tags,
+            type: BulkActionEditTypeEnum.add_tags,
             value: ['new-tag'],
           },
           {
-            type: BulkActionEditType.set_tags,
+            type: BulkActionEditTypeEnum.set_tags,
             value: ['new-tag'],
           },
           {
-            type: BulkActionEditType.delete_tags,
+            type: BulkActionEditTypeEnum.delete_tags,
             value: ['new-tag'],
           },
           {
-            type: BulkActionEditType.add_index_patterns,
+            type: BulkActionEditTypeEnum.add_index_patterns,
             value: ['test-*'],
           },
           {
-            type: BulkActionEditType.set_index_patterns,
+            type: BulkActionEditTypeEnum.set_index_patterns,
             value: ['test-*'],
           },
           {
-            type: BulkActionEditType.delete_index_patterns,
+            type: BulkActionEditTypeEnum.delete_index_patterns,
             value: ['test-*'],
           },
           {
-            type: BulkActionEditType.set_timeline,
+            type: BulkActionEditTypeEnum.set_timeline,
             value: { timeline_id: 'mock-id', timeline_title: 'mock-title' },
           },
           {
-            type: BulkActionEditType.set_schedule,
+            type: BulkActionEditTypeEnum.set_schedule,
             value: { interval: '1m', lookback: '1m' },
           },
         ];
@@ -1599,8 +1599,8 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [prebuiltRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
                     type,
                     value,
@@ -1648,10 +1648,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_rule_actions,
+                    type: BulkActionEditTypeEnum.set_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -1706,10 +1706,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_rule_actions,
+                    type: BulkActionEditTypeEnum.set_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -1766,10 +1766,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_rule_actions,
+                    type: BulkActionEditTypeEnum.set_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [],
@@ -1818,10 +1818,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_rule_actions,
+                    type: BulkActionEditTypeEnum.set_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -1871,10 +1871,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_rule_actions,
+                    type: BulkActionEditTypeEnum.add_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -1931,10 +1931,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_rule_actions,
+                    type: BulkActionEditTypeEnum.add_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -2004,10 +2004,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_rule_actions,
+                    type: BulkActionEditTypeEnum.add_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -2069,10 +2069,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_rule_actions,
+                    type: BulkActionEditTypeEnum.add_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [],
@@ -2120,10 +2120,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [createdRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.add_rule_actions,
+                    type: BulkActionEditTypeEnum.add_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [],
@@ -2147,10 +2147,10 @@ export default ({ getService }: FtrProviderContext): void => {
         describe('prebuilt rules', () => {
           const cases = [
             {
-              type: BulkActionEditType.set_rule_actions,
+              type: BulkActionEditTypeEnum.set_rule_actions,
             },
             {
-              type: BulkActionEditType.add_rule_actions,
+              type: BulkActionEditTypeEnum.add_rule_actions,
             },
           ];
           cases.forEach(({ type }) => {
@@ -2162,8 +2162,8 @@ export default ({ getService }: FtrProviderContext): void => {
               const { body } = await postBulkAction()
                 .send({
                   ids: [prebuiltRule.id],
-                  action: BulkActionType.edit,
-                  [BulkActionType.edit]: [
+                  action: BulkActionTypeEnum.edit,
+                  [BulkActionTypeEnum.edit]: [
                     {
                       type,
                       value: {
@@ -2220,10 +2220,10 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postBulkAction()
               .send({
                 ids: [prebuiltRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
-                    type: BulkActionEditType.set_rule_actions,
+                    type: BulkActionEditTypeEnum.set_rule_actions,
                     value: {
                       throttle: '1h',
                       actions: [
@@ -2235,7 +2235,7 @@ export default ({ getService }: FtrProviderContext): void => {
                     },
                   },
                   {
-                    type: BulkActionEditType.set_tags,
+                    type: BulkActionEditTypeEnum.set_tags,
                     value: ['tag-1'],
                   },
                 ],
@@ -2290,10 +2290,10 @@ export default ({ getService }: FtrProviderContext): void => {
               const { body } = await postBulkAction()
                 .send({
                   ids: [createdRule.id],
-                  action: BulkActionType.edit,
-                  [BulkActionType.edit]: [
+                  action: BulkActionTypeEnum.edit,
+                  [BulkActionTypeEnum.edit]: [
                     {
-                      type: BulkActionEditType.set_rule_actions,
+                      type: BulkActionEditTypeEnum.set_rule_actions,
                       value: {
                         throttle: payloadThrottle,
                         actions: [],
@@ -2331,62 +2331,63 @@ export default ({ getService }: FtrProviderContext): void => {
               expectedThrottle: undefined,
             },
           ];
-          [BulkActionEditType.set_rule_actions, BulkActionEditType.add_rule_actions].forEach(
-            (ruleAction) => {
-              casesForNonEmptyActions.forEach(({ payloadThrottle, expectedThrottle }) => {
-                it(`throttle is updated correctly for rule action "${ruleAction}", if payload throttle="${payloadThrottle}" and actions non empty`, async () => {
-                  // create a new connector
-                  const webHookConnector = await createWebHookConnector();
-
-                  const ruleId = 'ruleId';
-                  const createdRule = await createRule(supertest, log, getSimpleRule(ruleId));
-
-                  const { body } = await postBulkAction()
-                    .send({
-                      ids: [createdRule.id],
-                      action: BulkActionType.edit,
-                      [BulkActionType.edit]: [
-                        {
-                          type: BulkActionEditType.set_rule_actions,
-                          value: {
-                            throttle: payloadThrottle,
-                            actions: [
-                              {
-                                id: webHookConnector.id,
-                                group: 'default',
-                                params: { body: '{}' },
-                              },
-                            ],
-                          },
+          [
+            BulkActionEditTypeEnum.set_rule_actions,
+            BulkActionEditTypeEnum.add_rule_actions,
+          ].forEach((ruleAction) => {
+            casesForNonEmptyActions.forEach(({ payloadThrottle, expectedThrottle }) => {
+              it(`throttle is updated correctly for rule action "${ruleAction}", if payload throttle="${payloadThrottle}" and actions non empty`, async () => {
+                // create a new connector
+                const webHookConnector = await createWebHookConnector();
+
+                const ruleId = 'ruleId';
+                const createdRule = await createRule(supertest, log, getSimpleRule(ruleId));
+
+                const { body } = await postBulkAction()
+                  .send({
+                    ids: [createdRule.id],
+                    action: BulkActionTypeEnum.edit,
+                    [BulkActionTypeEnum.edit]: [
+                      {
+                        type: BulkActionEditTypeEnum.set_rule_actions,
+                        value: {
+                          throttle: payloadThrottle,
+                          actions: [
+                            {
+                              id: webHookConnector.id,
+                              group: 'default',
+                              params: { body: '{}' },
+                            },
+                          ],
                         },
-                      ],
-                    })
-                    .expect(200);
-
-                  // Check that the updated rule is returned with the response
-                  expect(body.attributes.results.updated[0].throttle).to.eql(expectedThrottle);
-
-                  const expectedActions = body.attributes.results.updated[0].actions.map(
-                    (action: any) => ({
-                      ...action,
-                      frequency: {
-                        summary: true,
-                        throttle: payloadThrottle !== 'rule' ? payloadThrottle : null,
-                        notifyWhen:
-                          payloadThrottle !== 'rule' ? 'onThrottleInterval' : 'onActiveAlert',
                       },
-                    })
-                  );
+                    ],
+                  })
+                  .expect(200);
+
+                // Check that the updated rule is returned with the response
+                expect(body.attributes.results.updated[0].throttle).to.eql(expectedThrottle);
+
+                const expectedActions = body.attributes.results.updated[0].actions.map(
+                  (action: any) => ({
+                    ...action,
+                    frequency: {
+                      summary: true,
+                      throttle: payloadThrottle !== 'rule' ? payloadThrottle : null,
+                      notifyWhen:
+                        payloadThrottle !== 'rule' ? 'onThrottleInterval' : 'onActiveAlert',
+                    },
+                  })
+                );
 
-                  // Check that the updates have been persisted
-                  const { body: rule } = await fetchRule(ruleId).expect(200);
+                // Check that the updates have been persisted
+                const { body: rule } = await fetchRule(ruleId).expect(200);
 
-                  expect(rule.throttle).to.eql(expectedThrottle);
-                  expect(rule.actions).to.eql(expectedActions);
-                });
+                expect(rule.throttle).to.eql(expectedThrottle);
+                expect(rule.actions).to.eql(expectedActions);
               });
-            }
-          );
+            });
+          });
         });
 
         describe('notifyWhen', () => {
@@ -2409,10 +2410,10 @@ export default ({ getService }: FtrProviderContext): void => {
               await postBulkAction()
                 .send({
                   ids: [createdRule.id],
-                  action: BulkActionType.edit,
-                  [BulkActionType.edit]: [
+                  action: BulkActionTypeEnum.edit,
+                  [BulkActionTypeEnum.edit]: [
                     {
-                      type: BulkActionEditType.set_rule_actions,
+                      type: BulkActionEditTypeEnum.set_rule_actions,
                       value: {
                         throttle: payload.throttle,
                         actions: [],
@@ -2443,10 +2444,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               query: '',
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.set_schedule,
+                  type: BulkActionEditTypeEnum.set_schedule,
                   value: {
                     interval,
                     lookback,
@@ -2458,8 +2459,8 @@ export default ({ getService }: FtrProviderContext): void => {
 
           expect(body.statusCode).to.eql(400);
           expect(body.error).to.eql('Bad Request');
-          expect(body.message).to.contain('Invalid value "0m" supplied to "edit,value,interval"');
-          expect(body.message).to.contain('Invalid value "-1m" supplied to "edit,value,lookback"');
+          expect(body.message).to.contain('edit.0.value.interval: Invalid');
+          expect(body.message).to.contain('edit.0.value.lookback: Invalid');
         });
 
         it('should update schedule values in rules with a valid payload', async () => {
@@ -2473,10 +2474,10 @@ export default ({ getService }: FtrProviderContext): void => {
           const { body } = await postBulkAction()
             .send({
               query: '',
-              action: BulkActionType.edit,
-              [BulkActionType.edit]: [
+              action: BulkActionTypeEnum.edit,
+              [BulkActionTypeEnum.edit]: [
                 {
-                  type: BulkActionEditType.set_schedule,
+                  type: BulkActionEditTypeEnum.set_schedule,
                   value: {
                     interval,
                     lookback,
@@ -2511,10 +2512,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body: setIndexBody } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['initial-index-*'],
                 overwrite_data_views: true,
               },
@@ -2552,10 +2553,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body: setIndexBody } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['initial-index-*'],
                 overwrite_data_views: false,
               },
@@ -2597,10 +2598,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body: setIndexBody } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_index_patterns,
+                type: BulkActionEditTypeEnum.set_index_patterns,
                 value: ['initial-index-*'],
                 overwrite_data_views: true,
               },
@@ -2638,10 +2639,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_index_patterns,
+                type: BulkActionEditTypeEnum.set_index_patterns,
                 value: [],
                 overwrite_data_views: true,
               },
@@ -2674,10 +2675,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body: setIndexBody } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_index_patterns,
+                type: BulkActionEditTypeEnum.set_index_patterns,
                 value: ['initial-index-*'],
                 overwrite_data_views: false,
               },
@@ -2720,10 +2721,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.delete_index_patterns,
+                type: BulkActionEditTypeEnum.delete_index_patterns,
                 value: ['simple-index-*'],
                 overwrite_data_views: true,
               },
@@ -2761,10 +2762,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.delete_index_patterns,
+                type: BulkActionEditTypeEnum.delete_index_patterns,
                 value: ['simple-index-*'],
                 overwrite_data_views: true,
               },
@@ -2797,10 +2798,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.delete_index_patterns,
+                type: BulkActionEditTypeEnum.delete_index_patterns,
                 value: ['simple-index-*'],
                 overwrite_data_views: false,
               },
@@ -2830,14 +2831,14 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['initial-index-*'],
               },
               {
-                type: BulkActionEditType.add_tags,
+                type: BulkActionEditTypeEnum.add_tags,
                 value: ['tag3'],
               },
             ],
@@ -2868,16 +2869,16 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               // Valid operation
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['initial-index-*'],
               },
               // Operation to be skipped
               {
-                type: BulkActionEditType.add_tags,
+                type: BulkActionEditTypeEnum.add_tags,
                 value: ['tag1'],
               },
             ],
@@ -2908,16 +2909,16 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             ids: [rule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               // Operation to be skipped
               {
-                type: BulkActionEditType.add_index_patterns,
+                type: BulkActionEditTypeEnum.add_index_patterns,
                 value: ['index1-*'],
               },
               // Operation to be skipped
               {
-                type: BulkActionEditType.add_tags,
+                type: BulkActionEditTypeEnum.add_tags,
                 value: ['tag1'],
               },
             ],
@@ -2949,10 +2950,10 @@ export default ({ getService }: FtrProviderContext): void => {
         Array.from({ length: 10 }).map(() =>
           postBulkAction().send({
             query: '',
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_timeline,
+                type: BulkActionEditTypeEnum.set_timeline,
                 value: {
                   timeline_id: timelineId,
                   timeline_title: timelineTitle,
@@ -2978,10 +2979,10 @@ export default ({ getService }: FtrProviderContext): void => {
       const { body } = await postBulkAction()
         .send({
           ids: [id],
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_timeline,
+              type: BulkActionEditTypeEnum.set_timeline,
               value: {
                 timeline_id: timelineId,
                 timeline_title: timelineTitle,
@@ -3033,7 +3034,7 @@ export default ({ getService }: FtrProviderContext): void => {
 
       it('should export rules with legacy investigation_fields and transform legacy field in response', async () => {
         const { body } = await postBulkAction()
-          .send({ query: '', action: BulkActionType.export })
+          .send({ query: '', action: BulkActionTypeEnum.export })
           .expect(200)
           .expect('Content-Type', 'application/ndjson')
           .expect('Content-Disposition', 'attachment; filename="rules_export.ndjson"')
@@ -3094,7 +3095,7 @@ export default ({ getService }: FtrProviderContext): void => {
 
       it('should delete rules with investigation fields and transform legacy field in response', async () => {
         const { body } = await postBulkAction()
-          .send({ query: '', action: BulkActionType.delete })
+          .send({ query: '', action: BulkActionTypeEnum.delete })
           .expect(200);
 
         expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 });
@@ -3124,7 +3125,7 @@ export default ({ getService }: FtrProviderContext): void => {
 
       it('should enable rules with legacy investigation fields and transform legacy field in response', async () => {
         const { body } = await postBulkAction()
-          .send({ query: '', action: BulkActionType.enable })
+          .send({ query: '', action: BulkActionTypeEnum.enable })
           .expect(200);
 
         expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 });
@@ -3188,7 +3189,7 @@ export default ({ getService }: FtrProviderContext): void => {
 
       it('should disable rules with legacy investigation fields and transform legacy field in response', async () => {
         const { body } = await postBulkAction()
-          .send({ query: '', action: BulkActionType.disable })
+          .send({ query: '', action: BulkActionTypeEnum.disable })
           .expect(200);
 
         expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 });
@@ -3251,7 +3252,7 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postBulkAction()
           .send({
             query: '',
-            action: BulkActionType.duplicate,
+            action: BulkActionTypeEnum.duplicate,
             duplicate: { include_exceptions: false, include_expired_exceptions: false },
           })
           .expect(200);
@@ -3353,10 +3354,10 @@ export default ({ getService }: FtrProviderContext): void => {
       it('should edit rules with legacy investigation fields', async () => {
         const { body } = await postBulkAction().send({
           query: '',
-          action: BulkActionType.edit,
-          [BulkActionType.edit]: [
+          action: BulkActionTypeEnum.edit,
+          [BulkActionTypeEnum.edit]: [
             {
-              type: BulkActionEditType.set_tags,
+              type: BulkActionEditTypeEnum.set_tags,
               value: ['reset-tag'],
             },
           ],
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action_dry_run.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action_dry_run.ts
index a6df465d09f68..f1df03187379c 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action_dry_run.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/perform_bulk_action_dry_run.ts
@@ -12,8 +12,8 @@ import { getCreateEsqlRulesSchemaMock } from '@kbn/security-solution-plugin/comm
 
 import expect from 'expect';
 import {
-  BulkActionType,
-  BulkActionEditType,
+  BulkActionTypeEnum,
+  BulkActionEditTypeEnum,
 } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management';
 import { FtrProviderContext } from '../../common/ftr_provider_context';
 import {
@@ -65,7 +65,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule());
 
       const { body } = await postDryRunBulkAction()
-        .send({ action: BulkActionType.export })
+        .send({ action: BulkActionTypeEnum.export })
         .expect(400);
 
       expect(body).toEqual({
@@ -80,7 +80,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, testRule);
 
       const { body } = await postDryRunBulkAction()
-        .send({ action: BulkActionType.delete })
+        .send({ action: BulkActionTypeEnum.delete })
         .expect(200);
 
       expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -101,7 +101,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule(ruleId));
 
       const { body } = await postDryRunBulkAction()
-        .send({ action: BulkActionType.enable })
+        .send({ action: BulkActionTypeEnum.enable })
         .expect(200);
 
       expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -123,7 +123,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, getSimpleRule(ruleId, true));
 
       const { body } = await postDryRunBulkAction()
-        .send({ action: BulkActionType.disable })
+        .send({ action: BulkActionTypeEnum.disable })
         .expect(200);
 
       expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -146,7 +146,7 @@ export default ({ getService }: FtrProviderContext): void => {
       await createRule(supertest, log, ruleToDuplicate);
 
       const { body } = await postDryRunBulkAction()
-        .send({ action: BulkActionType.disable })
+        .send({ action: BulkActionTypeEnum.disable })
         .expect(200);
 
       expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 });
@@ -172,10 +172,10 @@ export default ({ getService }: FtrProviderContext): void => {
 
         const { body } = await postDryRunBulkAction()
           .send({
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_tags,
+                type: BulkActionEditTypeEnum.set_tags,
                 value: ['reset-tag'],
               },
             ],
@@ -208,10 +208,10 @@ export default ({ getService }: FtrProviderContext): void => {
         const { body } = await postDryRunBulkAction()
           .send({
             ids: [immutableRule.id],
-            action: BulkActionType.edit,
-            [BulkActionType.edit]: [
+            action: BulkActionTypeEnum.edit,
+            [BulkActionTypeEnum.edit]: [
               {
-                type: BulkActionEditType.set_tags,
+                type: BulkActionEditTypeEnum.set_tags,
                 value: ['reset-tag'],
               },
             ],
@@ -242,9 +242,9 @@ export default ({ getService }: FtrProviderContext): void => {
 
       describe('validate updating index pattern for machine learning rule', () => {
         const actions = [
-          BulkActionEditType.add_index_patterns,
-          BulkActionEditType.set_index_patterns,
-          BulkActionEditType.delete_index_patterns,
+          BulkActionEditTypeEnum.add_index_patterns,
+          BulkActionEditTypeEnum.set_index_patterns,
+          BulkActionEditTypeEnum.delete_index_patterns,
         ];
 
         actions.forEach((editAction) => {
@@ -254,8 +254,8 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postDryRunBulkAction()
               .send({
                 ids: [mlRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
                     type: editAction,
                     value: [],
@@ -295,9 +295,9 @@ export default ({ getService }: FtrProviderContext): void => {
 
       describe('validate updating index pattern for ES|QL rule', () => {
         const actions = [
-          BulkActionEditType.add_index_patterns,
-          BulkActionEditType.set_index_patterns,
-          BulkActionEditType.delete_index_patterns,
+          BulkActionEditTypeEnum.add_index_patterns,
+          BulkActionEditTypeEnum.set_index_patterns,
+          BulkActionEditTypeEnum.delete_index_patterns,
         ];
 
         actions.forEach((editAction) => {
@@ -307,8 +307,8 @@ export default ({ getService }: FtrProviderContext): void => {
             const { body } = await postDryRunBulkAction()
               .send({
                 ids: [esqlRule.id],
-                action: BulkActionType.edit,
-                [BulkActionType.edit]: [
+                action: BulkActionTypeEnum.edit,
+                [BulkActionTypeEnum.edit]: [
                   {
                     type: editAction,
                     value: [],
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts
index 7c2d88620924f..d88ed8a898f90 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules.ts
@@ -566,7 +566,8 @@ export default ({ getService }: FtrProviderContext) => {
 
           expect(body).to.eql({
             error: 'Bad Request',
-            message: '[request body]: Invalid input',
+            message:
+              '[request body]: type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "query", type: Invalid literal value, expected "saved_query", saved_id: Required, and 14 more',
             statusCode: 400,
           });
         });
@@ -955,7 +956,9 @@ export default ({ getService }: FtrProviderContext) => {
           .send(updatedRule)
           .expect(400);
 
-        expect(body.message).to.eql('[request body]: Invalid input');
+        expect(body.message).to.eql(
+          '[request body]: investigation_fields: Expected object, received array, type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, and 22 more'
+        );
       });
 
       it('unsets legacy investigation fields when field not specified for update', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules_bulk.ts
index b5dbf7fca40f2..a3defbb6d1c82 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules_bulk.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/update_rules_bulk.ts
@@ -853,7 +853,9 @@ export default ({ getService }: FtrProviderContext) => {
           ])
           .expect(400);
 
-        expect(body.message).to.eql('[request body]: 0: Invalid input');
+        expect(body.message).to.eql(
+          '[request body]: 0.investigation_fields: Expected object, received array, 0.type: Invalid literal value, expected "eql", 0.language: Invalid literal value, expected "eql", 0.investigation_fields: Expected object, received array, 0.investigation_fields: Expected object, received array, and 22 more'
+        );
       });
 
       it('updates a rule with legacy investigation fields and transforms field in response', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/query.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/query.ts
index 69425ac7fa4fc..4c38edaf0cd28 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/query.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/query.ts
@@ -28,7 +28,7 @@ import { v4 as uuidv4 } from 'uuid';
 
 import {
   QueryRuleCreateProps,
-  BulkActionType,
+  BulkActionTypeEnum,
   AlertSuppressionMissingFieldsStrategyEnum,
 } from '@kbn/security-solution-plugin/common/api/detection_engine';
 import { RuleExecutionStatusEnum } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring';
@@ -2296,7 +2296,7 @@ export default ({ getService }: FtrProviderContext) => {
           .post(DETECTION_ENGINE_RULES_BULK_ACTION)
           .set('kbn-xsrf', 'true')
           .set('elastic-api-version', '2023-10-31')
-          .send({ query: '', action: BulkActionType.enable })
+          .send({ query: '', action: BulkActionTypeEnum.enable })
           .expect(200);
 
         // Confirming that enabling did not migrate rule, so rule
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
index 97b602c4db617..5ace976f1f4fc 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
@@ -467,7 +467,8 @@ export default ({ getService }: FtrProviderContext) => {
 
           expect(body).to.eql({
             error: 'Bad Request',
-            message: '[request body]: Invalid input',
+            message:
+              '[request body]: type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "query", type: Invalid literal value, expected "saved_query", saved_id: Required, and 14 more',
             statusCode: 400,
           });
         });
@@ -574,7 +575,9 @@ export default ({ getService }: FtrProviderContext) => {
             .send(rule)
             .expect(400);
 
-          expect(body.message).to.eql('[request body]: Invalid input');
+          expect(body.message).to.eql(
+            '[request body]: investigation_fields: Expected object, received array, type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, and 22 more'
+          );
         });
       });
     });

From 43f9712dd5fa3350d3a5ec917015e63be1e2b82f Mon Sep 17 00:00:00 2001
From: Marco Antonio Ghiani <marcoantonio.ghiani01@gmail.com>
Date: Wed, 8 Nov 2023 12:35:25 +0100
Subject: [PATCH 004/147] [Log Explorer] Flyout details ai assistant
 registration (#170658)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

## 📓  Summary

Closes #169506

This PR introduces a mechanism to apply customizations on the
LogExplorer component.
The first necessary customization which is implemented is for the flyout
detail, allowing the consumer to display additional content on top of
what is already displayed.

This is a temporary solution which will be updated and embedded in a
more structured customization system as a result of the work done for
https://github.com/elastic/kibana/issues/165255.

The current solution creates already a context to allow granular
consumption of the customizations only for those subtrees where a
specific customization should apply.

The LogAIAssistant is used to customize the current LogExplorer as the
first usage of this customization.


https://github.com/elastic/kibana/assets/34506779/c9e6b40e-e636-456a-9e19-1778c26142db

---------

Co-authored-by: Marco Antonio Ghiani <marcoantonio.ghiani@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../components/log_explorer/log_explorer.tsx  |  8 +--
 .../public/components/log_explorer/types.ts   | 25 +++++++++
 .../customizations/custom_flyout_content.tsx  | 25 +++++++--
 .../customizations/log_explorer_profile.tsx   | 14 ++++-
 .../hooks/use_log_explorer_customizations.ts  | 17 +++++++
 x-pack/plugins/log_explorer/public/index.ts   |  4 ++
 .../components/log_ai_assistant/index.tsx     | 21 ++++----
 .../log_ai_assistant.mock.tsx                 | 10 ++++
 .../log_ai_assistant/log_ai_assistant.tsx     | 26 ++++++++--
 .../log_entry_flyout/log_entry_flyout.tsx     |  2 +-
 x-pack/plugins/logs_shared/public/index.ts    |  1 +
 x-pack/plugins/logs_shared/public/mocks.tsx   |  2 +
 x-pack/plugins/logs_shared/public/types.ts    |  2 +
 .../observability_log_explorer/kibana.jsonc   |  1 +
 .../flyout_content.tsx                        | 51 +++++++++++++++++++
 .../log_explorer_customizations/index.ts      | 15 ++++++
 .../public/routes/main/main_route.tsx         | 11 +++-
 .../public/types.ts                           |  2 +
 .../observability_log_explorer/tsconfig.json  |  3 +-
 19 files changed, 215 insertions(+), 25 deletions(-)
 create mode 100644 x-pack/plugins/log_explorer/public/components/log_explorer/types.ts
 create mode 100644 x-pack/plugins/log_explorer/public/hooks/use_log_explorer_customizations.ts
 create mode 100644 x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.mock.tsx
 create mode 100644 x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/flyout_content.tsx
 create mode 100644 x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/index.ts

diff --git a/x-pack/plugins/log_explorer/public/components/log_explorer/log_explorer.tsx b/x-pack/plugins/log_explorer/public/components/log_explorer/log_explorer.tsx
index 0612713085224..57736dd4b96dd 100644
--- a/x-pack/plugins/log_explorer/public/components/log_explorer/log_explorer.tsx
+++ b/x-pack/plugins/log_explorer/public/components/log_explorer/log_explorer.tsx
@@ -17,6 +17,7 @@ import { createLogExplorerProfileCustomizations } from '../../customizations/log
 import { createPropertyGetProxy } from '../../utils/proxies';
 import { LogExplorerProfileContext } from '../../state_machines/log_explorer_profile';
 import { LogExplorerStartDeps } from '../../types';
+import { LogExplorerCustomizations } from './types';
 
 export interface CreateLogExplorerArgs {
   core: CoreStart;
@@ -29,6 +30,7 @@ export interface LogExplorerStateContainer {
 }
 
 export interface LogExplorerProps {
+  customizations?: LogExplorerCustomizations;
   scopedHistory: ScopedHistory;
   state$?: BehaviorSubject<LogExplorerStateContainer>;
 }
@@ -44,10 +46,10 @@ export const createLogExplorer = ({ core, plugins }: CreateLogExplorerArgs) => {
     uiSettings: createUiSettingsServiceProxy(core.uiSettings),
   };
 
-  return ({ scopedHistory, state$ }: LogExplorerProps) => {
+  return ({ customizations = {}, scopedHistory, state$ }: LogExplorerProps) => {
     const logExplorerCustomizations = useMemo(
-      () => [createLogExplorerProfileCustomizations({ core, plugins, state$ })],
-      [state$]
+      () => [createLogExplorerProfileCustomizations({ core, customizations, plugins, state$ })],
+      [customizations, state$]
     );
 
     return (
diff --git a/x-pack/plugins/log_explorer/public/components/log_explorer/types.ts b/x-pack/plugins/log_explorer/public/components/log_explorer/types.ts
new file mode 100644
index 0000000000000..2b366cce7c55c
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/log_explorer/types.ts
@@ -0,0 +1,25 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { DataTableRecord } from '@kbn/discover-utils/types';
+
+export type RenderPreviousContent = () => React.ReactNode;
+
+export interface LogExplorerFlyoutContentProps {
+  doc: DataTableRecord;
+}
+
+export type FlyoutRenderContent = (
+  renderPreviousContent: RenderPreviousContent,
+  props: LogExplorerFlyoutContentProps
+) => React.ReactNode;
+
+export interface LogExplorerCustomizations {
+  flyout?: {
+    renderContent?: FlyoutRenderContent;
+  };
+}
diff --git a/x-pack/plugins/log_explorer/public/customizations/custom_flyout_content.tsx b/x-pack/plugins/log_explorer/public/customizations/custom_flyout_content.tsx
index a4b473119744a..e7a5b7ed35915 100644
--- a/x-pack/plugins/log_explorer/public/customizations/custom_flyout_content.tsx
+++ b/x-pack/plugins/log_explorer/public/customizations/custom_flyout_content.tsx
@@ -5,10 +5,11 @@
  * 2.0.
  */
 
-import React from 'react';
+import React, { useCallback } from 'react';
 import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
 import { FlyoutDetail } from '../components/flyout_detail/flyout_detail';
 import { FlyoutProps } from '../components/flyout_detail';
+import { useLogExplorerCustomizationsContext } from '../hooks/use_log_explorer_customizations';
 
 export const CustomFlyoutContent = ({
   actions,
@@ -16,12 +17,28 @@ export const CustomFlyoutContent = ({
   doc,
   renderDefaultContent,
 }: FlyoutProps) => {
+  const { flyout } = useLogExplorerCustomizationsContext();
+
+  const renderPreviousContent = useCallback(
+    () => (
+      <>
+        {/* Apply custom Log Explorer detail */}
+        <EuiFlexItem>
+          <FlyoutDetail actions={actions} dataView={dataView} doc={doc} />
+        </EuiFlexItem>
+      </>
+    ),
+    [actions, dataView, doc]
+  );
+
+  const content = flyout?.renderContent
+    ? flyout?.renderContent(renderPreviousContent, { doc })
+    : renderPreviousContent();
+
   return (
     <EuiFlexGroup direction="column">
       {/* Apply custom Log Explorer detail */}
-      <EuiFlexItem>
-        <FlyoutDetail actions={actions} dataView={dataView} doc={doc} />
-      </EuiFlexItem>
+      {content}
       {/* Restore default content */}
       <EuiFlexItem>{renderDefaultContent()}</EuiFlexItem>
     </EuiFlexGroup>
diff --git a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
index 85d1284752977..628ff40babc22 100644
--- a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
+++ b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
@@ -14,6 +14,8 @@ import { LogExplorerProfileStateService } from '../state_machines/log_explorer_p
 import { LogExplorerStateContainer } from '../components/log_explorer';
 import { LogExplorerStartDeps } from '../types';
 import { useKibanaContextForPluginProvider } from '../utils/use_kibana';
+import { LogExplorerCustomizations } from '../components/log_explorer/types';
+import { LogExplorerCustomizationsProvider } from '../hooks/use_log_explorer_customizations';
 
 const LazyCustomDatasetFilters = dynamic(() => import('./custom_dataset_filters'));
 const LazyCustomDatasetSelector = dynamic(() => import('./custom_dataset_selector'));
@@ -21,12 +23,18 @@ const LazyCustomFlyoutContent = dynamic(() => import('./custom_flyout_content'))
 
 export interface CreateLogExplorerProfileCustomizationsDeps {
   core: CoreStart;
+  customizations: LogExplorerCustomizations;
   plugins: LogExplorerStartDeps;
   state$?: BehaviorSubject<LogExplorerStateContainer>;
 }
 
 export const createLogExplorerProfileCustomizations =
-  ({ core, plugins, state$ }: CreateLogExplorerProfileCustomizationsDeps): CustomizationCallback =>
+  ({
+    core,
+    customizations: logExplorerCustomizations,
+    plugins,
+    state$,
+  }: CreateLogExplorerProfileCustomizationsDeps): CustomizationCallback =>
   async ({ customizations, stateContainer }) => {
     const { data, dataViews, discover } = plugins;
     // Lazy load dependencies
@@ -127,7 +135,9 @@ export const createLogExplorerProfileCustomizations =
 
         return (
           <KibanaContextProviderForPlugin>
-            <LazyCustomFlyoutContent {...props} dataView={internalState.dataView} />
+            <LogExplorerCustomizationsProvider value={logExplorerCustomizations}>
+              <LazyCustomFlyoutContent {...props} dataView={internalState.dataView} />
+            </LogExplorerCustomizationsProvider>
           </KibanaContextProviderForPlugin>
         );
       },
diff --git a/x-pack/plugins/log_explorer/public/hooks/use_log_explorer_customizations.ts b/x-pack/plugins/log_explorer/public/hooks/use_log_explorer_customizations.ts
new file mode 100644
index 0000000000000..0557e17761cb4
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/hooks/use_log_explorer_customizations.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import createContainer from 'constate';
+import { LogExplorerCustomizations } from '../components/log_explorer/types';
+
+interface UseLogExplorerCustomizationsDeps {
+  value: LogExplorerCustomizations;
+}
+
+const useLogExplorerCustomizations = ({ value }: UseLogExplorerCustomizationsDeps) => value;
+
+export const [LogExplorerCustomizationsProvider, useLogExplorerCustomizationsContext] =
+  createContainer(useLogExplorerCustomizations);
diff --git a/x-pack/plugins/log_explorer/public/index.ts b/x-pack/plugins/log_explorer/public/index.ts
index 00750926517e6..1ca7f37aa4c9b 100644
--- a/x-pack/plugins/log_explorer/public/index.ts
+++ b/x-pack/plugins/log_explorer/public/index.ts
@@ -10,6 +10,10 @@ import type { LogExplorerConfig } from '../common/plugin_config';
 import { LogExplorerPlugin } from './plugin';
 export type { LogExplorerPluginSetup, LogExplorerPluginStart } from './types';
 export type { LogExplorerStateContainer } from './components/log_explorer';
+export type {
+  LogExplorerCustomizations,
+  LogExplorerFlyoutContentProps,
+} from './components/log_explorer/types';
 
 export function plugin(context: PluginInitializerContext<LogExplorerConfig>) {
   return new LogExplorerPlugin(context);
diff --git a/x-pack/plugins/logs_shared/public/components/log_ai_assistant/index.tsx b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/index.tsx
index a4df6c50cbafd..8cf9b2da45c06 100644
--- a/x-pack/plugins/logs_shared/public/components/log_ai_assistant/index.tsx
+++ b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/index.tsx
@@ -4,22 +4,25 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-import React from 'react';
+import React, { ComponentType } from 'react';
 import { Optional } from '@kbn/utility-types';
 import { dynamic } from '../../../common/dynamic';
-import type { LogAIAssistantProps } from './log_ai_assistant';
+import type { LogAIAssistantDeps } from './log_ai_assistant';
 
 export const LogAIAssistant = dynamic(() => import('./log_ai_assistant'));
 
 interface LogAIAssistantFactoryDeps {
-  observabilityAIAssistant: LogAIAssistantProps['aiAssistant'];
+  observabilityAIAssistant: LogAIAssistantDeps['observabilityAIAssistant'];
 }
 
-export function createLogAIAssistant({ observabilityAIAssistant }: LogAIAssistantFactoryDeps) {
-  return ({
-    aiAssistant = observabilityAIAssistant,
-    ...props
-  }: Optional<LogAIAssistantProps, 'aiAssistant'>) => (
-    <LogAIAssistant aiAssistant={aiAssistant} {...props} />
+export type LogAIAssistantComponent = ComponentType<
+  Optional<LogAIAssistantDeps, 'observabilityAIAssistant'>
+>;
+
+export function createLogAIAssistant({
+  observabilityAIAssistant: aiAssistant,
+}: LogAIAssistantFactoryDeps): LogAIAssistantComponent {
+  return ({ observabilityAIAssistant = aiAssistant, ...props }) => (
+    <LogAIAssistant observabilityAIAssistant={observabilityAIAssistant} {...props} />
   );
 }
diff --git a/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.mock.tsx b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.mock.tsx
new file mode 100644
index 0000000000000..9ece10dff8188
--- /dev/null
+++ b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.mock.tsx
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+
+export const createLogAIAssistantMock = () => jest.fn().mockReturnValue(<div />);
diff --git a/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx
index bce36a6d28dc6..335a02ab3a05e 100644
--- a/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx
+++ b/x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx
@@ -12,6 +12,8 @@ import {
   type Message,
   ObservabilityAIAssistantPluginStart,
   MessageRole,
+  ObservabilityAIAssistantProvider,
+  useObservabilityAIAssistant,
 } from '@kbn/observability-ai-assistant-plugin/public';
 import { LogEntryField } from '../../../common';
 import { explainLogMessageTitle, similarLogMessagesTitle } from './translations';
@@ -21,11 +23,16 @@ export interface LogAIAssistantDocument {
 }
 
 export interface LogAIAssistantProps {
-  aiAssistant: ObservabilityAIAssistantPluginStart;
   doc: LogAIAssistantDocument | undefined;
 }
 
-export function LogAIAssistant({ aiAssistant, doc }: LogAIAssistantProps) {
+export interface LogAIAssistantDeps extends LogAIAssistantProps {
+  observabilityAIAssistant: ObservabilityAIAssistantPluginStart;
+}
+
+export const LogAIAssistant = withProviders(({ doc }: LogAIAssistantProps) => {
+  const aiAssistant = useObservabilityAIAssistant();
+
   const explainLogMessageMessages = useMemo<Message[] | undefined>(() => {
     if (!doc) {
       return undefined;
@@ -80,7 +87,20 @@ export function LogAIAssistant({ aiAssistant, doc }: LogAIAssistantProps) {
       ) : null}
     </EuiFlexGroup>
   );
-}
+});
 
 // eslint-disable-next-line import/no-default-export
 export default LogAIAssistant;
+
+function withProviders(Component: React.FunctionComponent<LogAIAssistantProps>) {
+  return function ComponentWithProviders({
+    observabilityAIAssistant,
+    ...props
+  }: LogAIAssistantDeps) {
+    return (
+      <ObservabilityAIAssistantProvider value={observabilityAIAssistant}>
+        <Component {...props} />
+      </ObservabilityAIAssistantProvider>
+    );
+  };
+}
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
index 62634f2aeba13..b66e864c2a499 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
@@ -184,7 +184,7 @@ export const LogEntryFlyout = ({
         >
           <EuiFlexGroup direction="column" gutterSize="m">
             <EuiFlexItem grow={false}>
-              <LogAIAssistant aiAssistant={observabilityAIAssistant} doc={logEntry} />
+              <LogAIAssistant observabilityAIAssistant={observabilityAIAssistant} doc={logEntry} />
             </EuiFlexItem>
             <EuiFlexItem grow={false}>
               <LogEntryFieldsTable logEntry={logEntry} onSetFieldFilter={onSetFieldFilter} />
diff --git a/x-pack/plugins/logs_shared/public/index.ts b/x-pack/plugins/logs_shared/public/index.ts
index 873d202b1af7d..58f22fe48bccb 100644
--- a/x-pack/plugins/logs_shared/public/index.ts
+++ b/x-pack/plugins/logs_shared/public/index.ts
@@ -37,6 +37,7 @@ export { useLogSummary, WithSummary } from './containers/logs/log_summary';
 export { useLogEntryFlyout } from './components/logging/log_entry_flyout';
 
 // Shared components
+export type { LogAIAssistantDocument } from './components/log_ai_assistant/log_ai_assistant';
 export type {
   LogEntryStreamItem,
   LogEntryColumnWidths,
diff --git a/x-pack/plugins/logs_shared/public/mocks.tsx b/x-pack/plugins/logs_shared/public/mocks.tsx
index 963480d8fd90f..a9b0ebd6a6aa3 100644
--- a/x-pack/plugins/logs_shared/public/mocks.tsx
+++ b/x-pack/plugins/logs_shared/public/mocks.tsx
@@ -5,11 +5,13 @@
  * 2.0.
  */
 
+import { createLogAIAssistantMock } from './components/log_ai_assistant/log_ai_assistant.mock';
 import { createLogViewsServiceStartMock } from './services/log_views/log_views_service.mock';
 import { LogsSharedClientStartExports } from './types';
 
 export const createLogsSharedPluginStartMock = (): jest.Mocked<LogsSharedClientStartExports> => ({
   logViews: createLogViewsServiceStartMock(),
+  LogAIAssistant: createLogAIAssistantMock(),
 });
 
 export const _ensureTypeCompatibility = (): LogsSharedClientStartExports =>
diff --git a/x-pack/plugins/logs_shared/public/types.ts b/x-pack/plugins/logs_shared/public/types.ts
index e67f83e4becc0..c0379c6fc21fb 100644
--- a/x-pack/plugins/logs_shared/public/types.ts
+++ b/x-pack/plugins/logs_shared/public/types.ts
@@ -17,6 +17,7 @@ import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
 import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
 import { ObservabilityAIAssistantPluginStart } from '@kbn/observability-ai-assistant-plugin/public';
 import { UiActionsStart } from '@kbn/ui-actions-plugin/public';
+import { LogAIAssistantComponent } from './components/log_ai_assistant';
 // import type { OsqueryPluginStart } from '../../osquery/public';
 import { LogViewsServiceSetup, LogViewsServiceStart } from './services/log_views';
 
@@ -27,6 +28,7 @@ export interface LogsSharedClientSetupExports {
 
 export interface LogsSharedClientStartExports {
   logViews: LogViewsServiceStart;
+  LogAIAssistant: LogAIAssistantComponent;
 }
 
 // eslint-disable-next-line @typescript-eslint/no-empty-interface
diff --git a/x-pack/plugins/observability_log_explorer/kibana.jsonc b/x-pack/plugins/observability_log_explorer/kibana.jsonc
index 7ac940de86dd4..6f871e114a035 100644
--- a/x-pack/plugins/observability_log_explorer/kibana.jsonc
+++ b/x-pack/plugins/observability_log_explorer/kibana.jsonc
@@ -15,6 +15,7 @@
       "data",
       "discover",
       "logExplorer",
+      "logsShared",
       "observabilityShared",
       "share",
       "kibanaUtils",
diff --git a/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/flyout_content.tsx b/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/flyout_content.tsx
new file mode 100644
index 0000000000000..53d34a71a7237
--- /dev/null
+++ b/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/flyout_content.tsx
@@ -0,0 +1,51 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { EuiFlexItem } from '@elastic/eui';
+import {
+  LogExplorerCustomizations,
+  LogExplorerFlyoutContentProps,
+} from '@kbn/log-explorer-plugin/public';
+import type { LogAIAssistantDocument } from '@kbn/logs-shared-plugin/public';
+import React, { useMemo } from 'react';
+import { useKibanaContextForPlugin } from '../utils/use_kibana';
+
+const ObservabilityLogAIAssistant = ({ doc }: LogExplorerFlyoutContentProps) => {
+  const { services } = useKibanaContextForPlugin();
+  const { LogAIAssistant } = services.logsShared;
+
+  const mappedDoc = useMemo(() => mapDocToAIAssistantFormat(doc), [doc]);
+
+  return <LogAIAssistant key={doc.id} doc={mappedDoc} />;
+};
+
+export const renderFlyoutContent: Required<LogExplorerCustomizations>['flyout']['renderContent'] = (
+  renderPreviousContent,
+  props
+) => {
+  return (
+    <>
+      {renderPreviousContent()}
+      <EuiFlexItem>
+        <ObservabilityLogAIAssistant {...props} />
+      </EuiFlexItem>
+    </>
+  );
+};
+
+/**
+ * Utils
+ */
+const mapDocToAIAssistantFormat = (doc: LogExplorerFlyoutContentProps['doc']) => {
+  if (!doc) return;
+
+  return {
+    fields: Object.entries(doc.flattened).map(([field, value]) => ({
+      field,
+      value,
+    })) as LogAIAssistantDocument['fields'],
+  };
+};
diff --git a/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/index.ts b/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/index.ts
new file mode 100644
index 0000000000000..a86b47e92cf01
--- /dev/null
+++ b/x-pack/plugins/observability_log_explorer/public/log_explorer_customizations/index.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { LogExplorerCustomizations } from '@kbn/log-explorer-plugin/public';
+import { renderFlyoutContent } from './flyout_content';
+
+export const createLogExplorerCustomizations = (): LogExplorerCustomizations => ({
+  flyout: {
+    renderContent: renderFlyoutContent,
+  },
+});
diff --git a/x-pack/plugins/observability_log_explorer/public/routes/main/main_route.tsx b/x-pack/plugins/observability_log_explorer/public/routes/main/main_route.tsx
index aece8474f0390..e17f92a46c23b 100644
--- a/x-pack/plugins/observability_log_explorer/public/routes/main/main_route.tsx
+++ b/x-pack/plugins/observability_log_explorer/public/routes/main/main_route.tsx
@@ -6,7 +6,7 @@
  */
 
 import { CoreStart } from '@kbn/core/public';
-import React, { useState } from 'react';
+import React, { useMemo, useState } from 'react';
 import { BehaviorSubject } from 'rxjs';
 import { LogExplorerTopNavMenu } from '../../components/log_explorer_top_nav_menu';
 import { ObservabilityLogExplorerPageTemplate } from '../../components/page_template';
@@ -14,6 +14,7 @@ import { noBreadcrumbs, useBreadcrumbs } from '../../utils/breadcrumbs';
 import { useKibanaContextForPlugin } from '../../utils/use_kibana';
 import { ObservabilityLogExplorerAppMountParameters } from '../../types';
 import { LazyOriginInterpreter } from '../../state_machines/origin_interpreter/src/lazy_component';
+import { createLogExplorerCustomizations } from '../../log_explorer_customizations';
 export interface ObservablityLogExplorerMainRouteProps {
   appParams: ObservabilityLogExplorerAppMountParameters;
   core: CoreStart;
@@ -31,6 +32,8 @@ export const ObservablityLogExplorerMainRoute = ({
 
   const [state$] = useState(() => new BehaviorSubject({}));
 
+  const customizations = useMemo(() => createLogExplorerCustomizations(), []);
+
   return (
     <>
       <LogExplorerTopNavMenu
@@ -41,7 +44,11 @@ export const ObservablityLogExplorerMainRoute = ({
       />
       <LazyOriginInterpreter history={history} toasts={core.notifications.toasts} />
       <ObservabilityLogExplorerPageTemplate observabilityShared={observabilityShared}>
-        <logExplorer.LogExplorer scopedHistory={history} state$={state$} />
+        <logExplorer.LogExplorer
+          customizations={customizations}
+          scopedHistory={history}
+          state$={state$}
+        />
       </ObservabilityLogExplorerPageTemplate>
     </>
   );
diff --git a/x-pack/plugins/observability_log_explorer/public/types.ts b/x-pack/plugins/observability_log_explorer/public/types.ts
index 82045faea76e8..8b315ad206ce4 100644
--- a/x-pack/plugins/observability_log_explorer/public/types.ts
+++ b/x-pack/plugins/observability_log_explorer/public/types.ts
@@ -12,6 +12,7 @@ import { ObservabilitySharedPluginStart } from '@kbn/observability-shared-plugin
 import { ServerlessPluginStart } from '@kbn/serverless/public';
 import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public';
 import { AppMountParameters, ScopedHistory } from '@kbn/core/public';
+import { LogsSharedClientStartExports } from '@kbn/logs-shared-plugin/public';
 import {
   ObservabilityLogExplorerLocators,
   ObservabilityLogExplorerLocationState,
@@ -33,6 +34,7 @@ export interface ObservabilityLogExplorerStartDeps {
   data: DataPublicPluginStart;
   discover: DiscoverStart;
   logExplorer: LogExplorerPluginStart;
+  logsShared: LogsSharedClientStartExports;
   observabilityShared: ObservabilitySharedPluginStart;
   serverless?: ServerlessPluginStart;
   share: SharePluginStart;
diff --git a/x-pack/plugins/observability_log_explorer/tsconfig.json b/x-pack/plugins/observability_log_explorer/tsconfig.json
index 7266e097dae62..109b54b929ec7 100644
--- a/x-pack/plugins/observability_log_explorer/tsconfig.json
+++ b/x-pack/plugins/observability_log_explorer/tsconfig.json
@@ -33,7 +33,8 @@
     "@kbn/core-mount-utils-browser-internal",
     "@kbn/xstate-utils",
     "@kbn/shared-ux-utility",
-    "@kbn/ui-theme"
+    "@kbn/ui-theme",
+    "@kbn/logs-shared-plugin"
   ],
   "exclude": [
     "target/**/*"

From 7449cdb14f313678081b4520629b1fc8021596d6 Mon Sep 17 00:00:00 2001
From: Juan Pablo Djeredjian <jpdjeredjian@gmail.com>
Date: Wed, 8 Nov 2023 12:52:54 +0100
Subject: [PATCH 005/147] [Security Solution] Revert
 `security_solution_cypress` package.json change (#170663)

## Summary

- Reverts unintentional change to
`x-pack/test/security_solution_cypress/package.json` introduced in
https://github.com/elastic/kibana/pull/169182

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../rule_actions/bulk_actions/bulk_edit_rules_actions.cy.ts   | 2 +-
 x-pack/test/security_solution_cypress/package.json            | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_actions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_actions.cy.ts
index d543843641b78..ac6c723dbc0c6 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_actions.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/rule_actions/bulk_actions/bulk_edit_rules_actions.cy.ts
@@ -76,7 +76,7 @@ const expectedSlackMessage = 'Slack action test message';
 
 describe(
   'Detection rules, bulk edit of rule actions',
-  { tags: ['@ess', '@serverless', '@brokenInServerlessQA'] },
+  { tags: ['@ess', '@serverless', '@brokenInServerless', '@brokenInServerlessQA'] },
   () => {
     beforeEach(() => {
       login();
diff --git a/x-pack/test/security_solution_cypress/package.json b/x-pack/test/security_solution_cypress/package.json
index 67125c9c55daa..0e34d7867d37a 100644
--- a/x-pack/test/security_solution_cypress/package.json
+++ b/x-pack/test/security_solution_cypress/package.json
@@ -7,7 +7,7 @@
   "scripts": {
     "cypress": "NODE_OPTIONS=--openssl-legacy-provider ../../../node_modules/.bin/cypress",
     "cypress:open:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel open --spec './cypress/e2e/**/*.cy.ts' --config-file ../../test/security_solution_cypress/cypress/cypress.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config",
-    "cypress:run:ess": "yarn cypress:ess --spec './cypress/e2e/exceptions/shared_exception_lists_management/**/*.cy.ts'",
+    "cypress:run:ess": "yarn cypress:ess --spec './cypress/e2e/!(investigations|explore)/**/*.cy.ts'",
     "cypress:run:cases:ess": "yarn cypress:ess --spec './cypress/e2e/explore/cases/*.cy.ts'",
     "cypress:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel run --config-file ../../test/security_solution_cypress/cypress/cypress_ci.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config",
     "cypress:run:respops:ess": "yarn cypress:ess --spec './cypress/e2e/(detection_response|exceptions)/**/*.cy.ts'",
@@ -21,7 +21,7 @@
     "cypress:cloud:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider NODE_TLS_REJECT_UNAUTHORIZED=0 ../../../node_modules/.bin/cypress",
     "cypress:open:cloud:serverless": "yarn cypress:cloud:serverless open --config-file ./cypress/cypress_serverless.config.ts --env CLOUD_SERVERLESS=true",
     "cypress:open:serverless": "yarn cypress:serverless open --config-file ../../test/security_solution_cypress/cypress/cypress_serverless.config.ts --spec './cypress/e2e/**/*.cy.ts'",
-    "cypress:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/exceptions/shared_exception_lists_management/**/*.cy.ts'",
+    "cypress:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/!(investigations|explore)/**/*.cy.ts'",
     "cypress:run:cloud:serverless": "yarn cypress:cloud:serverless run --config-file ./cypress/cypress_ci_serverless.config.ts --env CLOUD_SERVERLESS=true",
     "cypress:investigations:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/investigations/**/*.cy.ts'",
     "cypress:explore:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/explore/**/*.cy.ts'",

From 8ddf511c42ded98b5b83f60bc9205b320f6ba70a Mon Sep 17 00:00:00 2001
From: Tomasz Ciecierski <tomasz.ciecierski@elastic.co>
Date: Wed, 8 Nov 2023 14:24:31 +0100
Subject: [PATCH 006/147] [EDR Worfklows] Osquery rules flaky test (#170832)

---
 .../osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts   | 1 +
 x-pack/plugins/osquery/cypress/tasks/response_actions.ts         | 1 +
 2 files changed, 2 insertions(+)

diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts
index 15fb98540e438..cb4ce27a69031 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts
@@ -63,6 +63,7 @@ describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serve
     cy.getBySel('globalLoadingIndicator').should('not.exist');
     closeDateTabIfVisible();
     cy.getBySel('edit-rule-actions-tab').click();
+    cy.getBySel('globalLoadingIndicator').should('not.exist');
     cy.contains('Response actions are run on each rule execution.');
     cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click();
     cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => {
diff --git a/x-pack/plugins/osquery/cypress/tasks/response_actions.ts b/x-pack/plugins/osquery/cypress/tasks/response_actions.ts
index 3f59ebca9f560..d686392431b7a 100644
--- a/x-pack/plugins/osquery/cypress/tasks/response_actions.ts
+++ b/x-pack/plugins/osquery/cypress/tasks/response_actions.ts
@@ -45,6 +45,7 @@ export const checkOsqueryResponseActionsPermissions = (enabled: boolean) => {
     cy.getBySel('globalLoadingIndicator').should('not.exist');
     closeDateTabIfVisible();
     cy.getBySel('edit-rule-actions-tab').click();
+    cy.getBySel('globalLoadingIndicator').should('not.exist');
     cy.contains('Response actions are run on each rule execution.');
     cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click();
     if (enabled) {

From 4199d03df69355243bb5a4b2fcad13713a512335 Mon Sep 17 00:00:00 2001
From: Sander Philipse <94373878+sphilipse@users.noreply.github.com>
Date: Wed, 8 Nov 2023 14:48:08 +0100
Subject: [PATCH 007/147] [Serverless Search] Update sidenav (#170774)

## Summary
This updates the Serverless Search sidenav to match the design, and add
Connectors.

<img width="1436" alt="Screenshot 2023-11-07 at 17 48 53"
src="https://github.com/elastic/kibana/assets/94373878/9fb88808-7bfc-4810-80bc-f0c8c7c1a353">

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../serverless_search/public/layout/nav.tsx   | 110 ++++++++----------
 .../translations/translations/fr-FR.json      |   3 -
 .../translations/translations/ja-JP.json      |   3 -
 .../translations/translations/zh-CN.json      |   3 -
 .../test_suites/search/navigation.ts          |  12 +-
 5 files changed, 50 insertions(+), 81 deletions(-)

diff --git a/x-pack/plugins/serverless_search/public/layout/nav.tsx b/x-pack/plugins/serverless_search/public/layout/nav.tsx
index 3aaa1ae62884c..7d4b2fd7d0fd1 100644
--- a/x-pack/plugins/serverless_search/public/layout/nav.tsx
+++ b/x-pack/plugins/serverless_search/public/layout/nav.tsx
@@ -15,6 +15,7 @@ import React from 'react';
 import { i18n } from '@kbn/i18n';
 import type { ServerlessPluginStart } from '@kbn/serverless/public';
 import type { CloudStart } from '@kbn/cloud-plugin/public';
+import { CONNECTORS_LABEL } from '../../common/i18n_string';
 
 const navigationTree: NavigationTreeDefinition = {
   body: [
@@ -37,79 +38,60 @@ const navigationTree: NavigationTreeDefinition = {
           getIsActive: ({ pathNameSerialized, prepend }) => {
             return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
           },
+          spaceBefore: 'l',
         },
         {
-          id: 'explore',
-          title: i18n.translate('xpack.serverlessSearch.nav.explore', {
-            defaultMessage: 'Explore',
+          link: 'discover',
+          spaceBefore: 'm',
+        },
+        {
+          link: 'dashboards',
+          getIsActive: ({ pathNameSerialized, prepend }) => {
+            return pathNameSerialized.startsWith(prepend('/app/dashboards'));
+          },
+        },
+        {
+          link: 'visualize',
+          title: i18n.translate('xpack.serverlessSearch.nav.visualize', {
+            defaultMessage: 'Visualizations',
           }),
-          children: [
-            {
-              link: 'discover',
-            },
-            {
-              link: 'dashboards',
-              getIsActive: ({ pathNameSerialized, prepend }) => {
-                return pathNameSerialized.startsWith(prepend('/app/dashboards'));
-              },
-            },
-            {
-              link: 'visualize',
-              title: i18n.translate('xpack.serverlessSearch.nav.visualize', {
-                defaultMessage: 'Visualizations',
-              }),
-              getIsActive: ({ pathNameSerialized, prepend }) => {
-                return (
-                  pathNameSerialized.startsWith(prepend('/app/visualize')) ||
-                  pathNameSerialized.startsWith(prepend('/app/lens')) ||
-                  pathNameSerialized.startsWith(prepend('/app/maps'))
-                );
-              },
-            },
-            {
-              link: 'management:triggersActions',
-              title: i18n.translate('xpack.serverlessSearch.nav.alerts', {
-                defaultMessage: 'Alerts',
-              }),
-            },
-          ],
+          getIsActive: ({ pathNameSerialized, prepend }) => {
+            return (
+              pathNameSerialized.startsWith(prepend('/app/visualize')) ||
+              pathNameSerialized.startsWith(prepend('/app/lens')) ||
+              pathNameSerialized.startsWith(prepend('/app/maps'))
+            );
+          },
         },
         {
-          id: 'content',
-          title: i18n.translate('xpack.serverlessSearch.nav.content', {
-            defaultMessage: 'Content',
+          link: 'management:triggersActions',
+          title: i18n.translate('xpack.serverlessSearch.nav.alerts', {
+            defaultMessage: 'Alerts',
           }),
-          children: [
-            {
-              title: i18n.translate('xpack.serverlessSearch.nav.content.indices', {
-                defaultMessage: 'Index Management',
-              }),
-              link: 'management:index_management',
-              breadcrumbStatus:
-                'hidden' /* management sub-pages set their breadcrumbs themselves */,
-            },
-            {
-              title: i18n.translate('xpack.serverlessSearch.nav.content.pipelines', {
-                defaultMessage: 'Pipelines',
-              }),
-              link: 'management:ingest_pipelines',
-              breadcrumbStatus:
-                'hidden' /* management sub-pages set their breadcrumbs themselves */,
-            },
-          ],
         },
         {
-          id: 'security',
-          title: i18n.translate('xpack.serverlessSearch.nav.security', {
-            defaultMessage: 'Security',
+          title: i18n.translate('xpack.serverlessSearch.nav.content.indices', {
+            defaultMessage: 'Index Management',
           }),
-          children: [
-            {
-              link: 'management:api_keys',
-              breadcrumbStatus:
-                'hidden' /* management sub-pages set their breadcrumbs themselves */,
-            },
-          ],
+          link: 'management:index_management',
+          breadcrumbStatus: 'hidden' /* management sub-pages set their breadcrumbs themselves */,
+          spaceBefore: 'm',
+        },
+        {
+          title: i18n.translate('xpack.serverlessSearch.nav.content.pipelines', {
+            defaultMessage: 'Pipelines',
+          }),
+          link: 'management:ingest_pipelines',
+          breadcrumbStatus: 'hidden' /* management sub-pages set their breadcrumbs themselves */,
+        },
+        {
+          title: CONNECTORS_LABEL,
+          link: 'serverlessConnectors',
+        },
+        {
+          link: 'management:api_keys',
+          breadcrumbStatus: 'hidden' /* management sub-pages set their breadcrumbs themselves */,
+          spaceBefore: 'm',
         },
       ],
     },
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index c06aff873c9bf..9024c08ddcc3d 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -37250,16 +37250,13 @@
     "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby",
     "xpack.serverlessSearch.learnMore": "En savoir plus",
     "xpack.serverlessSearch.nav.alerts": "Alertes",
-    "xpack.serverlessSearch.nav.content": "Contenu",
     "xpack.serverlessSearch.nav.content.indices": "Gestion des index",
     "xpack.serverlessSearch.nav.content.pipelines": "Pipelines",
     "xpack.serverlessSearch.nav.devTools": "Outils de développement",
-    "xpack.serverlessSearch.nav.explore": "Explorer",
     "xpack.serverlessSearch.nav.gettingStarted": "Premiers pas",
     "xpack.serverlessSearch.nav.mngt": "Gestion",
     "xpack.serverlessSearch.nav.performance": "Performances",
     "xpack.serverlessSearch.nav.projectSettings": "Paramètres de projet",
-    "xpack.serverlessSearch.nav.security": "Sécurité",
     "xpack.serverlessSearch.next": "Suivant",
     "xpack.serverlessSearch.optional": "Facultatif",
     "xpack.serverlessSearch.overview.footer.description": "Votre point de terminaison Elasticsearch est configuré et vous avez effectué quelques requêtes de base. Vous voilà prêt à approfondir les outils et les cas d'utilisation avancés.",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 5f27f5b60da13..6f0fada5b569d 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -37248,16 +37248,13 @@
     "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby",
     "xpack.serverlessSearch.learnMore": "詳細",
     "xpack.serverlessSearch.nav.alerts": "アラート",
-    "xpack.serverlessSearch.nav.content": "コンテンツ",
     "xpack.serverlessSearch.nav.content.indices": "インデックス管理",
     "xpack.serverlessSearch.nav.content.pipelines": "パイプライン",
     "xpack.serverlessSearch.nav.devTools": "開発ツール",
-    "xpack.serverlessSearch.nav.explore": "探索",
     "xpack.serverlessSearch.nav.gettingStarted": "はじめて使う",
     "xpack.serverlessSearch.nav.mngt": "管理",
     "xpack.serverlessSearch.nav.performance": "パフォーマンス",
     "xpack.serverlessSearch.nav.projectSettings": "プロジェクト設定",
-    "xpack.serverlessSearch.nav.security": "セキュリティ",
     "xpack.serverlessSearch.next": "次へ",
     "xpack.serverlessSearch.optional": "オプション",
     "xpack.serverlessSearch.overview.footer.description": "Elasticsearchエンドポイントが設定され、いくつかの基本的なクエリが作成されました。これで、より高度なツールやユースケースを使いこなす準備が整いました。",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 7c8328a39f987..307ba7316f7fc 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -37244,16 +37244,13 @@
     "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby",
     "xpack.serverlessSearch.learnMore": "了解详情",
     "xpack.serverlessSearch.nav.alerts": "告警",
-    "xpack.serverlessSearch.nav.content": "内容",
     "xpack.serverlessSearch.nav.content.indices": "索引管理",
     "xpack.serverlessSearch.nav.content.pipelines": "管道",
     "xpack.serverlessSearch.nav.devTools": "开发工具",
-    "xpack.serverlessSearch.nav.explore": "浏览",
     "xpack.serverlessSearch.nav.gettingStarted": "入门",
     "xpack.serverlessSearch.nav.mngt": "管理",
     "xpack.serverlessSearch.nav.performance": "性能",
     "xpack.serverlessSearch.nav.projectSettings": "项目设置",
-    "xpack.serverlessSearch.nav.security": "安全",
     "xpack.serverlessSearch.next": "下一步",
     "xpack.serverlessSearch.optional": "可选",
     "xpack.serverlessSearch.overview.footer.description": "已设置您的 Elasticsearch 终端,并且您已提出一些基本查询。现在您已准备就绪,可以更深入地了解更多高级工具和用例。",
diff --git a/x-pack/test_serverless/functional/test_suites/search/navigation.ts b/x-pack/test_serverless/functional/test_suites/search/navigation.ts
index 03f229f21b47a..8796dcfe93773 100644
--- a/x-pack/test_serverless/functional/test_suites/search/navigation.ts
+++ b/x-pack/test_serverless/functional/test_suites/search/navigation.ts
@@ -72,20 +72,16 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
 
     it("management apps from the sidenav hide the 'stack management' root from the breadcrumbs", async () => {
       await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:triggersActions' });
-      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Explore', 'Alerts', 'Rules']);
+      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Alerts', 'Rules']);
 
       await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:index_management' });
-      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
-        'Content',
-        'Index Management',
-        'Indices',
-      ]);
+      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Index Management', 'Indices']);
 
       await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:ingest_pipelines' });
-      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Content', 'Ingest Pipelines']);
+      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Ingest Pipelines']);
 
       await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:api_keys' });
-      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Security', 'API keys']);
+      await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['API keys']);
     });
 
     it('navigate management', async () => {

From 8c26f7cfe91a26bbb85e2c13815c16792cde5df3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?=
 <efeguerkan.yalaman@elastic.co>
Date: Wed, 8 Nov 2023 14:48:37 +0100
Subject: [PATCH 008/147] [Enterprise Search] Update Kea to 2.6 (#170027)

## Summary

First step to update KeaJS to 3.x series. Currently we are using 2.4.2.
For a better jump ahead we should first update to 2.6.


### Checklist

Delete any items that are not applicable to this PR.

- [x] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 package.json | 2 +-
 yarn.lock    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index 3f3a05f840cb0..f41f2a0d8774f 100644
--- a/package.json
+++ b/package.json
@@ -937,7 +937,7 @@
     "json-stringify-safe": "5.0.1",
     "jsonwebtoken": "^9.0.0",
     "jsts": "^1.6.2",
-    "kea": "^2.4.2",
+    "kea": "^2.6.0",
     "langchain": "^0.0.151",
     "launchdarkly-js-client-sdk": "^3.1.4",
     "launchdarkly-node-server-sdk": "^7.0.3",
diff --git a/yarn.lock b/yarn.lock
index 0d11dd72a0359..84d09037017b3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -20473,10 +20473,10 @@ kdbush@^4.0.2:
   resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39"
   integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==
 
-kea@^2.4.2:
-  version "2.4.2"
-  resolved "https://registry.yarnpkg.com/kea/-/kea-2.4.2.tgz#53af42702f2c8962422e456e5dd943391bad26e9"
-  integrity sha512-cdGds/gsJsbo/KbVAMk5/tTr229eDibVT1wmPPxPO/10zYb8GFoP3udBIQb+Hop5qGEu2wIHVdXwJvXqSS8JAg==
+kea@^2.6.0:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/kea/-/kea-2.6.0.tgz#774a82188e0fb52cdb18b72843a875ee857f3807"
+  integrity sha512-+yaLyZx8h2v96aL01XIRZjqA8Qk4fIUziznSKnkjDItUU8YnH75xER6+vMHT5EHC3MJeSScxIx5UuqZl30DBdg==
 
 keyv@^3.0.0:
   version "3.0.0"

From a173300abc80cfbb5b72aa6e8583442590231305 Mon Sep 17 00:00:00 2001
From: Michael Dokolin <mikhail.dokolin@elastic.co>
Date: Wed, 8 Nov 2023 15:05:21 +0100
Subject: [PATCH 009/147] [cli] Add workaround to set a custom heap snapshot
 dir (#170756)

---
 .../templates/base/Dockerfile                 |  1 +
 src/setup_node_env/heap_snapshot.js           | 46 +++++++++++++++++++
 src/setup_node_env/setup_env.js               |  2 +
 3 files changed, 49 insertions(+)
 create mode 100644 src/setup_node_env/heap_snapshot.js

diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile
index 8db4b419a184a..25f4345ffbcc3 100644
--- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile
+++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile
@@ -128,6 +128,7 @@ COPY --chown=1000:0 config/serverless.oblt.yml /usr/share/kibana/config/serverle
 COPY --chown=1000:0 config/serverless.security.yml /usr/share/kibana/config/serverless.security.yml
 # Supportability enhancement: enable capturing heap snapshots. See https://nodejs.org/api/cli.html#--heapsnapshot-signalsignal
 RUN echo '\n--heapsnapshot-signal=SIGUSR2' >> config/node.options
+RUN echo '--diagnostic-dir=./data' >> config/node.options
 {{/serverless}}
 {{^opensslLegacyProvider}}
 RUN sed 's/\(--openssl-legacy-provider\)/#\1/' -i config/node.options
diff --git a/src/setup_node_env/heap_snapshot.js b/src/setup_node_env/heap_snapshot.js
new file mode 100644
index 0000000000000..94e4b35e2f887
--- /dev/null
+++ b/src/setup_node_env/heap_snapshot.js
@@ -0,0 +1,46 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+var getopts = require('getopts');
+var path = require('path');
+var v8 = require('node:v8');
+var worker = require('node:worker_threads');
+
+var execOpts = getopts(process.execArgv);
+var envOpts = getopts(process.env.NODE_OPTIONS ? process.env.NODE_OPTIONS.split(/\s+/) : []);
+var diagnosticDir = execOpts['diagnostic-dir'] || envOpts['diagnostic-dir'];
+var heapSnapshotSignal = execOpts['heapsnapshot-signal'] || envOpts['heapsnapshot-signal'];
+var heapSnapshotSerial = 0;
+
+function getHeapSnapshotPath() {
+  var now = new Date();
+
+  var year = now.getFullYear();
+  var month = String(now.getMonth() + 1).padStart(2, '0');
+  var day = String(now.getDate()).padStart(2, '0');
+  var hours = String(now.getHours()).padStart(2, '0');
+  var minutes = String(now.getMinutes()).padStart(2, '0');
+  var seconds = String(now.getSeconds()).padStart(2, '0');
+
+  var date = `${year}${month}${day}`;
+  var time = `${hours}${minutes}${seconds}`;
+  var pid = process.pid;
+  var threadId = worker.threadId;
+  var serial = (++heapSnapshotSerial).toString().padStart(3, '0');
+
+  return path.join(diagnosticDir, `Heap.${date}.${time}.${pid}.${threadId}.${serial}.heapsnapshot`);
+}
+
+if (diagnosticDir && heapSnapshotSignal) {
+  process.removeAllListeners(heapSnapshotSignal);
+
+  process.on(heapSnapshotSignal, function () {
+    var heapSnapshotPath = getHeapSnapshotPath();
+    v8.writeHeapSnapshot(heapSnapshotPath);
+  });
+}
diff --git a/src/setup_node_env/setup_env.js b/src/setup_node_env/setup_env.js
index 7b37d98011cfb..d3076a2c3b9cf 100644
--- a/src/setup_node_env/setup_env.js
+++ b/src/setup_node_env/setup_env.js
@@ -11,6 +11,8 @@ require('./exit_on_warning');
 require('./harden');
 // The following require statements MUST be executed before any others - END
 
+// @todo Remove when migrated to Node 20 (#162696)
+require('./heap_snapshot');
 require('symbol-observable');
 require('source-map-support').install();
 require('./node_version_validator');

From c834113fb1f820806b50ea76d9458521d7d9b14f Mon Sep 17 00:00:00 2001
From: Pierre Gayvallet <pierre.gayvallet@elastic.co>
Date: Wed, 8 Nov 2023 15:11:43 +0100
Subject: [PATCH 010/147] Disable moment deprecation warnings in production
 (#170827)

## Summary

Disable `momentjs` deprecation warnings in production environment to
avoid unexpected `console.log` entries.
---
 src/cli/dist.js                      |  1 +
 src/setup_node_env/mute_libraries.js | 11 +++++++++++
 2 files changed, 12 insertions(+)
 create mode 100644 src/setup_node_env/mute_libraries.js

diff --git a/src/cli/dist.js b/src/cli/dist.js
index 9bd7696a44561..5551c4e5c7774 100644
--- a/src/cli/dist.js
+++ b/src/cli/dist.js
@@ -9,4 +9,5 @@
 require('../setup_node_env/dist');
 require('./apm')();
 require('../setup_node_env/root');
+require('../setup_node_env/mute_libraries');
 require('./cli');
diff --git a/src/setup_node_env/mute_libraries.js b/src/setup_node_env/mute_libraries.js
new file mode 100644
index 0000000000000..defb6347d80f7
--- /dev/null
+++ b/src/setup_node_env/mute_libraries.js
@@ -0,0 +1,11 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+// disable moment deprecation warnings
+var moment = require('moment');
+moment.suppressDeprecationWarnings = true;

From 3d2235949a23d39fd5d3f846f0f5d55fc30606ee Mon Sep 17 00:00:00 2001
From: Pierre Gayvallet <pierre.gayvallet@elastic.co>
Date: Wed, 8 Nov 2023 15:12:01 +0100
Subject: [PATCH 011/147] [logging] always escape control chars (#170826)

## Summary

Follow-up of https://github.com/elastic/kibana/pull/169773

Escape message even if it's not a string
---
 .../src/layouts/conversions/message.test.ts   | 48 +++++++++++++++++++
 .../src/layouts/conversions/message.ts        | 24 +++++-----
 2 files changed, 61 insertions(+), 11 deletions(-)

diff --git a/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.test.ts b/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.test.ts
index cf16b57c92782..2c84635d6711c 100644
--- a/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.test.ts
+++ b/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.test.ts
@@ -62,4 +62,52 @@ describe('MessageConversion', () => {
       '\\u001b\\u0000[31mESC-INJECTION-LFUNICODE:\\u001b[32mSUCCESSFUL\\u001b[0m\\u0007\n\nInjecting 10.000 lols 😂\\u001b[10000;b\\u0007'
     );
   });
+
+  test('it should encode/escape ANSI chars lines from the message when not a string', () => {
+    expect(
+      MessageConversion.convert(
+        {
+          ...baseRecord,
+          // @ts-expect-error message is supposed to be a string
+          message: {
+            toString: () => 'toString...\u001b[5;7;6mThis is Fine\u001b[27m',
+          },
+        },
+        false
+      )
+    ).toEqual('toString...\\u001b[5;7;6mThis is Fine\\u001b[27m');
+  });
+
+  test('it should encode/escape ANSI chars lines from the error stack', () => {
+    const error = new Error('Something went bad');
+    error.stack = 'stack...\u001b[5;7;6mThis is Fine\u001b[27m';
+    expect(
+      MessageConversion.convert(
+        {
+          ...baseRecord,
+          message: 'Some message that will be ignored',
+          error,
+        },
+        false
+      )
+    ).toEqual('stack...\\u001b[5;7;6mThis is Fine\\u001b[27m');
+  });
+
+  test('it should encode/escape ANSI chars lines from the error stack when not a string', () => {
+    expect(
+      MessageConversion.convert(
+        {
+          ...baseRecord,
+          message: 'Some message that will be ignored',
+          error: {
+            // @ts-expect-error message is supposed to be a string
+            stack: {
+              toString: () => 'stackToString...\u001b[5;7;6mThis is Fine\u001b[27m',
+            },
+          },
+        },
+        false
+      )
+    ).toEqual('stackToString...\\u001b[5;7;6mThis is Fine\\u001b[27m');
+  });
 });
diff --git a/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.ts b/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.ts
index 706aa478d992b..1d0dd15373aaf 100644
--- a/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.ts
+++ b/packages/core/logging/core-logging-common-internal/src/layouts/conversions/message.ts
@@ -17,17 +17,19 @@ export const MessageConversion: Conversion = {
   pattern: /%message/g,
   convert(record: LogRecord) {
     // Error stack is much more useful than just the message.
-    const str = record.error?.stack || record.message;
+    let str = record.error?.stack || record.message;
+    // typings may be wrong, there's scenarios where the message is not a plain string (e.g error stacks from the ES client)
+    if (typeof str !== 'string') {
+      str = String(str);
+    }
 
-    return typeof str === 'string' // We need to validate it's a string because, despite types, there are use case where it's not a string :/
-      ? str.replace(
-          CONTROL_CHAR_REGEXP,
-          // Escaping control chars via JSON.stringify to maintain consistency with `meta` and the JSON layout.
-          // This way, post analysis of the logs is easier as we can search the same patterns.
-          // Our benchmark didn't show a big difference in performance between custom-escaping vs. JSON.stringify one.
-          // The slice is removing the double-quotes.
-          (substr) => JSON.stringify(substr).slice(1, -1)
-        )
-      : str;
+    return str.replace(
+      CONTROL_CHAR_REGEXP,
+      // Escaping control chars via JSON.stringify to maintain consistency with `meta` and the JSON layout.
+      // This way, post analysis of the logs is easier as we can search the same patterns.
+      // Our benchmark didn't show a big difference in performance between custom-escaping vs. JSON.stringify one.
+      // The slice is removing the double-quotes.
+      (substr) => JSON.stringify(substr).slice(1, -1)
+    );
   },
 };

From c72d4d3372f17e3be98196a6a8a329ca8baaf171 Mon Sep 17 00:00:00 2001
From: Paul Bianciardi <70908889+paulb-elastic@users.noreply.github.com>
Date: Wed, 8 Nov 2023 14:30:17 +0000
Subject: [PATCH 012/147] Update new codeowners for Obs team changes (#170182)

Updates new teams as codeowners for Observability team changes.

Also took the opportunity to:
- Delete some paths that no longer exist
- Split infra code ownership between teams (from #168992)
---
 .github/CODEOWNERS                            | 195 +++++++++++-------
 packages/deeplinks/observability/kibana.jsonc |   2 +-
 .../kbn-apm-synthtrace-client/kibana.jsonc    |   2 +-
 packages/kbn-apm-synthtrace/kibana.jsonc      |   2 +-
 packages/kbn-apm-utils/kibana.jsonc           |   2 +-
 packages/kbn-custom-integrations/kibana.jsonc |   2 +-
 packages/kbn-es-types/kibana.jsonc            |   2 +-
 packages/kbn-eslint-plugin-i18n/kibana.jsonc  |   2 +-
 .../kbn-eslint-plugin-telemetry/kibana.jsonc  |   2 +-
 packages/kbn-io-ts-utils/kibana.jsonc         |   2 +-
 .../kbn-lens-embeddable-utils/kibana.jsonc    |   2 +-
 packages/kbn-profiling-utils/kibana.jsonc     |   2 +-
 packages/kbn-rule-data-utils/kibana.jsonc     |   4 +-
 .../kbn-server-route-repository/kibana.jsonc  |   2 +-
 packages/kbn-shared-svg/kibana.jsonc          |   2 +-
 .../kibana.jsonc                              |   2 +-
 packages/kbn-use-tracked-promise/kibana.jsonc |   2 +-
 packages/kbn-xstate-utils/kibana.jsonc        |   2 +-
 .../observability_project/kibana.jsonc        |   2 +-
 test/common/plugins/otel_metrics/kibana.jsonc |   2 +-
 .../exploratory_view_example/kibana.jsonc     |   2 +-
 x-pack/packages/kbn-infra-forge/kibana.jsonc  |   2 +-
 x-pack/packages/kbn-slo-schema/kibana.jsonc   |   2 +-
 x-pack/plugins/apm/kibana.jsonc               |   2 +-
 x-pack/plugins/apm_data_access/kibana.jsonc   |   2 +-
 x-pack/plugins/asset_manager/kibana.jsonc     |   2 +-
 x-pack/plugins/exploratory_view/kibana.jsonc  |   2 +-
 x-pack/plugins/log_explorer/kibana.jsonc      |   2 +-
 x-pack/plugins/logs_shared/kibana.jsonc       |   2 +-
 .../plugins/metrics_data_access/kibana.jsonc  |   2 +-
 x-pack/plugins/monitoring/kibana.jsonc        |   2 +-
 .../monitoring_collection/kibana.jsonc        |   2 +-
 x-pack/plugins/observability/kibana.jsonc     |   2 +-
 .../observability_ai_assistant/kibana.jsonc   |   2 +-
 .../observability_log_explorer/kibana.jsonc   |   2 +-
 .../observability_onboarding/kibana.jsonc     |   2 +-
 x-pack/plugins/profiling/kibana.jsonc         |   2 +-
 .../profiling_data_access/kibana.jsonc        |   2 +-
 x-pack/plugins/rule_registry/kibana.jsonc     |   2 +-
 .../serverless_observability/kibana.jsonc     |   2 +-
 x-pack/plugins/synthetics/kibana.jsonc        |   2 +-
 x-pack/plugins/uptime/kibana.jsonc            |   2 +-
 x-pack/plugins/ux/kibana.jsonc                |   2 +-
 43 files changed, 167 insertions(+), 114 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 1dc3be1a66d6d..94f4285976c2a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -36,14 +36,14 @@ packages/analytics/shippers/elastic_v3/server @elastic/kibana-core
 packages/analytics/shippers/fullstory @elastic/kibana-core
 packages/analytics/shippers/gainsight @elastic/kibana-core
 packages/kbn-apm-config-loader @elastic/kibana-core @vigneshshanmugam
-x-pack/plugins/apm_data_access @elastic/apm-ui
-x-pack/plugins/apm @elastic/apm-ui
-packages/kbn-apm-synthtrace @elastic/apm-ui
-packages/kbn-apm-synthtrace-client @elastic/apm-ui
-packages/kbn-apm-utils @elastic/apm-ui
+x-pack/plugins/apm_data_access @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team
+x-pack/plugins/apm @elastic/obs-ux-infra_services-team
+packages/kbn-apm-synthtrace @elastic/obs-ux-infra_services-team
+packages/kbn-apm-synthtrace-client @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/plugins/asset_manager @elastic/infra-monitoring-ui
+x-pack/plugins/asset_manager @elastic/obs-knowledge-team
 x-pack/test/security_api_integration/plugins/audit_log @elastic/kibana-security
 packages/kbn-axe-config @elastic/kibana-qa
 packages/kbn-babel-preset @elastic/kibana-operations
@@ -300,7 +300,7 @@ x-pack/plugins/cross_cluster_replication @elastic/platform-deployment-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-integrations @elastic/infra-monitoring-ui
+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
@@ -319,7 +319,7 @@ packages/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-pres
 packages/deeplinks/devtools @elastic/platform-deployment-management
 packages/deeplinks/management @elastic/platform-deployment-management
 packages/deeplinks/ml @elastic/ml-ui
-packages/deeplinks/observability @elastic/apm-ui
+packages/deeplinks/observability @elastic/obs-ux-logs-team
 packages/deeplinks/search @elastic/enterprise-search-frontend
 packages/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations
 packages/default-nav/devtools @elastic/platform-deployment-management
@@ -357,14 +357,14 @@ 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/apm-ui
+packages/kbn-es-types @elastic/kibana-core @elastic/obs-knowledge-team
 src/plugins/es_ui_shared @elastic/platform-deployment-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/actionable-observability
+packages/kbn-eslint-plugin-i18n @elastic/obs-knowledge-team
 packages/kbn-eslint-plugin-imports @elastic/kibana-operations
-packages/kbn-eslint-plugin-telemetry @elastic/actionable-observability
+packages/kbn-eslint-plugin-telemetry @elastic/obs-knowledge-team
 x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin @elastic/kibana-security
 packages/kbn-event-annotation-common @elastic/kibana-visualizations
 packages/kbn-event-annotation-components @elastic/kibana-visualizations
@@ -374,8 +374,8 @@ 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/uptime
-x-pack/plugins/exploratory_view @elastic/uptime
+x-pack/examples/exploratory_view_example @elastic/obs-ux-infra_services-team
+x-pack/plugins/exploratory_view @elastic/obs-ux-infra_services-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
@@ -444,7 +444,7 @@ packages/kbn-import-resolver @elastic/kibana-operations
 x-pack/plugins/index_lifecycle_management @elastic/platform-deployment-management
 x-pack/plugins/index_management @elastic/platform-deployment-management
 test/plugin_functional/plugins/index_patterns @elastic/kibana-data-discovery
-x-pack/packages/kbn-infra-forge @elastic/actionable-observability
+x-pack/packages/kbn-infra-forge @elastic/obs-ux-management-team
 x-pack/plugins/infra @elastic/infra-monitoring-ui
 x-pack/plugins/ingest_pipelines @elastic/platform-deployment-management
 src/plugins/input_control_vis @elastic/kibana-presentation
@@ -452,7 +452,7 @@ src/plugins/inspector @elastic/kibana-presentation
 src/plugins/interactive_setup @elastic/kibana-security
 test/interactive_setup_api_integration/plugins/test_endpoints @elastic/kibana-security
 packages/kbn-interpreter @elastic/kibana-visualizations
-packages/kbn-io-ts-utils @elastic/apm-ui
+packages/kbn-io-ts-utils @elastic/obs-knowledge-team
 packages/kbn-jest-serializers @elastic/kibana-operations
 packages/kbn-journeys @elastic/kibana-operations @elastic/appex-qa
 packages/kbn-json-ast @elastic/kibana-operations
@@ -469,7 +469,7 @@ 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
 packages/kbn-language-documentation-popover @elastic/kibana-visualizations
-packages/kbn-lens-embeddable-utils @elastic/infra-monitoring-ui
+packages/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team
 x-pack/plugins/lens @elastic/kibana-visualizations
 x-pack/plugins/license_api_guard @elastic/platform-deployment-management
 x-pack/plugins/license_management @elastic/platform-deployment-management
@@ -480,10 +480,10 @@ 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
-x-pack/plugins/log_explorer @elastic/infra-monitoring-ui
+x-pack/plugins/log_explorer @elastic/obs-ux-logs-team
 packages/kbn-logging @elastic/kibana-core
 packages/kbn-logging-mocks @elastic/kibana-core
-x-pack/plugins/logs_shared @elastic/infra-monitoring-ui
+x-pack/plugins/logs_shared @elastic/obs-ux-logs-team
 x-pack/plugins/logstash @elastic/logstash
 packages/kbn-managed-vscode-config @elastic/kibana-operations
 packages/kbn-managed-vscode-config-cli @elastic/kibana-operations
@@ -506,7 +506,7 @@ 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/metrics_data_access @elastic/infra-monitoring-ui
+x-pack/plugins/metrics_data_access @elastic/obs-knowledge-team
 x-pack/packages/ml/agg_utils @elastic/ml-ui
 x-pack/packages/ml/anomaly_utils @elastic/ml-ui
 x-pack/packages/ml/category_validator @elastic/ml-ui
@@ -533,24 +533,24 @@ x-pack/packages/ml/string_hash @elastic/ml-ui
 x-pack/packages/ml/trained_models_utils @elastic/ml-ui
 x-pack/packages/ml/url_state @elastic/ml-ui
 packages/kbn-monaco @elastic/appex-sharedux
-x-pack/plugins/monitoring_collection @elastic/infra-monitoring-ui
-x-pack/plugins/monitoring @elastic/infra-monitoring-ui
+x-pack/plugins/monitoring_collection @elastic/obs-ux-infra_services-team
+x-pack/plugins/monitoring @elastic/obs-ux-infra_services-team
 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
-x-pack/plugins/observability_ai_assistant @elastic/obs-ai-assistant
+x-pack/plugins/observability_ai_assistant @elastic/obs-knowledge-team
 x-pack/packages/observability/alert_details @elastic/actionable-observability
 x-pack/packages/observability/alerting_test_data @elastic/actionable-observability
 x-pack/test/cases_api_integration/common/plugins/observability @elastic/response-ops
-x-pack/plugins/observability_log_explorer @elastic/infra-monitoring-ui
-x-pack/plugins/observability_onboarding @elastic/apm-ui
-x-pack/plugins/observability @elastic/actionable-observability
+x-pack/plugins/observability_log_explorer @elastic/obs-ux-logs-team
+x-pack/plugins/observability_onboarding @elastic/obs-ux-logs-team
+x-pack/plugins/observability @elastic/obs-ux-management-team
 x-pack/plugins/observability_shared @elastic/observability-ui
 x-pack/test/security_api_integration/plugins/oidc_provider @elastic/kibana-security
-test/common/plugins/otel_metrics @elastic/infra-monitoring-ui
+test/common/plugins/otel_metrics @elastic/obs-ux-infra_services-team
 packages/kbn-openapi-generator @elastic/security-detection-rule-management
 packages/kbn-optimizer @elastic/kibana-operations
 packages/kbn-optimizer-webpack-helpers @elastic/kibana-operations
@@ -567,9 +567,9 @@ packages/kbn-plugin-helpers @elastic/kibana-operations
 examples/portable_dashboards_example @elastic/kibana-presentation
 examples/preboot_example @elastic/kibana-security @elastic/kibana-core
 src/plugins/presentation_util @elastic/kibana-presentation
-x-pack/plugins/profiling_data_access @elastic/profiling-ui
-x-pack/plugins/profiling @elastic/profiling-ui
-packages/kbn-profiling-utils @elastic/profiling-ui
+x-pack/plugins/profiling_data_access @elastic/obs-ux-infra_services-team
+x-pack/plugins/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/react/kibana_context/common @elastic/appex-sharedux
@@ -598,8 +598,8 @@ packages/kbn-rison @elastic/kibana-operations
 x-pack/plugins/rollup @elastic/platform-deployment-management
 examples/routing_example @elastic/kibana-core
 packages/kbn-rrule @elastic/response-ops
-packages/kbn-rule-data-utils @elastic/security-detections-response @elastic/actionable-observability @elastic/response-ops
-x-pack/plugins/rule_registry @elastic/response-ops @elastic/actionable-observability
+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/platform-deployment-management
 packages/kbn-safer-lodash-set @elastic/kibana-security
 x-pack/test/security_api_integration/plugins/saml_provider @elastic/kibana-security
@@ -656,11 +656,11 @@ 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/apm-ui
+packages/kbn-server-route-repository @elastic/obs-knowledge-team @elastic/obs-ux-management-team
 x-pack/plugins/serverless @elastic/appex-sharedux
 packages/serverless/settings/common @elastic/appex-sharedux @elastic/platform-deployment-management
-x-pack/plugins/serverless_observability @elastic/appex-sharedux @elastic/apm-ui
-packages/serverless/settings/observability_project @elastic/appex-sharedux @elastic/apm-ui @elastic/platform-deployment-management
+x-pack/plugins/serverless_observability @elastic/appex-sharedux @elastic/obs-ux-management-team
+packages/serverless/settings/observability_project @elastic/appex-sharedux @elastic/platform-deployment-management @elastic/obs-ux-management-team
 packages/serverless/project_switcher @elastic/appex-sharedux
 x-pack/plugins/serverless_search @elastic/enterprise-search-frontend
 packages/serverless/settings/search_project @elastic/enterprise-search-frontend @elastic/platform-deployment-management
@@ -672,7 +672,7 @@ 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/apm-ui
+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
@@ -721,7 +721,7 @@ 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/kbn-shared-ux-utility @elastic/appex-sharedux
-x-pack/packages/kbn-slo-schema @elastic/actionable-observability
+x-pack/packages/kbn-slo-schema @elastic/obs-ux-management-team
 x-pack/plugins/snapshot_restore @elastic/platform-deployment-management
 packages/kbn-some-dev-log @elastic/kibana-operations
 packages/kbn-sort-package-json @elastic/kibana-operations
@@ -738,7 +738,7 @@ packages/kbn-std @elastic/kibana-core
 packages/kbn-stdio-dev-helpers @elastic/kibana-operations
 packages/kbn-storybook @elastic/kibana-operations
 packages/kbn-subscription-tracking @elastic/security-threat-hunting-investigations
-x-pack/plugins/synthetics @elastic/uptime
+x-pack/plugins/synthetics @elastic/obs-ux-infra_services-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
@@ -768,7 +768,7 @@ x-pack/examples/triggers_actions_ui_example @elastic/response-ops
 x-pack/plugins/triggers_actions_ui @elastic/response-ops
 packages/kbn-ts-projects @elastic/kibana-operations
 packages/kbn-ts-type-check-cli @elastic/kibana-operations
-packages/kbn-typed-react-router-config @elastic/apm-ui
+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
@@ -788,20 +788,20 @@ examples/unified_field_list_examples @elastic/kibana-data-discovery
 src/plugins/unified_histogram @elastic/kibana-data-discovery
 src/plugins/unified_search @elastic/kibana-visualizations
 x-pack/plugins/upgrade_assistant @elastic/platform-deployment-management
-x-pack/plugins/uptime @elastic/uptime
+x-pack/plugins/uptime @elastic/obs-ux-infra_services-team
 x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux
 src/plugins/url_forwarding @elastic/kibana-visualizations
 packages/kbn-url-state @elastic/security-threat-hunting-investigations
 src/plugins/usage_collection @elastic/kibana-core
 test/plugin_functional/plugins/usage_collection @elastic/kibana-core
-packages/kbn-use-tracked-promise @elastic/infra-monitoring-ui
+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/ux @elastic/uptime
+x-pack/plugins/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
@@ -822,7 +822,7 @@ src/plugins/visualizations @elastic/kibana-visualizations
 x-pack/plugins/watcher @elastic/platform-deployment-management
 packages/kbn-web-worker-stub @elastic/kibana-operations
 packages/kbn-whereis-pkg-cli @elastic/kibana-operations
-packages/kbn-xstate-utils @elastic/infra-monitoring-ui
+packages/kbn-xstate-utils @elastic/obs-ux-logs-team
 packages/kbn-yarn-lock-validator @elastic/kibana-operations
 packages/kbn-zod-helpers @elastic/security-detection-rule-management
 ####
@@ -927,24 +927,79 @@ packages/kbn-monaco/src/esql @elastic/kibana-visualizations
 ### Observability Plugins
 
 # Actionable observability
-x-pack/packages/observability/alert_details @elastic/actionable-observability
-x-pack/test/observability_functional @elastic/actionable-observability
-x-pack/plugins/infra/public/alerting @elastic/actionable-observability
-x-pack/plugins/infra/server/lib/alerting @elastic/actionable-observability
+x-pack/packages/observability/alert_details @elastic/obs-ux-management-team
+x-pack/test/observability_functional @elastic/obs-ux-management-team
+x-pack/plugins/infra/public/alerting @elastic/obs-ux-management-team
+x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
 
 # Observability robots
 /.github/workflows/deploy-my-kibana.yml @elastic/observablt-robots
 /.github/workflows/oblt-github-commands @elastic/observablt-robots
 
 # Infra Monitoring
-/x-pack/test/functional/apps/infra @elastic/infra-monitoring-ui
-/x-pack/test/api_integration/apis/infra @elastic/infra-monitoring-ui
+/x-pack/plugins/infra @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/server/routes @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/server/routes/log_analysis @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/server/routes/log_alerts @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/server/saved_objects/metrics_explorer_view @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/server/saved_objects/inventory_view @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/server/services @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/server/services/rules @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/server/lib @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/server/lib/log_analysis @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/docs/state_machines @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/inventory_models @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/http_api/metrics_api.ts @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/http_api/snapshot_api.ts @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/http_api/log_analysis @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/http_api/metrics_explorer_views @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/http_api/host_details @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/http_api/log_alerts @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/snapshot_metric_i18n.ts @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/inventory_views @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/color_palette.test.ts @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/performance_tracing.ts @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/log_search_summary @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/metrics_sources @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/saved_views @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/infra_ml @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/formatters @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/log_text_scale @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/log_analysis @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/search_strategies/log_entries @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/common/metrics_explorer_views @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/source_configuration @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/color_palette.ts @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/common/log_search_result @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/apps/logs_app.tsx @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/apps/metrics_app.tsx @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/lens @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/try_it_button.tsx @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/fixed_datepicker.tsx
+/x-pack/plugins/infra/public/components/logging @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/saved_views @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/feature_feedback_button.tsx @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/log_stream @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/components/source_configuration @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/components/asset_details @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/containers/logs @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/containers/metrics_source @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/containers/metrics_explorer @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/containers/ml @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/pages/logs @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/pages/metrics @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/common @elastic/obs-ux-infra_services-team
+/x-pack/plugins/infra/public/observability_logs @elastic/obs-ux-logs-team
+/x-pack/plugins/infra/public/services @elastic/obs-ux-infra_services-team
+/x-pack/test/functional/apps/infra @elastic/infra-monitoring-ui @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
+/x-pack/test/api_integration/apis/infra @elastic/infra-monitoring-ui @elastic/obs-ux-infra_services-team
 
 # Elastic Stack Monitoring
-/x-pack/test/functional/apps/monitoring @elastic/infra-monitoring-ui
-/x-pack/test/api_integration/apis/monitoring @elastic/infra-monitoring-ui
-/x-pack/test/api_integration/apis/monitoring_collection @elastic/infra-monitoring-ui
-/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer @elastic/infra-monitoring-ui
+/x-pack/test/functional/apps/monitoring @elastic/obs-ux-infra_services-team
+/x-pack/test/api_integration/apis/monitoring @elastic/obs-ux-infra_services-team
+/x-pack/test/api_integration/apis/monitoring_collection @elastic/obs-ux-infra_services-team
+/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer @elastic/obs-ux-logs-team
 
 # Fleet
 /fleet_packages.json @elastic/fleet
@@ -955,29 +1010,27 @@ x-pack/plugins/infra/server/lib/alerting @elastic/actionable-observability
 /x-pack/plugins/fleet/server/services/elastic_agent_manifest.ts @elastic/fleet @elastic/obs-cloudnative-monitoring
 
 # APM
-/x-pack/test/functional/apps/apm/  @elastic/apm-ui
-/x-pack/test/apm_api_integration/ @elastic/apm-ui
+/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
-/src/core/types/elasticsearch @elastic/apm-ui
 /packages/kbn-utility-types/src/dot.ts @dgieselaar
 /packages/kbn-utility-types/src/dot_test.ts @dgieselaar
 #CC# /src/plugins/apm_oss/ @elastic/apm-ui
 #CC# /x-pack/plugins/observability/ @elastic/apm-ui
 
 # Uptime
-/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/ @elastic/uptime
-/x-pack/test/functional/apps/uptime @elastic/uptime
-/x-pack/test/functional/es_archives/uptime @elastic/uptime
-/x-pack/test/functional/services/uptime @elastic/uptime
-/x-pack/test/api_integration/apis/uptime @elastic/uptime
-/x-pack/test/api_integration/apis/synthetics @elastic/uptime
-/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts @elastic/uptime
-/x-pack/test/alerting_api_integration/observability/index.ts @elastic/uptime
-
-# Client Side Monitoring / Uptime (lives in APM directories but owned by Uptime)
-/x-pack/plugins/apm/public/application/uxApp.tsx @elastic/uptime
-/x-pack/plugins/apm/public/components/app/rum_dashboard @elastic/uptime
-/x-pack/test/apm_api_integration/tests/csm/ @elastic/uptime
+/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/ @elastic/obs-ux-infra_services-team
+/x-pack/test/functional/apps/uptime @elastic/obs-ux-infra_services-team
+/x-pack/test/functional/es_archives/uptime @elastic/obs-ux-infra_services-team
+/x-pack/test/functional/services/uptime @elastic/obs-ux-infra_services-team
+/x-pack/test/api_integration/apis/uptime @elastic/obs-ux-infra_services-team
+/x-pack/test/api_integration/apis/synthetics @elastic/obs-ux-infra_services-team
+/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts @elastic/obs-ux-infra_services-team
+/x-pack/test/alerting_api_integration/observability/index.ts @elastic/obs-ux-management-team
+
+# Logs
+/x-pack/test/api_integration/apis/logs_ui @elastic/obs-ux-logs-team
+/x-pack/test/functional/apps/observability_log_explorer @elastic/obs-ux-logs-team
 
 # Observability onboarding tour
 /x-pack/plugins/observability_shared/public/components/tour @elastic/platform-onboarding
@@ -1118,7 +1171,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib
 
 # Response Ops team
 /x-pack/test/alerting_api_integration/ @elastic/response-ops
-/x-pack/test/alerting_api_integration/observability @elastic/actionable-observability
+/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
 /docs/user/alerting/ @elastic/response-ops
@@ -1440,10 +1493,10 @@ x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_en
 x-pack/plugins/translations/translations
 
 # Profiling api integration testing
-x-pack/test/profiling_api_integration @elastic/profiling-ui
+x-pack/test/profiling_api_integration @elastic/obs-ux-infra_services-team
 
 # Observability shared profiling
-x-pack/plugins/observability_shared/public/components/profiling @elastic/profiling-ui
+x-pack/plugins/observability_shared/public/components/profiling @elastic/obs-ux-infra_services-team
 
 # Shared UX
 packages/react @elastic/appex-sharedux
diff --git a/packages/deeplinks/observability/kibana.jsonc b/packages/deeplinks/observability/kibana.jsonc
index 4a93ff4427da8..bc014b05aa407 100644
--- a/packages/deeplinks/observability/kibana.jsonc
+++ b/packages/deeplinks/observability/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/deeplinks-observability",
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-ux-logs-team"
 }
diff --git a/packages/kbn-apm-synthtrace-client/kibana.jsonc b/packages/kbn-apm-synthtrace-client/kibana.jsonc
index b9f2d79601d6d..99055f3da4fe9 100644
--- a/packages/kbn-apm-synthtrace-client/kibana.jsonc
+++ b/packages/kbn-apm-synthtrace-client/kibana.jsonc
@@ -2,5 +2,5 @@
   "type": "shared-common",
   "id": "@kbn/apm-synthtrace-client",
   "devOnly": true,
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-apm-synthtrace/kibana.jsonc b/packages/kbn-apm-synthtrace/kibana.jsonc
index c1efc5fd09c00..1b3ef5b846149 100644
--- a/packages/kbn-apm-synthtrace/kibana.jsonc
+++ b/packages/kbn-apm-synthtrace/kibana.jsonc
@@ -2,5 +2,5 @@
   "type": "shared-server",
   "id": "@kbn/apm-synthtrace",
   "devOnly": true,
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-apm-utils/kibana.jsonc b/packages/kbn-apm-utils/kibana.jsonc
index 950a5dacb9ba8..2ee2a3b45335a 100644
--- a/packages/kbn-apm-utils/kibana.jsonc
+++ b/packages/kbn-apm-utils/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/apm-utils",
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-custom-integrations/kibana.jsonc b/packages/kbn-custom-integrations/kibana.jsonc
index 61c9067c7e659..995d5bb4ef69d 100644
--- a/packages/kbn-custom-integrations/kibana.jsonc
+++ b/packages/kbn-custom-integrations/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/custom-integrations",
-  "owner": "@elastic/infra-monitoring-ui"
+  "owner": "@elastic/obs-ux-logs-team"
 }
diff --git a/packages/kbn-es-types/kibana.jsonc b/packages/kbn-es-types/kibana.jsonc
index 1c00cab81d2c4..2435d7666cf9a 100644
--- a/packages/kbn-es-types/kibana.jsonc
+++ b/packages/kbn-es-types/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/es-types",
-  "owner": ["@elastic/kibana-core", "@elastic/apm-ui"]
+  "owner": ["@elastic/kibana-core", "@elastic/obs-knowledge-team"]
 }
diff --git a/packages/kbn-eslint-plugin-i18n/kibana.jsonc b/packages/kbn-eslint-plugin-i18n/kibana.jsonc
index 7d8c994400108..72e051941db68 100644
--- a/packages/kbn-eslint-plugin-i18n/kibana.jsonc
+++ b/packages/kbn-eslint-plugin-i18n/kibana.jsonc
@@ -1,6 +1,6 @@
 {
   "type": "shared-common",
   "id": "@kbn/eslint-plugin-i18n",
-  "owner": "@elastic/actionable-observability",
+  "owner": "@elastic/obs-knowledge-team",
   "devOnly": true
 }
diff --git a/packages/kbn-eslint-plugin-telemetry/kibana.jsonc b/packages/kbn-eslint-plugin-telemetry/kibana.jsonc
index 79c8fbf8adb2b..e3c245a5275d8 100644
--- a/packages/kbn-eslint-plugin-telemetry/kibana.jsonc
+++ b/packages/kbn-eslint-plugin-telemetry/kibana.jsonc
@@ -1,6 +1,6 @@
 {
   "type": "shared-common",
   "id": "@kbn/eslint-plugin-telemetry",
-  "owner": "@elastic/actionable-observability",
+  "owner": "@elastic/obs-knowledge-team",
   "devOnly": true
 }
diff --git a/packages/kbn-io-ts-utils/kibana.jsonc b/packages/kbn-io-ts-utils/kibana.jsonc
index 7d03717a53153..ea3032a472dc6 100644
--- a/packages/kbn-io-ts-utils/kibana.jsonc
+++ b/packages/kbn-io-ts-utils/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/io-ts-utils",
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-knowledge-team"
 }
diff --git a/packages/kbn-lens-embeddable-utils/kibana.jsonc b/packages/kbn-lens-embeddable-utils/kibana.jsonc
index d637ea2f24ccb..9dc67508d99e9 100644
--- a/packages/kbn-lens-embeddable-utils/kibana.jsonc
+++ b/packages/kbn-lens-embeddable-utils/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-browser",
   "id": "@kbn/lens-embeddable-utils",
-  "owner": "@elastic/infra-monitoring-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-profiling-utils/kibana.jsonc b/packages/kbn-profiling-utils/kibana.jsonc
index dc45e822e620b..d41a4db71299d 100644
--- a/packages/kbn-profiling-utils/kibana.jsonc
+++ b/packages/kbn-profiling-utils/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/profiling-utils",
-  "owner": "@elastic/profiling-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-rule-data-utils/kibana.jsonc b/packages/kbn-rule-data-utils/kibana.jsonc
index 6650a9b1d67f0..4d9d77fbeeb72 100644
--- a/packages/kbn-rule-data-utils/kibana.jsonc
+++ b/packages/kbn-rule-data-utils/kibana.jsonc
@@ -3,7 +3,7 @@
   "id": "@kbn/rule-data-utils",
   "owner": [
     "@elastic/security-detections-response",
-    "@elastic/actionable-observability",
-    "@elastic/response-ops"
+    "@elastic/response-ops",
+    "@elastic/obs-ux-management-team"
   ]
 }
diff --git a/packages/kbn-server-route-repository/kibana.jsonc b/packages/kbn-server-route-repository/kibana.jsonc
index 8161be4b80951..dbf7fc396428c 100644
--- a/packages/kbn-server-route-repository/kibana.jsonc
+++ b/packages/kbn-server-route-repository/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/server-route-repository",
-  "owner": "@elastic/apm-ui"
+  "owner": ["@elastic/obs-knowledge-team", "@elastic/obs-ux-management-team"]
 }
diff --git a/packages/kbn-shared-svg/kibana.jsonc b/packages/kbn-shared-svg/kibana.jsonc
index 6634bd9dffc5d..89949f5b7d276 100644
--- a/packages/kbn-shared-svg/kibana.jsonc
+++ b/packages/kbn-shared-svg/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/shared-svg",
-  "owner": "@elastic/apm-ui"
+  "owner": "@elastic/obs-ux-infra_services-team"
 }
diff --git a/packages/kbn-typed-react-router-config/kibana.jsonc b/packages/kbn-typed-react-router-config/kibana.jsonc
index f508346f8c26e..0462d28238890 100644
--- a/packages/kbn-typed-react-router-config/kibana.jsonc
+++ b/packages/kbn-typed-react-router-config/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/typed-react-router-config",
-  "owner": "@elastic/apm-ui"
+  "owner": ["@elastic/obs-knowledge-team", "@elastic/obs-ux-management-team"]
 }
diff --git a/packages/kbn-use-tracked-promise/kibana.jsonc b/packages/kbn-use-tracked-promise/kibana.jsonc
index a7b90045c462a..959dda0d05a66 100644
--- a/packages/kbn-use-tracked-promise/kibana.jsonc
+++ b/packages/kbn-use-tracked-promise/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/use-tracked-promise",
-  "owner": "@elastic/infra-monitoring-ui"
+  "owner": "@elastic/obs-ux-logs-team"
 }
diff --git a/packages/kbn-xstate-utils/kibana.jsonc b/packages/kbn-xstate-utils/kibana.jsonc
index 086bce23401aa..cd1151a3f2103 100644
--- a/packages/kbn-xstate-utils/kibana.jsonc
+++ b/packages/kbn-xstate-utils/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/xstate-utils",
-  "owner": "@elastic/infra-monitoring-ui"
+  "owner": "@elastic/obs-ux-logs-team"
 }
diff --git a/packages/serverless/settings/observability_project/kibana.jsonc b/packages/serverless/settings/observability_project/kibana.jsonc
index 4df29091e6619..e2db00d894bcf 100644
--- a/packages/serverless/settings/observability_project/kibana.jsonc
+++ b/packages/serverless/settings/observability_project/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/serverless-observability-settings",
-  "owner": "@elastic/appex-sharedux @elastic/apm-ui @elastic/platform-deployment-management"
+  "owner": "@elastic/appex-sharedux @elastic/platform-deployment-management @elastic/obs-ux-management-team"
 }
diff --git a/test/common/plugins/otel_metrics/kibana.jsonc b/test/common/plugins/otel_metrics/kibana.jsonc
index 0b25b57d06a53..e64546f446052 100644
--- a/test/common/plugins/otel_metrics/kibana.jsonc
+++ b/test/common/plugins/otel_metrics/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/open-telemetry-instrumented-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "openTelemetryInstrumentedPlugin",
     "server": true,
diff --git a/x-pack/examples/exploratory_view_example/kibana.jsonc b/x-pack/examples/exploratory_view_example/kibana.jsonc
index c524e4fda32f7..6cf8fa64983ac 100644
--- a/x-pack/examples/exploratory_view_example/kibana.jsonc
+++ b/x-pack/examples/exploratory_view_example/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/exploratory-view-example-plugin",
-  "owner": "@elastic/uptime",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "exploratoryViewExample",
     "server": false,
diff --git a/x-pack/packages/kbn-infra-forge/kibana.jsonc b/x-pack/packages/kbn-infra-forge/kibana.jsonc
index a66a733662735..a450d148358a9 100644
--- a/x-pack/packages/kbn-infra-forge/kibana.jsonc
+++ b/x-pack/packages/kbn-infra-forge/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/infra-forge",
-  "owner": "@elastic/actionable-observability"
+  "owner": "@elastic/obs-ux-management-team"
 }
diff --git a/x-pack/packages/kbn-slo-schema/kibana.jsonc b/x-pack/packages/kbn-slo-schema/kibana.jsonc
index 2d12cd108585c..b4ca324fc112b 100644
--- a/x-pack/packages/kbn-slo-schema/kibana.jsonc
+++ b/x-pack/packages/kbn-slo-schema/kibana.jsonc
@@ -1,5 +1,5 @@
 {
   "type": "shared-common",
   "id": "@kbn/slo-schema",
-  "owner": "@elastic/actionable-observability",
+  "owner": "@elastic/obs-ux-management-team"
 }
diff --git a/x-pack/plugins/apm/kibana.jsonc b/x-pack/plugins/apm/kibana.jsonc
index 61ba6be743370..858cd142f399c 100644
--- a/x-pack/plugins/apm/kibana.jsonc
+++ b/x-pack/plugins/apm/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/apm-plugin",
-  "owner": "@elastic/apm-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "description": "The user interface for Elastic APM",
   "plugin": {
     "id": "apm",
diff --git a/x-pack/plugins/apm_data_access/kibana.jsonc b/x-pack/plugins/apm_data_access/kibana.jsonc
index d0ee0befda101..ede5cd53c9a6c 100644
--- a/x-pack/plugins/apm_data_access/kibana.jsonc
+++ b/x-pack/plugins/apm_data_access/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/apm-data-access-plugin",
-  "owner": "@elastic/apm-ui",
+  "owner": ["@elastic/obs-knowledge-team", "@elastic/obs-ux-infra_services-team"],
   "plugin": {
     "id": "apmDataAccess",
     "server": true,
diff --git a/x-pack/plugins/asset_manager/kibana.jsonc b/x-pack/plugins/asset_manager/kibana.jsonc
index b3fcd1b3a4fa1..1ee4b12d55ea7 100644
--- a/x-pack/plugins/asset_manager/kibana.jsonc
+++ b/x-pack/plugins/asset_manager/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/assetManager-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-knowledge-team",
   "description": "Asset manager plugin for entity assets (inventory, topology, etc)",
   "plugin": {
     "id": "assetManager",
diff --git a/x-pack/plugins/exploratory_view/kibana.jsonc b/x-pack/plugins/exploratory_view/kibana.jsonc
index e541ad7858650..b8041aaec89df 100644
--- a/x-pack/plugins/exploratory_view/kibana.jsonc
+++ b/x-pack/plugins/exploratory_view/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/exploratory-view-plugin",
-  "owner": "@elastic/uptime",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "exploratoryView",
     "server": false,
diff --git a/x-pack/plugins/log_explorer/kibana.jsonc b/x-pack/plugins/log_explorer/kibana.jsonc
index 76eb47e4a5915..71781ca9cada3 100644
--- a/x-pack/plugins/log_explorer/kibana.jsonc
+++ b/x-pack/plugins/log_explorer/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/log-explorer-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-logs-team",
   "description": "This plugin provides a LogExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption.",
   "plugin": {
     "id": "logExplorer",
diff --git a/x-pack/plugins/logs_shared/kibana.jsonc b/x-pack/plugins/logs_shared/kibana.jsonc
index 051d1a452740e..b78503b140a71 100644
--- a/x-pack/plugins/logs_shared/kibana.jsonc
+++ b/x-pack/plugins/logs_shared/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/logs-shared-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-logs-team",
   "description": "Exposes the shared components and APIs to access and visualize logs.",
   "plugin": {
     "id": "logsShared",
diff --git a/x-pack/plugins/metrics_data_access/kibana.jsonc b/x-pack/plugins/metrics_data_access/kibana.jsonc
index 6842ec7d4a724..10ddf6c04e21e 100644
--- a/x-pack/plugins/metrics_data_access/kibana.jsonc
+++ b/x-pack/plugins/metrics_data_access/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/metrics-data-access-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-knowledge-team",
   "description": "Exposes utilities for accessing metrics data",
   "plugin": {
     "id": "metricsDataAccess",
diff --git a/x-pack/plugins/monitoring/kibana.jsonc b/x-pack/plugins/monitoring/kibana.jsonc
index 8da632c4b7d6f..4992da373a73d 100644
--- a/x-pack/plugins/monitoring/kibana.jsonc
+++ b/x-pack/plugins/monitoring/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/monitoring-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "monitoring",
     "server": true,
diff --git a/x-pack/plugins/monitoring_collection/kibana.jsonc b/x-pack/plugins/monitoring_collection/kibana.jsonc
index 1c84d9ee4f84c..246dcce086a07 100644
--- a/x-pack/plugins/monitoring_collection/kibana.jsonc
+++ b/x-pack/plugins/monitoring_collection/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/monitoring-collection-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "monitoringCollection",
     "server": true,
diff --git a/x-pack/plugins/observability/kibana.jsonc b/x-pack/plugins/observability/kibana.jsonc
index 86db25972fb1b..c03e0b499d424 100644
--- a/x-pack/plugins/observability/kibana.jsonc
+++ b/x-pack/plugins/observability/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/observability-plugin",
-  "owner": "@elastic/actionable-observability",
+  "owner": "@elastic/obs-ux-management-team",
   "plugin": {
     "id": "observability",
     "server": true,
diff --git a/x-pack/plugins/observability_ai_assistant/kibana.jsonc b/x-pack/plugins/observability_ai_assistant/kibana.jsonc
index 3af934a10fcfa..291c7e658de18 100644
--- a/x-pack/plugins/observability_ai_assistant/kibana.jsonc
+++ b/x-pack/plugins/observability_ai_assistant/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/observability-ai-assistant-plugin",
-  "owner": "@elastic/obs-ai-assistant",
+  "owner": "@elastic/obs-knowledge-team",
   "plugin": {
     "id": "observabilityAIAssistant",
     "server": true,
diff --git a/x-pack/plugins/observability_log_explorer/kibana.jsonc b/x-pack/plugins/observability_log_explorer/kibana.jsonc
index 6f871e114a035..72d03b82d3386 100644
--- a/x-pack/plugins/observability_log_explorer/kibana.jsonc
+++ b/x-pack/plugins/observability_log_explorer/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/observability-log-explorer-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": "@elastic/obs-ux-logs-team",
   "description": "This plugin exposes and registers observability log consumption features.",
   "plugin": {
     "id": "observabilityLogExplorer",
diff --git a/x-pack/plugins/observability_onboarding/kibana.jsonc b/x-pack/plugins/observability_onboarding/kibana.jsonc
index 5c1615c3a95ba..c2b89c8c9b4fa 100644
--- a/x-pack/plugins/observability_onboarding/kibana.jsonc
+++ b/x-pack/plugins/observability_onboarding/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/observability-onboarding-plugin",
-  "owner": "@elastic/apm-ui",
+  "owner": "@elastic/obs-ux-logs-team",
   "plugin": {
     "id": "observabilityOnboarding",
     "server": true,
diff --git a/x-pack/plugins/profiling/kibana.jsonc b/x-pack/plugins/profiling/kibana.jsonc
index 104196bababc9..296b4e40bb822 100644
--- a/x-pack/plugins/profiling/kibana.jsonc
+++ b/x-pack/plugins/profiling/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/profiling-plugin",
-  "owner": "@elastic/profiling-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "profiling",
     "server": true,
diff --git a/x-pack/plugins/profiling_data_access/kibana.jsonc b/x-pack/plugins/profiling_data_access/kibana.jsonc
index a6bcd9f7ecff4..a2c3fb4cb267b 100644
--- a/x-pack/plugins/profiling_data_access/kibana.jsonc
+++ b/x-pack/plugins/profiling_data_access/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/profiling-data-access-plugin",
-  "owner": "@elastic/profiling-ui",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "profilingDataAccess",
     "server": true,
diff --git a/x-pack/plugins/rule_registry/kibana.jsonc b/x-pack/plugins/rule_registry/kibana.jsonc
index d5c867247e811..28612bff2b9cc 100644
--- a/x-pack/plugins/rule_registry/kibana.jsonc
+++ b/x-pack/plugins/rule_registry/kibana.jsonc
@@ -3,7 +3,7 @@
   "id": "@kbn/rule-registry-plugin",
   "owner": [
     "@elastic/response-ops",
-    "@elastic/actionable-observability"
+    "@elastic/obs-ux-management-team"
   ],
   "plugin": {
     "id": "ruleRegistry",
diff --git a/x-pack/plugins/serverless_observability/kibana.jsonc b/x-pack/plugins/serverless_observability/kibana.jsonc
index 0c68668e473ea..692d721c20a30 100644
--- a/x-pack/plugins/serverless_observability/kibana.jsonc
+++ b/x-pack/plugins/serverless_observability/kibana.jsonc
@@ -3,7 +3,7 @@
   "id": "@kbn/serverless-observability",
   "owner": [
     "@elastic/appex-sharedux",
-    "@elastic/apm-ui"
+    "@elastic/obs-ux-management-team"
   ],
   "description": "Serverless customizations for observability.",
   "plugin": {
diff --git a/x-pack/plugins/synthetics/kibana.jsonc b/x-pack/plugins/synthetics/kibana.jsonc
index d03d0d384938f..9e85c2ec6c604 100644
--- a/x-pack/plugins/synthetics/kibana.jsonc
+++ b/x-pack/plugins/synthetics/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/synthetics-plugin",
-  "owner": "@elastic/uptime",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "description": "This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions.",
   "plugin": {
     "id": "synthetics",
diff --git a/x-pack/plugins/uptime/kibana.jsonc b/x-pack/plugins/uptime/kibana.jsonc
index df0b2e13839cf..c07d0dc342a74 100644
--- a/x-pack/plugins/uptime/kibana.jsonc
+++ b/x-pack/plugins/uptime/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/uptime-plugin",
-  "owner": "@elastic/uptime",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "description": "This plugin visualizes data from Heartbeat, and integrates with other Observability solutions.",
   "plugin": {
     "id": "uptime",
diff --git a/x-pack/plugins/ux/kibana.jsonc b/x-pack/plugins/ux/kibana.jsonc
index af8d92f151786..e35cddbabbba6 100644
--- a/x-pack/plugins/ux/kibana.jsonc
+++ b/x-pack/plugins/ux/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/ux-plugin",
-  "owner": "@elastic/uptime",
+  "owner": "@elastic/obs-ux-infra_services-team",
   "plugin": {
     "id": "ux",
     "server": true,

From 3a784106df00d7070e110f5921a576c2db542160 Mon Sep 17 00:00:00 2001
From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
Date: Wed, 8 Nov 2023 15:53:48 +0100
Subject: [PATCH 013/147] [testing] replace testing-library/dom package with
 testing-library/react (#170594)

## Summary

Removes `testing-library/dom` from dependencies. As all the utilities
from`dom` are available already in `testing-library/react`, there's no
need to have both `dom` and `react` libraries available in our
package.json.

Following the [@testing-library/react
documentation:](https://testing-library.com/docs/react-testing-library/intro)

> [React Testing
Library](https://github.com/testing-library/react-testing-library)
builds on top of DOM Testing Library by adding APIs for working with
React components.

Let's just import everything from `testing-library/react`, this way we
won't need to worry about inconsistencies between `testing-library/dom`
we have in our `package.json` and the one that is
`testing-library/react` dependency.
---
 package.json                                    |  1 -
 .../use_data_grid_column_cell_actions.test.tsx  |  4 ++--
 .../src/panels_resizable.test.tsx               |  2 +-
 .../src/list_header/use_list_header.test.ts     |  2 +-
 .../embeddables/embeddable_renderer.test.tsx    |  2 +-
 .../context_menu/open_context_menu.test.ts      |  2 +-
 .../tests/execute_trigger_actions.test.ts       |  2 +-
 .../public/chart/hooks/use_total_hits.test.ts   |  2 +-
 .../query_string_input.test.tsx                 |  3 +--
 .../navigation/src/navigation.test.ts           |  2 +-
 .../use_archive_maintenance_window.test.tsx     |  2 +-
 .../use_create_maintenance_window.test.tsx      |  2 +-
 .../hooks/use_find_maintenance_windows.test.tsx |  2 +-
 ...nish_and_archive_maintenance_window.test.tsx |  2 +-
 .../use_finish_maintenance_window.test.tsx      |  2 +-
 .../hooks/use_get_maintenance_window.test.tsx   |  2 +-
 .../use_update_maintenance_window.test.tsx      |  2 +-
 .../components/status_filter.test.tsx           |  2 +-
 .../components/table_actions_popover.test.tsx   |  2 +-
 .../cases/public/common/mock/test_providers.tsx |  2 +-
 .../public/common/use_cases_toast.test.tsx      |  2 +-
 ...se_cases_add_to_existing_case_modal.test.tsx |  2 +-
 .../all_cases/severity_filter.test.tsx          |  2 +-
 .../components/all_cases/use_actions.test.tsx   |  2 +-
 .../components/case_action_bar/actions.test.tsx |  2 +-
 .../components/case_view_alerts.test.tsx        |  2 +-
 .../public/components/case_view/index.test.tsx  |  2 +-
 .../public/components/create/form.test.tsx      |  3 +--
 .../public/components/create/severity.test.tsx  |  2 +-
 .../components/custom_fields/index.test.tsx     |  2 +-
 .../experimental_badge.test.tsx                 |  2 +-
 .../actions/add_to_existing_case.test.tsx       |  2 +-
 .../actions/add_to_new_case.test.tsx            |  2 +-
 .../use_get_case_configuration.test.tsx         |  2 +-
 .../public/containers/use_get_case.test.tsx     |  2 +-
 .../containers/use_get_feature_ids.test.tsx     |  2 +-
 .../templates/assignees/renderer.test.ts        |  2 +-
 .../templates/assignees/template.test.ts        |  2 +-
 .../dashboard_sections/summary_section.test.tsx |  3 +--
 .../engine_assignment_selector.test.tsx         |  2 +-
 .../group_assignment_selector.test.tsx          |  2 +-
 .../components/action_menu/action_menu.test.tsx |  2 +-
 .../exploratory_view/exploratory_view.test.tsx  |  2 +-
 .../header/add_to_case_action.test.tsx          |  2 +-
 .../header/chart_creation_info.test.tsx         |  2 +-
 .../hooks/use_add_to_case.test.tsx              |  2 +-
 .../views/add_series_button.test.tsx            |  2 +-
 .../views/view_actions.test.tsx                 |  2 +-
 .../components/action_menu.test.tsx             |  2 +-
 .../components/agent_upgrade_status.test.tsx    |  2 +-
 .../components/table_row_actions.test.tsx       |  2 +-
 .../components/count_widget/index.test.tsx      |  2 +-
 .../plugins/lens/public/mocks/store_mocks.tsx   | 17 +++--------------
 .../components/builder/entry_renderer.test.tsx  |  2 +-
 .../public/pages/slo_edit/slo_edit.test.tsx     |  3 +--
 .../event_details/event_details.test.tsx        |  2 +-
 .../components/ml/score/anomaly_score.test.tsx  |  2 +-
 .../components/ml/score/anomaly_scores.test.tsx |  2 +-
 .../ml/score/create_descriptions_list.test.tsx  |  2 +-
 .../components/popover_items/index.test.tsx     |  3 +--
 .../common/components/sourcerer/index.test.tsx  |  2 +-
 .../use_add_to_rules_table.test.tsx             |  5 ++---
 .../management/components/console/mocks.tsx     |  3 +--
 .../integration_tests/search_bar.test.tsx       |  3 +--
 .../policy_artifacts_assignable_list.test.tsx   |  2 +-
 .../components/advanced_section.test.tsx        |  2 +-
 .../components/event_collection_card.test.tsx   |  2 +-
 .../timeline/query_bar/index.test.tsx           |  2 +-
 .../detail_panel_alert_tab/index.test.tsx       |  2 +-
 .../session_view_search_bar/index.test.tsx      |  2 +-
 .../swimlane/swimlane_connectors.test.tsx       |  4 +---
 .../date_picker/synthetics_date_picker.test.tsx |  2 +-
 .../simple_monitor_form.test.tsx                |  3 +--
 .../waterfall_marker_icon.test.tsx              |  2 +-
 .../synthetics/utils/testing/rtl_helpers.tsx    | 12 +++++++++---
 .../transform_list/expanded_row.test.tsx        |  3 +--
 .../hooks/use_get_query_delay_setting.test.tsx  |  2 +-
 .../hooks/use_load_rule_aggregations.test.tsx   |  2 +-
 .../application/hooks/use_load_rules.test.tsx   |  2 +-
 .../hooks/use_load_tags_query.test.tsx          |  2 +-
 .../hooks/use_update_rules_settings.test.tsx    |  2 +-
 .../connector_form.test.tsx                     |  2 +-
 .../connector_form_fields.test.tsx              |  2 +-
 .../create_connector_flyout/index.test.tsx      |  3 +--
 .../edit_connector_flyout/index.test.tsx        |  3 +--
 .../hooks/use_bulk_get_cases.test.tsx           |  2 +-
 .../use_bulk_get_maintenance_windows.test.ts    |  2 +-
 .../common/uptime_date_picker.test.tsx          |  2 +-
 .../waterfall/components/waterfall.test.tsx     |  2 +-
 .../components/waterfall_marker_icon.test.tsx   |  2 +-
 .../alert_monitor_status.test.tsx               |  2 +-
 .../columns/define_connectors.test.tsx          |  3 +--
 .../monitor_list/columns/enable_alert.test.tsx  |  2 +-
 .../check_steps/use_expanded_row.test.tsx       |  2 +-
 .../legacy_uptime/lib/helper/rtl_helpers.tsx    |  3 +--
 .../legacy_uptime/pages/settings.test.tsx       |  2 +-
 yarn.lock                                       |  2 +-
 97 files changed, 108 insertions(+), 130 deletions(-)

diff --git a/package.json b/package.json
index f41f2a0d8774f..869529d6836a9 100644
--- a/package.json
+++ b/package.json
@@ -1276,7 +1276,6 @@
     "@storybook/react-docgen-typescript-plugin": "^1.0.1",
     "@storybook/testing-react": "^1.3.0",
     "@storybook/theming": "^6.5.16",
-    "@testing-library/dom": "^8.19.0",
     "@testing-library/jest-dom": "^5.16.5",
     "@testing-library/react": "^12.1.5",
     "@testing-library/react-hooks": "^8.0.1",
diff --git a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx b/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx
index 136ca441588f4..014cb526c81fe 100644
--- a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx
+++ b/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx
@@ -13,8 +13,8 @@ import {
   EuiDataGridRefProps,
   type EuiDataGridColumnCellAction,
 } from '@elastic/eui';
-import { render, waitFor } from '@testing-library/react';
-import { act, renderHook } from '@testing-library/react-hooks';
+import { render, waitFor, act } from '@testing-library/react';
+import { renderHook } from '@testing-library/react-hooks';
 import { makeAction } from '../mocks/helpers';
 import {
   useDataGridColumnsCellActions,
diff --git a/packages/kbn-resizable-layout/src/panels_resizable.test.tsx b/packages/kbn-resizable-layout/src/panels_resizable.test.tsx
index 3ea2ccc87aaeb..f3ebde2aa73ed 100644
--- a/packages/kbn-resizable-layout/src/panels_resizable.test.tsx
+++ b/packages/kbn-resizable-layout/src/panels_resizable.test.tsx
@@ -24,7 +24,7 @@ jest.mock('@elastic/eui', () => ({
 }));
 
 import * as eui from '@elastic/eui';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { ResizableLayoutDirection } from '../types';
 
 describe('Panels resizable', () => {
diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts
index 9ddd782e132cd..867ad6ce8e3e6 100644
--- a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts
+++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts
@@ -5,7 +5,7 @@
  * in compliance with, at your election, the Elastic License 2.0 or the Server
  * Side Public License, v 1.
  */
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { act, renderHook } from '@testing-library/react-hooks';
 import { useExceptionListHeader } from './use_list_header';
 
diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.test.tsx b/src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.test.tsx
index b919672ad01e3..a1be9c560bf3c 100644
--- a/src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.test.tsx
+++ b/src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.test.tsx
@@ -7,7 +7,7 @@
  */
 
 import React from 'react';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { render } from '@testing-library/react';
 import { renderHook } from '@testing-library/react-hooks';
 import {
diff --git a/src/plugins/ui_actions/public/context_menu/open_context_menu.test.ts b/src/plugins/ui_actions/public/context_menu/open_context_menu.test.ts
index f8b54fb33e122..ddd7d77812add 100644
--- a/src/plugins/ui_actions/public/context_menu/open_context_menu.test.ts
+++ b/src/plugins/ui_actions/public/context_menu/open_context_menu.test.ts
@@ -7,7 +7,7 @@
  */
 
 import { createInteractionPositionTracker } from './open_context_menu';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 let targetEl: Element;
 const top = 100;
diff --git a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts
index 950c70ec7c60d..ea9d343845442 100644
--- a/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts
+++ b/src/plugins/ui_actions/public/tests/execute_trigger_actions.test.ts
@@ -10,7 +10,7 @@ import { ActionDefinition } from '../actions';
 import { openContextMenu } from '../context_menu';
 import { uiActionsPluginMock } from '../mocks';
 import type { Trigger } from '@kbn/ui-actions-browser';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../context_menu');
 
diff --git a/src/plugins/unified_histogram/public/chart/hooks/use_total_hits.test.ts b/src/plugins/unified_histogram/public/chart/hooks/use_total_hits.test.ts
index e6f3aeaa3a002..3135f3c86f465 100644
--- a/src/plugins/unified_histogram/public/chart/hooks/use_total_hits.test.ts
+++ b/src/plugins/unified_histogram/public/chart/hooks/use_total_hits.test.ts
@@ -15,7 +15,7 @@ import { renderHook } from '@testing-library/react-hooks';
 import { dataPluginMock } from '@kbn/data-plugin/public/mocks';
 import { searchSourceInstanceMock } from '@kbn/data-plugin/common/search/search_source/mocks';
 import { of, Subject, throwError } from 'rxjs';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { RequestAdapter } from '@kbn/inspector-plugin/common';
 import { DataViewType, SearchSourceSearchOptions } from '@kbn/data-plugin/common';
 import { expressionsPluginMock } from '@kbn/expressions-plugin/public/mocks';
diff --git a/src/plugins/unified_search/public/query_string_input/query_string_input.test.tsx b/src/plugins/unified_search/public/query_string_input/query_string_input.test.tsx
index 8e60c720e1154..aa348d59d85f4 100644
--- a/src/plugins/unified_search/public/query_string_input/query_string_input.test.tsx
+++ b/src/plugins/unified_search/public/query_string_input/query_string_input.test.tsx
@@ -15,8 +15,7 @@ import {
 import React from 'react';
 import { I18nProvider } from '@kbn/i18n-react';
 import { mount } from 'enzyme';
-import { waitFor } from '@testing-library/dom';
-import { render } from '@testing-library/react';
+import { waitFor, render } from '@testing-library/react';
 
 import { EuiTextArea, EuiIcon } from '@elastic/eui';
 
diff --git a/x-pack/packages/security-solution/navigation/src/navigation.test.ts b/x-pack/packages/security-solution/navigation/src/navigation.test.ts
index ab9ab891aaef8..a4290563476ea 100644
--- a/x-pack/packages/security-solution/navigation/src/navigation.test.ts
+++ b/x-pack/packages/security-solution/navigation/src/navigation.test.ts
@@ -7,7 +7,7 @@
 import { useGetAppUrl, useNavigateTo } from './navigation';
 import { mockGetUrlForApp, mockNavigateToApp, mockNavigateToUrl } from '../mocks/context';
 import { renderHook } from '@testing-library/react-hooks';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 jest.mock('./context');
 
diff --git a/x-pack/plugins/alerting/public/hooks/use_archive_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_archive_maintenance_window.test.tsx
index e6bd2a4071b27..d72f0bda9dc93 100644
--- a/x-pack/plugins/alerting/public/hooks/use_archive_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_archive_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { MaintenanceWindow } from '../pages/maintenance_windows/types';
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/hooks/use_create_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_create_maintenance_window.test.tsx
index 195af1bb083e5..f827287532445 100644
--- a/x-pack/plugins/alerting/public/hooks/use_create_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_create_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { MaintenanceWindow } from '../pages/maintenance_windows/types';
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/hooks/use_find_maintenance_windows.test.tsx b/x-pack/plugins/alerting/public/hooks/use_find_maintenance_windows.test.tsx
index 2080b9ff39d43..d21b145aea937 100644
--- a/x-pack/plugins/alerting/public/hooks/use_find_maintenance_windows.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_find_maintenance_windows.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
 import { useFindMaintenanceWindows } from './use_find_maintenance_windows';
diff --git a/x-pack/plugins/alerting/public/hooks/use_finish_and_archive_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_finish_and_archive_maintenance_window.test.tsx
index b80dbbae355bc..453a3b88cef8f 100644
--- a/x-pack/plugins/alerting/public/hooks/use_finish_and_archive_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_finish_and_archive_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { MaintenanceWindow } from '../pages/maintenance_windows/types';
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/hooks/use_finish_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_finish_maintenance_window.test.tsx
index ed534cb835c8d..06608125fd836 100644
--- a/x-pack/plugins/alerting/public/hooks/use_finish_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_finish_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { MaintenanceWindow } from '../pages/maintenance_windows/types';
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/hooks/use_get_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_get_maintenance_window.test.tsx
index eaef1f4fc4b99..3003f1003ce12 100644
--- a/x-pack/plugins/alerting/public/hooks/use_get_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_get_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
 import { useGetMaintenanceWindow } from './use_get_maintenance_window';
diff --git a/x-pack/plugins/alerting/public/hooks/use_update_maintenance_window.test.tsx b/x-pack/plugins/alerting/public/hooks/use_update_maintenance_window.test.tsx
index 897b44295d8c0..b29161f0e006d 100644
--- a/x-pack/plugins/alerting/public/hooks/use_update_maintenance_window.test.tsx
+++ b/x-pack/plugins/alerting/public/hooks/use_update_maintenance_window.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { MaintenanceWindow } from '../pages/maintenance_windows/types';
 import { AppMockRenderer, createAppMockRenderer } from '../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/status_filter.test.tsx b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/status_filter.test.tsx
index f7cb8023323ef..3875545e36df4 100644
--- a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/status_filter.test.tsx
+++ b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/status_filter.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import { Query } from '@elastic/eui';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import React from 'react';
 
 import { AppMockRenderer, createAppMockRenderer } from '../../../lib/test_utils';
diff --git a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/table_actions_popover.test.tsx b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/table_actions_popover.test.tsx
index 2b1a1057084f5..8da3e12847e3a 100644
--- a/x-pack/plugins/alerting/public/pages/maintenance_windows/components/table_actions_popover.test.tsx
+++ b/x-pack/plugins/alerting/public/pages/maintenance_windows/components/table_actions_popover.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import React from 'react';
 
 import { AppMockRenderer, createAppMockRenderer } from '../../../lib/test_utils';
diff --git a/x-pack/plugins/cases/public/common/mock/test_providers.tsx b/x-pack/plugins/cases/public/common/mock/test_providers.tsx
index 7dfed5d7188de..846ae8172b327 100644
--- a/x-pack/plugins/cases/public/common/mock/test_providers.tsx
+++ b/x-pack/plugins/cases/public/common/mock/test_providers.tsx
@@ -11,6 +11,7 @@ import React from 'react';
 import { MemoryRouter } from 'react-router-dom';
 import { ThemeProvider } from 'styled-components';
 
+import { render as reactRender } from '@testing-library/react';
 import type { RenderOptions, RenderResult } from '@testing-library/react';
 import type { ILicense } from '@kbn/licensing-plugin/public';
 import type { ScopedFilesClient } from '@kbn/files-plugin/public';
@@ -20,7 +21,6 @@ import { I18nProvider } from '@kbn/i18n-react';
 import { createMockFilesClient } from '@kbn/shared-ux-file-mocks';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 
-import { render as reactRender } from '@testing-library/react';
 import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
 import { FilesContext } from '@kbn/shared-ux-file-context';
 
diff --git a/x-pack/plugins/cases/public/common/use_cases_toast.test.tsx b/x-pack/plugins/cases/public/common/use_cases_toast.test.tsx
index d6597e31362e7..53fe9118a6aa0 100644
--- a/x-pack/plugins/cases/public/common/use_cases_toast.test.tsx
+++ b/x-pack/plugins/cases/public/common/use_cases_toast.test.tsx
@@ -14,7 +14,7 @@ import { alertComment, basicComment, mockCase } from '../containers/mock';
 import React from 'react';
 import userEvent from '@testing-library/user-event';
 import type { SupportedCaseAttachment } from '../types';
-import { getByTestId } from '@testing-library/dom';
+import { getByTestId } from '@testing-library/react';
 import { OWNER_INFO } from '../../common/constants';
 
 jest.mock('./lib/kibana');
diff --git a/x-pack/plugins/cases/public/components/all_cases/selector_modal/use_cases_add_to_existing_case_modal.test.tsx b/x-pack/plugins/cases/public/components/all_cases/selector_modal/use_cases_add_to_existing_case_modal.test.tsx
index 2cfaacc8383ca..a80e1935d1add 100644
--- a/x-pack/plugins/cases/public/components/all_cases/selector_modal/use_cases_add_to_existing_case_modal.test.tsx
+++ b/x-pack/plugins/cases/public/components/all_cases/selector_modal/use_cases_add_to_existing_case_modal.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { act, renderHook } from '@testing-library/react-hooks';
 import userEvent from '@testing-library/user-event';
 import React from 'react';
diff --git a/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx b/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx
index 30d5c75e63589..26169e16c5bed 100644
--- a/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx
+++ b/x-pack/plugins/cases/public/components/all_cases/severity_filter.test.tsx
@@ -10,7 +10,7 @@ import React from 'react';
 import type { AppMockRenderer } from '../../common/mock';
 import { createAppMockRenderer } from '../../common/mock';
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl';
 import { SeverityFilter } from './severity_filter';
 
diff --git a/x-pack/plugins/cases/public/components/all_cases/use_actions.test.tsx b/x-pack/plugins/cases/public/components/all_cases/use_actions.test.tsx
index 0efc7a5862893..ecc9233fc327c 100644
--- a/x-pack/plugins/cases/public/components/all_cases/use_actions.test.tsx
+++ b/x-pack/plugins/cases/public/components/all_cases/use_actions.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { renderHook } from '@testing-library/react-hooks/dom';
 
 import { useActions } from './use_actions';
diff --git a/x-pack/plugins/cases/public/components/case_action_bar/actions.test.tsx b/x-pack/plugins/cases/public/components/case_action_bar/actions.test.tsx
index c79e88ce350ab..ef97a5f8d854d 100644
--- a/x-pack/plugins/cases/public/components/case_action_bar/actions.test.tsx
+++ b/x-pack/plugins/cases/public/components/case_action_bar/actions.test.tsx
@@ -13,7 +13,7 @@ import { basicCase, basicPush } from '../../containers/mock';
 import { Actions } from './actions';
 import * as i18n from '../case_view/translations';
 import * as api from '../../containers/api';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../containers/api');
 
diff --git a/x-pack/plugins/cases/public/components/case_view/components/case_view_alerts.test.tsx b/x-pack/plugins/cases/public/components/case_view/components/case_view_alerts.test.tsx
index cba9169590839..b85dbe7564cf9 100644
--- a/x-pack/plugins/cases/public/components/case_view/components/case_view_alerts.test.tsx
+++ b/x-pack/plugins/cases/public/components/case_view/components/case_view_alerts.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { OBSERVABILITY_OWNER } from '../../../../common/constants';
 import { alertCommentWithIndices, basicCase } from '../../../containers/mock';
 import type { AppMockRenderer } from '../../../common/mock';
diff --git a/x-pack/plugins/cases/public/components/case_view/index.test.tsx b/x-pack/plugins/cases/public/components/case_view/index.test.tsx
index 07b58820b52b7..13524989bc7b8 100644
--- a/x-pack/plugins/cases/public/components/case_view/index.test.tsx
+++ b/x-pack/plugins/cases/public/components/case_view/index.test.tsx
@@ -30,7 +30,7 @@ import { useGetSupportedActionConnectors } from '../../containers/configure/use_
 import type { AppMockRenderer } from '../../common/mock';
 import { createAppMockRenderer } from '../../common/mock';
 import CaseView from '.';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useGetTags } from '../../containers/use_get_tags';
 import { casesQueriesKeys } from '../../containers/constants';
 import {
diff --git a/x-pack/plugins/cases/public/components/create/form.test.tsx b/x-pack/plugins/cases/public/components/create/form.test.tsx
index e7bd2fc754f34..05e7788624800 100644
--- a/x-pack/plugins/cases/public/components/create/form.test.tsx
+++ b/x-pack/plugins/cases/public/components/create/form.test.tsx
@@ -7,8 +7,7 @@
 
 import React from 'react';
 import { mount } from 'enzyme';
-import { act, render, within, fireEvent } from '@testing-library/react';
-import { waitFor } from '@testing-library/dom';
+import { act, render, within, fireEvent, waitFor } from '@testing-library/react';
 import { licensingMock } from '@kbn/licensing-plugin/public/mocks';
 
 import { NONE_CONNECTOR_ID } from '../../../common/constants';
diff --git a/x-pack/plugins/cases/public/components/create/severity.test.tsx b/x-pack/plugins/cases/public/components/create/severity.test.tsx
index 328b9b4cd5e00..bf81dfc357fc7 100644
--- a/x-pack/plugins/cases/public/components/create/severity.test.tsx
+++ b/x-pack/plugins/cases/public/components/create/severity.test.tsx
@@ -15,7 +15,7 @@ import { Severity } from './severity';
 import type { FormProps } from './schema';
 import { schema } from './schema';
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl';
 
 let globalForm: FormHook;
diff --git a/x-pack/plugins/cases/public/components/custom_fields/index.test.tsx b/x-pack/plugins/cases/public/components/custom_fields/index.test.tsx
index d81e31ba69d6d..7864361063b31 100644
--- a/x-pack/plugins/cases/public/components/custom_fields/index.test.tsx
+++ b/x-pack/plugins/cases/public/components/custom_fields/index.test.tsx
@@ -7,7 +7,7 @@
 
 import React from 'react';
 import userEvent from '@testing-library/user-event';
-import { screen, waitFor } from '@testing-library/dom';
+import { screen, waitFor } from '@testing-library/react';
 
 import type { AppMockRenderer } from '../../common/mock';
 import { createAppMockRenderer } from '../../common/mock';
diff --git a/x-pack/plugins/cases/public/components/experimental_badge/experimental_badge.test.tsx b/x-pack/plugins/cases/public/components/experimental_badge/experimental_badge.test.tsx
index a13aea90e8e6e..38b5960898cf0 100644
--- a/x-pack/plugins/cases/public/components/experimental_badge/experimental_badge.test.tsx
+++ b/x-pack/plugins/cases/public/components/experimental_badge/experimental_badge.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen } from '@testing-library/dom';
+import { screen } from '@testing-library/react';
 
 import type { AppMockRenderer } from '../../common/mock';
 import { createAppMockRenderer } from '../../common/mock';
diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx
index 9c911e5aa89b4..a32ece05eac74 100644
--- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx
+++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx
@@ -24,7 +24,7 @@ import {
   mockTimeRange,
 } from './mocks';
 import { useKibana } from '../../../common/lib/kibana';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { canUseCases } from '../../../client/helpers/can_use_cases';
 import { getCaseOwnerByAppId } from '../../../../common/utils/owner';
 
diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx
index f55f95cbfb0ec..3549ca3301d18 100644
--- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx
+++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.test.tsx
@@ -8,7 +8,7 @@
 import { LENS_EMBEDDABLE_TYPE, type Embeddable as LensEmbeddable } from '@kbn/lens-plugin/public';
 import { ErrorEmbeddable } from '@kbn/embeddable-plugin/public';
 import type { Action } from '@kbn/ui-actions-plugin/public';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 import { createAddToNewCaseLensAction } from './add_to_new_case';
 import type { ActionContext } from './types';
diff --git a/x-pack/plugins/cases/public/containers/configure/use_get_case_configuration.test.tsx b/x-pack/plugins/cases/public/containers/configure/use_get_case_configuration.test.tsx
index 1cb8685e26cbf..d625e247cb572 100644
--- a/x-pack/plugins/cases/public/containers/configure/use_get_case_configuration.test.tsx
+++ b/x-pack/plugins/cases/public/containers/configure/use_get_case_configuration.test.tsx
@@ -8,7 +8,7 @@
 import { renderHook } from '@testing-library/react-hooks';
 import { useGetCaseConfiguration } from './use_get_case_configuration';
 import * as api from './api';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useToasts } from '../../common/lib/kibana';
 import type { AppMockRenderer } from '../../common/mock';
 import { createAppMockRenderer } from '../../common/mock';
diff --git a/x-pack/plugins/cases/public/containers/use_get_case.test.tsx b/x-pack/plugins/cases/public/containers/use_get_case.test.tsx
index 0514acf4a71ea..2b5082a9e22a5 100644
--- a/x-pack/plugins/cases/public/containers/use_get_case.test.tsx
+++ b/x-pack/plugins/cases/public/containers/use_get_case.test.tsx
@@ -8,7 +8,7 @@
 import { renderHook } from '@testing-library/react-hooks';
 import { useGetCase } from './use_get_case';
 import * as api from './api';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import React from 'react';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { useToasts } from '../common/lib/kibana';
diff --git a/x-pack/plugins/cases/public/containers/use_get_feature_ids.test.tsx b/x-pack/plugins/cases/public/containers/use_get_feature_ids.test.tsx
index fdec17c215fda..298abb5d133e7 100644
--- a/x-pack/plugins/cases/public/containers/use_get_feature_ids.test.tsx
+++ b/x-pack/plugins/cases/public/containers/use_get_feature_ids.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import { renderHook } from '@testing-library/react-hooks';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useToasts } from '../common/lib/kibana';
 import type { AppMockRenderer } from '../common/mock';
 import { createAppMockRenderer } from '../common/mock';
diff --git a/x-pack/plugins/cases/server/services/notifications/templates/assignees/renderer.test.ts b/x-pack/plugins/cases/server/services/notifications/templates/assignees/renderer.test.ts
index ecd0bc08393bb..fb6509aeceeb4 100644
--- a/x-pack/plugins/cases/server/services/notifications/templates/assignees/renderer.test.ts
+++ b/x-pack/plugins/cases/server/services/notifications/templates/assignees/renderer.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { mockCases } from '../../../../mocks';
-import { getByText } from '@testing-library/dom';
+import { getByText } from '@testing-library/react';
 import { assigneesTemplateRenderer } from './renderer';
 import type { CaseSavedObjectTransformed } from '../../../../common/types/case';
 
diff --git a/x-pack/plugins/cases/server/services/notifications/templates/assignees/template.test.ts b/x-pack/plugins/cases/server/services/notifications/templates/assignees/template.test.ts
index b888cd6017b24..79589f4e58bef 100644
--- a/x-pack/plugins/cases/server/services/notifications/templates/assignees/template.test.ts
+++ b/x-pack/plugins/cases/server/services/notifications/templates/assignees/template.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { mockCases } from '../../../../mocks';
-import { getByText } from '@testing-library/dom';
+import { getByText } from '@testing-library/react';
 import { assigneesTemplateRenderer } from './renderer';
 import type { CaseSavedObjectTransformed } from '../../../../common/types/case';
 
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx
index 0545d4f3bb429..04c8382529593 100644
--- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx
@@ -6,13 +6,12 @@
  */
 
 import React from 'react';
-import { render } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
 import { expectIdsInDoc } from '../../../test/utils';
 import { DASHBOARD_COUNTER_CARDS } from '../test_subjects';
 import { SummarySection } from './summary_section';
 import { mockDashboardData } from '../mock';
 import { TestProvider } from '../../../test/test_provider';
-import { screen } from '@testing-library/react';
 import { KSPM_POLICY_TEMPLATE } from '../../../../common/constants';
 
 describe('<CloudSummarySection />', () => {
diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/role_mappings/engine_assignment_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/role_mappings/engine_assignment_selector.test.tsx
index a8f8b2af988f2..74ca02e1d91db 100644
--- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/role_mappings/engine_assignment_selector.test.tsx
+++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/role_mappings/engine_assignment_selector.test.tsx
@@ -13,7 +13,7 @@ import { engines } from '../../__mocks__/engines.mock';
 
 import React from 'react';
 
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { shallow } from 'enzyme';
 
 import { EuiComboBox, EuiComboBoxOptionOption, EuiRadioGroup } from '@elastic/eui';
diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/group_assignment_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/group_assignment_selector.test.tsx
index 9312b1b6bbdb2..1cea94e434de1 100644
--- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/group_assignment_selector.test.tsx
+++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/role_mappings/group_assignment_selector.test.tsx
@@ -11,7 +11,7 @@ import { setMockActions, setMockValues } from '../../../__mocks__/kea_logic';
 
 import React from 'react';
 
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { shallow } from 'enzyme';
 
 import { EuiComboBox, EuiComboBoxOptionOption, EuiRadioGroup } from '@elastic/eui';
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx
index c72899d8041c7..4e81ca840199f 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import { render } from '../../rtl_helpers';
-import { fireEvent, screen } from '@testing-library/dom';
+import { fireEvent, screen } from '@testing-library/react';
 import React from 'react';
 import { sampleAttribute } from '../../configurations/test_data/sample_attribute';
 import * as pluginHook from '../../../../../hooks/use_plugin_context';
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx
index 443a6eb846cd8..7b4e0cb5cc57f 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen } from '@testing-library/dom';
+import { screen } from '@testing-library/react';
 import { render, mockAppDataView } from './rtl_helpers';
 import { ExploratoryView } from './exploratory_view';
 import * as obsvDataViews from '../../../utils/observability_data_views/observability_data_views';
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx
index a4d8a88507e82..ffccfdf6db3f2 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx
@@ -7,7 +7,7 @@
 
 import React from 'react';
 import { render, forNearestButton } from '../rtl_helpers';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import { AddToCaseAction } from './add_to_case_action';
 import * as useCaseHook from '../hooks/use_add_to_case';
 import * as datePicker from '../components/date_range_picker';
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx
index 570362a63c33f..f8da480072ab3 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen } from '@testing-library/dom';
+import { screen } from '@testing-library/react';
 import { render } from '../rtl_helpers';
 import { ChartCreationInfo } from './chart_creation_info';
 
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx
index 9ab9d00d2bc82..3821c703e7cee 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx
@@ -9,7 +9,7 @@ import { useAddToCase } from './use_add_to_case';
 import React, { useEffect } from 'react';
 import { render } from '../rtl_helpers';
 import { EuiButton } from '@elastic/eui';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import { act } from '@testing-library/react';
 
 describe('useAddToCase', function () {
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx
index 978296a295efc..65f80245c2ceb 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen, waitFor, fireEvent } from '@testing-library/dom';
+import { screen, waitFor, fireEvent } from '@testing-library/react';
 import { render } from '../rtl_helpers';
 import { AddSeriesButton } from './add_series_button';
 import { DEFAULT_TIME, ReportTypes } from '../configurations/constants';
diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx
index df709c94abcde..ae2d2ce65d91c 100644
--- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx
+++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen, waitFor, fireEvent } from '@testing-library/dom';
+import { screen, waitFor, fireEvent } from '@testing-library/react';
 import { render } from '../rtl_helpers';
 import * as hooks from '../hooks/use_series_storage';
 import { ViewActions } from './view_actions';
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx
index 2f05354b09a04..2d39700da5caa 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 import { createFleetTestRendererMock } from '../../../../../../mock';
 import type { Agent, AgentPolicy } from '../../../../types';
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx
index 9937126213c91..dffa4bc665bdb 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { fireEvent, waitFor } from '@testing-library/dom';
+import { fireEvent, waitFor } from '@testing-library/react';
 import React from 'react';
 
 import { createFleetTestRendererMock } from '../../../../../../mock';
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx
index a2fed8d3ed613..4e8d25f313ea5 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 import { createFleetTestRendererMock } from '../../../../../../mock';
 import type { Agent, AgentPolicy } from '../../../../types';
diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx
index a0fbe2c90c690..d3230a33f203e 100644
--- a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx
+++ b/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx
@@ -10,7 +10,7 @@ import { AppContextTestRender, createAppRootMockRenderer } from '../../test';
 import { GlobalFilter } from '../../types';
 import { CountWidget, LOADING_TEST_ID, TOOLTIP_TEST_ID, VALUE_TEST_ID } from '.';
 import { useFetchCountWidgetData } from './hooks';
-import { fireEvent, waitFor } from '@testing-library/dom';
+import { fireEvent, waitFor } from '@testing-library/react';
 
 const TITLE = 'Count Widget Title';
 const GLOBAL_FILTER: GlobalFilter = {
diff --git a/x-pack/plugins/lens/public/mocks/store_mocks.tsx b/x-pack/plugins/lens/public/mocks/store_mocks.tsx
index cafb7796969c8..9a3d33afa1aa7 100644
--- a/x-pack/plugins/lens/public/mocks/store_mocks.tsx
+++ b/x-pack/plugins/lens/public/mocks/store_mocks.tsx
@@ -13,26 +13,14 @@ import { act } from 'react-dom/test-utils';
 import { PreloadedState } from '@reduxjs/toolkit';
 import { RenderOptions, render } from '@testing-library/react';
 import { I18nProvider } from '@kbn/i18n-react';
-// imported to prevent a type error from testing library https://github.com/testing-library/react-testing-library/issues/587
-import * as ___ from '@testing-library/dom';
-
 import { LensAppServices } from '../app_plugin/types';
-import {
-  makeConfigureStore,
-  LensAppState,
-  LensState,
-  LensStoreDeps,
-  LensRootStore,
-} from '../state_management';
+import { makeConfigureStore, LensAppState, LensState, LensStoreDeps } from '../state_management';
 import { getResolvedDateRange } from '../utils';
 import { DatasourceMap, VisualizationMap } from '../types';
 import { mockVisualizationMap } from './visualization_mock';
 import { mockDatasourceMap } from './datasource_mock';
 import { makeDefaultServices } from './services_mock';
 
-// preventing a type error from testing library https://github.com/testing-library/react-testing-library/issues/587
-export const unusedFn = () => ___;
-
 export const mockStoreDeps = (deps?: {
   lensServices?: LensAppServices;
   datasourceMap?: DatasourceMap;
@@ -85,7 +73,8 @@ export const renderWithReduxStore = (
     preloadedState: {},
     storeDeps: mockStoreDeps(),
   }
-): ReturnType<typeof render> & { store: LensRootStore } => {
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+): any => {
   const { store } = makeLensStore({ preloadedState, storeDeps });
 
   const Wrapper: React.FC<{
diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx
index b73379acd1518..7edcf5b53f724 100644
--- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx
+++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.test.tsx
@@ -25,7 +25,7 @@ import { useFindListsBySize } from '@kbn/securitysolution-list-hooks';
 import type { FieldSpec } from '@kbn/data-plugin/common';
 import { fields, getField } from '@kbn/data-plugin/common/mocks';
 import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { ReactWrapper, mount } from 'enzyme';
 
 import { getFoundListsBySizeSchemaMock } from '../../../../common/schemas/response/found_lists_by_size_schema.mock';
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
index 21972da276691..8d4d45a08d709 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx
@@ -5,8 +5,7 @@
  * 2.0.
  */
 
-import { fireEvent, waitFor } from '@testing-library/dom';
-import { cleanup } from '@testing-library/react';
+import { fireEvent, waitFor, cleanup } from '@testing-library/react';
 import { createBrowserHistory } from 'history';
 import React from 'react';
 import Router from 'react-router-dom';
diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx
index 7323c293cd94c..edc72e92ff153 100644
--- a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { mount } from 'enzyme';
 import type { ReactWrapper } from 'enzyme';
 import React from 'react';
diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx
index 4bdbbdca8bdca..d8b43fa9a603b 100644
--- a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx
@@ -15,7 +15,7 @@ import { mockAnomalies } from '../mock';
 import { TestProviders } from '../../../mock/test_providers';
 import { useMountAppended } from '../../../utils/use_mount_appended';
 import type { Anomalies } from '../types';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../../lib/kibana');
 
diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx
index 6a72d72a9eb59..b54ec85bab0e4 100644
--- a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx
@@ -16,7 +16,7 @@ import { TestProviders } from '../../../mock/test_providers';
 import { getEmptyValue } from '../../empty_value';
 import type { Anomalies } from '../types';
 import { useMountAppended } from '../../../utils/use_mount_appended';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../../lib/kibana');
 
diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx
index c9de8aad04de8..832c60c69be87 100644
--- a/x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx
@@ -11,7 +11,7 @@ import { mockAnomalies } from '../mock';
 import { createDescriptionList } from './create_description_list';
 import { EuiDescriptionList } from '@elastic/eui';
 import type { Anomaly } from '../types';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../../lib/kibana');
 
diff --git a/x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx
index 8d7123bfe6d66..58584f4325d4e 100644
--- a/x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx
@@ -10,8 +10,7 @@ import React from 'react';
 import type { PopoverItemsProps } from '.';
 import { PopoverItems } from '.';
 import { TestProviders } from '../../mock';
-import { render, screen } from '@testing-library/react';
-import { within } from '@testing-library/dom';
+import { render, screen, within } from '@testing-library/react';
 import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl';
 
 const mockTags = ['Elastic', 'Endpoint', 'Data Protection', 'ML', 'Continuous Monitoring'];
diff --git a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx
index ceab08373993a..ebda7e6748ebd 100644
--- a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.test.tsx
@@ -22,7 +22,7 @@ import {
 } from '../../mock';
 import { createStore } from '../../store';
 import type { EuiSuperSelectOption } from '@elastic/eui/src/components/form/super_select/super_select_control';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useSourcererDataView } from '../../containers/sourcerer';
 import { useSignalHelpers } from '../../containers/sourcerer/use_signal_helpers';
 import { TimelineId } from '../../../../common/types/timeline';
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx
index 7afa5e5a7eef0..8862c626ea6e4 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx
@@ -6,9 +6,8 @@
  */
 
 import React from 'react';
-import { fireEvent, render as rTLRender } from '@testing-library/react';
-import { waitFor } from '@testing-library/dom';
-import { act, renderHook } from '@testing-library/react-hooks';
+import { fireEvent, render as rTLRender, waitFor, act } from '@testing-library/react';
+import { renderHook } from '@testing-library/react-hooks';
 import type { EuiTableFieldDataColumnType } from '@elastic/eui';
 import type { Rule } from '../../../../rule_management/logic/types';
 import { getRulesSchemaMock } from '../../../../../../common/api/detection_engine/model/rule_schema/mocks';
diff --git a/x-pack/plugins/security_solution/public/management/components/console/mocks.tsx b/x-pack/plugins/security_solution/public/management/components/console/mocks.tsx
index ac729f898c6be..d756e6aaea2e5 100644
--- a/x-pack/plugins/security_solution/public/management/components/console/mocks.tsx
+++ b/x-pack/plugins/security_solution/public/management/components/console/mocks.tsx
@@ -10,8 +10,7 @@
 import React, { memo, useEffect } from 'react';
 import { EuiCode } from '@elastic/eui';
 import userEvent from '@testing-library/user-event';
-import { act } from '@testing-library/react';
-import { within } from '@testing-library/dom';
+import { act, within } from '@testing-library/react';
 import { convertToTestId } from './components/command_list';
 import { Console } from './console';
 import type {
diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx
index ab0a856ff1fa6..f053ee5ef8d68 100644
--- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx
@@ -9,10 +9,9 @@ import React from 'react';
 import type { AppContextTestRender } from '../../../../../../common/mock/endpoint';
 import { createAppRootMockRenderer } from '../../../../../../common/mock/endpoint';
 import { endpointPageHttpMock } from '../../../mocks';
-import { act, waitFor, cleanup } from '@testing-library/react';
+import { act, waitFor, cleanup, fireEvent } from '@testing-library/react';
 import { getEndpointListPath } from '../../../../../common/routing';
 import { AdminSearchBar } from '../search_bar';
-import { fireEvent } from '@testing-library/dom';
 import { uiQueryParams } from '../../../store/selectors';
 import type { EndpointIndexUIQueryParams } from '../../../types';
 
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx
index aa57df82276c6..c1f95b1f4d067 100644
--- a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx
@@ -10,7 +10,7 @@ import { PolicyArtifactsAssignableList } from './policy_artifacts_assignable_lis
 import * as reactTestingLibrary from '@testing-library/react';
 import type { AppContextTestRender } from '../../../../../../common/mock/endpoint';
 import { createAppRootMockRenderer } from '../../../../../../common/mock/endpoint';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import { getMockListResponse } from '../../../test_utils';
 
 describe('Policy artifacts list', () => {
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx
index 0eb65818b9347..6688c12c7f853 100644
--- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx
@@ -17,7 +17,7 @@ import type { AdvancedSectionProps } from './advanced_section';
 import { AdvancedSection } from './advanced_section';
 import userEvent from '@testing-library/user-event';
 import { AdvancedPolicySchema } from '../../../models/advanced_policy_schema';
-import { within } from '@testing-library/dom';
+import { within } from '@testing-library/react';
 import { set } from 'lodash';
 
 jest.mock('../../../../../../common/hooks/use_license');
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx
index eeaa22aa14f6b..54ade4d11b4dd 100644
--- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx
@@ -18,7 +18,7 @@ import { OperatingSystem } from '@kbn/securitysolution-utils';
 import { expectIsViewOnly, exactMatchText } from '../mocks';
 import userEvent from '@testing-library/user-event';
 import { cloneDeep, set } from 'lodash';
-import { within } from '@testing-library/dom';
+import { within } from '@testing-library/react';
 
 describe('Policy Event Collection Card common component', () => {
   let formProps: EventCollectionCardProps<OperatingSystem.WINDOWS>;
diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx
index 153b24dcf0bf8..cd0a21d99cdfe 100644
--- a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx
@@ -21,7 +21,7 @@ import { buildGlobalQuery } from '../helpers';
 
 import type { QueryBarTimelineComponentProps } from '.';
 import { QueryBarTimeline, getDataProviderFilter, TIMELINE_FILTER_DROP_AREA } from '.';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 const mockUiSettingsForFilterManager = coreMock.createStart().uiSettings;
 
diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx b/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx
index 989c4fd45cfbc..b729824478e2c 100644
--- a/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx
+++ b/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx
@@ -10,7 +10,7 @@ import React from 'react';
 import { AppContextTestRender, createAppRootMockRenderer } from '../../test';
 import { DetailPanelAlertTab } from '.';
 import { mockAlerts } from '../../../common/mocks/constants/session_view_process.mock';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 import { INVESTIGATED_ALERT_TEST_ID, VIEW_MODE_TOGGLE, ALERTS_TAB_EMPTY_STATE_TEST_ID } from '.';
 import {
   ALERT_LIST_ITEM_TEST_ID,
diff --git a/x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx b/x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx
index 8b3498f2a11b8..4bfd695530b43 100644
--- a/x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx
+++ b/x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx
@@ -10,7 +10,7 @@ import { processMock } from '../../../common/mocks/constants/session_view_proces
 import { AppContextTestRender, createAppRootMockRenderer } from '../../test';
 import { SessionViewSearchBar } from '.';
 import userEvent from '@testing-library/user-event';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 describe('SessionViewSearchBar component', () => {
   let render: () => ReturnType<AppContextTestRender['render']>;
diff --git a/x-pack/plugins/stack_connectors/public/connector_types/swimlane/swimlane_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/swimlane/swimlane_connectors.test.tsx
index 643d43d8b10b3..cb6652052d65e 100644
--- a/x-pack/plugins/stack_connectors/public/connector_types/swimlane/swimlane_connectors.test.tsx
+++ b/x-pack/plugins/stack_connectors/public/connector_types/swimlane/swimlane_connectors.test.tsx
@@ -7,14 +7,12 @@
 
 import React from 'react';
 import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers';
-import { act } from 'react-dom/test-utils';
 import SwimlaneActionConnectorFields from './swimlane_connectors';
 import { useGetApplication } from './use_get_application';
 import { applicationFields, mappings } from './mocks';
 import { ConnectorFormTestProvider } from '../lib/test_utils';
-import { waitFor } from '@testing-library/dom';
+import { waitFor, render, act } from '@testing-library/react';
 import userEvent from '@testing-library/user-event';
-import { render } from '@testing-library/react';
 
 jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana');
 jest.mock('./use_get_application');
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx
index a78710dd9994e..1a0ec3002655a 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx
@@ -10,7 +10,7 @@ import { SyntheticsDatePicker } from './synthetics_date_picker';
 import { startPlugins } from '../../../utils/testing/__mocks__/synthetics_plugin_start_mock';
 import { createMemoryHistory } from 'history';
 import { render } from '../../../utils/testing';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 describe('SyntheticsDatePicker component', () => {
   jest.setTimeout(10_000);
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx
index 9c392b6a409f0..322cc2c653ef9 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx
@@ -12,10 +12,9 @@ import {
   WEBSITE_URL_HELP_TEXT,
   WEBSITE_URL_LABEL,
 } from './simple_monitor_form';
-import { screen } from '@testing-library/react';
 import { render } from '../../utils/testing';
 import React from 'react';
-import { act, fireEvent, waitFor } from '@testing-library/react';
+import { act, fireEvent, waitFor, screen } from '@testing-library/react';
 import { syntheticsTestSubjects } from '../../../../../common/constants/data_test_subjects';
 import { apiService } from '../../../../utils/api_service';
 import * as reduxHooks from 'react-redux';
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx
index 3ebbb2b1c6b57..a91da97ce3a5c 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { fireEvent, waitFor } from '@testing-library/dom';
+import { fireEvent, waitFor } from '@testing-library/react';
 import { WaterfallMarkerIcon } from './waterfall_marker_icon';
 import { TestWrapper } from './waterfall_marker_test_helper';
 import { render } from '../../../../../utils/testing';
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx
index 27452ce3254c2..552229fe47346 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx
@@ -6,12 +6,14 @@
  */
 
 import React, { ReactElement, ReactNode } from 'react';
+import { i18n } from '@kbn/i18n';
 import { of } from 'rxjs';
 // eslint-disable-next-line import/no-extraneous-dependencies
 import {
   render as reactTestLibRender,
   MatcherFunction,
   RenderOptions,
+  configure,
 } from '@testing-library/react';
 import { Router } from '@kbn/shared-ux-router';
 import { Route } from '@kbn/shared-ux-router';
@@ -21,8 +23,6 @@ import { createMemoryHistory, History } from 'history';
 import { CoreStart } from '@kbn/core/public';
 import { I18nProvider } from '@kbn/i18n-react';
 import { coreMock } from '@kbn/core/public/mocks';
-// eslint-disable-next-line import/no-extraneous-dependencies
-import { configure } from '@testing-library/dom';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public';
 import { KibanaContextProvider, KibanaServices } from '@kbn/kibana-react-plugin/public';
@@ -161,7 +161,13 @@ export const mockCore: () => Partial<CoreStart> = () => {
     exploratoryView: {
       createExploratoryViewUrl: jest.fn(),
       getAppDataView: jest.fn(),
-      ExploratoryViewEmbeddable: () => <div>Embeddable exploratory view</div>,
+      ExploratoryViewEmbeddable: () => (
+        <div>
+          {i18n.translate('xpack.synthetics.core.div.embeddableExploratoryViewLabel', {
+            defaultMessage: 'Embeddable exploratory view',
+          })}
+        </div>
+      ),
     },
   };
 
diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx
index 370d7c2da05d5..4f9eacc38ecc5 100644
--- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx
+++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.test.tsx
@@ -5,14 +5,13 @@
  * 2.0.
  */
 
-import { render, fireEvent, screen, waitFor } from '@testing-library/react';
+import { render, fireEvent, screen, waitFor, within } from '@testing-library/react';
 import React from 'react';
 import moment from 'moment-timezone';
 import { TransformListRow } from '../../../../common';
 import { ExpandedRow } from './expanded_row';
 
 import transformListRow from '../../../../common/__mocks__/transform_list_row.json';
-import { within } from '@testing-library/dom';
 
 jest.mock('../../../../../shared_imports');
 jest.mock('../../../../app_dependencies');
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_get_query_delay_setting.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_get_query_delay_setting.test.tsx
index bf792e29ed604..c4e3ec261e6e3 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_get_query_delay_setting.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_get_query_delay_setting.test.tsx
@@ -6,7 +6,7 @@
  */
 import React from 'react';
 import { renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { useGetQueryDelaySettings } from './use_get_query_delay_settings';
 
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rule_aggregations.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rule_aggregations.test.tsx
index b9f33ab40c6fc..6ea281765496f 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rule_aggregations.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rule_aggregations.test.tsx
@@ -11,7 +11,7 @@ import { RuleStatus } from '../../types';
 import { useKibana } from '../../common/lib/kibana';
 import { IToasts } from '@kbn/core-notifications-browser';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../common/lib/kibana');
 jest.mock('../lib/rule_api/aggregate_kuery_filter', () => ({
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rules.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rules.test.tsx
index 1342746223889..1a2c07eaaa9cf 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rules.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_rules.test.tsx
@@ -15,7 +15,7 @@ import { RuleStatus } from '../../types';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { useKibana } from '../../common/lib/kibana';
 import { IToasts } from '@kbn/core-notifications-browser';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 jest.mock('../../common/lib/kibana');
 jest.mock('../lib/rule_api/rules_kuery_filter', () => ({
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_tags_query.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_tags_query.test.tsx
index 7e36b5e4290ad..bb2dab67c0d4e 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_tags_query.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_load_tags_query.test.tsx
@@ -10,7 +10,7 @@ import { useLoadTagsQuery } from './use_load_tags_query';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { useKibana } from '../../common/lib/kibana';
 import { IToasts } from '@kbn/core-notifications-browser';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 const MOCK_TAGS = ['a', 'b', 'c'];
 
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_update_rules_settings.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_update_rules_settings.test.tsx
index 6a36a32ed2522..e431a4c2cf7aa 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_update_rules_settings.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_update_rules_settings.test.tsx
@@ -7,7 +7,7 @@
 import React from 'react';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { act, renderHook } from '@testing-library/react-hooks/dom';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useUpdateRuleSettings } from './use_update_rules_settings';
 
 const mockAddDanger = jest.fn();
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx
index 95e7b0c85ab55..cf12e2ce38af4 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx
@@ -9,7 +9,7 @@ import React, { lazy } from 'react';
 import { ConnectorForm } from './connector_form';
 import { actionTypeRegistryMock } from '../../action_type_registry.mock';
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { act } from '@testing-library/react';
 import { AppMockRenderer, createAppMockRenderer } from '../test_utils';
 
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx
index c2a6a86bb446b..45937cee8b22a 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx
@@ -10,7 +10,7 @@ import { coreMock } from '@kbn/core/public/mocks';
 import { FormTestProvider } from '../../components/test_utils';
 import { ConnectorFormFields } from './connector_form_fields';
 import { actionTypeRegistryMock } from '../../action_type_registry.mock';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { AppMockRenderer, createAppMockRenderer } from '../test_utils';
 
 describe('ConnectorFormFields', () => {
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx
index 9cc4603025ff3..554fb9aff3c30 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx
@@ -9,8 +9,7 @@ import React, { lazy } from 'react';
 
 import { actionTypeRegistryMock } from '../../../action_type_registry.mock';
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
-import { act } from '@testing-library/react';
+import { waitFor, act } from '@testing-library/react';
 import CreateConnectorFlyout from '.';
 import { betaBadgeProps } from '../beta_badge_props';
 import { AppMockRenderer, createAppMockRenderer } from '../../test_utils';
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx
index e687189ed0205..a108de1dc6f6c 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx
@@ -9,8 +9,7 @@ import React, { lazy } from 'react';
 
 import { actionTypeRegistryMock } from '../../../action_type_registry.mock';
 import userEvent from '@testing-library/user-event';
-import { waitFor } from '@testing-library/dom';
-import { act } from '@testing-library/react';
+import { waitFor, act } from '@testing-library/react';
 import EditConnectorFlyout from '.';
 import { ActionConnector, EditConnectorTabs, GenericValidationResult } from '../../../../types';
 import { betaBadgeProps } from '../beta_badge_props';
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_cases.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_cases.test.tsx
index 5f027e9b57fd0..945028df8118f 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_cases.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_cases.test.tsx
@@ -7,7 +7,7 @@
 
 import { renderHook } from '@testing-library/react-hooks';
 import * as api from './apis/bulk_get_cases';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { useKibana } from '../../../../common/lib/kibana';
 import { useBulkGetCases } from './use_bulk_get_cases';
 import { AppMockRenderer, createAppMockRenderer } from '../../test_utils';
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.test.ts
index e5b45a25b5dea..b46424c286c00 100644
--- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.test.ts
+++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.test.ts
@@ -6,7 +6,7 @@
  */
 
 import { renderHook } from '@testing-library/react-hooks';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 import { MaintenanceWindowStatus } from '@kbn/alerting-plugin/common';
 import * as api from './apis/bulk_get_maintenance_windows';
 import { coreMock } from '@kbn/core/public/mocks';
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx
index 1510fe28f1721..66fd680d3fdfe 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx
@@ -10,7 +10,7 @@ import { UptimeDatePicker } from './uptime_date_picker';
 import { startPlugins } from '../../lib/__mocks__/uptime_plugin_start_mock';
 import { createMemoryHistory } from 'history';
 import { render } from '../../lib/helper/rtl_helpers';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 describe('UptimeDatePicker component', () => {
   jest.setTimeout(10_000);
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx
index 28e82930f3341..7761fe4206fda 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx
@@ -11,7 +11,7 @@ import { renderLegendItem } from '../../step_detail/waterfall/waterfall_chart_wr
 import { render } from '../../../../../lib/helper/rtl_helpers';
 
 import 'jest-canvas-mock';
-import { waitFor } from '@testing-library/dom';
+import { waitFor } from '@testing-library/react';
 
 describe('waterfall', () => {
   it('sets the correct height in case of full height', () => {
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx
index 4241a7238ecd6..4bfe9d2dccfdd 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { fireEvent, waitFor } from '@testing-library/dom';
+import { fireEvent, waitFor } from '@testing-library/react';
 import { render } from '../../../../../lib/helper/rtl_helpers';
 import { WaterfallMarkerIcon } from './waterfall_marker_icon';
 import { TestWrapper } from './waterfall_marker_test_helper';
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx
index 6dbef12159a18..c547b66748ffc 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { screen } from '@testing-library/dom';
+import { screen } from '@testing-library/react';
 import {
   AlertMonitorStatusComponent,
   AlertMonitorStatusProps,
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx
index 29f0dd189594c..3774e94e190b8 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx
@@ -7,8 +7,7 @@
 
 import React from 'react';
 import { DefineAlertConnectors } from './define_connectors';
-import { screen } from '@testing-library/react';
-import { fireEvent } from '@testing-library/dom';
+import { screen, fireEvent } from '@testing-library/react';
 import { ENABLE_STATUS_ALERT } from './translations';
 import { render } from '../../../../lib/helper/rtl_helpers';
 
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx
index 416dd8e963e9b..2f18c3e89f147 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx
@@ -7,7 +7,7 @@
 
 import React from 'react';
 import { EnableMonitorAlert } from './enable_alert';
-import { fireEvent } from '@testing-library/dom';
+import { fireEvent } from '@testing-library/react';
 
 import { DYNAMIC_SETTINGS_DEFAULTS } from '../../../../../../common/constants';
 import { makePing } from '../../../../../../common/runtime_types/ping';
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx
index f79a93eee53e4..a139abe5d86a0 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx
@@ -8,7 +8,7 @@
 import React from 'react';
 import ReactRouterDom from 'react-router-dom';
 import { Route } from '@kbn/shared-ux-router';
-import { fireEvent, screen } from '@testing-library/dom';
+import { fireEvent, screen } from '@testing-library/react';
 import { renderHook, act as hooksAct } from '@testing-library/react-hooks';
 import { createMemoryHistory } from 'history';
 import { EuiButtonIcon } from '@elastic/eui';
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx b/x-pack/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx
index b2f96c4bac8a3..0b23c089385d7 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx
@@ -12,6 +12,7 @@ import {
   render as reactTestLibRender,
   MatcherFunction,
   RenderOptions,
+  configure,
 } from '@testing-library/react';
 import { Router } from '@kbn/shared-ux-router';
 import { Route } from '@kbn/shared-ux-router';
@@ -21,8 +22,6 @@ import { createMemoryHistory, History } from 'history';
 import { CoreStart } from '@kbn/core/public';
 import { I18nProvider } from '@kbn/i18n-react';
 import { coreMock } from '@kbn/core/public/mocks';
-// eslint-disable-next-line import/no-extraneous-dependencies
-import { configure } from '@testing-library/dom';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public';
 import { KibanaContextProvider, KibanaServices } from '@kbn/kibana-react-plugin/public';
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx b/x-pack/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx
index 5c8fb95448fca..a8144f540a03e 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx
@@ -8,7 +8,7 @@ import React from 'react';
 
 import { isValidCertVal, SettingsPage } from './settings';
 import { render } from '../lib/helper/rtl_helpers';
-import { fireEvent, waitFor } from '@testing-library/dom';
+import { fireEvent, waitFor } from '@testing-library/react';
 import * as alertApi from '../state/api/alerts';
 import { DYNAMIC_SETTINGS_DEFAULTS } from '../../../common/constants';
 
diff --git a/yarn.lock b/yarn.lock
index 84d09037017b3..813e52bcf4912 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8251,7 +8251,7 @@
   resolved "https://registry.yarnpkg.com/@testim/chrome-version/-/chrome-version-1.1.3.tgz#fbb68696899d7b8c1b9b891eded9c04fe2cd5529"
   integrity sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A==
 
-"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.19.0":
+"@testing-library/dom@^8.0.0":
   version "8.19.0"
   resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f"
   integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==

From b36b331eef5b279a8f3f23b3d13f351af9ec98b8 Mon Sep 17 00:00:00 2001
From: jennypavlova <dzheni.pavlova@elastic.co>
Date: Wed, 8 Nov 2023 16:11:08 +0100
Subject: [PATCH 014/147] [ObsUx] Metadata flaky test fix (#170866)

Closes #167710

## Summary

This PR changes the `max` date to avoid conflict with the metadata
fixture (checking that the fixture date is *after* the constant date
defined which currently matches)

## Testing
Test server run: `node scripts/functional_tests_server --config
x-pack/test/api_integration/config`
Test run: ` node scripts/functional_test_runner
--config=x-pack/test/api_integration/apis/metrics_ui/config
--grep="metadata"`
---
 x-pack/test/api_integration/apis/metrics_ui/constants.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x-pack/test/api_integration/apis/metrics_ui/constants.ts b/x-pack/test/api_integration/apis/metrics_ui/constants.ts
index 7fd25f09875b4..13fd1acf7b199 100644
--- a/x-pack/test/api_integration/apis/metrics_ui/constants.ts
+++ b/x-pack/test/api_integration/apis/metrics_ui/constants.ts
@@ -40,7 +40,7 @@ export const DATES = {
     },
     logs_and_metrics_with_aws: {
       min: 1564083185000,
-      max: 1564083493080,
+      max: 1564083705100,
     },
   },
   'alert-test-data': {

From bb15bb14482ad2ebad232a53678f7be64c1eb7eb Mon Sep 17 00:00:00 2001
From: Lisa Cawley <lcawley@elastic.co>
Date: Wed, 8 Nov 2023 07:12:54 -0800
Subject: [PATCH 015/147] [OAS] Fix cases API data types for comments (#170698)

---
 .../plugins/cases/docs/openapi/bundled.json   | 126 +++++++++++++++++-
 .../plugins/cases/docs/openapi/bundled.yaml   | 102 +++++++++++++-
 .../get_case_observability_response.yaml      |  97 ++++++++++++++
 .../examples/get_case_response.yaml           |   1 +
 .../alert_comment_response_properties.yaml    |  17 ++-
 .../openapi/paths/api@cases@{caseid}.yaml     |   4 +-
 .../paths/s@{spaceid}@api@cases@{caseid}.yaml |   2 +
 7 files changed, 328 insertions(+), 21 deletions(-)
 create mode 100644 x-pack/plugins/cases/docs/openapi/components/examples/get_case_observability_response.yaml

diff --git a/x-pack/plugins/cases/docs/openapi/bundled.json b/x-pack/plugins/cases/docs/openapi/bundled.json
index 80cdefd30e957..54a9c31d34312 100644
--- a/x-pack/plugins/cases/docs/openapi/bundled.json
+++ b/x-pack/plugins/cases/docs/openapi/bundled.json
@@ -1206,8 +1206,11 @@
                   "$ref": "#/components/schemas/case_response_properties"
                 },
                 "examples": {
-                  "getCaseResponse": {
+                  "getDefaultCaseResponse": {
                     "$ref": "#/components/examples/get_case_response"
+                  },
+                  "getDefaultObservabilityCaseReponse": {
+                    "$ref": "#/components/examples/get_case_observability_response"
                   }
                 }
               }
@@ -3078,6 +3081,9 @@
                 "examples": {
                   "getCaseResponse": {
                     "$ref": "#/components/examples/get_case_response"
+                  },
+                  "getObservabilityCaseReponse": {
+                    "$ref": "#/components/examples/get_case_observability_response"
                   }
                 }
               }
@@ -4614,13 +4620,16 @@
         ],
         "properties": {
           "alertId": {
-            "type": "string",
-            "example": "6b24c4dc44bc720cfc92797f3d61fff952f2b2627db1fb4f8cc49f4530c4ff42"
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "a6e12ac4-7bce-457b-84f6-d7ce8deb8446"
+            }
           },
           "created_at": {
             "type": "string",
             "format": "date-time",
-            "example": "2022-03-24T02:31:03.210Z"
+            "example": "2023-11-06T19:29:38.424Z"
           },
           "created_by": {
             "type": "object",
@@ -4656,8 +4665,11 @@
             "example": "73362370-ab1a-11ec-985f-97e55adae8b9"
           },
           "index": {
-            "type": "string",
-            "example": ".internal.alerts-security.alerts-default-000001"
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": ".internal.alerts-security.alerts-default-000001"
+            }
           },
           "owner": {
             "$ref": "#/components/schemas/owners"
@@ -4723,10 +4735,11 @@
           "updated_at": {
             "type": "string",
             "format": "date-time",
-            "example": null
+            "nullable": true
           },
           "updated_by": {
             "type": "object",
+            "nullable": true,
             "required": [
               "email",
               "full_name",
@@ -6971,6 +6984,7 @@
             "syncAlerts": true
           },
           "owner": "cases",
+          "category": null,
           "customFields": [
             {
               "type": "text",
@@ -7017,6 +7031,104 @@
           "external_service": null
         }
       },
+      "get_case_observability_response": {
+        "summary": "Retrieves information about an Observability case including its alerts and comments.",
+        "value": {
+          "description": "An Observability case description.",
+          "owner": "observability",
+          "settings": {
+            "syncAlerts": false
+          },
+          "tags": [
+            "observability",
+            "tag 1"
+          ],
+          "title": "Observability case title 1",
+          "category": null,
+          "customFields": [],
+          "assignees": [
+            {
+              "uid": "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+            }
+          ],
+          "connector": {
+            "id": "none",
+            "type": ".none",
+            "fields": null,
+            "name": "none"
+          },
+          "severity": "low",
+          "status": "in-progress",
+          "duration": null,
+          "closed_at": null,
+          "closed_by": null,
+          "created_at": "2023-11-06T19:29:04.086Z",
+          "created_by": {
+            "username": "elastic",
+            "full_name": null,
+            "email": null
+          },
+          "updated_at": "2023-11-06T19:47:55.662Z",
+          "updated_by": {
+            "username": "elastic",
+            "full_name": null,
+            "email": null,
+            "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+          },
+          "external_service": null,
+          "id": "c3ff7550-def1-4e90-b6bc-c9969a4a09b1",
+          "version": "WzI0NywyXQ==",
+          "totalComment": 1,
+          "totalAlerts": 1,
+          "comments": [
+            {
+              "alertId": [
+                "a6e12ac4-7bce-457b-84f6-d7ce8deb8446"
+              ],
+              "index": [
+                ".internal.alerts-observability.logs.alerts-default-000001"
+              ],
+              "type": "alert",
+              "rule": {
+                "id": "03e4eb87-62ca-4e5d-9570-3d7625e9669d",
+                "name": "Observability rule"
+              },
+              "owner": "observability",
+              "created_at": "2023-11-06T19:29:38.424Z",
+              "created_by": {
+                "email": null,
+                "full_name": null,
+                "username": "elastic",
+                "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+              },
+              "pushed_at": null,
+              "pushed_by": null,
+              "updated_at": null,
+              "updated_by": null,
+              "id": "59d438d0-79a9-4864-8d4b-e63adacebf6e",
+              "version": "WzY3LDJd"
+            },
+            {
+              "comment": "The first comment.",
+              "type": "user",
+              "owner": "observability",
+              "created_at": "2023-11-06T19:29:57.812Z",
+              "created_by": {
+                "email": null,
+                "full_name": null,
+                "username": "elastic",
+                "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+              },
+              "pushed_at": null,
+              "pushed_by": null,
+              "updated_at": null,
+              "updated_by": null,
+              "id": "d99342d3-3aa3-4b80-90ec-a702607604f5",
+              "version": "WzcyLDJd"
+            }
+          ]
+        }
+      },
       "get_case_alerts_response": {
         "summary": "Retrieves all alerts attached to a case",
         "value": [
diff --git a/x-pack/plugins/cases/docs/openapi/bundled.yaml b/x-pack/plugins/cases/docs/openapi/bundled.yaml
index ec5c1db337f29..8347d7d85741b 100644
--- a/x-pack/plugins/cases/docs/openapi/bundled.yaml
+++ b/x-pack/plugins/cases/docs/openapi/bundled.yaml
@@ -811,8 +811,10 @@ paths:
               schema:
                 $ref: '#/components/schemas/case_response_properties'
               examples:
-                getCaseResponse:
+                getDefaultCaseResponse:
                   $ref: '#/components/examples/get_case_response'
+                getDefaultObservabilityCaseReponse:
+                  $ref: '#/components/examples/get_case_observability_response'
         '401':
           description: Authorization information is missing or invalid.
           content:
@@ -2017,6 +2019,8 @@ paths:
               examples:
                 getCaseResponse:
                   $ref: '#/components/examples/get_case_response'
+                getObservabilityCaseReponse:
+                  $ref: '#/components/examples/get_case_observability_response'
         '401':
           description: Authorization information is missing or invalid.
           content:
@@ -3068,12 +3072,14 @@ components:
         - type
       properties:
         alertId:
-          type: string
-          example: 6b24c4dc44bc720cfc92797f3d61fff952f2b2627db1fb4f8cc49f4530c4ff42
+          type: array
+          items:
+            type: string
+            example: a6e12ac4-7bce-457b-84f6-d7ce8deb8446
         created_at:
           type: string
           format: date-time
-          example: '2022-03-24T02:31:03.210Z'
+          example: '2023-11-06T19:29:38.424Z'
         created_by:
           type: object
           required:
@@ -3100,8 +3106,10 @@ components:
           type: string
           example: 73362370-ab1a-11ec-985f-97e55adae8b9
         index:
-          type: string
-          example: .internal.alerts-security.alerts-default-000001
+          type: array
+          items:
+            type: string
+            example: .internal.alerts-security.alerts-default-000001
         owner:
           $ref: '#/components/schemas/owners'
         pushed_at:
@@ -3151,9 +3159,10 @@ components:
         updated_at:
           type: string
           format: date-time
-          example: null
+          nullable: true
         updated_by:
           type: object
+          nullable: true
           required:
             - email
             - full_name
@@ -4769,6 +4778,7 @@ components:
         settings:
           syncAlerts: true
         owner: cases
+        category: null
         customFields:
           - type: text
             key: d312efda-ec2b-42ec-9e2c-84981795c581
@@ -4802,6 +4812,84 @@ components:
           type: .none
           fields: null
         external_service: null
+    get_case_observability_response:
+      summary: Retrieves information about an Observability case including its alerts and comments.
+      value:
+        description: An Observability case description.
+        owner: observability
+        settings:
+          syncAlerts: false
+        tags:
+          - observability
+          - tag 1
+        title: Observability case title 1
+        category: null
+        customFields: []
+        assignees:
+          - uid: u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0
+        connector:
+          id: none
+          type: .none
+          fields: null
+          name: none
+        severity: low
+        status: in-progress
+        duration: null
+        closed_at: null
+        closed_by: null
+        created_at: '2023-11-06T19:29:04.086Z'
+        created_by:
+          username: elastic
+          full_name: null
+          email: null
+        updated_at: '2023-11-06T19:47:55.662Z'
+        updated_by:
+          username: elastic
+          full_name: null
+          email: null
+          profile_uid: u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0
+        external_service: null
+        id: c3ff7550-def1-4e90-b6bc-c9969a4a09b1
+        version: WzI0NywyXQ==
+        totalComment: 1
+        totalAlerts: 1
+        comments:
+          - alertId:
+              - a6e12ac4-7bce-457b-84f6-d7ce8deb8446
+            index:
+              - .internal.alerts-observability.logs.alerts-default-000001
+            type: alert
+            rule:
+              id: 03e4eb87-62ca-4e5d-9570-3d7625e9669d
+              name: Observability rule
+            owner: observability
+            created_at: '2023-11-06T19:29:38.424Z'
+            created_by:
+              email: null
+              full_name: null
+              username: elastic
+              profile_uid: u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0
+            pushed_at: null
+            pushed_by: null
+            updated_at: null
+            updated_by: null
+            id: 59d438d0-79a9-4864-8d4b-e63adacebf6e
+            version: WzY3LDJd
+          - comment: The first comment.
+            type: user
+            owner: observability
+            created_at: '2023-11-06T19:29:57.812Z'
+            created_by:
+              email: null
+              full_name: null
+              username: elastic
+              profile_uid: u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0
+            pushed_at: null
+            pushed_by: null
+            updated_at: null
+            updated_by: null
+            id: d99342d3-3aa3-4b80-90ec-a702607604f5
+            version: WzcyLDJd
     get_case_alerts_response:
       summary: Retrieves all alerts attached to a case
       value:
diff --git a/x-pack/plugins/cases/docs/openapi/components/examples/get_case_observability_response.yaml b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_observability_response.yaml
new file mode 100644
index 0000000000000..49b9aa692a335
--- /dev/null
+++ b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_observability_response.yaml
@@ -0,0 +1,97 @@
+summary: Retrieves information about an Observability case including its alerts and comments.
+value: 
+  {
+  "description": "An Observability case description.",
+  "owner": "observability",
+  "settings": {
+    "syncAlerts": false
+  },
+  "tags": [
+    "observability",
+    "tag 1"
+  ],
+  "title": "Observability case title 1",
+  "category": null,
+  "customFields": [],
+  "assignees": [
+    {
+      "uid": "u_0wpfV1MqYDaXzLtRVY-gLMrddKDEmfz51Fszhj7hWC8_0"
+    }
+  ],
+  "connector": {
+    "id": "none",
+    "type": ".none",
+    "fields": null,
+    "name": "none"
+  },
+  "severity": "low",
+  "status": "in-progress",
+  "duration": null,
+  "closed_at": null,
+  "closed_by": null,
+  "created_at": "2023-11-06T19:29:04.086Z",
+  "created_by": {
+    "username": "elastic",
+    "full_name": null,
+    "email": null
+  },
+  "updated_at": "2023-11-06T19:47:55.662Z",
+  "updated_by": {
+    "username": "elastic",
+    "full_name": null,
+    "email": null,
+    "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+  },
+  "external_service": null,
+  "id": "c3ff7550-def1-4e90-b6bc-c9969a4a09b1",
+  "version": "WzI0NywyXQ==",
+  "totalComment": 1,
+  "totalAlerts": 1,
+  "comments": [
+    {
+      "alertId": [
+        "a6e12ac4-7bce-457b-84f6-d7ce8deb8446"
+      ],
+      "index": [
+        ".internal.alerts-observability.logs.alerts-default-000001"
+      ],
+      "type": "alert",
+      "rule": {
+        "id": "03e4eb87-62ca-4e5d-9570-3d7625e9669d",
+        "name": "Observability rule"
+      },
+      "owner": "observability",
+      "created_at": "2023-11-06T19:29:38.424Z",
+      "created_by": {
+        "email": null,
+        "full_name": null,
+        "username": "elastic",
+        "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+      },
+      "pushed_at": null,
+      "pushed_by": null,
+      "updated_at": null,
+      "updated_by": null,
+      "id": "59d438d0-79a9-4864-8d4b-e63adacebf6e",
+      "version": "WzY3LDJd"
+    },
+    {
+      "comment": "The first comment.",
+      "type": "user",
+      "owner": "observability",
+      "created_at": "2023-11-06T19:29:57.812Z",
+      "created_by": {
+        "email": null,
+        "full_name": null,
+        "username": "elastic",
+        "profile_uid": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
+      },
+      "pushed_at": null,
+      "pushed_by": null,
+      "updated_at": null,
+      "updated_by": null,
+      "id": "d99342d3-3aa3-4b80-90ec-a702607604f5",
+      "version": "WzcyLDJd"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml
index d4fc3db97a169..50dabd2dc8a9b 100644
--- a/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml
+++ b/x-pack/plugins/cases/docs/openapi/components/examples/get_case_response.yaml
@@ -27,6 +27,7 @@ value:
     "tags":["tag 1"],
     "settings":{"syncAlerts":true},
     "owner":"cases",
+    "category":null,
     "customFields": [
       {
         "type": "text",
diff --git a/x-pack/plugins/cases/docs/openapi/components/schemas/alert_comment_response_properties.yaml b/x-pack/plugins/cases/docs/openapi/components/schemas/alert_comment_response_properties.yaml
index aa39aad1381a0..443d9dcc55523 100644
--- a/x-pack/plugins/cases/docs/openapi/components/schemas/alert_comment_response_properties.yaml
+++ b/x-pack/plugins/cases/docs/openapi/components/schemas/alert_comment_response_properties.yaml
@@ -4,12 +4,14 @@ required:
   - type
 properties:
   alertId:
-    type: string
-    example: 6b24c4dc44bc720cfc92797f3d61fff952f2b2627db1fb4f8cc49f4530c4ff42
+    type: array
+    items:
+      type: string
+      example: a6e12ac4-7bce-457b-84f6-d7ce8deb8446
   created_at:
     type: string
     format: date-time
-    example: 2022-03-24T02:31:03.210Z
+    example: 2023-11-06T19:29:38.424Z
   created_by:
     type: object
     required:
@@ -22,8 +24,10 @@ properties:
     type: string
     example: 73362370-ab1a-11ec-985f-97e55adae8b9
   index:
-    type: string
-    example: .internal.alerts-security.alerts-default-000001
+    type: array
+    items:
+      type: string
+      example: .internal.alerts-security.alerts-default-000001
   owner:
     $ref: 'owners.yaml'
   pushed_at:
@@ -52,9 +56,10 @@ properties:
   updated_at:
     type: string
     format: date-time
-    example: null
+    nullable: true
   updated_by:
     type: object
+    nullable: true
     required:
       - email
       - full_name
diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml
index 9629049c9b342..c5b52a52b741f 100644
--- a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml
+++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}.yaml
@@ -18,8 +18,10 @@ get:
           schema:
             $ref: '../components/schemas/case_response_properties.yaml'
           examples:
-            getCaseResponse:
+            getDefaultCaseResponse:
               $ref: '../components/examples/get_case_response.yaml'
+            getDefaultObservabilityCaseReponse:
+              $ref: '../components/examples/get_case_observability_response.yaml'
     '401':
       description: Authorization information is missing or invalid.
       content:
diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml
index 32e3434f15add..aecd3f6394bb7 100644
--- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml
+++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}.yaml
@@ -21,6 +21,8 @@ get:
           examples:
             getCaseResponse:
               $ref: '../components/examples/get_case_response.yaml'
+            getObservabilityCaseReponse:
+              $ref: '../components/examples/get_case_observability_response.yaml'
     '401':
       description: Authorization information is missing or invalid.
       content:

From 5fab32d28fd495f3cefc0e731bbeff851f88e126 Mon Sep 17 00:00:00 2001
From: dkirchan <55240027+dkirchan@users.noreply.github.com>
Date: Wed, 8 Nov 2023 17:29:42 +0200
Subject: [PATCH 016/147] [Security][EDR Workflows Serverless] Introduced the
 EDR Workflows pipeline for serverless (#170843)

## Summary

In this PR I get the folder structure better for the security solution
quality gate pipelines and introducing a new pipeline to be working on
for EDR Workflows.

In this
[kibana-buildkite](https://github.com/elastic/kibana-buildkite/pull/128)
PR you can see the architecture of the pipelines and the necessary
relevant changes for this PR.


### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../{base.yml => security_solution_cypress.yml}             | 6 +++---
 .../edr_workflows/pipeline.sh                               | 5 +++++
 .../mki_security_solution_cypress.sh                        | 0
 .../{ => security_solution_cypress}/pipeline.sh             | 0
 .../{ => security_solution_cypress}/pipeline.ts             | 4 +++-
 5 files changed, 11 insertions(+), 4 deletions(-)
 rename .buildkite/pipelines/security_solution/{base.yml => security_solution_cypress.yml} (79%)
 create mode 100755 .buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh
 rename .buildkite/scripts/pipelines/security_solution_quality_gate/{ => security_solution_cypress}/mki_security_solution_cypress.sh (100%)
 rename .buildkite/scripts/pipelines/security_solution_quality_gate/{ => security_solution_cypress}/pipeline.sh (100%)
 rename .buildkite/scripts/pipelines/security_solution_quality_gate/{ => security_solution_cypress}/pipeline.ts (90%)

diff --git a/.buildkite/pipelines/security_solution/base.yml b/.buildkite/pipelines/security_solution/security_solution_cypress.yml
similarity index 79%
rename from .buildkite/pipelines/security_solution/base.yml
rename to .buildkite/pipelines/security_solution/security_solution_cypress.yml
index 337c44ccdcc7e..247505ef1c85a 100644
--- a/.buildkite/pipelines/security_solution/base.yml
+++ b/.buildkite/pipelines/security_solution/security_solution_cypress.yml
@@ -1,5 +1,5 @@
 steps:
-  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/mki_security_solution_cypress.sh cypress:run:qa:serverless
+  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless
     label: 'Serverless MKI QA Security Cypress Tests'
     agents:
       queue: n2-4-spot
@@ -11,7 +11,7 @@ steps:
         - exit_status: '*'
           limit: 1
 
-  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/mki_security_solution_cypress.sh cypress:run:qa:serverless:explore
+  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:explore
     label: 'Serverless MKI QA Explore - Security Solution Cypress Tests'
     agents:
       queue: n2-4-spot
@@ -23,7 +23,7 @@ steps:
         - exit_status: '*'
           limit: 1
 
-  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/mki_security_solution_cypress.sh cypress:run:qa:serverless:investigations
+  - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:investigations
     label: 'Serverless MKI QA Investigations - Security Solution Cypress Tests'
     agents:
       queue: n2-4-spot
diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh
new file mode 100755
index 0000000000000..807ec48ab48ed
--- /dev/null
+++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+set -euo pipefail
+
+echo "Running the EDR-Workflows testing for Kibana"
\ No newline at end of file
diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/mki_security_solution_cypress.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh
similarity index 100%
rename from .buildkite/scripts/pipelines/security_solution_quality_gate/mki_security_solution_cypress.sh
rename to .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh
diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh
similarity index 100%
rename from .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh
rename to .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh
diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.ts b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts
similarity index 90%
rename from .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.ts
rename to .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts
index 4084696d5c21c..fb9ec67fba888 100644
--- a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.ts
+++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts
@@ -28,7 +28,9 @@ const uploadPipeline = (pipelineContent: string | object) => {
   try {
     const pipeline = [];
 
-    pipeline.push(getPipeline('.buildkite/pipelines/security_solution/base.yml', false));
+    pipeline.push(
+      getPipeline('.buildkite/pipelines/security_solution/security_solution_cypress.yml', false)
+    );
     // remove duplicated steps
     uploadPipeline([...new Set(pipeline)].join('\n'));
   } catch (ex) {

From 71f1dc7bd58ed636a02a707893eb4e07e3e1f35f Mon Sep 17 00:00:00 2001
From: Mark Hopkin <mark.hopkin@elastic.co>
Date: Wed, 8 Nov 2023 15:38:21 +0000
Subject: [PATCH 017/147] [Entity Analytics] Remove nested `message.message`
 property from risk engine API error responses (#170645)

## Summary

**TLDR:** change risk engine API error response bodies from `{ message :
{ message : 'blah', full_error : 'something'}}` to `{ message : 'blah',
full_error : 'something'}`

I noticed a UI bug when the risk engine "init" call returns an error,
this was because the UI was expecting `error.message` to be a string but
it was an object with another nested message property.

This lead me to investigate why this was the case, turns out our error
wrapper was always putting things under a `message` key which in our
case we do not want.

### UI crash before

```
Uncaught Error: Objects are not valid as a React child (found: object with keys {message}). If you meant to render a collection of children, use an array instead.
```
<img width="806" alt="Screenshot 2023-11-06 at 14 02 17"
src="https://github.com/elastic/kibana/assets/3315046/25066a14-dabf-46a0-9741-a81f886f64fb">


### Correct error display after
<img width="1171" alt="Screenshot 2023-11-06 at 13 51 04"
src="https://github.com/elastic/kibana/assets/3315046/af8db564-a119-4fc8-9821-bafcfe19b421">


### Checklist

Delete any items that are not applicable to this PR.

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
---
 .../server/routes/utils/build_siem_response.ts   |  8 ++++++--
 .../components/risk_score_enable_section.tsx     |  8 ++++----
 .../routes/risk_engine_disable_route.test.ts     | 10 ++++------
 .../routes/risk_engine_disable_route.ts          |  7 +++----
 .../routes/risk_engine_enable_route.test.ts      | 10 ++++------
 .../routes/risk_engine_enable_route.ts           |  8 +++-----
 .../risk_engine/routes/risk_engine_init_route.ts |  9 ++++-----
 .../routes/risk_engine_status_route.ts           |  1 +
 .../routes/risk_score_calculation_route.ts       |  1 +
 .../routes/risk_score_preview_route.ts           |  1 +
 .../lib/risk_engine/routes/translations.ts       | 16 ++++++++++++++++
 .../server/lib/risk_engine/types.ts              | 12 ++++--------
 12 files changed, 51 insertions(+), 40 deletions(-)
 create mode 100644 x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts

diff --git a/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts
index 4a5ed5cc4b0e0..d61a02a869d28 100644
--- a/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts
+++ b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts
@@ -49,7 +49,7 @@ export class SiemResponseFactory {
   constructor(private response: KibanaResponseFactory) {}
 
   // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
-  error<T>({ statusCode, body, headers }: CustomHttpResponseOptions<T>) {
+  error<T>({ statusCode, body, headers, bypassErrorFormat }: CustomHttpResponseOptions<T>) {
     // KibanaResponse is not exported so we cannot use a return type here and that is why the linter is turned off above
     const contentType: CustomHttpResponseOptions<T>['headers'] = {
       'content-type': 'application/json',
@@ -59,10 +59,14 @@ export class SiemResponseFactory {
       ...(headers ?? {}),
     };
 
+    const formattedBody = bypassErrorFormat
+      ? body
+      : { message: body ?? statusToErrorMessage(statusCode) };
+
     return this.response.custom({
       body: Buffer.from(
         JSON.stringify({
-          message: body ?? statusToErrorMessage(statusCode),
+          ...formattedBody,
           status_code: statusCode,
         })
       ),
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx
index 0eead8683e4f2..bd0b0e262e3cc 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx
+++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx
@@ -235,11 +235,11 @@ export const RiskScoreEnableSection = () => {
   let initRiskEngineErrors: string[] = [];
 
   if (initRiskEngineMutation.isError) {
-    const errorBody = initRiskEngineMutation.error.body.message;
+    const errorBody = initRiskEngineMutation.error.body;
     if (errorBody?.full_error?.errors) {
       initRiskEngineErrors = errorBody.full_error?.errors;
     } else {
-      initRiskEngineErrors = [errorBody];
+      initRiskEngineErrors = [errorBody.message];
     }
   }
 
@@ -266,10 +266,10 @@ export const RiskScoreEnableSection = () => {
         </EuiTitle>
         {initRiskEngineMutation.isError && <RiskScoreErrorPanel errors={initRiskEngineErrors} />}
         {disableRiskEngineMutation.isError && (
-          <RiskScoreErrorPanel errors={[disableRiskEngineMutation.error.body.message.message]} />
+          <RiskScoreErrorPanel errors={[disableRiskEngineMutation.error.body.message]} />
         )}
         {enableRiskEngineMutation.isError && (
-          <RiskScoreErrorPanel errors={[enableRiskEngineMutation.error.body.message.message]} />
+          <RiskScoreErrorPanel errors={[enableRiskEngineMutation.error.body.message]} />
         )}
 
         <EuiSpacer size="m" />
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts
index e7c162ddd08e8..90a2182fee573 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts
@@ -16,7 +16,7 @@ import {
 } from '../../detection_engine/routes/__mocks__';
 import { riskEngineDataClientMock } from '../risk_engine_data_client.mock';
 
-describe('risk score calculation route', () => {
+describe('risk score disable route', () => {
   let server: ReturnType<typeof serverMock.create>;
   let context: ReturnType<typeof requestContextMock.convertContext>;
   let mockTaskManagerStart: ReturnType<typeof taskManagerMock.createStart>;
@@ -78,7 +78,7 @@ describe('risk score calculation route', () => {
       const response = await server.inject(request, context);
 
       expect(response.status).toEqual(500);
-      expect(response.body.message.message).toEqual('something went wrong');
+      expect(response.body.message).toEqual('something went wrong');
     });
   });
 
@@ -94,10 +94,8 @@ describe('risk score calculation route', () => {
 
       expect(response.status).toEqual(400);
       expect(response.body).toEqual({
-        message: {
-          message:
-            'Task Manager is unavailable, but is required to disable the risk engine. Please enable the taskManager plugin and try again.',
-        },
+        message:
+          'Task Manager is unavailable, but is required by the risk engine. Please enable the taskManager plugin and try again.',
         status_code: 400,
       });
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts
index b5ae6287c40fd..6a2221c4eb2be 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts
@@ -9,6 +9,7 @@ import type { StartServicesAccessor } from '@kbn/core/server';
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
 import { RISK_ENGINE_DISABLE_URL, APP_ID } from '../../../../common/constants';
+import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
 import type { StartPlugins } from '../../../plugin';
 import type { SecuritySolutionPluginRouter } from '../../../types';
 
@@ -34,10 +35,7 @@ export const riskEngineDisableRoute = (
       if (!taskManager) {
         return siemResponse.error({
           statusCode: 400,
-          body: {
-            message:
-              'Task Manager is unavailable, but is required to disable the risk engine. Please enable the taskManager plugin and try again.',
-          },
+          body: TASK_MANAGER_UNAVAILABLE_ERROR,
         });
       }
 
@@ -50,6 +48,7 @@ export const riskEngineDisableRoute = (
         return siemResponse.error({
           statusCode: error.statusCode,
           body: { message: error.message, full_error: JSON.stringify(e) },
+          bypassErrorFormat: true,
         });
       }
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts
index 8ef30ae60e368..b64fd3f025c41 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts
@@ -16,7 +16,7 @@ import {
 } from '../../detection_engine/routes/__mocks__';
 import { riskEngineDataClientMock } from '../risk_engine_data_client.mock';
 
-describe('risk score calculation route', () => {
+describe('risk score enable route', () => {
   let server: ReturnType<typeof serverMock.create>;
   let context: ReturnType<typeof requestContextMock.convertContext>;
   let mockTaskManagerStart: ReturnType<typeof taskManagerMock.createStart>;
@@ -78,7 +78,7 @@ describe('risk score calculation route', () => {
       const response = await server.inject(request, context);
 
       expect(response.status).toEqual(500);
-      expect(response.body.message.message).toEqual('something went wrong');
+      expect(response.body.message).toEqual('something went wrong');
     });
   });
 
@@ -94,10 +94,8 @@ describe('risk score calculation route', () => {
 
       expect(response.status).toEqual(400);
       expect(response.body).toEqual({
-        message: {
-          message:
-            'Task Manager is unavailable, but is required to enable the risk engine. Please enable the taskManager plugin and try again.',
-        },
+        message:
+          'Task Manager is unavailable, but is required by the risk engine. Please enable the taskManager plugin and try again.',
         status_code: 400,
       });
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts
index af5eb77374bba..cd8cb05072ff1 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts
@@ -9,6 +9,7 @@ import type { StartServicesAccessor } from '@kbn/core/server';
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
 import { RISK_ENGINE_ENABLE_URL, APP_ID } from '../../../../common/constants';
+import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
 import type { StartPlugins } from '../../../plugin';
 import type { SecuritySolutionPluginRouter } from '../../../types';
 
@@ -29,14 +30,10 @@ export const riskEngineEnableRoute = (
       const [_, { taskManager }] = await getStartServices();
       const securitySolution = await context.securitySolution;
       const riskEngineClient = securitySolution.getRiskEngineDataClient();
-
       if (!taskManager) {
         return siemResponse.error({
           statusCode: 400,
-          body: {
-            message:
-              'Task Manager is unavailable, but is required to enable the risk engine. Please enable the taskManager plugin and try again.',
-          },
+          body: TASK_MANAGER_UNAVAILABLE_ERROR,
         });
       }
 
@@ -49,6 +46,7 @@ export const riskEngineEnableRoute = (
         return siemResponse.error({
           statusCode: error.statusCode,
           body: { message: error.message, full_error: JSON.stringify(e) },
+          bypassErrorFormat: true,
         });
       }
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts
index 2a0a5fafc70b0..bacd8ba55bcf0 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts
@@ -10,7 +10,7 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
 import { RISK_ENGINE_INIT_URL, APP_ID } from '../../../../common/constants';
 import type { StartPlugins } from '../../../plugin';
-
+import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
 import type { SecuritySolutionPluginRouter } from '../../../types';
 
 export const riskEngineInitRoute = (
@@ -36,10 +36,7 @@ export const riskEngineInitRoute = (
         if (!taskManager) {
           return siemResponse.error({
             statusCode: 400,
-            body: {
-              message:
-                'Task Manager is unavailable, but is required to initialize the risk engine. Please enable the taskManager plugin and try again.',
-            },
+            body: TASK_MANAGER_UNAVAILABLE_ERROR,
           });
         }
 
@@ -67,6 +64,7 @@ export const riskEngineInitRoute = (
               message: initResultResponse.errors.join('\n'),
               full_error: initResultResponse,
             },
+            bypassErrorFormat: true,
           });
         }
         return response.ok({ body: { result: initResultResponse } });
@@ -76,6 +74,7 @@ export const riskEngineInitRoute = (
         return siemResponse.error({
           statusCode: error.statusCode,
           body: { message: error.message, full_error: JSON.stringify(e) },
+          bypassErrorFormat: true,
         });
       }
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts
index d741ee5dd23ff..4d8c9a1547f68 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts
@@ -44,6 +44,7 @@ export const riskEngineStatusRoute = (router: SecuritySolutionPluginRouter) => {
         return siemResponse.error({
           statusCode: error.statusCode,
           body: { message: error.message, full_error: JSON.stringify(e) },
+          bypassErrorFormat: true,
         });
       }
     });
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts
index 1b02c4a10fd25..f9ebd13131562 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts
@@ -89,6 +89,7 @@ export const riskScoreCalculationRoute = (router: SecuritySolutionPluginRouter,
           return siemResponse.error({
             statusCode: error.statusCode,
             body: { message: error.message, full_error: JSON.stringify(e) },
+            bypassErrorFormat: true,
           });
         }
       }
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts
index 9a1a5f2b83d7c..e91a2fa1144bb 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts
@@ -91,6 +91,7 @@ export const riskScorePreviewRoute = (router: SecuritySolutionPluginRouter, logg
           return siemResponse.error({
             statusCode: error.statusCode,
             body: { message: error.message, full_error: JSON.stringify(e) },
+            bypassErrorFormat: true,
           });
         }
       }
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts
new file mode 100644
index 0000000000000..648ec23ea6b3c
--- /dev/null
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { i18n } from '@kbn/i18n';
+
+export const TASK_MANAGER_UNAVAILABLE_ERROR = i18n.translate(
+  'xpack.securitySolution.api.riskEngine.taskManagerUnavailable',
+  {
+    defaultMessage:
+      'Task Manager is unavailable, but is required by the risk engine. Please enable the taskManager plugin and try again.',
+  }
+);
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts
index 1e9751ff1388e..4b6da2b65f553 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts
+++ b/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts
@@ -78,19 +78,15 @@ export interface InitRiskEngineResponse {
 
 export interface InitRiskEngineError {
   body: {
-    message: {
-      message: string;
-      full_error: InitRiskEngineResultResponse | undefined;
-    } & string;
+    message: string;
+    full_error: InitRiskEngineResultResponse | undefined;
   };
 }
 
 export interface EnableDisableRiskEngineErrorResponse {
   body: {
-    message: {
-      message: string;
-      full_error: string;
-    };
+    message: string;
+    full_error: string;
   };
 }
 

From 48ba61554f55af2e995247c693b94dd57df124ba Mon Sep 17 00:00:00 2001
From: Anton Dosov <anton.dosov@elastic.co>
Date: Wed, 8 Nov 2023 16:41:40 +0100
Subject: [PATCH 018/147] Fix the empty space in the project header in some
 cases (#170833)

## Summary

Fixes this empty space issue in some cases:

<img width="1144" alt="Screenshot 2023-11-08 at 10 38 09"
src="https://github.com/elastic/kibana/assets/7784120/eb8a37de-988b-4fd7-a84b-1c93ecbf2b84">


To keep it simple, let's just remove this section from DOM until or if
we need it.
Previously this was used for spaces, but if we support spaces in
serverless they will become part of breadcrumbs anyways
---
 .../core-chrome-browser-internal/src/ui/project/header.tsx    | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx
index 0892b0c363911..30fe35be0b551 100644
--- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx
+++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx
@@ -196,10 +196,6 @@ export const ProjectHeader = ({
                 />
               </EuiHeaderSectionItem>
 
-              <EuiHeaderSectionItem>
-                <HeaderNavControls navControls$={observables.navControlsLeft$} />
-              </EuiHeaderSectionItem>
-
               <EuiHeaderSectionItem>
                 <RedirectAppLinks coreStart={{ application }}>
                   <Breadcrumbs breadcrumbs$={observables.breadcrumbs$} />

From 8912834af3c8d2317889968057cb1a87e18c69b5 Mon Sep 17 00:00:00 2001
From: Carlos Crespo <crespocarlos@users.noreply.github.com>
Date: Wed, 8 Nov 2023 16:59:27 +0100
Subject: [PATCH 019/147] [ObsUX] Fix transaction bar being pushed to the right
 (#170406)

closes https://github.com/elastic/kibana/issues/146869

## Summary

This PR fixes the timeline bar pushed by the children's count label.

<img width="1074" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/603f62aa-24f0-4cb0-9e0f-97361f0020b7">


It also caps the max width of the label, so that large numbers don't
overlap with the transaction bar.

<img width="960" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/0d0acc50-855a-40b8-bdad-280dea982626">


A tooltip will now always appear when hovering over the count,
regardless of how much space it takes

<img width="1074" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/fc8b31dd-8fb0-4afe-ac6c-c3360a1a2363">


### Checklist

- Start Kibana pointing to an oblt-cli cluster
  - Alternatively, point to a local es cluster and use synthtrace:
- `node scripts/synthtrace distributed_trace_long.ts
--target=http://elastic:changeme@localhost:9200 --live
--kibana=http://elastic:changeme@0.0.0.0:5601/ftw --clean `
- Navigate to `APM` > `Traces`

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../waterfall/accordion_waterfall.tsx         | 29 +++++++++++++++----
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/accordion_waterfall.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/accordion_waterfall.tsx
index 1aa7c9ecb127b..f705244d6963e 100644
--- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/accordion_waterfall.tsx
+++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/accordion_waterfall.tsx
@@ -12,11 +12,13 @@ import {
   EuiFlexItem,
   EuiIcon,
   EuiText,
+  EuiToolTip,
 } from '@elastic/eui';
 import { euiStyled } from '@kbn/kibana-react-plugin/common';
 import { groupBy } from 'lodash';
 import { transparentize } from 'polished';
 import React, { useState } from 'react';
+import { asBigNumber } from '../../../../../../../common/utils/formatters';
 import { getCriticalPath } from '../../../../../../../common/critical_path/get_critical_path';
 import { useTheme } from '../../../../../../hooks/use_theme';
 import { Margins } from '../../../../../shared/charts/timeline';
@@ -148,7 +150,7 @@ export function AccordionWaterfall(props: AccordionWaterfallProps) {
             <ToggleAccordionButton
               show={hasToggle}
               isOpen={isOpen}
-              childrenAmount={children.length}
+              childrenCount={children.length}
               onClick={toggleAccordion}
             />
           </EuiFlexItem>
@@ -200,12 +202,12 @@ export function AccordionWaterfall(props: AccordionWaterfallProps) {
 function ToggleAccordionButton({
   show,
   isOpen,
-  childrenAmount,
+  childrenCount,
   onClick,
 }: {
   show: boolean;
   isOpen: boolean;
-  childrenAmount: number;
+  childrenCount: number;
   onClick: () => void;
 }) {
   if (!show) {
@@ -213,7 +215,12 @@ function ToggleAccordionButton({
   }
 
   return (
-    <div style={{ height: ACCORDION_HEIGHT, display: 'flex' }}>
+    <div
+      style={{
+        height: ACCORDION_HEIGHT,
+        display: 'flex',
+      }}
+    >
       <EuiFlexGroup gutterSize="xs" alignItems="center" justifyContent="center">
         <EuiFlexItem grow={false}>
           {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
@@ -226,8 +233,18 @@ function ToggleAccordionButton({
             <EuiIcon type={isOpen ? 'arrowDown' : 'arrowRight'} />
           </div>
         </EuiFlexItem>
-        <EuiFlexItem grow={false}>
-          <EuiText size="xs">{childrenAmount}</EuiText>
+        <EuiFlexItem grow={false} style={{ position: 'relative' }}>
+          <div
+            style={{
+              position: 'absolute',
+              top: '50%',
+              transform: 'translate(0, -50%)',
+            }}
+          >
+            <EuiToolTip content={childrenCount} delay="long">
+              <EuiText size="xs">{asBigNumber(childrenCount)}</EuiText>
+            </EuiToolTip>
+          </div>
         </EuiFlexItem>
       </EuiFlexGroup>
     </div>

From 55d8ea45aca36fa61bb20597b1d5676ecf4d3773 Mon Sep 17 00:00:00 2001
From: dkirchan <55240027+dkirchan@users.noreply.github.com>
Date: Wed, 8 Nov 2023 18:10:33 +0200
Subject: [PATCH 020/147] [Security][Fix] Fixed wrong path file invocation
 error (#170881)

## Summary

An error occured in our pipeline after merging a wrong filepath. This PR
fixes this error defining the correct path.


### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 .../security_solution_cypress/pipeline.sh                       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh
index 3f4b2093b807e..b3d93e083fa41 100755
--- a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh
+++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh
@@ -2,4 +2,4 @@
 
 set -euo pipefail
 
-ts-node .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.ts
+ts-node .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts

From 552e87ba8fe8cef176dd977d695d548a9a476e30 Mon Sep 17 00:00:00 2001
From: Maryam Saeidi <maryam.saeidi@elastic.co>
Date: Wed, 8 Nov 2023 17:12:27 +0100
Subject: [PATCH 021/147] Rename document count aggregation and add default
 filter title (#170845)

Closes #166472

## Summary

Rename document count aggregation and add default filter title.



https://github.com/elastic/kibana/assets/12370520/134b9253-eb09-4613-85c4-b262af062338
---
 .../components/custom_equation/metric_row_with_agg.tsx   | 9 ++++++++-
 .../custom_threshold/components/expression_row.tsx       | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
index 80a379134806c..834cffada60ce 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
@@ -38,6 +38,11 @@ interface MetricRowWithAggProps extends MetricRowBaseProps {
   fields: NormalizedFields;
 }
 
+const DEFAULT_COUNT_FILTER_TITLE = i18n.translate(
+  'xpack.observability.customThreshold.rule.alertFlyout.customEquationEditor.defaultCountFilterTitle',
+  { defaultMessage: 'all documents' }
+);
+
 export function MetricRowWithAgg({
   name,
   aggType = Aggregators.COUNT,
@@ -126,7 +131,9 @@ export function MetricRowWithAgg({
                 <EuiExpression
                   data-test-subj="aggregationName"
                   description={aggregationTypes[aggType].text}
-                  value={aggType === Aggregators.COUNT ? filter : field}
+                  value={
+                    aggType === Aggregators.COUNT ? filter || DEFAULT_COUNT_FILTER_TITLE : field
+                  }
                   isActive={aggTypePopoverOpen}
                   display="columns"
                   onClick={() => {
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
index e508977658c0c..bfb2c2f4c33de 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
@@ -292,7 +292,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
     text: i18n.translate(
       'xpack.observability.customThreshold.rule.alertFlyout.aggregationText.count',
       {
-        defaultMessage: 'Document count',
+        defaultMessage: 'Count',
       }
     ),
     fieldRequired: false,

From c902f90a71b88027b92d339172af8a948a9bb79a Mon Sep 17 00:00:00 2001
From: Drew Tate <drew.tate@elastic.co>
Date: Wed, 8 Nov 2023 10:00:26 -0700
Subject: [PATCH 022/147] [Event annotations] re-enable data view switching
 tests (#170804)

## Summary

Fix https://github.com/elastic/kibana/issues/170578

Flaky test runner:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3936

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../apps/visualize/group3/_annotation_listing.ts          | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/test/functional/apps/visualize/group3/_annotation_listing.ts b/test/functional/apps/visualize/group3/_annotation_listing.ts
index 71489388b54b5..3f361919b0279 100644
--- a/test/functional/apps/visualize/group3/_annotation_listing.ts
+++ b/test/functional/apps/visualize/group3/_annotation_listing.ts
@@ -18,8 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
   const retry = getService('retry');
   const log = getService('log');
 
-  // Failing: See https://github.com/elastic/kibana/issues/170578
-  describe.skip('annotation listing page', function () {
+  describe('annotation listing page', function () {
     before(async function () {
       await kibanaServer.importExport.load(
         'test/functional/fixtures/kbn_archiver/annotation_listing_page_search'
@@ -156,11 +155,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           });
 
           await PageObjects.annotationEditor.saveGroup();
-          await listingTable.clearSearchFilter();
         });
       });
 
       describe('data view switching', () => {
+        before(async () => {
+          await listingTable.clearSearchFilter();
+        });
+
         it('recovers from missing data view', async () => {
           await listingTable.clickItemLink('eventAnnotation', 'missing data view');
 

From 09f4708de40dc7f7609bda34ba75affa6083db3d Mon Sep 17 00:00:00 2001
From: Tim Sullivan <tsullivan@users.noreply.github.com>
Date: Wed, 8 Nov 2023 11:23:19 -0700
Subject: [PATCH 023/147] Functional tests for KibanaErrorBoundary (#170569)

Part of https://github.com/elastic/kibana-team/issues/646

This PR adds an example plugin in `examples/error_boundary` that shows
usage of KibanaErrorBoundary.

The example plugin is used in a functional test to ensure errors are
caught in the appropriate way, and error messages include a working
Refresh button.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .github/CODEOWNERS                            |   1 +
 examples/error_boundary/README.md             |   3 +
 examples/error_boundary/kibana.jsonc          |  14 +++
 examples/error_boundary/public/index.ts       |  12 ++
 examples/error_boundary/public/plugin.tsx     | 111 ++++++++++++++++++
 examples/error_boundary/tsconfig.json         |  22 ++++
 package.json                                  |   1 +
 .../src/ui/error_boundary.test.tsx            |   4 +-
 .../src/ui/message_components.tsx             |  30 +++--
 test/examples/config.js                       |   1 +
 test/examples/error_boundary/index.ts         |  68 +++++++++++
 tsconfig.base.json                            |   2 +
 yarn.lock                                     |   4 +
 13 files changed, 262 insertions(+), 11 deletions(-)
 create mode 100755 examples/error_boundary/README.md
 create mode 100644 examples/error_boundary/kibana.jsonc
 create mode 100755 examples/error_boundary/public/index.ts
 create mode 100755 examples/error_boundary/public/plugin.tsx
 create mode 100644 examples/error_boundary/tsconfig.json
 create mode 100644 test/examples/error_boundary/index.ts

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 94f4285976c2a..72f3f7e7a884f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -353,6 +353,7 @@ 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/enterprise-search-frontend
+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
diff --git a/examples/error_boundary/README.md b/examples/error_boundary/README.md
new file mode 100755
index 0000000000000..3a293c9a7b465
--- /dev/null
+++ b/examples/error_boundary/README.md
@@ -0,0 +1,3 @@
+## Error Boundary Example
+
+A very simple example plugin for testing Kibana Error Boundary.
diff --git a/examples/error_boundary/kibana.jsonc b/examples/error_boundary/kibana.jsonc
new file mode 100644
index 0000000000000..3acabfbb5006c
--- /dev/null
+++ b/examples/error_boundary/kibana.jsonc
@@ -0,0 +1,14 @@
+{
+  "type": "plugin",
+  "id": "@kbn/error-boundary-example-plugin",
+  "owner": "@elastic/appex-sharedux",
+  "description": "A plugin which exemplifes the KibanaErrorBoundary",
+  "plugin": {
+    "id": "error_boundary_example",
+    "server": false,
+    "browser": true,
+    "requiredPlugins": [
+      "developerExamples"
+    ]
+  }
+}
diff --git a/examples/error_boundary/public/index.ts b/examples/error_boundary/public/index.ts
new file mode 100755
index 0000000000000..41d35a8f5bec1
--- /dev/null
+++ b/examples/error_boundary/public/index.ts
@@ -0,0 +1,12 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+import { ErrorBoundaryExamplePlugin } from './plugin';
+
+export function plugin() {
+  return new ErrorBoundaryExamplePlugin();
+}
diff --git a/examples/error_boundary/public/plugin.tsx b/examples/error_boundary/public/plugin.tsx
new file mode 100755
index 0000000000000..2c5d4e7487005
--- /dev/null
+++ b/examples/error_boundary/public/plugin.tsx
@@ -0,0 +1,111 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+import { EuiButton } from '@elastic/eui';
+
+import React, { useState } from 'react';
+import ReactDOM from 'react-dom';
+
+import { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
+import { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public';
+import { KibanaErrorBoundary, KibanaErrorBoundaryProvider } from '@kbn/shared-ux-error-boundary';
+import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template';
+
+interface SetupDeps {
+  developerExamples: DeveloperExamplesSetup;
+}
+
+const useErrors = () => {
+  return useState(false);
+};
+
+export const FatalComponent = () => {
+  const [hasError, setHasError] = useErrors();
+
+  if (hasError) {
+    const fatalError = new Error('Example of unknown error type');
+    throw fatalError;
+  }
+
+  return (
+    <EuiButton
+      onClick={() => {
+        setHasError(true);
+      }}
+      data-test-subj="fatalErrorBtn"
+    >
+      Click for fatal error
+    </EuiButton>
+  );
+};
+
+export const RecoverableComponent = () => {
+  const [hasError, setHasError] = useErrors();
+
+  if (hasError) {
+    // FIXME: use network interception to disable responses
+    // for chunk requests and attempt to lazy-load a component
+    // https://github.com/elastic/kibana/issues/170777
+    const upgradeError = new Error('ChunkLoadError');
+    upgradeError.name = 'ChunkLoadError';
+    throw upgradeError;
+  }
+
+  return (
+    <EuiButton
+      onClick={() => {
+        setHasError(true);
+      }}
+      data-test-subj="recoverableErrorBtn"
+    >
+      Click for recoverable error
+    </EuiButton>
+  );
+};
+
+export class ErrorBoundaryExamplePlugin implements Plugin<void, void, SetupDeps> {
+  public setup(core: CoreSetup, deps: SetupDeps) {
+    // Register an application into the side navigation menu
+    core.application.register({
+      id: 'errorBoundaryExample',
+      title: 'Error Boundary Example',
+      async mount({ element }: AppMountParameters) {
+        ReactDOM.render(
+          <KibanaErrorBoundaryProvider analytics={core.analytics}>
+            <KibanaErrorBoundary>
+              <KibanaPageTemplate>
+                <KibanaPageTemplate.Header
+                  pageTitle="KibanaErrorBoundary example"
+                  data-test-subj="errorBoundaryExampleHeader"
+                />
+                <KibanaPageTemplate.Section grow={false}>
+                  <FatalComponent />
+                </KibanaPageTemplate.Section>
+                <KibanaPageTemplate.Section>
+                  <RecoverableComponent />
+                </KibanaPageTemplate.Section>
+              </KibanaPageTemplate>
+            </KibanaErrorBoundary>
+          </KibanaErrorBoundaryProvider>,
+          element
+        );
+        return () => ReactDOM.unmountComponentAtNode(element);
+      },
+    });
+
+    // This section is only needed to get this example plugin to show up in our Developer Examples.
+    deps.developerExamples.register({
+      appId: 'errorBoundaryExample',
+      title: 'Error Boundary Example Application',
+      description: `Build a plugin that registers an application that simply says "Error Boundary Example"`,
+    });
+  }
+  public start(_core: CoreStart) {
+    return {};
+  }
+  public stop() {}
+}
diff --git a/examples/error_boundary/tsconfig.json b/examples/error_boundary/tsconfig.json
new file mode 100644
index 0000000000000..2df5023cbdadb
--- /dev/null
+++ b/examples/error_boundary/tsconfig.json
@@ -0,0 +1,22 @@
+{
+  "extends": "../../tsconfig.base.json",
+  "compilerOptions": {
+    "outDir": "target/types"
+  },
+  "include": [
+    "index.ts",
+    "common/**/*.ts",
+    "public/**/*.ts",
+    "public/**/*.tsx",
+    "../../typings/**/*"
+  ],
+  "exclude": [
+    "target/**/*"
+  ],
+  "kbn_references": [
+    "@kbn/core",
+    "@kbn/developer-examples-plugin",
+    "@kbn/shared-ux-error-boundary",
+    "@kbn/shared-ux-page-kibana-template"
+  ]
+}
diff --git a/package.json b/package.json
index 869529d6836a9..4e4c2441fe9fc 100644
--- a/package.json
+++ b/package.json
@@ -398,6 +398,7 @@
     "@kbn/embedded-lens-example-plugin": "link:x-pack/examples/embedded_lens_example",
     "@kbn/encrypted-saved-objects-plugin": "link:x-pack/plugins/encrypted_saved_objects",
     "@kbn/enterprise-search-plugin": "link:x-pack/plugins/enterprise_search",
+    "@kbn/error-boundary-example-plugin": "link:examples/error_boundary",
     "@kbn/es-errors": "link:packages/kbn-es-errors",
     "@kbn/es-query": "link:packages/kbn-es-query",
     "@kbn/es-types": "link:packages/kbn-es-types",
diff --git a/packages/shared-ux/error_boundary/src/ui/error_boundary.test.tsx b/packages/shared-ux/error_boundary/src/ui/error_boundary.test.tsx
index ed5d4a60534c0..05a69a7ccab9e 100644
--- a/packages/shared-ux/error_boundary/src/ui/error_boundary.test.tsx
+++ b/packages/shared-ux/error_boundary/src/ui/error_boundary.test.tsx
@@ -49,7 +49,7 @@ describe('<KibanaErrorBoundary>', () => {
     expect(await findByText(strings.recoverable.callout.title())).toBeVisible();
     expect(await findByText(strings.recoverable.callout.pageReloadButton())).toBeVisible();
 
-    (await findByTestId('recoverablePromptReloadBtn')).click();
+    (await findByTestId('errorBoundaryRecoverablePromptReloadBtn')).click();
 
     expect(reloadSpy).toHaveBeenCalledTimes(1);
   });
@@ -69,7 +69,7 @@ describe('<KibanaErrorBoundary>', () => {
     expect(await findByText(strings.fatal.callout.showDetailsButton())).toBeVisible();
     expect(await findByText(strings.fatal.callout.pageReloadButton())).toBeVisible();
 
-    (await findByTestId('fatalPromptReloadBtn')).click();
+    (await findByTestId('errorBoundaryFatalPromptReloadBtn')).click();
 
     expect(reloadSpy).toHaveBeenCalledTimes(1);
   });
diff --git a/packages/shared-ux/error_boundary/src/ui/message_components.tsx b/packages/shared-ux/error_boundary/src/ui/message_components.tsx
index 6e481cb5d8216..1e44fa68141bc 100644
--- a/packages/shared-ux/error_boundary/src/ui/message_components.tsx
+++ b/packages/shared-ux/error_boundary/src/ui/message_components.tsx
@@ -55,7 +55,7 @@ const CodePanel: React.FC<ErrorCalloutProps & { onClose: () => void }> = (props)
         </EuiPanel>
       </EuiFlyoutHeader>
       <EuiFlyoutBody>
-        <EuiCodeBlock>
+        <EuiCodeBlock data-test-subj="errorBoundaryFatalDetailsErrorString">
           <p>{(error.stack ?? error.toString()) + '\n\n'}</p>
           <p>
             {errorName}
@@ -93,25 +93,29 @@ export const FatalPrompt: React.FC<ErrorCalloutProps> = (props) => {
 
   return (
     <EuiEmptyPrompt
-      title={<h2>{strings.fatal.callout.title()}</h2>}
+      title={<h2 data-test-subj="errorBoundaryFatalHeader">{strings.fatal.callout.title()}</h2>}
       color="danger"
       iconType="error"
       body={
         <>
-          <p>{strings.fatal.callout.body()}</p>
+          <p data-test-subj="errorBoundaryFatalPromptBody">{strings.fatal.callout.body()}</p>
           <p>
             <EuiButton
               color="danger"
               iconType="refresh"
               fill={true}
               onClick={onClickRefresh}
-              data-test-subj="fatalPromptReloadBtn"
+              data-test-subj="errorBoundaryFatalPromptReloadBtn"
             >
               {strings.fatal.callout.pageReloadButton()}
             </EuiButton>
           </p>
           <p>
-            <EuiLink color="danger" onClick={() => setIsFlyoutVisible(true)}>
+            <EuiLink
+              color="danger"
+              onClick={() => setIsFlyoutVisible(true)}
+              data-test-subj="errorBoundaryFatalShowDetailsBtn"
+            >
               {strings.fatal.callout.showDetailsButton()}
             </EuiLink>
             {isFlyoutVisible ? (
@@ -128,17 +132,25 @@ export const RecoverablePrompt = (props: ErrorCalloutProps) => {
   const { onClickRefresh } = props;
   return (
     <EuiEmptyPrompt
-      iconType="warning"
-      title={<h2>{strings.recoverable.callout.title()}</h2>}
-      body={<p>{strings.recoverable.callout.body()}</p>}
+      title={
+        <h2 data-test-subj="errorBoundaryRecoverableHeader">
+          {strings.recoverable.callout.title()}
+        </h2>
+      }
       color="warning"
+      iconType="warning"
+      body={
+        <p data-test-subj="errorBoundaryRecoverablePromptBody">
+          {strings.recoverable.callout.body()}
+        </p>
+      }
       actions={
         <EuiButton
           color="warning"
           iconType="refresh"
           fill={true}
           onClick={onClickRefresh}
-          data-test-subj="recoverablePromptReloadBtn"
+          data-test-subj="errorBoundaryRecoverablePromptReloadBtn"
         >
           {strings.recoverable.callout.pageReloadButton()}
         </EuiButton>
diff --git a/test/examples/config.js b/test/examples/config.js
index 36f4a007b7983..dbc9d32055cc7 100644
--- a/test/examples/config.js
+++ b/test/examples/config.js
@@ -31,6 +31,7 @@ export default async function ({ readConfigFile }) {
       require.resolve('./content_management'),
       require.resolve('./unified_field_list_examples'),
       require.resolve('./discover_customization_examples'),
+      require.resolve('./error_boundary'),
     ],
     services: {
       ...functionalConfig.get('services'),
diff --git a/test/examples/error_boundary/index.ts b/test/examples/error_boundary/index.ts
new file mode 100644
index 0000000000000..f240ebd1442b2
--- /dev/null
+++ b/test/examples/error_boundary/index.ts
@@ -0,0 +1,68 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import expect from '@kbn/expect';
+import { FtrProviderContext } from '../../functional/ftr_provider_context';
+
+// eslint-disable-next-line import/no-default-export
+export default function ({ getService, getPageObjects }: FtrProviderContext) {
+  const retry = getService('retry');
+  const testSubjects = getService('testSubjects');
+  const PageObjects = getPageObjects(['common']);
+  const log = getService('log');
+
+  describe('Error Boundary Examples', () => {
+    before(async () => {
+      await PageObjects.common.navigateToApp('errorBoundaryExample');
+      await testSubjects.existOrFail('errorBoundaryExampleHeader');
+    });
+
+    it('fatal error', async () => {
+      log.debug('clicking button for fatal error');
+      await testSubjects.click('fatalErrorBtn');
+      const errorHeader = await testSubjects.getVisibleText('errorBoundaryFatalHeader');
+      expect(errorHeader).to.not.be(undefined);
+
+      log.debug('checking that the error has taken over the page');
+      await testSubjects.missingOrFail('errorBoundaryExampleHeader');
+
+      await testSubjects.click('errorBoundaryFatalShowDetailsBtn');
+      const errorString = await testSubjects.getVisibleText('errorBoundaryFatalDetailsErrorString');
+      expect(errorString).to.match(/Error: Example of unknown error type/);
+
+      log.debug('closing error flyout');
+      await testSubjects.click('euiFlyoutCloseButton');
+
+      log.debug('clicking page refresh');
+      await testSubjects.click('errorBoundaryFatalPromptReloadBtn');
+
+      await retry.try(async () => {
+        log.debug('checking for page refresh');
+        await testSubjects.existOrFail('errorBoundaryExampleHeader');
+      });
+    });
+
+    it('recoverable error', async () => {
+      log.debug('clicking button for recoverable error');
+      await testSubjects.click('recoverableErrorBtn');
+      const errorHeader = await testSubjects.getVisibleText('errorBoundaryRecoverableHeader');
+      expect(errorHeader).to.not.be(undefined);
+
+      log.debug('checking that the error has taken over the page');
+      await testSubjects.missingOrFail('errorBoundaryExampleHeader');
+
+      log.debug('clicking page refresh');
+      await testSubjects.click('errorBoundaryRecoverablePromptReloadBtn');
+
+      await retry.try(async () => {
+        log.debug('checking for page refresh');
+        await testSubjects.existOrFail('errorBoundaryExampleHeader');
+      });
+    });
+  });
+}
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 107b8e1f6ff46..40b1ede664328 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -700,6 +700,8 @@
       "@kbn/encrypted-saved-objects-plugin/*": ["x-pack/plugins/encrypted_saved_objects/*"],
       "@kbn/enterprise-search-plugin": ["x-pack/plugins/enterprise_search"],
       "@kbn/enterprise-search-plugin/*": ["x-pack/plugins/enterprise_search/*"],
+      "@kbn/error-boundary-example-plugin": ["examples/error_boundary"],
+      "@kbn/error-boundary-example-plugin/*": ["examples/error_boundary/*"],
       "@kbn/es": ["packages/kbn-es"],
       "@kbn/es/*": ["packages/kbn-es/*"],
       "@kbn/es-archiver": ["packages/kbn-es-archiver"],
diff --git a/yarn.lock b/yarn.lock
index 813e52bcf4912..68faac71450cc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4304,6 +4304,10 @@
   version "0.0.0"
   uid ""
 
+"@kbn/error-boundary-example-plugin@link:examples/error_boundary":
+  version "0.0.0"
+  uid ""
+
 "@kbn/es-archiver@link:packages/kbn-es-archiver":
   version "0.0.0"
   uid ""

From d95426af357f83f93db605bae127e8b7f67e8c1a Mon Sep 17 00:00:00 2001
From: Josh Mock <josh@joshmock.com>
Date: Wed, 8 Nov 2023 12:29:04 -0600
Subject: [PATCH 024/147] Update references to serverless npm package (#170176)

Updates serverless JS client install snippets. And some whitespace, for
good measure.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../components/languages/javascript.ts        | 69 ++++++++++---------
 1 file changed, 36 insertions(+), 33 deletions(-)

diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts b/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts
index 1302bebff7137..72d865f1030bc 100644
--- a/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts
+++ b/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts
@@ -20,12 +20,15 @@ const searchResult = await client.search({
 
 console.log(searchResult.hits.hits)
 `,
-  configureClient: ({ url, apiKey }) => `const { Client } = require('@elastic/elasticsearch');
+  configureClient: ({
+    url,
+    apiKey,
+  }) => `const { Client } = require('@elastic/elasticsearch-serverless');
 const client = new Client({
-node: '${url}',
-auth: {
+  node: '${url}',
+  auth: {
     apiKey: '${apiKey}'
-}
+  }
 });`,
   docLink: docLinks.jsClient,
   github: {
@@ -44,34 +47,34 @@ const dataset = [
   {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227},
   {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268},
   {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}
-  ];
+];
 
 // Index with the bulk helper
 const result = await client.helpers.bulk({
-datasource: dataset,
-onDocument (doc) {
-  return { index: { _index: 'my-index-name' }};
-}
+  datasource: dataset,
+  onDocument (doc) {
+    return { index: { _index: 'my-index-name' }};
+  }
 });
 
 console.log(result);
 /**
 {
-total: 6,
-failed: 0,
-retry: 0,
-successful: 6,
-noop: 0,
-time: 191,
-bytes: 787,
-aborted: false
+  total: 6,
+  failed: 0,
+  retry: 0,
+  successful: 6,
+  noop: 0,
+  time: 191,
+  bytes: 787,
+  aborted: false
 }
 */`,
   ingestDataIndex: ({
     apiKey,
     url,
     indexName,
-  }) => `const { Client } = require('@elastic/elasticsearch');
+  }) => `const { Client } = require('@elastic/elasticsearch-serverless');
 const client = new Client({
   node: '${url}',
   auth: {
@@ -91,7 +94,7 @@ const result = await client.helpers.bulk({
 });
 console.log(result);
 `,
-  installClient: 'npm install @elastic/elasticsearch@8',
+  installClient: 'npm install @elastic/elasticsearch-serverless',
   name: i18n.translate('xpack.serverlessSearch.languages.javascript', {
     defaultMessage: 'JavaScript',
   }),
@@ -100,20 +103,20 @@ console.log(result);
 console.log(resp);
 /**
 {
-name: 'instance-0000000000',
-cluster_name: 'd9dcd35d12fe46dfaa28ec813f65d57b',
-cluster_uuid: 'iln8jaivThSezhTkzp0Knw',
-version: {
-  build_flavor: 'default',
-  build_type: 'docker',
-  build_hash: 'c94b4700cda13820dad5aa74fae6db185ca5c304',
-  build_date: '2022-10-24T16:54:16.433628434Z',
-  build_snapshot: false,
-  lucene_version: '9.4.1',
-  minimum_wire_compatibility_version: '7.17.0',
-  minimum_index_compatibility_version: '7.0.0'
-},
-tagline: 'You Know, for Search'
+  name: 'instance-0000000000',
+  cluster_name: 'd9dcd35d12fe46dfaa28ec813f65d57b',
+  cluster_uuid: 'iln8jaivThSezhTkzp0Knw',
+  version: {
+    build_flavor: 'default',
+    build_type: 'docker',
+    build_hash: 'c94b4700cda13820dad5aa74fae6db185ca5c304',
+    build_date: '2022-10-24T16:54:16.433628434Z',
+    build_snapshot: false,
+    lucene_version: '9.4.1',
+    minimum_wire_compatibility_version: '7.17.0',
+    minimum_index_compatibility_version: '7.0.0'
+  },
+  tagline: 'You Know, for Search'
 }
 */`,
 };

From 2f038e1ba7c82e737ef66a3acd095ef5c7f0ddc3 Mon Sep 17 00:00:00 2001
From: Tim Sullivan <tsullivan@users.noreply.github.com>
Date: Wed, 8 Nov 2023 11:41:07 -0700
Subject: [PATCH 025/147] [Serverless/Reporting] use 3m reporting poll interval
 for report job cleanup (#170787)

Monitoring of task consumption has shown the `reports:monitor` task
takes an aggressively high amount of cycles from Kibana Task Manager.
This impacts the throughput of alerts.

This first step is a serverless-only config change to give an immediate
increase in overall task throughput.

It's safe to lower this polling frequency: **the impact is limited to
the responsiveness of retries** when a report job is found to be timed
out. Long-term, the plan will be to tune other parts of the code:
https://github.com/elastic/kibana/issues/170462

## Testing
1. Adjust the Dev mode settings to match a value set in production. Add
this to `config/kibana.dev.yml`:
    ```
xpack.reporting.capture.maxAttempts: 3 # usually in Dev mode, this is
set to 1
    ```

2. Start the scripts in different terminal windows to run Elasticsearch
and Kibana dev servers
    ```
    yarn es serverless
    ---------------
    yarn serverless
    ```
3. Open a search in Discover that covers about 4,000 hits and request a
CSV export using the Share menu.
4. Monitor the Kibana server logs and wait until the background job
begins. Restart the server while the job is executing (saving a file in
code under `packages/` or `server/` will trigger a restart).
5. Around 3 minutes after restart, the report job will get a re-attempt

Compare this behavior vs in non-serverless, where a report job will get
a re-attempt around 3 seconds after restart.
---
 config/serverless.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/serverless.yml b/config/serverless.yml
index e830bb33e6fa9..a6aba80736f2d 100644
--- a/config/serverless.yml
+++ b/config/serverless.yml
@@ -146,6 +146,7 @@ xpack.task_manager.requeue_invalid_tasks.enabled: true
 
 # Reporting feature
 xpack.screenshotting.enabled: false
+xpack.reporting.queue.pollInterval: 3m
 xpack.reporting.roles.enabled: false
 xpack.reporting.statefulSettings.enabled: false
 

From ed9956daea8304c53f701c93e93bfba24807b3a5 Mon Sep 17 00:00:00 2001
From: Ryland Herrick <ryalnd@gmail.com>
Date: Wed, 8 Nov 2023 13:10:11 -0600
Subject: [PATCH 026/147] [Entity Analytics]Integration test cleanup (#168869)

## Summary

Followup to some recent work to improve test reliability (namely
https://github.com/elastic/kibana/pull/168469):

* Consolidates teardown of risk engine artifacts into a single helper
function
* Removes references to flaky test issues in comments
* Log utils errors at the warning level
---
 .../risk_engine/init_and_status_apis.ts       | 33 +++----------------
 .../risk_scoring_task_execution.ts            | 15 ++-------
 .../group10/risk_engine/telemetry_usage.ts    | 16 ++-------
 .../group10/risk_engine/utils.ts              | 26 ++++++++++++---
 4 files changed, 33 insertions(+), 57 deletions(-)

diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
index 480ebd9d9c845..ecf413fcfed70 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
@@ -9,17 +9,14 @@ import expect from '@kbn/expect';
 import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/risk_engine/saved_object';
 import { FtrProviderContext } from '../../../common/ftr_provider_context';
 import {
-  cleanRiskEngineConfig,
   legacyTransformIds,
   createLegacyTransforms,
   clearLegacyTransforms,
   riskEngineRouteHelpersFactory,
-  clearTransforms,
   installLegacyRiskScore,
   getLegacyRiskScoreDashboards,
   clearLegacyDashboards,
-  deleteRiskEngineTask,
-  deleteAllRiskScores,
+  cleanRiskEngine,
 } from './utils';
 
 // eslint-disable-next-line import/no-default-export
@@ -32,35 +29,15 @@ export default ({ getService }: FtrProviderContext) => {
 
   describe('Risk Engine', () => {
     beforeEach(async () => {
-      await cleanRiskEngineConfig({ kibanaServer });
-      await deleteRiskEngineTask({ es, log });
-      await deleteAllRiskScores(log, es);
-      await clearTransforms({
-        es,
-        log,
-      });
+      await cleanRiskEngine({ kibanaServer, es, log });
     });
 
     afterEach(async () => {
-      await cleanRiskEngineConfig({
-        kibanaServer,
-      });
-      await clearLegacyTransforms({
-        es,
-        log,
-      });
-      await clearTransforms({
-        es,
-        log,
-      });
-      await clearLegacyDashboards({
-        supertest,
-        log,
-      });
-      await deleteRiskEngineTask({ es, log });
+      await cleanRiskEngine({ kibanaServer, es, log });
+      await clearLegacyTransforms({ es, log });
+      await clearLegacyDashboards({ supertest, log });
     });
 
-    // FLAKY: https://github.com/elastic/kibana/issues/168376
     describe('init api', () => {
       it('should return response with success status', async () => {
         const response = await riskEngineRoutes.init();
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts
index 6a95d236a9d0a..4985bede5dd6f 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts
@@ -13,18 +13,15 @@ import { dataGeneratorFactory } from '../../../utils/data_generator';
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
-  deleteRiskEngineTask,
-  deleteAllRiskScores,
   readRiskScores,
   waitForRiskScoresToBePresent,
   normalizeScores,
   riskEngineRouteHelpersFactory,
   updateRiskEngineConfigSO,
   getRiskEngineTask,
-  cleanRiskEngineConfig,
   waitForRiskEngineTaskToBeGone,
   deleteRiskScoreIndices,
-  clearTransforms,
+  cleanRiskEngine,
 } from './utils';
 
 // eslint-disable-next-line import/no-default-export
@@ -57,21 +54,15 @@ export default ({ getService }: FtrProviderContext): void => {
       });
 
       beforeEach(async () => {
-        await cleanRiskEngineConfig({ kibanaServer });
-        await deleteRiskEngineTask({ es, log });
-        await deleteAllRiskScores(log, es);
+        await cleanRiskEngine({ kibanaServer, es, log });
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
-        await clearTransforms({ es, log });
       });
 
       afterEach(async () => {
-        await cleanRiskEngineConfig({ kibanaServer });
-        await deleteRiskEngineTask({ es, log });
-        await deleteAllRiskScores(log, es);
+        await cleanRiskEngine({ kibanaServer, es, log });
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
-        await clearTransforms({ es, log });
       });
 
       describe('with some alerts containing hosts', () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts
index 2e7888fe00591..75e91eb1a6fc4 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts
@@ -12,12 +12,9 @@ import { deleteAllRules, deleteAllAlerts, getRiskEngineStats } from '../../../ut
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
-  deleteRiskEngineTask,
-  deleteRiskScoreIndices,
   waitForRiskScoresToBePresent,
   riskEngineRouteHelpersFactory,
-  cleanRiskEngineConfig,
-  clearTransforms,
+  cleanRiskEngine,
 } from './utils';
 import { dataGeneratorFactory } from '../../../utils/data_generator';
 
@@ -49,12 +46,9 @@ export default ({ getService }: FtrProviderContext) => {
     });
 
     beforeEach(async () => {
-      await cleanRiskEngineConfig({ kibanaServer });
-      await deleteRiskEngineTask({ es, log });
-      await deleteRiskScoreIndices({ log, es });
+      await cleanRiskEngine({ kibanaServer, es, log });
       await deleteAllAlerts(supertest, log, es);
       await deleteAllRules(supertest, log);
-      await clearTransforms({ es, log });
     });
 
     describe('Risk engine not enabled', () => {
@@ -67,7 +61,6 @@ export default ({ getService }: FtrProviderContext) => {
       });
     });
 
-    // FLAKY: https://github.com/elastic/kibana/issues/168429
     describe('Risk engine enabled', () => {
       let hostId: string;
       let userId: string;
@@ -105,12 +98,9 @@ export default ({ getService }: FtrProviderContext) => {
       });
 
       afterEach(async () => {
-        await cleanRiskEngineConfig({ kibanaServer });
-        await deleteRiskEngineTask({ es, log });
-        await deleteRiskScoreIndices({ log, es });
+        await cleanRiskEngine({ kibanaServer, es, log });
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
-        await clearTransforms({ es, log });
       });
 
       it('should return riskEngineMetrics with expected values', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
index 7af59dfab7cf8..3911f55d01631 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
@@ -119,7 +119,7 @@ export const deleteRiskScoreIndices = async ({
       }),
     ]);
   } catch (e) {
-    log.error(`Error deleting risk score indices: ${e.message}`);
+    log.warning(`Error deleting risk score indices: ${e.message}`);
   }
 };
 
@@ -302,6 +302,24 @@ export const cleanRiskEngineConfig = async ({
   }
 };
 
+/**
+ * General helper for cleaning up risk engine artifacts. This should be used before and after any risk engine tests so as not to pollute the test environment.
+ */
+export const cleanRiskEngine = async ({
+  es,
+  kibanaServer,
+  log,
+}: {
+  es: Client;
+  kibanaServer: KbnClient;
+  log: ToolingLog;
+}): Promise<void> => {
+  await deleteRiskEngineTask({ es, log });
+  await cleanRiskEngineConfig({ kibanaServer });
+  await clearTransforms({ es, log });
+  await deleteRiskScoreIndices({ log, es });
+};
+
 export const updateRiskEngineConfigSO = async ({
   attributes,
   kibanaServer,
@@ -344,7 +362,7 @@ export const clearTransforms = async ({
       force: true,
     });
   } catch (e) {
-    log.error(`Error deleting risk_score_latest_transform_default: ${e.message}`);
+    log.warning(`Error deleting risk_score_latest_transform_default: ${e.message}`);
   }
 };
 
@@ -364,7 +382,7 @@ export const clearLegacyTransforms = async ({
   try {
     await Promise.all(transforms);
   } catch (e) {
-    log.error(`Error deleting legacy transforms: ${e.message}`);
+    log.warning(`Error deleting legacy transforms: ${e.message}`);
   }
 };
 
@@ -392,7 +410,7 @@ export const clearLegacyDashboards = async ({
       .send()
       .expect(200);
   } catch (e) {
-    log.error(`Error deleting legacy dashboards: ${e.message}`);
+    log.warning(`Error deleting legacy dashboards: ${e.message}`);
   }
 };
 

From d644c7085a2efec54073e60c9d3f06686f54fc53 Mon Sep 17 00:00:00 2001
From: Ievgen Sorokopud <ievgen.sorokopud@elastic.co>
Date: Wed, 8 Nov 2023 22:16:23 +0100
Subject: [PATCH 027/147] [Security Solution] Unfriendly error message when
 creating an invalid exception (#168213) (#170764)

## Summary

Addresses https://github.com/elastic/kibana/issues/168213

With this PR we limit the length of the comments in exceptions to 30K
characters. We took same approach as used in Cases. User will not be
allowed to create/edit exception with the comment longer than 30K and
validation error will be shown.

Right now if user tries to add a very long comment (above 32K
characters) the server throws an exception due to the length limitation
of the `keyword` type.

After the fix, user will see a validation error on putting very long
text as a comment

<img width="1294" alt="Screenshot 2023-11-07 at 16 47 10"
src="https://github.com/elastic/kibana/assets/2700761/16c284a8-ab63-45d7-80dd-e50f48a3f5e2">
---
 .../security_solution/common/constants.ts     |  5 ++
 .../add_exception_flyout/index.test.tsx       | 44 +++++++++++++-
 .../components/add_exception_flyout/index.tsx | 14 +++++
 .../add_exception_flyout/reducer.ts           | 15 +++++
 .../edit_exception_flyout/index.test.tsx      | 58 ++++++++++++++++++-
 .../edit_exception_flyout/index.tsx           | 24 +++++++-
 .../edit_exception_flyout/reducer.ts          | 13 +++++
 .../components/item_comments/index.test.tsx   | 50 ++++++++++++++++
 .../components/item_comments/index.tsx        | 35 ++++++++---
 .../components/item_comments/translations.ts  |  7 +++
 .../view/components/form.test.tsx             | 32 ++++++++++
 .../event_filters/view/components/form.tsx    |  5 +-
 .../manage_exceptions.cy.ts                   | 27 +++------
 .../cypress/tasks/exceptions.ts               |  3 +-
 14 files changed, 300 insertions(+), 32 deletions(-)

diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts
index c6edaf898f67f..a7460bcd70345 100644
--- a/x-pack/plugins/security_solution/common/constants.ts
+++ b/x-pack/plugins/security_solution/common/constants.ts
@@ -505,3 +505,8 @@ export const DEFAULT_ALERT_TAGS_VALUE = [
   i18n.FALSE_POSITIVE,
   i18n.FURTHER_INVESTIGATION_REQUIRED,
 ] as const;
+
+/**
+ * Max length for the comments within security solution
+ */
+export const MAX_COMMENT_LENGTH = 30000 as const;
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx
index 573419676a086..63b0490b91e60 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx
@@ -8,7 +8,7 @@
 import React from 'react';
 import type { ReactWrapper } from 'enzyme';
 import { mount, shallow } from 'enzyme';
-import { waitFor, render } from '@testing-library/react';
+import { act, fireEvent, render, waitFor } from '@testing-library/react';
 
 import { getExceptionListSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_schema.mock';
 import { getExceptionBuilderComponentLazy } from '@kbn/lists-plugin/public';
@@ -35,6 +35,7 @@ import {
 import type { AlertData } from '../../utils/types';
 import { useFindRules } from '../../../rule_management/logic/use_find_rules';
 import { useFindExceptionListReferences } from '../../logic/use_find_references';
+import { MAX_COMMENT_LENGTH } from '../../../../../common/constants';
 
 jest.mock('../../../../detections/containers/detection_engine/alerts/use_signal_index');
 jest.mock('../../../../common/lib/kibana');
@@ -1305,5 +1306,46 @@ describe('When the add exception modal is opened', () => {
         wrapper.find('button[data-test-subj="addExceptionConfirmButton"]').getDOMNode()
       ).toBeDisabled();
     });
+
+    test('when there is a comment error has submit button disabled', async () => {
+      const { getByLabelText, queryByText, getByTestId } = render(
+        <TestProviders>
+          <AddExceptionFlyout
+            rules={[
+              {
+                ...getRulesEqlSchemaMock(),
+                query:
+                  'sequence [process where process.name = "test.exe"] [process where process.name = "explorer.exe"]',
+              } as Rule,
+            ]}
+            isBulkAction={false}
+            alertData={alertDataMock}
+            isAlertDataLoading={false}
+            alertStatus="open"
+            isEndpointItem={false}
+            showAlertCloseOptions
+            onCancel={jest.fn()}
+            onConfirm={jest.fn()}
+          />
+        </TestProviders>
+      );
+
+      const commentInput = getByLabelText('Comment Input');
+
+      const commentErrorMessage = `The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH} characters.`;
+      expect(queryByText(commentErrorMessage)).toBeNull();
+
+      // Put comment with the length above maximum allowed
+      act(() => {
+        fireEvent.change(commentInput, {
+          target: {
+            value: [...new Array(MAX_COMMENT_LENGTH + 1).keys()].map((_) => 'a').join(''),
+          },
+        });
+        fireEvent.blur(commentInput);
+      });
+      expect(queryByText(commentErrorMessage)).not.toBeNull();
+      expect(getByTestId('addExceptionConfirmButton')).toBeDisabled();
+    });
   });
 });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx
index d4108c3eddede..9eefb96be62c9 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx
@@ -157,6 +157,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({
       selectedRulesToAddTo,
       exceptionListsToAddTo,
       newComment,
+      commentErrorExists,
       itemConditionValidationErrorExists,
       errorSubmitting,
       expireTime,
@@ -267,6 +268,16 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({
     [dispatch]
   );
 
+  const setCommentError = useCallback(
+    (errorExists: boolean): void => {
+      dispatch({
+        type: 'setCommentError',
+        errorExists,
+      });
+    },
+    [dispatch]
+  );
+
   const setBulkCloseIndex = useCallback(
     (index: string[] | undefined): void => {
       dispatch({
@@ -445,6 +456,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({
       exceptionItemName.trim() === '' ||
       exceptionItems.every((item) => item.entries.length === 0) ||
       itemConditionValidationErrorExists ||
+      commentErrorExists ||
       expireErrorExists ||
       (addExceptionToRadioSelection === 'add_to_lists' && isEmpty(exceptionListsToAddTo)) ||
       (addExceptionToRadioSelection === 'select_rules_to_add_to' &&
@@ -462,6 +474,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({
       expireErrorExists,
       selectedRulesToAddTo,
       listType,
+      commentErrorExists,
     ]
   );
 
@@ -555,6 +568,7 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({
             initialIsOpen={!!newComment}
             newCommentValue={newComment}
             newCommentOnChange={setComment}
+            setCommentError={setCommentError}
           />
           {listType !== ExceptionListTypeEnum.ENDPOINT && (
             <>
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts
index 04d13c3a1b4e9..ec8040d1fe7cc 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts
@@ -21,6 +21,7 @@ export interface State {
   initialItems: ExceptionsBuilderExceptionItem[];
   exceptionItems: ExceptionsBuilderReturnExceptionItem[];
   newComment: string;
+  commentErrorExists: boolean;
   addExceptionToRadioSelection: string;
   itemConditionValidationErrorExists: boolean;
   closeSingleAlert: boolean;
@@ -40,6 +41,7 @@ export const initialState: State = {
   exceptionItems: [],
   exceptionItemMeta: { name: '' },
   newComment: '',
+  commentErrorExists: false,
   itemConditionValidationErrorExists: false,
   closeSingleAlert: false,
   bulkCloseAlerts: false,
@@ -76,6 +78,10 @@ export type Action =
       type: 'setComment';
       comment: string;
     }
+  | {
+      type: 'setCommentError';
+      errorExists: boolean;
+    }
   | {
       type: 'setCloseSingleAlert';
       close: boolean;
@@ -127,6 +133,7 @@ export type Action =
 
 export const createExceptionItemsReducer =
   () =>
+  /* eslint complexity: ["error", 21]*/
   (state: State, action: Action): State => {
     switch (action.type) {
       case 'setExceptionItemMeta': {
@@ -172,6 +179,14 @@ export const createExceptionItemsReducer =
           newComment: comment,
         };
       }
+      case 'setCommentError': {
+        const { errorExists } = action;
+
+        return {
+          ...state,
+          commentErrorExists: errorExists,
+        };
+      }
       case 'setCloseSingleAlert': {
         const { close } = action;
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx
index faa7c1385142c..077befdad52ba 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx
@@ -6,7 +6,7 @@
  */
 
 import React from 'react';
-import { waitFor } from '@testing-library/react';
+import { act, fireEvent, render, waitFor } from '@testing-library/react';
 import { ThemeProvider } from 'styled-components';
 import type { ReactWrapper } from 'enzyme';
 import { mount } from 'enzyme';
@@ -34,6 +34,7 @@ import { useFetchIndexPatterns } from '../../logic/use_exception_flyout_data';
 import { useCreateOrUpdateException } from '../../logic/use_create_update_exception';
 import { useFindExceptionListReferences } from '../../logic/use_find_references';
 import * as i18n from './translations';
+import { MAX_COMMENT_LENGTH } from '../../../../../common/constants';
 
 const mockTheme = getMockTheme({
   eui: {
@@ -693,5 +694,60 @@ describe('When the edit exception modal is opened', () => {
         wrapper.find('button[data-test-subj="editExceptionConfirmButton"]').getDOMNode()
       ).toBeDisabled();
     });
+
+    test('when there is a comment error has submit button disabled', async () => {
+      const { getByLabelText, queryByText, getByTestId } = render(
+        <TestProviders>
+          <EditExceptionFlyout
+            list={{
+              ...getExceptionListSchemaMock(),
+              type: 'detection',
+              namespace_type: 'single',
+              list_id: 'my_list_id',
+              id: '1234',
+            }}
+            rule={
+              {
+                ...getRulesEqlSchemaMock(),
+                id: '345',
+                name: 'My rule',
+                rule_id: 'my_rule_id',
+                query:
+                  'sequence [process where process.name = "test.exe"] [process where process.name = "explorer.exe"]',
+                exceptions_list: [
+                  {
+                    id: '1234',
+                    list_id: 'my_list_id',
+                    type: 'detection',
+                    namespace_type: 'single',
+                  },
+                ],
+              } as Rule
+            }
+            itemToEdit={getExceptionListItemSchemaMock()}
+            showAlertCloseOptions
+            onCancel={jest.fn()}
+            onConfirm={jest.fn()}
+          />
+        </TestProviders>
+      );
+
+      const commentInput = getByLabelText('Comment Input');
+
+      const commentErrorMessage = `The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH} characters.`;
+      expect(queryByText(commentErrorMessage)).toBeNull();
+
+      // Put comment with the length above maximum allowed
+      act(() => {
+        fireEvent.change(commentInput, {
+          target: {
+            value: [...new Array(MAX_COMMENT_LENGTH + 1).keys()].map((_) => 'a').join(''),
+          },
+        });
+        fireEvent.blur(commentInput);
+      });
+      expect(queryByText(commentErrorMessage)).not.toBeNull();
+      expect(getByTestId('editExceptionConfirmButton')).toBeDisabled();
+    });
   });
 });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx
index 4d9e7c3bbc4ef..6d2526cdbf239 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx
@@ -117,6 +117,7 @@ const EditExceptionFlyoutComponent: React.FC<EditExceptionFlyoutProps> = ({
       exceptionItems,
       exceptionItemMeta: { name: exceptionItemName },
       newComment,
+      commentErrorExists,
       bulkCloseAlerts,
       disableBulkClose,
       bulkCloseIndex,
@@ -129,6 +130,7 @@ const EditExceptionFlyoutComponent: React.FC<EditExceptionFlyoutProps> = ({
     exceptionItems: [itemToEdit],
     exceptionItemMeta: { name: itemToEdit.name },
     newComment: '',
+    commentErrorExists: false,
     bulkCloseAlerts: false,
     disableBulkClose: true,
     bulkCloseIndex: undefined,
@@ -197,6 +199,16 @@ const EditExceptionFlyoutComponent: React.FC<EditExceptionFlyoutProps> = ({
     [dispatch]
   );
 
+  const setCommentError = useCallback(
+    (errorExists: boolean): void => {
+      dispatch({
+        type: 'setCommentError',
+        errorExists,
+      });
+    },
+    [dispatch]
+  );
+
   const setBulkCloseAlerts = useCallback(
     (bulkClose: boolean): void => {
       dispatch({
@@ -337,8 +349,17 @@ const EditExceptionFlyoutComponent: React.FC<EditExceptionFlyoutProps> = ({
       exceptionItems.every((item) => item.entries.length === 0) ||
       isLoading ||
       entryErrorExists ||
+      expireErrorExists ||
+      commentErrorExists,
+    [
+      isLoading,
+      entryErrorExists,
+      exceptionItems,
+      isSubmitting,
+      isClosingAlerts,
       expireErrorExists,
-    [isLoading, entryErrorExists, exceptionItems, isSubmitting, isClosingAlerts, expireErrorExists]
+      commentErrorExists,
+    ]
   );
 
   return (
@@ -398,6 +419,7 @@ const EditExceptionFlyoutComponent: React.FC<EditExceptionFlyoutProps> = ({
           exceptionItemComments={itemToEdit.comments}
           newCommentValue={newComment}
           newCommentOnChange={setComment}
+          setCommentError={setCommentError}
         />
         {listType !== ExceptionListTypeEnum.ENDPOINT && (
           <>
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts
index e08b3c8d135c0..e6dee3af16572 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts
@@ -12,6 +12,7 @@ export interface State {
   exceptionItems: ExceptionsBuilderReturnExceptionItem[];
   exceptionItemMeta: { name: string };
   newComment: string;
+  commentErrorExists: boolean;
   bulkCloseAlerts: boolean;
   disableBulkClose: boolean;
   bulkCloseIndex: string[] | undefined;
@@ -29,6 +30,10 @@ export type Action =
       type: 'setComment';
       comment: string;
     }
+  | {
+      type: 'setCommentError';
+      errorExists: boolean;
+    }
   | {
       type: 'setBulkCloseAlerts';
       bulkClose: boolean;
@@ -81,6 +86,14 @@ export const createExceptionItemsReducer =
           newComment: comment,
         };
       }
+      case 'setCommentError': {
+        const { errorExists } = action;
+
+        return {
+          ...state,
+          commentErrorExists: errorExists,
+        };
+      }
       case 'setBulkCloseAlerts': {
         const { bulkClose } = action;
 
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx
index 47933db0b3522..6dd8684eaeaac 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx
@@ -6,6 +6,7 @@
  */
 
 import React from 'react';
+import { act, fireEvent, render } from '@testing-library/react';
 import { mountWithIntl } from '@kbn/test-jest-helpers';
 import { EuiTextArea } from '@elastic/eui';
 
@@ -13,6 +14,7 @@ import { ExceptionItemComments } from '.';
 import { TestProviders } from '../../../../common/mock';
 import { useCurrentUser } from '../../../../common/lib/kibana';
 import { shallow } from 'enzyme';
+import { MAX_COMMENT_LENGTH } from '../../../../../common/constants';
 
 jest.mock('../../../../common/lib/kibana');
 
@@ -38,6 +40,7 @@ describe('ExceptionItemComments', () => {
       <ExceptionItemComments
         newCommentValue={'This is a new comment'}
         newCommentOnChange={jest.fn()}
+        setCommentError={jest.fn()}
       />
     );
 
@@ -65,6 +68,7 @@ describe('ExceptionItemComments', () => {
       <ExceptionItemComments
         newCommentValue={'This is a new comment'}
         newCommentOnChange={jest.fn()}
+        setCommentError={jest.fn()}
       />
     );
 
@@ -92,6 +96,7 @@ describe('ExceptionItemComments', () => {
       <ExceptionItemComments
         newCommentValue={'This is a new comment'}
         newCommentOnChange={jest.fn()}
+        setCommentError={jest.fn()}
       />
     );
 
@@ -106,6 +111,7 @@ describe('ExceptionItemComments', () => {
         <ExceptionItemComments
           newCommentValue={'This is a new comment'}
           newCommentOnChange={jest.fn()}
+          setCommentError={jest.fn()}
         />
       </TestProviders>
     );
@@ -122,6 +128,7 @@ describe('ExceptionItemComments', () => {
         <ExceptionItemComments
           newCommentValue="This is a new comment"
           newCommentOnChange={mockOnCommentChange}
+          setCommentError={jest.fn()}
         />
       </TestProviders>
     );
@@ -152,10 +159,53 @@ describe('ExceptionItemComments', () => {
           ]}
           newCommentValue={''}
           newCommentOnChange={mockOnCommentChange}
+          setCommentError={jest.fn()}
         />
       </TestProviders>
     );
 
     expect(wrapper.find('[data-test-subj="exceptionItemCommentsAccordion"]').exists()).toBeTruthy();
   });
+
+  it('it calls setCommentError on comment error update change', async () => {
+    const mockSetCommentError = jest.fn();
+    const { getByLabelText, queryByText } = render(
+      <TestProviders>
+        <ExceptionItemComments
+          newCommentValue="This is a new comment"
+          newCommentOnChange={jest.fn()}
+          setCommentError={mockSetCommentError}
+        />
+      </TestProviders>
+    );
+
+    const commentInput = getByLabelText('Comment Input');
+
+    const commentErrorMessage = `The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH} characters.`;
+    expect(queryByText(commentErrorMessage)).toBeNull();
+
+    // Put comment with the length above maximum allowed
+    act(() => {
+      fireEvent.change(commentInput, {
+        target: {
+          value: [...new Array(MAX_COMMENT_LENGTH + 1).keys()].map((_) => 'a').join(''),
+        },
+      });
+      fireEvent.blur(commentInput);
+    });
+    expect(queryByText(commentErrorMessage)).not.toBeNull();
+    expect(mockSetCommentError).toHaveBeenCalledWith(true);
+
+    // Put comment with the allowed length
+    act(() => {
+      fireEvent.change(commentInput, {
+        target: {
+          value: 'Updating my new comment',
+        },
+      });
+      fireEvent.blur(commentInput);
+    });
+    expect(queryByText(commentErrorMessage)).toBeNull();
+    expect(mockSetCommentError).toHaveBeenCalledWith(false);
+  });
 });
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx
index 0f32e2b4d1ab8..f262c7a07754a 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx
@@ -5,19 +5,21 @@
  * 2.0.
  */
 
-import React, { memo, useState, useCallback, useMemo } from 'react';
+import React, { memo, useState, useCallback, useMemo, useEffect } from 'react';
 import styled, { css } from 'styled-components';
 import type { EuiCommentProps } from '@elastic/eui';
 import {
   EuiTextArea,
   EuiFlexGroup,
   EuiFlexItem,
+  EuiFormRow,
   EuiAvatar,
   EuiAccordion,
   EuiCommentList,
   EuiText,
 } from '@elastic/eui';
 import type { Comment } from '@kbn/securitysolution-io-ts-list-types';
+import { MAX_COMMENT_LENGTH } from '../../../../../common/constants';
 import * as i18n from './translations';
 import { useCurrentUser } from '../../../../common/lib/kibana';
 import { getFormattedComments } from '../../utils/helpers';
@@ -28,6 +30,7 @@ interface ExceptionItemCommentsProps {
   accordionTitle?: JSX.Element;
   initialIsOpen?: boolean;
   newCommentOnChange: (value: string) => void;
+  setCommentError: (errorExists: boolean) => void;
 }
 
 const COMMENT_ACCORDION_BUTTON_CLASS_NAME = 'exceptionCommentAccordionButton';
@@ -53,8 +56,11 @@ export const ExceptionItemComments = memo(function ExceptionItemComments({
   accordionTitle,
   initialIsOpen = false,
   newCommentOnChange,
+  setCommentError,
 }: ExceptionItemCommentsProps) {
+  const [errorExists, setErrorExists] = useState(false);
   const [shouldShowComments, setShouldShowComments] = useState(false);
+
   const currentUser = useCurrentUser();
   const fullName = currentUser?.fullName;
   const userName = currentUser?.username;
@@ -73,9 +79,14 @@ export const ExceptionItemComments = memo(function ExceptionItemComments({
     return userName && userName.length > 0 ? userName : i18n.UNKNOWN_AVATAR_NAME;
   }, [fullName, userEmail, userName]);
 
+  useEffect(() => {
+    setCommentError(errorExists);
+  }, [errorExists, setCommentError]);
+
   const handleOnChange = useCallback(
     (event: React.ChangeEvent<HTMLTextAreaElement>) => {
       newCommentOnChange(event.target.value);
+      setErrorExists(event.target.value.length > MAX_COMMENT_LENGTH);
     },
     [newCommentOnChange]
   );
@@ -121,14 +132,20 @@ export const ExceptionItemComments = memo(function ExceptionItemComments({
             <MyAvatar name={avatarName} size="l" data-test-subj="exceptionItemCommentAvatar" />
           </EuiFlexItem>
           <EuiFlexItem grow={1}>
-            <EuiTextArea
-              placeholder={i18n.ADD_COMMENT_PLACEHOLDER}
-              aria-label="Comment Input"
-              value={newCommentValue}
-              onChange={handleOnChange}
-              fullWidth={true}
-              data-test-subj="newExceptionItemCommentTextArea"
-            />
+            <EuiFormRow
+              fullWidth
+              error={i18n.COMMENT_MAX_LENGTH_ERROR(MAX_COMMENT_LENGTH)}
+              isInvalid={errorExists}
+            >
+              <EuiTextArea
+                placeholder={i18n.ADD_COMMENT_PLACEHOLDER}
+                aria-label="Comment Input"
+                value={newCommentValue}
+                onChange={handleOnChange}
+                fullWidth={true}
+                data-test-subj="newExceptionItemCommentTextArea"
+              />
+            </EuiFormRow>
           </EuiFlexItem>
         </EuiFlexGroup>
       </CommentAccordion>
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts
index afe20c6aada98..90c3d9bd0bc48 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts
@@ -32,3 +32,10 @@ export const COMMENTS_HIDE = (comments: number) =>
     values: { comments },
     defaultMessage: 'Hide ({comments}) {comments, plural, =1 {Comment} other {Comments}}',
   });
+
+export const COMMENT_MAX_LENGTH_ERROR = (length: number) =>
+  i18n.translate('xpack.securitySolution.rule_exceptions.itemComments.maxLengthError', {
+    values: { length },
+    defaultMessage:
+      'The length of the comment is too long. The maximum length is {length} characters.',
+  });
diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx
index be028512cb0a8..2870a67e7042c 100644
--- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx
@@ -25,6 +25,7 @@ import { OperatingSystem } from '@kbn/securitysolution-utils';
 import { EventFiltersForm } from './form';
 import { EndpointDocGenerator } from '../../../../../../common/endpoint/generate_data';
 import type { PolicyData } from '../../../../../../common/endpoint/types';
+import { MAX_COMMENT_LENGTH } from '../../../../../../common/constants';
 
 jest.mock('../../../../../common/lib/kibana');
 jest.mock('../../../../../common/containers/source');
@@ -466,4 +467,35 @@ describe('Event filter form', () => {
       expect(renderResult.findByTestId('duplicate-fields-warning-message')).not.toBeNull();
     });
   });
+
+  describe('Errors', () => {
+    beforeEach(() => {
+      render();
+    });
+
+    it('should not show warning text when unique fields are added', async () => {
+      rerender();
+
+      const commentInput = renderResult.getByLabelText('Comment Input');
+
+      expect(
+        renderResult.queryByText(
+          `The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH} characters.`
+        )
+      ).toBeNull();
+      act(() => {
+        fireEvent.change(commentInput, {
+          target: {
+            value: [...new Array(MAX_COMMENT_LENGTH + 1).keys()].map((_) => 'a').join(''),
+          },
+        });
+        fireEvent.blur(commentInput);
+      });
+      expect(
+        renderResult.queryByText(
+          `The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH} characters.`
+        )
+      ).not.toBeNull();
+    });
+  });
 });
diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx
index 3b4ff4e394a82..e4e1fa7e14638 100644
--- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx
@@ -133,6 +133,7 @@ export const EventFiltersForm: React.FC<ArtifactFormComponentProps & { allowSele
     const [hasFormChanged, setHasFormChanged] = useState(false);
     const [hasNameError, toggleHasNameError] = useState<boolean>(!exception.name);
     const [newComment, setNewComment] = useState('');
+    const [hasCommentError, setHasCommentError] = useState(false);
     const [hasBeenInputNameVisited, setHasBeenInputNameVisited] = useState(false);
     const [selectedPolicies, setSelectedPolicies] = useState<PolicyData[]>([]);
     const isPlatinumPlus = useLicense().isPlatinumPlus();
@@ -173,10 +174,11 @@ export const EventFiltersForm: React.FC<ArtifactFormComponentProps & { allowSele
       // and not just default entry without values
       return (
         !hasNameError &&
+        !hasCommentError &&
         !!exception.entries.length &&
         (exception.entries as EventFilterItemEntries).some((e) => e.value !== '' || e.value.length)
       );
-    }, [hasNameError, exception.entries]);
+    }, [hasCommentError, hasNameError, exception.entries]);
 
     const processChanged = useCallback(
       (updatedItem?: Partial<ArtifactFormComponentProps['item']>) => {
@@ -340,6 +342,7 @@ export const EventFiltersForm: React.FC<ArtifactFormComponentProps & { allowSele
           exceptionItemComments={existingComments}
           newCommentValue={newComment}
           newCommentOnChange={handleOnChangeComment}
+          setCommentError={setHasCommentError}
         />
       ),
       [existingComments, handleOnChangeComment, newComment]
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts
index eba0c3a64570f..023140d420f2a 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/shared_exception_lists_management/manage_exceptions.cy.ts
@@ -6,6 +6,7 @@
  */
 
 import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { MAX_COMMENT_LENGTH } from '@kbn/security-solution-plugin/common/constants';
 import { getNewRule } from '../../../objects/rule';
 import { login } from '../../../tasks/login';
 import { visit } from '../../../tasks/navigation';
@@ -20,9 +21,7 @@ import {
   submitEditedExceptionItem,
   submitNewExceptionItem,
   deleteFirstExceptionItemInListDetailPage,
-  dismissExceptionItemErrorCallOut,
   addExceptionHugeComment,
-  submitNewExceptionItemWithFailure,
   editExceptionComment,
 } from '../../../tasks/exceptions';
 import { EXCEPTIONS_URL } from '../../../urls/navigation';
@@ -42,7 +41,6 @@ import {
 } from '../../../tasks/exceptions_table';
 import { visitRuleDetailsPage } from '../../../tasks/rule_details';
 import { deleteEndpointExceptionList, deleteExceptionLists } from '../../../tasks/common';
-import { closeErrorToast } from '../../../tasks/alerts_detection_rules';
 
 describe('Add, edit and delete exception', { tags: ['@ess', '@serverless'] }, () => {
   beforeEach(() => {
@@ -147,7 +145,7 @@ describe('Add, edit and delete exception', { tags: ['@ess', '@serverless'] }, ()
       cy.get(EMPTY_EXCEPTIONS_VIEWER).should('exist');
     });
 
-    it('should handle huge text as a comment gracefully and allow user create exception item after user updates the comment', function () {
+    it('should not allow to add huge text as a comment', function () {
       createSharedExceptionList(
         { name: 'Newly created list', description: 'This is my list.' },
         true
@@ -173,26 +171,19 @@ describe('Add, edit and delete exception', { tags: ['@ess', '@serverless'] }, ()
       linkFirstSharedListOnExceptionFlyout();
 
       // add exception comment which is super long
-      addExceptionHugeComment([...new Array(5000).keys()].map((_) => `Test text!`).join(''));
-
-      // submit
-      submitNewExceptionItemWithFailure();
+      addExceptionHugeComment(
+        [...new Array(MAX_COMMENT_LENGTH + 1).keys()].map((_) => 'a').join('')
+      );
 
-      // Failed to add exception due to comment length and submit button should be disabled
+      // submit button should be disabled due to comment length
       cy.get(CONFIRM_BTN).should('have.attr', 'disabled');
 
-      // Close error toast
-      closeErrorToast();
-
-      // Dismiss error callout
-      dismissExceptionItemErrorCallOut();
-
-      // Submit button should be enabled after we dismissed error callout
-      cy.get(CONFIRM_BTN).should('not.have.attr', 'disabled');
-
       // update exception comment to a reasonable (length wise) text
       editExceptionComment('Exceptional comment');
 
+      // submit button should be enabled
+      cy.get(CONFIRM_BTN).should('not.have.attr', 'disabled');
+
       // submit
       submitNewExceptionItem();
 
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/exceptions.ts b/x-pack/test/security_solution_cypress/cypress/tasks/exceptions.ts
index 00d6c2d405b87..4ed5ff5ef2f8d 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/exceptions.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/exceptions.ts
@@ -237,8 +237,9 @@ export const addExceptionComment = (comment: string) => {
 
 export const addExceptionHugeComment = (comment: string) => {
   cy.get(EXCEPTION_COMMENTS_ACCORDION_BTN).click();
+  cy.get(EXCEPTION_COMMENT_TEXT_AREA).type(` {backspace}`);
   cy.get(EXCEPTION_COMMENT_TEXT_AREA).invoke('val', comment);
-  cy.get(EXCEPTION_COMMENT_TEXT_AREA).type(`!{backspace}`);
+  cy.get(EXCEPTION_COMMENT_TEXT_AREA).type(` {backspace}`);
   cy.get(EXCEPTION_COMMENT_TEXT_AREA).should('have.value', comment);
 };
 

From c0e6ace734a3a4f3c2fd9691e55e7a24e4fa05f2 Mon Sep 17 00:00:00 2001
From: Philippe Oberti <philippe.oberti@elastic.co>
Date: Wed, 8 Nov 2023 22:57:00 -0600
Subject: [PATCH 028/147] [Security Solution] cypress test using a single alert
 document (#170281)

---
 .../detection_alerts/alert_status.cy.ts       |  13 +-
 .../detection_alerts/alert_tags.cy.ts         |  19 ++-
 .../event_correlation_rule.cy.ts              |  11 +-
 .../rule_creation/override.cy.ts              |   4 +-
 .../add_edit_endpoint_exception.cy.ts         |   8 ++
 .../explore/dashboards/entity_analytics.cy.ts |   9 +-
 .../e2e/explore/hosts/events_viewer.cy.ts     |   4 +-
 .../e2e/explore/overview/overview.cy.ts       |   7 -
 .../alerts/alerts_cell_actions.cy.ts          |   6 +-
 .../investigations/alerts/alerts_charts.cy.ts |   4 +-
 .../alerts/alerts_details.cy.ts               |   4 +-
 .../alerts/building_block_alerts.cy.ts        |   4 +-
 .../alerts/changing_alert_status.cy.ts        |   4 +-
 .../alerts/detection_page_filters.cy.ts       |   4 +-
 ...rt_details_left_panel_prevalence_tab.cy.ts |   2 +-
 .../alerts/investigate_in_timeline.cy.ts      |   6 +-
 .../cypress/screens/common/filter_group.ts    |  23 +---
 .../cypress/screens/overview.ts               |   2 +-
 .../cypress/support/e2e.ts                    |   2 +-
 .../cypress/tasks/alerts.ts                   |   3 +-
 .../data.json                                 |   0
 .../mappings.json                             |   0
 .../{auditbeat => auditbeat_single}/data.json | 123 ------------------
 .../mappings.json                             |   0
 24 files changed, 66 insertions(+), 196 deletions(-)
 rename x-pack/test/security_solution_cypress/es_archives/{auditbeat_big => auditbeat_multiple}/data.json (100%)
 rename x-pack/test/security_solution_cypress/es_archives/{auditbeat_big => auditbeat_multiple}/mappings.json (100%)
 rename x-pack/test/security_solution_cypress/es_archives/{auditbeat => auditbeat_single}/data.json (50%)
 rename x-pack/test/security_solution_cypress/es_archives/{auditbeat => auditbeat_single}/mappings.json (100%)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
index 7f148e531fe12..2ec99abb00db4 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts
@@ -37,10 +37,13 @@ import { visit } from '../../../tasks/navigation';
 
 import { ALERTS_URL } from '../../../urls/navigation';
 
-// FLAKY: https://github.com/elastic/kibana/issues/169091
-describe.skip('Changing alert status', { tags: ['@ess', '@serverless'] }, () => {
+describe('Changing alert status', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
-    cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
+  });
+
+  after(() => {
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
   });
 
   context('Opening alerts', { tags: ['@ess', '@serverless'] }, () => {
@@ -56,10 +59,6 @@ describe.skip('Changing alert status', { tags: ['@ess', '@serverless'] }, () =>
       waitForAlerts();
     });
 
-    after(() => {
-      cy.task('esArchiverUnload', 'auditbeat_big');
-    });
-
     it('can mark a closed alert as open', () => {
       waitForAlertsToPopulate();
       cy.get(ALERTS_COUNT)
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts
index ee3955576a272..162c63ad3ce48 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts
@@ -26,19 +26,24 @@ import {
 } from '../../../screens/alerts';
 
 describe('Alert tagging', { tags: ['@ess', '@serverless'] }, () => {
+  before(() => {
+    cy.task('esArchiverLoad', { archiveName: 'endpoint' });
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
+  });
+
+  after(() => {
+    cy.task('esArchiverUnload', 'endpoint');
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
+  });
+
   beforeEach(() => {
     login();
     deleteAlertsAndRules();
-    cy.task('esArchiverLoad', { archiveName: 'endpoint' });
     createRule(getNewRule({ rule_id: 'new custom rule' }));
     visitWithTimeRange(ALERTS_URL);
     waitForAlertsToPopulate();
   });
 
-  afterEach(() => {
-    cy.task('esArchiverUnload', 'endpoint');
-  });
-
   it('Add and remove a tag using the alert bulk action menu', () => {
     // Add a tag to one alert
     selectNumberOfAlerts(1);
@@ -66,13 +71,13 @@ describe('Alert tagging', { tags: ['@ess', '@serverless'] }, () => {
     updateAlertTags();
     cy.get(ALERTS_TABLE_ROW_LOADER).should('not.exist');
     // Then add tags to both alerts
-    selectNumberOfAlerts(2);
+    selectNumberOfAlerts(5);
     openAlertTaggingBulkActionMenu();
     cy.get(MIXED_ALERT_TAG).contains('Duplicate');
     clickAlertTag('Duplicate');
     updateAlertTags();
     cy.get(ALERTS_TABLE_ROW_LOADER).should('not.exist');
-    selectNumberOfAlerts(2);
+    selectNumberOfAlerts(5);
     openAlertTaggingBulkActionMenu();
     cy.get(SELECTED_ALERT_TAG).contains('Duplicate');
   });
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts
index eeca0d06bcc57..b895460661858 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/event_correlation_rule.cy.ts
@@ -71,7 +71,7 @@ describe('EQL rules', { tags: ['@ess', '@serverless'] }, () => {
     const mitreAttack = rule.threat;
     const expectedMitre = formatMitreAttackDescription(mitreAttack ?? []);
     const expectedNumberOfRules = 1;
-    const expectedNumberOfAlerts = '2 alerts';
+    const expectedNumberOfAlerts = '1 alert';
 
     it('Creates and enables a new EQL rule', function () {
       visit(CREATE_RULE_URL);
@@ -143,11 +143,12 @@ describe('EQL rules', { tags: ['@ess', '@serverless'] }, () => {
 
     const rule = getEqlSequenceRule();
 
-    beforeEach(() => {
-      cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
+    before(() => {
+      cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
     });
-    afterEach(() => {
-      cy.task('esArchiverUnload', 'auditbeat_big');
+
+    after(() => {
+      cy.task('esArchiverUnload', 'auditbeat_multiple');
     });
 
     it('Creates and enables a new EQL rule with a sequence', function () {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts
index 7b8e5b0744c72..585cd9187f3e0 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/override.cy.ts
@@ -146,8 +146,8 @@ describe('Rules override', { tags: ['@ess', '@serverless'] }, () => {
     cy.get(ALERTS_COUNT)
       .invoke('text')
       .should('match', /^[1-9].+$/); // Any number of alerts
-    cy.get(ALERT_GRID_CELL).contains('auditbeat');
-    cy.get(ALERT_GRID_CELL).contains('critical');
+    cy.get(ALERT_GRID_CELL).contains('winlogbeat');
+    cy.get(ALERT_GRID_CELL).contains('high');
     cy.get(ALERT_GRID_CELL).contains('80');
   });
 });
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
index b687821145f1a..8ec40a0e36436 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/exceptions/rule_details_flow/add_edit_endpoint_exception.cy.ts
@@ -56,6 +56,14 @@ describe('Add endpoint exception from rule details', { tags: ['@ess', '@serverle
   const ITEM_FIELD = 'event.code';
   const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type';
 
+  before(() => {
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
+  });
+
+  after(() => {
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
+  });
+
   beforeEach(() => {
     deleteExceptionLists();
     deleteEndpointExceptionList();
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts
index 83b9d086db5f2..7bb492d51d25c 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts
@@ -57,9 +57,9 @@ import {
 import { deleteRiskEngineConfiguration } from '../../../tasks/api_calls/risk_engine';
 import { enableRiskEngine } from '../../../tasks/entity_analytics';
 
-const TEST_USER_ALERTS = 2;
+const TEST_USER_ALERTS = 1;
 const TEST_USER_NAME = 'test';
-const SIEM_KIBANA_HOST_ALERTS = 2;
+const SIEM_KIBANA_HOST_ALERTS = 1;
 const SIEM_KIBANA_HOST_NAME = 'siem-kibana';
 const DATE_FORMAT = 'MMM D, YYYY @ HH:mm:ss.SSS';
 const DATE_BEFORE_ALERT_CREATION = moment().format(DATE_FORMAT);
@@ -67,10 +67,15 @@ const OLDEST_DATE = moment('2019-01-19T16:22:56.217Z').format(DATE_FORMAT);
 
 describe('Entity Analytics Dashboard', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
     login();
     deleteRiskEngineConfiguration();
   });
 
+  after(() => {
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
+  });
+
   describe('legacy risk score', () => {
     describe('Without data', () => {
       beforeEach(() => {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/hosts/events_viewer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/hosts/events_viewer.cy.ts
index 20884e070cf9a..0a211a58feba3 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/hosts/events_viewer.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/hosts/events_viewer.cy.ts
@@ -48,11 +48,11 @@ const defaultHeadersInDefaultEcsCategory = [
 
 describe('Events Viewer', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
-    cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
   });
 
   after(() => {
-    cy.task('esArchiverUnload', 'auditbeat_big');
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
   });
 
   context('Fields rendering', () => {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts
index 0fcb7f86cd0de..1205d2420b7ab 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts
@@ -64,13 +64,6 @@ describe('Overview Page', { tags: ['@ess', '@serverless', '@serverlessQA'] }, ()
 });
 
 describe('Overview page with no data', { tags: '@brokenInServerless' }, () => {
-  before(() => {
-    cy.task('esArchiverUnload', 'auditbeat');
-  });
-  after(() => {
-    cy.task('esArchiverLoad', { archiveName: 'auditbeat' });
-  });
-
   it('Splash screen should be here', () => {
     login();
     visitWithTimeRange(OVERVIEW_URL);
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_cell_actions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_cell_actions.cy.ts
index 84cfcc8b52aad..911b870d08347 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_cell_actions.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_cell_actions.cy.ts
@@ -105,7 +105,7 @@ describe('Alerts cell actions', { tags: ['@ess', '@serverless'] }, () => {
         .first()
         .invoke('text')
         .then((severityVal) => {
-          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_VALUES);
+          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_HEADER);
           addAlertPropertyToTimeline(ALERT_TABLE_SEVERITY_VALUES, 0);
           openActiveTimeline();
           cy.get(PROVIDER_BADGE)
@@ -138,7 +138,7 @@ describe('Alerts cell actions', { tags: ['@ess', '@serverless'] }, () => {
         .first()
         .invoke('text')
         .then(() => {
-          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_VALUES);
+          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_HEADER);
           showTopNAlertProperty(ALERT_TABLE_SEVERITY_VALUES, 0);
           cy.get(SHOW_TOP_N_HEADER).first().should('have.text', `Top kibana.alert.severity`);
         });
@@ -157,7 +157,7 @@ describe('Alerts cell actions', { tags: ['@ess', '@serverless'] }, () => {
         .first()
         .invoke('text')
         .then(() => {
-          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_VALUES);
+          scrollAlertTableColumnIntoView(ALERT_TABLE_SEVERITY_HEADER);
           cy.window().then((win) => {
             cy.stub(win, 'prompt').returns('DISABLED WINDOW PROMPT');
           });
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts
index 1868435825597..426193bbf72ba 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts
@@ -38,14 +38,14 @@ describe(
     });
 
     it('Filter in/out should add a filter to KQL bar', function () {
-      const expectedNumberOfAlerts = 2;
+      const expectedNumberOfAlerts = 1;
       clickAlertsHistogramLegend();
       clickAlertsHistogramLegendFilterFor(ruleConfigs.name);
       cy.get(GLOBAL_SEARCH_BAR_FILTER_ITEM).should(
         'have.text',
         `kibana.alert.rule.name: ${ruleConfigs.name}`
       );
-      cy.get(ALERTS_COUNT).should('have.text', `${expectedNumberOfAlerts} alerts`);
+      cy.get(ALERTS_COUNT).should('have.text', `${expectedNumberOfAlerts} alert`);
 
       clickAlertsHistogramLegend();
       clickAlertsHistogramLegendFilterOut(ruleConfigs.name);
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts
index ee51f507e37c7..9ab0d07569421 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_details.cy.ts
@@ -54,8 +54,8 @@ describe('Alert details flyout', { tags: ['@ess', '@serverless'] }, () => {
 
     it('should update the table when status of the alert is updated', () => {
       cy.get(OVERVIEW_RULE).should('be.visible');
-      cy.get(ALERTS_TABLE_COUNT).should('have.text', '2 alerts');
-      cy.get(ALERT_SUMMARY_SEVERITY_DONUT_CHART).should('contain.text', '2alerts');
+      cy.get(ALERTS_TABLE_COUNT).should('have.text', '1 alert');
+      cy.get(ALERT_SUMMARY_SEVERITY_DONUT_CHART).should('contain.text', '1alert');
       expandFirstAlert();
       changeAlertStatusTo('acknowledged');
       cy.get(ALERTS_TABLE_COUNT).should('have.text', '1 alert');
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts
index d913d1701c2c8..718feeca31533 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/building_block_alerts.cy.ts
@@ -19,11 +19,11 @@ const EXPECTED_NUMBER_OF_ALERTS = 5;
 
 describe('Alerts generated by building block rules', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
-    cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
   });
 
   after(() => {
-    cy.task('esArchiverUnload', 'auditbeat_big');
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
   });
 
   beforeEach(() => {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/changing_alert_status.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/changing_alert_status.cy.ts
index 3ee54dd437942..f06fad0cd43ee 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/changing_alert_status.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/changing_alert_status.cy.ts
@@ -42,11 +42,11 @@ import { ALERTS_URL } from '../../../urls/navigation';
 // Iusse tracked in: https://github.com/elastic/kibana/issues/167809
 describe('Changing alert status', { tags: ['@ess', '@brokenInServerless'] }, () => {
   before(() => {
-    cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' });
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
   });
 
   after(() => {
-    cy.task('esArchiverUnload', 'auditbeat_big');
+    cy.task('esArchiverUnload', 'auditbeat_multiple');
   });
 
   context('Opening alerts', () => {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts
index 55b0817483ff6..dd29284f6c0ce 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts
@@ -235,7 +235,7 @@ describe(`Detections : Page Filters`, { tags: ['@ess', '@serverless'] }, () => {
           cy.get(ALERTS_COUNT)
             .invoke('text')
             .should((newAlertCount) => {
-              expect(newAlertCount.split(' ')[0]).eq(String(parseInt(originalAlertCount, 10) - 1));
+              expect(newAlertCount.split(' ')[0]).eq(String(parseInt(originalAlertCount, 10)));
             });
         });
     });
@@ -318,7 +318,7 @@ describe(`Detections : Page Filters`, { tags: ['@ess', '@serverless'] }, () => {
       togglePageFilterPopover(0);
       cy.get(OPTION_SELECTABLE(0, 'open')).should('be.visible');
       cy.get(OPTION_SELECTABLE(0, 'open')).should('contain.text', 'open');
-      cy.get(OPTION_SELECTABLE(0, 'open')).get(OPTION_SELECTABLE_COUNT).should('have.text', 2);
+      cy.get(OPTION_SELECTABLE(0, 'open')).get(OPTION_SELECTABLE_COUNT).should('have.text', 1);
     });
 
     it('should take kqlQuery into account', () => {
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_prevalence_tab.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_prevalence_tab.cy.ts
index d0f12799c795a..38fd4ffb7496a 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_prevalence_tab.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_left_panel_prevalence_tab.cy.ts
@@ -70,7 +70,7 @@ describe(
         .and('contain.text', 'test');
       cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_TABLE_ALERT_COUNT_CELL).should(
         'contain.text',
-        2
+        1
       );
       cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_TABLE_DOC_COUNT_CELL).should(
         'contain.text',
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/investigate_in_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/investigate_in_timeline.cy.ts
index db3fad7b57b2d..0570557d33f21 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/investigate_in_timeline.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/investigate_in_timeline.cy.ts
@@ -65,10 +65,12 @@ describe('Investigate in timeline', { tags: ['@ess', '@serverless'] }, () => {
 
       // Click on the last button that lets us investigate in timeline.
       // We expect this to be the `process.args` row.
+      cy.get(ALERT_FLYOUT).find(SUMMARY_VIEW_INVESTIGATE_IN_TIMELINE_BUTTON).eq(5).scrollIntoView();
       cy.get(ALERT_FLYOUT)
         .find(SUMMARY_VIEW_INVESTIGATE_IN_TIMELINE_BUTTON)
-        .last()
-        .should('have.text', alertCount)
+        .eq(5)
+        .should('be.visible')
+        .and('have.text', alertCount)
         .click();
 
       // Make sure a new timeline is created and opened
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/common/filter_group.ts b/x-pack/test/security_solution_cypress/cypress/screens/common/filter_group.ts
index a4c069c2e2467..0f037a9955726 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/common/filter_group.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/common/filter_group.ts
@@ -7,37 +7,22 @@
 
 import { getDataTestSubjectSelector } from '../../helpers/common';
 
-export const FILTER_GROUP_LOADING = '[data-test-subj="filter-group__loading"]';
-export const FILTER_GROUP_ITEMS = '[data-test-subj="filter-group__items"]';
-export const FILTER_GROUP_CLEAR = '[data-test-subj="filter-group__clear"]';
-
+export const CONTROL_GROUP = '[data-test-subj="controls-group"]';
 export const CONTROL_FRAMES = '[data-test-subj="control-frame"]';
 
 export const CONTROL_FRAME_TITLE = '[data-test-subj="control-frame-title"]';
 
-export const CONTROL_FRAME_DRAG_HANDLE = '.controlFrame__dragHandle';
-
 export const OPTION_LIST_LABELS = '.controlFrame__labelToolTip';
 
 export const OPTION_LIST_VALUES = (idx: number) => `[data-test-subj="optionsList-control-${idx}"]`;
 
 export const OPTION_LIST_CLEAR_BTN = '.presentationUtil__floatingActions [aria-label="Clear"]';
 
-export const OPTION_LIST_NUMBER_OFF = '.euiFilterButton__notification';
-
 export const OPTION_LISTS_LOADING = '.optionsList--filterBtnWrapper .euiLoadingSpinner';
 
-export const OPTION_LISTS_EXISTS = '[data-test-subj="optionsList-control-selection-exists"]';
-
-export const OPTION_LIST_ACTIVE_CLEAR_SELECTION =
-  '[data-test-subj="optionsList-control-clear-all-selections"]';
-
 export const OPTION_SELECTABLE = (popoverIndex: number, value: string) =>
   `#control-popover-${popoverIndex} [data-test-subj="optionsList-control-selection-${value}"]`;
 
-export const OPTION_IGNORED = (popoverIndex: number, value: string) =>
-  `#control-popover-${popoverIndex} [data-test-subj="optionsList-control-ignored-selection-${value}"]`;
-
 export const OPTION_SELECTABLE_COUNT = getDataTestSubjectSelector(
   'optionsList-document-count-badge'
 );
@@ -61,8 +46,6 @@ export const DETECTION_PAGE_FILTER_GROUP_RESET_BUTTON =
 
 export const FILTER_GROUP_CONTEXT_EDIT_CONTROLS = '[data-test-subj="filter-group__context--edit"]';
 
-export const FILTER_GROUP_CONTEXT_SAVE_CONTROLS = '[data-test-subj="filter-group__context--save"]';
-
 export const FILTER_GROUP_CONTEXT_DISCARD_CHANGES =
   '[data-test-subj="filter-group__context--discard"]';
 
@@ -70,10 +53,6 @@ export const FILTER_GROUP_ADD_CONTROL = '[data-test-subj="filter-group__add-cont
 
 export const FILTER_GROUP_SAVE_CHANGES = '[data-test-subj="filter-group__save"]';
 
-export const FILTER_GROUP_DISCARD_CHANGES = '[data-test-subj="filter-group__discard"]';
-
-export const FILTER_GROUP_SAVE_CHANGES_POPOVER = '[data-test-subj="filter-group__save-popover"]';
-
 export const FILTER_GROUP_EDIT_CONTROLS_PANEL = '[data-test-subj="control-editor-flyout"]';
 
 export const FILTER_GROUP_EDIT_CONTROL_PANEL_ITEMS = {
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/overview.ts b/x-pack/test/security_solution_cypress/cypress/screens/overview.ts
index 442fcf621fc95..37b95f6ba6f59 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/overview.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/overview.ts
@@ -55,7 +55,7 @@ const STAT_PACKAGE = {
   domId: '[data-test-subj="host-stat-auditbeatPackage"]',
 };
 const STAT_PROCESS = {
-  value: '2',
+  value: '1',
   domId: '[data-test-subj="host-stat-auditbeatProcess"]',
 };
 const STAT_USER = {
diff --git a/x-pack/test/security_solution_cypress/cypress/support/e2e.ts b/x-pack/test/security_solution_cypress/cypress/support/e2e.ts
index eb3488178485f..b0961b77a2bba 100644
--- a/x-pack/test/security_solution_cypress/cypress/support/e2e.ts
+++ b/x-pack/test/security_solution_cypress/cypress/support/e2e.ts
@@ -16,7 +16,7 @@ import { setupUsers } from './setup_users';
 import { CLOUD_SERVERLESS, IS_SERVERLESS } from '../env_var_names_constants';
 
 before(() => {
-  cy.task('esArchiverLoad', { archiveName: 'auditbeat' });
+  cy.task('esArchiverLoad', { archiveName: 'auditbeat_single' });
 });
 
 if (!Cypress.env(IS_SERVERLESS) && !Cypress.env(CLOUD_SERVERLESS)) {
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts
index 23b5d106cb6cf..cc1a06d3545de 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts
@@ -75,6 +75,7 @@ import {
   OPTION_LIST_VALUES,
   OPTION_LIST_CLEAR_BTN,
   OPTION_SELECTABLE,
+  CONTROL_GROUP,
 } from '../screens/common/filter_group';
 import { LOADING_SPINNER } from '../screens/common/page';
 import { ALERTS_URL } from '../urls/navigation';
@@ -189,7 +190,7 @@ export const closePageFilterPopover = (filterIndex: number) => {
 };
 
 export const clearAllSelections = (filterIndex: number) => {
-  cy.scrollTo('top');
+  cy.get(CONTROL_GROUP).scrollIntoView();
   recurse(
     () => {
       cy.get(CONTROL_FRAME_TITLE).eq(filterIndex).realHover();
diff --git a/x-pack/test/security_solution_cypress/es_archives/auditbeat_big/data.json b/x-pack/test/security_solution_cypress/es_archives/auditbeat_multiple/data.json
similarity index 100%
rename from x-pack/test/security_solution_cypress/es_archives/auditbeat_big/data.json
rename to x-pack/test/security_solution_cypress/es_archives/auditbeat_multiple/data.json
diff --git a/x-pack/test/security_solution_cypress/es_archives/auditbeat_big/mappings.json b/x-pack/test/security_solution_cypress/es_archives/auditbeat_multiple/mappings.json
similarity index 100%
rename from x-pack/test/security_solution_cypress/es_archives/auditbeat_big/mappings.json
rename to x-pack/test/security_solution_cypress/es_archives/auditbeat_multiple/mappings.json
diff --git a/x-pack/test/security_solution_cypress/es_archives/auditbeat/data.json b/x-pack/test/security_solution_cypress/es_archives/auditbeat_single/data.json
similarity index 50%
rename from x-pack/test/security_solution_cypress/es_archives/auditbeat/data.json
rename to x-pack/test/security_solution_cypress/es_archives/auditbeat_single/data.json
index a4e42ac0335a9..cb9a035e8d19d 100644
--- a/x-pack/test/security_solution_cypress/es_archives/auditbeat/data.json
+++ b/x-pack/test/security_solution_cypress/es_archives/auditbeat_single/data.json
@@ -1,126 +1,3 @@
-{
-  "type": "doc",
-  "value": {
-    "id": "_aZE5nwBOpWiDweSth_F",
-    "index": "auditbeat-2022",
-    "source": {
-      "@timestamp" : "2022-03-04T19:41:33.045Z",
-      "host" : {
-        "hostname" : "test.local",
-        "architecture" : "x86_64",
-        "os" : {
-          "platform" : "darwin",
-          "version" : "10.16",
-          "family" : "darwin",
-          "name" : "Mac OS X",
-          "kernel" : "21.3.0",
-          "build" : "21D62",
-          "type" : "macos"
-        },
-        "id" : "44426D67-79AB-547C-7777-440AB8F5DDD2",
-        "ip" : [
-          "fe80::bade:48ff:fe00:1122",
-          "fe81::4ab:9565:1199:be3",
-          "192.168.5.175",
-          "fe80::40d7:d0ff:fe66:f55",
-          "fe81::40d8:d0ff:fe66:f55",
-          "fe82::c2c:6bdf:3307:dce0",
-          "fe83::5069:fcd5:e31c:7059",
-          "fe80::ce81:b2c:bd2c:69e",
-          "fe80::febc:bbc1:c517:827b",
-          "fe80::6d09:bee6:55a5:539d",
-          "fe80::c920:752e:1e0e:edc9",
-          "fe80::a4a:ca38:761f:83e2"
-        ],
-        "mac" : [
-          "ad:df:48:00:11:22",
-          "a6:86:e7:ae:5a:b6",
-          "a9:83:e7:ae:5a:b6",
-          "43:d8:d0:66:0f:55",
-          "42:d8:d0:66:0f:57",
-          "82:70:c7:c2:3c:01",
-          "82:70:c6:c2:4c:00",
-          "82:76:a6:c2:3c:05",
-          "82:70:c6:b2:3c:04",
-          "82:71:a6:c2:3c:01"
-        ],
-        "name" : "siem-kibana"
-      },
-      "agent" : {
-        "type" : "auditbeat",
-        "version" : "8.1.0",
-        "ephemeral_id" : "f6df090f-656a-4a79-a6a1-0c8671c9752d",
-        "id" : "0ebd469b-c164-4734-00e6-96d018098dc7",
-        "name" : "test.local"
-      },
-      "event" : {
-        "module" : "system",
-        "dataset" : "process",
-        "kind" : "event",
-        "category" : [
-          "process"
-        ],
-        "type" : [
-          "start"
-        ],
-        "action" : "process_started"
-      },
-      "destination": {
-        "port": 80
-      },
-      "process" : {
-        "start" : "2022-03-04T19:41:32.902Z",
-        "pid" : 30884,
-        "working_directory" : "/Users/test/security_solution",
-        "hash" : {
-          "sha1" : "ae2d46c38fa207efbea5fcecd6294eebbf5af00f"
-        },
-        "parent" : {
-          "pid" : 777
-        },
-        "executable" : "/bin/zsh",
-        "name" : "zsh",
-        "args" : [
-          "-zsh"
-        ],
-        "entity_id" : "q6pltOhTWlQx3BCD",
-        "entry_leader": {
-          "entity_id": "q6pltOhTWlQx3BCD",
-          "name": "fake entry",
-          "pid": 2342342
-        }
-      },
-      "message" : "Process zsh (PID: 27884) by user test STARTED",
-      "user" : {
-        "id" : "505",
-        "group" : {
-          "name" : "staff",
-          "id" : "20"
-        },
-        "effective" : {
-          "id" : "505",
-          "group" : {
-            "id" : "20"
-          }
-        },
-        "saved" : {
-          "id" : "505",
-          "group" : {
-            "id" : "20"
-          }
-        },
-        "name" : "test"
-      },
-      "service" : {
-        "type" : "system"
-      },
-      "ecs" : {
-        "version" : "8.0.0"
-      }
-    }
-  }
-}
-
 {
   "type": "doc",
   "value": {
diff --git a/x-pack/test/security_solution_cypress/es_archives/auditbeat/mappings.json b/x-pack/test/security_solution_cypress/es_archives/auditbeat_single/mappings.json
similarity index 100%
rename from x-pack/test/security_solution_cypress/es_archives/auditbeat/mappings.json
rename to x-pack/test/security_solution_cypress/es_archives/auditbeat_single/mappings.json

From 4258d13bdfabbda2f3d9d9f86fbf604a6584c5f6 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Thu, 9 Nov 2023 01:14:41 -0500
Subject: [PATCH 029/147] [api-docs] 2023-11-09 Daily api_docs build (#170919)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/516
---
 api_docs/actions.mdx                          |   2 +-
 api_docs/advanced_settings.mdx                |   2 +-
 api_docs/aiops.mdx                            |   2 +-
 api_docs/alerting.mdx                         |   2 +-
 api_docs/apm.mdx                              |   4 +-
 api_docs/apm_data_access.mdx                  |   4 +-
 api_docs/asset_manager.mdx                    |   4 +-
 api_docs/banners.mdx                          |   2 +-
 api_docs/bfetch.mdx                           |   2 +-
 api_docs/canvas.mdx                           |   2 +-
 api_docs/cases.mdx                            |   2 +-
 api_docs/charts.mdx                           |   2 +-
 api_docs/cloud.mdx                            |   2 +-
 api_docs/cloud_data_migration.mdx             |   2 +-
 api_docs/cloud_defend.mdx                     |   2 +-
 api_docs/cloud_experiments.mdx                |   2 +-
 api_docs/cloud_security_posture.mdx           |   2 +-
 api_docs/console.mdx                          |   2 +-
 api_docs/content_management.mdx               |   2 +-
 api_docs/controls.mdx                         |   2 +-
 api_docs/custom_integrations.mdx              |   2 +-
 api_docs/dashboard.mdx                        |   2 +-
 api_docs/dashboard_enhanced.mdx               |   2 +-
 api_docs/data.mdx                             |   2 +-
 api_docs/data_query.mdx                       |   2 +-
 api_docs/data_search.mdx                      |   2 +-
 api_docs/data_view_editor.mdx                 |   2 +-
 api_docs/data_view_field_editor.mdx           |   2 +-
 api_docs/data_view_management.mdx             |   2 +-
 api_docs/data_views.mdx                       |   2 +-
 api_docs/data_visualizer.mdx                  |   2 +-
 api_docs/deprecations_by_api.mdx              |   2 +-
 api_docs/deprecations_by_plugin.mdx           |   2 +-
 api_docs/deprecations_by_team.mdx             |  28 ++---
 api_docs/dev_tools.mdx                        |   2 +-
 api_docs/discover.mdx                         |   2 +-
 api_docs/discover_enhanced.mdx                |   2 +-
 api_docs/ecs_data_quality_dashboard.mdx       |   2 +-
 api_docs/elastic_assistant.mdx                |   2 +-
 api_docs/embeddable.mdx                       |   2 +-
 api_docs/embeddable_enhanced.mdx              |   2 +-
 api_docs/encrypted_saved_objects.mdx          |   2 +-
 api_docs/enterprise_search.mdx                |   2 +-
 api_docs/es_ui_shared.mdx                     |   2 +-
 api_docs/event_annotation.mdx                 |   2 +-
 api_docs/event_annotation_listing.mdx         |   2 +-
 api_docs/event_log.mdx                        |   2 +-
 api_docs/exploratory_view.mdx                 |   4 +-
 api_docs/expression_error.mdx                 |   2 +-
 api_docs/expression_gauge.mdx                 |   2 +-
 api_docs/expression_heatmap.mdx               |   2 +-
 api_docs/expression_image.mdx                 |   2 +-
 api_docs/expression_legacy_metric_vis.mdx     |   2 +-
 api_docs/expression_metric.mdx                |   2 +-
 api_docs/expression_metric_vis.mdx            |   2 +-
 api_docs/expression_partition_vis.mdx         |   2 +-
 api_docs/expression_repeat_image.mdx          |   2 +-
 api_docs/expression_reveal_image.mdx          |   2 +-
 api_docs/expression_shape.mdx                 |   2 +-
 api_docs/expression_tagcloud.mdx              |   2 +-
 api_docs/expression_x_y.mdx                   |   2 +-
 api_docs/expressions.mdx                      |   2 +-
 api_docs/features.mdx                         |   2 +-
 api_docs/field_formats.mdx                    |   2 +-
 api_docs/file_upload.mdx                      |   2 +-
 api_docs/files.mdx                            |   2 +-
 api_docs/files_management.mdx                 |   2 +-
 api_docs/fleet.mdx                            |   2 +-
 api_docs/global_search.mdx                    |   2 +-
 api_docs/guided_onboarding.mdx                |   2 +-
 api_docs/home.mdx                             |   2 +-
 api_docs/image_embeddable.mdx                 |   2 +-
 api_docs/index_lifecycle_management.mdx       |   2 +-
 api_docs/index_management.mdx                 |   2 +-
 api_docs/infra.mdx                            |   2 +-
 api_docs/inspector.mdx                        |   2 +-
 api_docs/interactive_setup.mdx                |   2 +-
 api_docs/kbn_ace.mdx                          |   2 +-
 api_docs/kbn_aiops_components.mdx             |   2 +-
 api_docs/kbn_aiops_utils.mdx                  |   2 +-
 .../kbn_alerting_api_integration_helpers.mdx  |   2 +-
 api_docs/kbn_alerting_state_types.mdx         |   2 +-
 api_docs/kbn_alerts_as_data_utils.mdx         |   2 +-
 api_docs/kbn_alerts_ui_shared.mdx             |   2 +-
 api_docs/kbn_analytics.mdx                    |   2 +-
 api_docs/kbn_analytics_client.mdx             |   2 +-
 ..._analytics_shippers_elastic_v3_browser.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_common.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_server.mdx |   2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx |   2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx |   2 +-
 api_docs/kbn_apm_config_loader.mdx            |   2 +-
 api_docs/kbn_apm_synthtrace.mdx               |   4 +-
 api_docs/kbn_apm_synthtrace_client.mdx        |   4 +-
 api_docs/kbn_apm_utils.mdx                    |   4 +-
 api_docs/kbn_axe_config.mdx                   |   2 +-
 api_docs/kbn_cases_components.mdx             |   2 +-
 api_docs/kbn_cell_actions.mdx                 |   2 +-
 api_docs/kbn_chart_expressions_common.mdx     |   2 +-
 api_docs/kbn_chart_icons.mdx                  |   2 +-
 api_docs/kbn_ci_stats_core.mdx                |   2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx |   2 +-
 api_docs/kbn_ci_stats_reporter.mdx            |   2 +-
 api_docs/kbn_cli_dev_mode.mdx                 |   2 +-
 api_docs/kbn_code_editor.mdx                  |   2 +-
 api_docs/kbn_coloring.mdx                     |   2 +-
 api_docs/kbn_config.mdx                       |   2 +-
 api_docs/kbn_config_mocks.mdx                 |   2 +-
 api_docs/kbn_config_schema.mdx                |   2 +-
 .../kbn_content_management_content_editor.mdx |   2 +-
 ...tent_management_tabbed_table_list_view.mdx |   2 +-
 ...kbn_content_management_table_list_view.mdx |   2 +-
 ...ntent_management_table_list_view_table.mdx |   2 +-
 api_docs/kbn_content_management_utils.mdx     |   2 +-
 api_docs/kbn_core_analytics_browser.mdx       |   2 +-
 .../kbn_core_analytics_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_analytics_server.mdx        |   2 +-
 .../kbn_core_analytics_server_internal.mdx    |   2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_application_browser.mdx     |   2 +-
 .../kbn_core_application_browser_internal.mdx |   2 +-
 .../kbn_core_application_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_application_common.mdx      |   2 +-
 api_docs/kbn_core_apps_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_apps_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_base_common.mdx             |   2 +-
 api_docs/kbn_core_base_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_server_mocks.mdx       |   2 +-
 .../kbn_core_capabilities_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_capabilities_common.mdx     |   2 +-
 api_docs/kbn_core_capabilities_server.mdx     |   2 +-
 .../kbn_core_capabilities_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_chrome_browser.mdx          |   2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_config_server_internal.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_browser.mdx |   2 +-
 ..._core_custom_branding_browser_internal.mdx |   2 +-
 ...kbn_core_custom_branding_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_custom_branding_common.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_server.mdx  |   2 +-
 ...n_core_custom_branding_server_internal.mdx |   2 +-
 .../kbn_core_custom_branding_server_mocks.mdx |   2 +-
 api_docs/kbn_core_deprecations_browser.mdx    |   2 +-
 ...kbn_core_deprecations_browser_internal.mdx |   2 +-
 .../kbn_core_deprecations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_deprecations_common.mdx     |   2 +-
 api_docs/kbn_core_deprecations_server.mdx     |   2 +-
 .../kbn_core_deprecations_server_internal.mdx |   2 +-
 .../kbn_core_deprecations_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_doc_links_browser.mdx       |   2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_doc_links_server.mdx        |   2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx  |   2 +-
 ...e_elasticsearch_client_server_internal.mdx |   2 +-
 ...core_elasticsearch_client_server_mocks.mdx |   2 +-
 api_docs/kbn_core_elasticsearch_server.mdx    |   2 +-
 ...kbn_core_elasticsearch_server_internal.mdx |   2 +-
 .../kbn_core_elasticsearch_server_mocks.mdx   |   2 +-
 .../kbn_core_environment_server_internal.mdx  |   2 +-
 .../kbn_core_environment_server_mocks.mdx     |   2 +-
 .../kbn_core_execution_context_browser.mdx    |   2 +-
 ...ore_execution_context_browser_internal.mdx |   2 +-
 ...n_core_execution_context_browser_mocks.mdx |   2 +-
 .../kbn_core_execution_context_common.mdx     |   2 +-
 .../kbn_core_execution_context_server.mdx     |   2 +-
 ...core_execution_context_server_internal.mdx |   2 +-
 ...bn_core_execution_context_server_mocks.mdx |   2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx    |   2 +-
 .../kbn_core_fatal_errors_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_http_browser.mdx            |   2 +-
 api_docs/kbn_core_http_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_http_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_http_common.mdx             |   2 +-
 .../kbn_core_http_context_server_mocks.mdx    |   2 +-
 ...re_http_request_handler_context_server.mdx |   2 +-
 api_docs/kbn_core_http_resources_server.mdx   |   2 +-
 ...bn_core_http_resources_server_internal.mdx |   2 +-
 .../kbn_core_http_resources_server_mocks.mdx  |   2 +-
 .../kbn_core_http_router_server_internal.mdx  |   2 +-
 .../kbn_core_http_router_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_http_server.mdx             |   2 +-
 api_docs/kbn_core_http_server_internal.mdx    |   2 +-
 api_docs/kbn_core_http_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_i18n_browser.mdx            |   2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_i18n_server.mdx             |   2 +-
 api_docs/kbn_core_i18n_server_internal.mdx    |   2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx       |   2 +-
 ...n_core_injected_metadata_browser_mocks.mdx |   2 +-
 ...kbn_core_integrations_browser_internal.mdx |   2 +-
 .../kbn_core_integrations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_lifecycle_browser.mdx       |   2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_lifecycle_server.mdx        |   2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_logging_common_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server.mdx          |   2 +-
 api_docs/kbn_core_logging_server_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server_mocks.mdx    |   2 +-
 ...ore_metrics_collectors_server_internal.mdx |   2 +-
 ...n_core_metrics_collectors_server_mocks.mdx |   2 +-
 api_docs/kbn_core_metrics_server.mdx          |   2 +-
 api_docs/kbn_core_metrics_server_internal.mdx |   2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_mount_utils_browser.mdx     |   2 +-
 api_docs/kbn_core_node_server.mdx             |   2 +-
 api_docs/kbn_core_node_server_internal.mdx    |   2 +-
 api_docs/kbn_core_node_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_notifications_browser.mdx   |   2 +-
 ...bn_core_notifications_browser_internal.mdx |   2 +-
 .../kbn_core_notifications_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_overlays_browser.mdx        |   2 +-
 .../kbn_core_overlays_browser_internal.mdx    |   2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_plugins_browser.mdx         |   2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx   |   2 +-
 .../kbn_core_plugins_contracts_browser.mdx    |   2 +-
 .../kbn_core_plugins_contracts_server.mdx     |   2 +-
 api_docs/kbn_core_plugins_server.mdx          |   2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_preboot_server.mdx          |   2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx |   2 +-
 .../kbn_core_rendering_server_internal.mdx    |   2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_root_server_internal.mdx    |   2 +-
 .../kbn_core_saved_objects_api_browser.mdx    |   2 +-
 .../kbn_core_saved_objects_api_server.mdx     |   2 +-
 ...bn_core_saved_objects_api_server_mocks.mdx |   2 +-
 ...ore_saved_objects_base_server_internal.mdx |   2 +-
 ...n_core_saved_objects_base_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_browser.mdx   |   2 +-
 ...bn_core_saved_objects_browser_internal.mdx |   2 +-
 .../kbn_core_saved_objects_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_saved_objects_common.mdx    |   2 +-
 ..._objects_import_export_server_internal.mdx |   2 +-
 ...ved_objects_import_export_server_mocks.mdx |   2 +-
 ...aved_objects_migration_server_internal.mdx |   2 +-
 ...e_saved_objects_migration_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_server.mdx    |   2 +-
 ...kbn_core_saved_objects_server_internal.mdx |   2 +-
 .../kbn_core_saved_objects_server_mocks.mdx   |   2 +-
 .../kbn_core_saved_objects_utils_server.mdx   |   2 +-
 api_docs/kbn_core_status_common.mdx           |   2 +-
 api_docs/kbn_core_status_common_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server.mdx           |   2 +-
 api_docs/kbn_core_status_server_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server_mocks.mdx     |   2 +-
 ...core_test_helpers_deprecations_getters.mdx |   2 +-
 ...n_core_test_helpers_http_setup_browser.mdx |   2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx |   2 +-
 .../kbn_core_test_helpers_model_versions.mdx  |   2 +-
 ...n_core_test_helpers_so_type_serializer.mdx |   2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx |   2 +-
 api_docs/kbn_core_theme_browser.mdx           |   2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx     |   2 +-
 api_docs/kbn_core_ui_settings_browser.mdx     |   2 +-
 .../kbn_core_ui_settings_browser_internal.mdx |   2 +-
 .../kbn_core_ui_settings_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_ui_settings_common.mdx      |   2 +-
 api_docs/kbn_core_ui_settings_server.mdx      |   2 +-
 .../kbn_core_ui_settings_server_internal.mdx  |   2 +-
 .../kbn_core_ui_settings_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_usage_data_server.mdx       |   2 +-
 .../kbn_core_usage_data_server_internal.mdx   |   2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx |   2 +-
 api_docs/kbn_core_user_settings_server.mdx    |   2 +-
 ...kbn_core_user_settings_server_internal.mdx |   2 +-
 .../kbn_core_user_settings_server_mocks.mdx   |   2 +-
 api_docs/kbn_crypto.mdx                       |   2 +-
 api_docs/kbn_crypto_browser.mdx               |   2 +-
 api_docs/kbn_custom_integrations.mdx          |   4 +-
 api_docs/kbn_cypress_config.mdx               |   2 +-
 api_docs/kbn_data_service.mdx                 |   2 +-
 api_docs/kbn_datemath.mdx                     |   2 +-
 api_docs/kbn_deeplinks_analytics.mdx          |   2 +-
 api_docs/kbn_deeplinks_devtools.mdx           |   2 +-
 api_docs/kbn_deeplinks_management.mdx         |   2 +-
 api_docs/kbn_deeplinks_ml.mdx                 |   2 +-
 api_docs/kbn_deeplinks_observability.mdx      |   4 +-
 api_docs/kbn_deeplinks_search.mdx             |   2 +-
 api_docs/kbn_default_nav_analytics.mdx        |   2 +-
 api_docs/kbn_default_nav_devtools.mdx         |   2 +-
 api_docs/kbn_default_nav_management.mdx       |   2 +-
 api_docs/kbn_default_nav_ml.mdx               |   2 +-
 api_docs/kbn_dev_cli_errors.mdx               |   2 +-
 api_docs/kbn_dev_cli_runner.mdx               |   2 +-
 api_docs/kbn_dev_proc_runner.mdx              |   2 +-
 api_docs/kbn_dev_utils.mdx                    |   2 +-
 api_docs/kbn_discover_utils.mdx               |   2 +-
 api_docs/kbn_doc_links.mdx                    |   2 +-
 api_docs/kbn_docs_utils.mdx                   |   2 +-
 api_docs/kbn_dom_drag_drop.mdx                |   2 +-
 api_docs/kbn_ebt_tools.mdx                    |   2 +-
 api_docs/kbn_ecs.mdx                          |   2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx   |   2 +-
 api_docs/kbn_elastic_assistant.mdx            |   2 +-
 api_docs/kbn_es.mdx                           |   2 +-
 api_docs/kbn_es_archiver.mdx                  |   2 +-
 api_docs/kbn_es_errors.mdx                    |   2 +-
 api_docs/kbn_es_query.mdx                     |   2 +-
 api_docs/kbn_es_types.mdx                     |   2 +-
 api_docs/kbn_eslint_plugin_imports.mdx        |   2 +-
 api_docs/kbn_event_annotation_common.mdx      |   2 +-
 api_docs/kbn_event_annotation_components.mdx  |   2 +-
 api_docs/kbn_expandable_flyout.mdx            |   2 +-
 api_docs/kbn_field_types.mdx                  |   2 +-
 api_docs/kbn_field_utils.mdx                  |   2 +-
 api_docs/kbn_find_used_node_modules.mdx       |   2 +-
 .../kbn_ftr_common_functional_services.mdx    |   2 +-
 api_docs/kbn_generate.mdx                     |   2 +-
 api_docs/kbn_generate_console_definitions.mdx |   2 +-
 api_docs/kbn_generate_csv.mdx                 |   2 +-
 api_docs/kbn_generate_csv_types.mdx           |   2 +-
 api_docs/kbn_guided_onboarding.mdx            |   2 +-
 api_docs/kbn_handlebars.mdx                   |   2 +-
 api_docs/kbn_hapi_mocks.mdx                   |   2 +-
 api_docs/kbn_health_gateway_server.mdx        |   2 +-
 api_docs/kbn_home_sample_data_card.mdx        |   2 +-
 api_docs/kbn_home_sample_data_tab.mdx         |   2 +-
 api_docs/kbn_i18n.mdx                         |   2 +-
 api_docs/kbn_i18n_react.mdx                   |   2 +-
 api_docs/kbn_import_resolver.mdx              |   2 +-
 api_docs/kbn_infra_forge.mdx                  |   4 +-
 api_docs/kbn_interpreter.mdx                  |   2 +-
 api_docs/kbn_io_ts_utils.mdx                  |   4 +-
 api_docs/kbn_jest_serializers.mdx             |   2 +-
 api_docs/kbn_journeys.mdx                     |   2 +-
 api_docs/kbn_json_ast.mdx                     |   2 +-
 api_docs/kbn_kibana_manifest_schema.mdx       |   2 +-
 .../kbn_language_documentation_popover.mdx    |   2 +-
 api_docs/kbn_lens_embeddable_utils.mdx        |   4 +-
 api_docs/kbn_logging.mdx                      |   2 +-
 api_docs/kbn_logging_mocks.mdx                |   2 +-
 api_docs/kbn_managed_vscode_config.mdx        |   2 +-
 api_docs/kbn_management_cards_navigation.mdx  |   2 +-
 .../kbn_management_settings_application.mdx   |   2 +-
 ...ent_settings_components_field_category.mdx |   2 +-
 ...gement_settings_components_field_input.mdx |   2 +-
 ...nagement_settings_components_field_row.mdx |   2 +-
 ...bn_management_settings_components_form.mdx |   2 +-
 ...n_management_settings_field_definition.mdx |   2 +-
 api_docs/kbn_management_settings_ids.mdx      |   2 +-
 ...n_management_settings_section_registry.mdx |   2 +-
 api_docs/kbn_management_settings_types.mdx    |   2 +-
 .../kbn_management_settings_utilities.mdx     |   2 +-
 api_docs/kbn_management_storybook_config.mdx  |   2 +-
 api_docs/kbn_mapbox_gl.mdx                    |   2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx       |   2 +-
 api_docs/kbn_ml_agg_utils.mdx                 |   2 +-
 api_docs/kbn_ml_anomaly_utils.mdx             |   2 +-
 api_docs/kbn_ml_category_validator.mdx        |   2 +-
 api_docs/kbn_ml_chi2test.mdx                  |   2 +-
 .../kbn_ml_data_frame_analytics_utils.mdx     |   2 +-
 api_docs/kbn_ml_data_grid.mdx                 |   2 +-
 api_docs/kbn_ml_date_picker.mdx               |   2 +-
 api_docs/kbn_ml_date_utils.mdx                |   2 +-
 api_docs/kbn_ml_error_utils.mdx               |   2 +-
 api_docs/kbn_ml_in_memory_table.mdx           |   2 +-
 api_docs/kbn_ml_is_defined.mdx                |   2 +-
 api_docs/kbn_ml_is_populated_object.mdx       |   2 +-
 api_docs/kbn_ml_kibana_theme.mdx              |   2 +-
 api_docs/kbn_ml_local_storage.mdx             |   2 +-
 api_docs/kbn_ml_nested_property.mdx           |   2 +-
 api_docs/kbn_ml_number_utils.mdx              |   2 +-
 api_docs/kbn_ml_query_utils.mdx               |   2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx      |   2 +-
 api_docs/kbn_ml_route_utils.mdx               |   2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx       |   2 +-
 api_docs/kbn_ml_string_hash.mdx               |   2 +-
 api_docs/kbn_ml_trained_models_utils.mdx      |   2 +-
 api_docs/kbn_ml_url_state.mdx                 |   2 +-
 api_docs/kbn_monaco.mdx                       |   2 +-
 api_docs/kbn_object_versioning.mdx            |   2 +-
 api_docs/kbn_observability_alert_details.mdx  |   2 +-
 .../kbn_observability_alerting_test_data.mdx  |   2 +-
 api_docs/kbn_openapi_generator.mdx            |   2 +-
 api_docs/kbn_optimizer.mdx                    |   2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx    |   2 +-
 api_docs/kbn_osquery_io_ts_types.mdx          |   2 +-
 ..._performance_testing_dataset_extractor.mdx |   2 +-
 api_docs/kbn_plugin_generator.mdx             |   2 +-
 api_docs/kbn_plugin_helpers.mdx               |   2 +-
 api_docs/kbn_profiling_utils.mdx              |   4 +-
 api_docs/kbn_random_sampling.mdx              |   2 +-
 api_docs/kbn_react_field.mdx                  |   2 +-
 api_docs/kbn_react_kibana_context_common.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_render.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_root.mdx    |   2 +-
 api_docs/kbn_react_kibana_context_styled.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_theme.mdx   |   2 +-
 api_docs/kbn_react_kibana_mount.mdx           |   2 +-
 api_docs/kbn_repo_file_maps.mdx               |   2 +-
 api_docs/kbn_repo_linter.mdx                  |   2 +-
 api_docs/kbn_repo_path.mdx                    |   2 +-
 api_docs/kbn_repo_source_classifier.mdx       |   2 +-
 api_docs/kbn_reporting_common.mdx             |   2 +-
 api_docs/kbn_resizable_layout.mdx             |   2 +-
 api_docs/kbn_rison.mdx                        |   2 +-
 api_docs/kbn_rrule.mdx                        |   2 +-
 api_docs/kbn_rule_data_utils.mdx              |   2 +-
 api_docs/kbn_saved_objects_settings.mdx       |   2 +-
 api_docs/kbn_search_api_panels.mdx            |   2 +-
 api_docs/kbn_search_connectors.mdx            |   2 +-
 api_docs/kbn_search_response_warnings.mdx     |   2 +-
 api_docs/kbn_security_solution_features.mdx   |   2 +-
 api_docs/kbn_security_solution_navigation.mdx |   2 +-
 api_docs/kbn_security_solution_side_nav.mdx   |   2 +-
 ...kbn_security_solution_storybook_config.mdx |   2 +-
 .../kbn_securitysolution_autocomplete.mdx     |   2 +-
 api_docs/kbn_securitysolution_data_table.mdx  |   2 +-
 api_docs/kbn_securitysolution_ecs.mdx         |   2 +-
 api_docs/kbn_securitysolution_es_utils.mdx    |   2 +-
 ...ritysolution_exception_list_components.mdx |   2 +-
 api_docs/kbn_securitysolution_grouping.mdx    |   2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx  |   2 +-
 ..._securitysolution_io_ts_alerting_types.mdx |   2 +-
 .../kbn_securitysolution_io_ts_list_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx |   2 +-
 api_docs/kbn_securitysolution_list_api.mdx    |   2 +-
 .../kbn_securitysolution_list_constants.mdx   |   2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx  |   2 +-
 api_docs/kbn_securitysolution_list_utils.mdx  |   2 +-
 api_docs/kbn_securitysolution_rules.mdx       |   2 +-
 api_docs/kbn_securitysolution_t_grid.mdx      |   2 +-
 api_docs/kbn_securitysolution_utils.mdx       |   2 +-
 api_docs/kbn_server_http_tools.mdx            |   2 +-
 api_docs/kbn_server_route_repository.mdx      |   4 +-
 api_docs/kbn_serverless_common_settings.mdx   |   2 +-
 .../kbn_serverless_observability_settings.mdx |   4 +-
 api_docs/kbn_serverless_project_switcher.mdx  |   2 +-
 api_docs/kbn_serverless_search_settings.mdx   |   2 +-
 api_docs/kbn_serverless_security_settings.mdx |   2 +-
 api_docs/kbn_serverless_storybook_config.mdx  |   2 +-
 api_docs/kbn_shared_svg.mdx                   |   4 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx    |   2 +-
 .../kbn_shared_ux_button_exit_full_screen.mdx |   2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx     |   2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx       |   2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx  |   2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx     |   2 +-
 api_docs/kbn_shared_ux_file_context.mdx       |   2 +-
 api_docs/kbn_shared_ux_file_image.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx   |   2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_picker.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_types.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_upload.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_util.mdx          |   2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx  |   2 +-
 .../kbn_shared_ux_link_redirect_app_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_markdown.mdx           |   2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx     |   2 +-
 .../kbn_shared_ux_page_analytics_no_data.mdx  |   2 +-
 ...shared_ux_page_analytics_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_no_data.mdx     |   2 +-
 ...bn_shared_ux_page_kibana_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_template.mdx    |   2 +-
 ...n_shared_ux_page_kibana_template_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx       |   2 +-
 .../kbn_shared_ux_page_no_data_config.mdx     |   2 +-
 ...bn_shared_ux_page_no_data_config_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx  |   2 +-
 .../kbn_shared_ux_prompt_no_data_views.mdx    |   2 +-
 ...n_shared_ux_prompt_no_data_views_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx   |   2 +-
 api_docs/kbn_shared_ux_router.mdx             |   2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx       |   2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx   |   2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx     |   2 +-
 api_docs/kbn_shared_ux_utility.mdx            |   2 +-
 api_docs/kbn_slo_schema.mdx                   |   4 +-
 api_docs/kbn_some_dev_log.mdx                 |   2 +-
 api_docs/kbn_std.mdx                          |   2 +-
 api_docs/kbn_stdio_dev_helpers.mdx            |   2 +-
 api_docs/kbn_storybook.mdx                    |   2 +-
 api_docs/kbn_subscription_tracking.mdx        |   2 +-
 api_docs/kbn_telemetry_tools.mdx              |   2 +-
 api_docs/kbn_test.mdx                         |   2 +-
 api_docs/kbn_test_jest_helpers.mdx            |   2 +-
 api_docs/kbn_test_subj_selector.mdx           |   2 +-
 api_docs/kbn_text_based_editor.mdx            |   2 +-
 api_docs/kbn_tooling_log.mdx                  |   2 +-
 api_docs/kbn_ts_projects.mdx                  |   2 +-
 api_docs/kbn_typed_react_router_config.mdx    |   4 +-
 api_docs/kbn_ui_actions_browser.mdx           |   2 +-
 api_docs/kbn_ui_shared_deps_src.mdx           |   2 +-
 api_docs/kbn_ui_theme.mdx                     |   2 +-
 api_docs/kbn_unified_data_table.mdx           |   2 +-
 api_docs/kbn_unified_doc_viewer.mdx           |   2 +-
 api_docs/kbn_unified_field_list.mdx           |   2 +-
 api_docs/kbn_url_state.mdx                    |   2 +-
 api_docs/kbn_use_tracked_promise.mdx          |   4 +-
 api_docs/kbn_user_profile_components.mdx      |   2 +-
 api_docs/kbn_utility_types.mdx                |   2 +-
 api_docs/kbn_utility_types_jest.mdx           |   2 +-
 api_docs/kbn_utils.mdx                        |   2 +-
 api_docs/kbn_visualization_ui_components.mdx  |   2 +-
 api_docs/kbn_xstate_utils.mdx                 |   4 +-
 api_docs/kbn_yarn_lock_validator.mdx          |   2 +-
 api_docs/kbn_zod_helpers.devdocs.json         | 115 +++++++++++++++++-
 api_docs/kbn_zod_helpers.mdx                  |   7 +-
 api_docs/kibana_overview.mdx                  |   2 +-
 api_docs/kibana_react.mdx                     |   2 +-
 api_docs/kibana_utils.mdx                     |   2 +-
 api_docs/kubernetes_security.mdx              |   2 +-
 api_docs/lens.mdx                             |   2 +-
 api_docs/license_api_guard.mdx                |   2 +-
 api_docs/license_management.mdx               |   2 +-
 api_docs/licensing.mdx                        |   2 +-
 api_docs/links.mdx                            |   2 +-
 api_docs/lists.mdx                            |   2 +-
 api_docs/log_explorer.devdocs.json            |  58 +++++++++
 api_docs/log_explorer.mdx                     |   6 +-
 api_docs/logs_shared.devdocs.json             |  70 +++++++++--
 api_docs/logs_shared.mdx                      |   6 +-
 api_docs/management.mdx                       |   2 +-
 api_docs/maps.mdx                             |   2 +-
 api_docs/maps_ems.mdx                         |   2 +-
 api_docs/metrics_data_access.mdx              |   4 +-
 api_docs/ml.mdx                               |   2 +-
 api_docs/monitoring.mdx                       |   4 +-
 api_docs/monitoring_collection.mdx            |   4 +-
 api_docs/navigation.mdx                       |   2 +-
 api_docs/newsfeed.mdx                         |   2 +-
 api_docs/no_data_page.mdx                     |   2 +-
 api_docs/notifications.mdx                    |   2 +-
 api_docs/observability.mdx                    |   4 +-
 api_docs/observability_a_i_assistant.mdx      |   4 +-
 api_docs/observability_log_explorer.mdx       |   4 +-
 api_docs/observability_onboarding.mdx         |   4 +-
 api_docs/observability_shared.mdx             |   2 +-
 api_docs/osquery.mdx                          |   2 +-
 api_docs/painless_lab.mdx                     |   2 +-
 api_docs/plugin_directory.mdx                 |  74 +++++------
 api_docs/presentation_util.mdx                |   2 +-
 api_docs/profiling.mdx                        |   4 +-
 api_docs/profiling_data_access.mdx            |   4 +-
 api_docs/remote_clusters.mdx                  |   2 +-
 api_docs/reporting.mdx                        |   2 +-
 api_docs/rollup.mdx                           |   2 +-
 api_docs/rule_registry.mdx                    |   2 +-
 api_docs/runtime_fields.mdx                   |   2 +-
 api_docs/saved_objects.mdx                    |   2 +-
 api_docs/saved_objects_finder.mdx             |   2 +-
 api_docs/saved_objects_management.mdx         |   2 +-
 api_docs/saved_objects_tagging.mdx            |   2 +-
 api_docs/saved_objects_tagging_oss.mdx        |   2 +-
 api_docs/saved_search.mdx                     |   2 +-
 api_docs/screenshot_mode.mdx                  |   2 +-
 api_docs/screenshotting.mdx                   |   2 +-
 api_docs/security.mdx                         |   2 +-
 api_docs/security_solution.mdx                |   2 +-
 api_docs/security_solution_ess.mdx            |   2 +-
 api_docs/security_solution_serverless.mdx     |   2 +-
 api_docs/serverless.mdx                       |   2 +-
 api_docs/serverless_observability.mdx         |   2 +-
 api_docs/serverless_search.mdx                |   2 +-
 api_docs/session_view.mdx                     |   2 +-
 api_docs/share.mdx                            |   2 +-
 api_docs/snapshot_restore.mdx                 |   2 +-
 api_docs/spaces.mdx                           |   2 +-
 api_docs/stack_alerts.mdx                     |   2 +-
 api_docs/stack_connectors.mdx                 |   2 +-
 api_docs/task_manager.mdx                     |   2 +-
 api_docs/telemetry.mdx                        |   2 +-
 api_docs/telemetry_collection_manager.mdx     |   2 +-
 api_docs/telemetry_collection_xpack.mdx       |   2 +-
 api_docs/telemetry_management_section.mdx     |   2 +-
 api_docs/text_based_languages.mdx             |   2 +-
 api_docs/threat_intelligence.mdx              |   2 +-
 api_docs/timelines.mdx                        |   2 +-
 api_docs/transform.mdx                        |   2 +-
 api_docs/triggers_actions_ui.mdx              |   2 +-
 api_docs/ui_actions.mdx                       |   2 +-
 api_docs/ui_actions_enhanced.mdx              |   2 +-
 api_docs/unified_doc_viewer.mdx               |   2 +-
 api_docs/unified_histogram.mdx                |   2 +-
 api_docs/unified_search.mdx                   |   2 +-
 api_docs/unified_search_autocomplete.mdx      |   2 +-
 api_docs/uptime.mdx                           |   4 +-
 api_docs/url_forwarding.mdx                   |   2 +-
 api_docs/usage_collection.mdx                 |   2 +-
 api_docs/ux.mdx                               |   4 +-
 api_docs/vis_default_editor.mdx               |   2 +-
 api_docs/vis_type_gauge.mdx                   |   2 +-
 api_docs/vis_type_heatmap.mdx                 |   2 +-
 api_docs/vis_type_pie.mdx                     |   2 +-
 api_docs/vis_type_table.mdx                   |   2 +-
 api_docs/vis_type_timelion.mdx                |   2 +-
 api_docs/vis_type_timeseries.mdx              |   2 +-
 api_docs/vis_type_vega.mdx                    |   2 +-
 api_docs/vis_type_vislib.mdx                  |   2 +-
 api_docs/vis_type_xy.mdx                      |   2 +-
 api_docs/visualizations.mdx                   |   2 +-
 602 files changed, 912 insertions(+), 702 deletions(-)

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index 79d6bd0fa60b9..344807ea5132d 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index 44a00f0166f0f..a2a6b40a9ccdd 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index e422de610d73c..b46a05e2363df 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index 1859dd5070ab5..49ca7191cd276 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 34d364d5c708f..36f382bc36132 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
 
 The user interface for Elastic APM
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 4c55ddbef4a6d..43d328df9039b 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index 9568bf251bc9e..4e295dca50997 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
 
 Asset manager plugin for entity assets (inventory, topology, etc)
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index 2dd3a8887fbb3..ec9c5e5473002 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index d01a5bc56ceb2..89cf976b4622f 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index 07a40c88b70ff..060faaa44edc3 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index f56bf681095d5..fb10c175a2302 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index d83fd0a309ebb..629ce39be1ef5 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index b9ad19ac77d87..cb2127c8505ea 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index 169fc52d24c6e..f8abeae02963f 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 0d68c1ca6b37d..09026ff0f4476 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index fdb390397d55d..81474e3ab7ca8 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index ba43b8f94128a..fe937c723cc0a 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index 5e8772c46442e..f0d0e702a2b4d 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index 7c252dda48602..db12cae107313 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index f71b80f9e3133..7572819ba54e9 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index ea304526bc949..8d6cfaa78fa05 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index b1a644f20ecea..6536f0bb6f0e0 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 09fcce9230843..4d436399dd6ff 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index c18cddf26542a..16b5857c07cf0 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index f6ce269957b10..be2d9d8750f93 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index 415ada7e5549a..df638dcf093d7 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index ec50a49ed74a2..3d2e9d06d22b2 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index 9d6d93896bbd1..8a627881d8e25 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index 0605f38e81386..86532f795550d 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index ca93120bad1d7..6a72170ca2eb8 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index a5e2190da91db..d11bb66eedd7c 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 78ea09c4352cc..995d749149255 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index 50b5e97ce8b63..f528f151cc6b3 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index 30026b7232aca..9a9ef2e3a32af 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,22 +7,11 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
 
-## @elastic/apm-ui
-
-| Plugin | Deprecated API | Reference location(s) | Remove By |
-| --------|-------|-----------|-----------|
-| apm | <DocLink id="kibHomePluginApi" section="def-public.HomePublicPluginSetup.environment" text="environment"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 |
-| apm | <DocLink id="kibLicensingPluginApi" section="def-public.PublicLicense.mode" text="mode"/> | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 |
-| apm | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 |
-| apm | <DocLink id="kibLicensingPluginApi" section="def-server.PublicLicense.mode" text="mode"/> | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 |
-
-
-
 ## @elastic/appex-sharedux
 
 | Plugin | Deprecated API | Reference location(s) | Remove By |
@@ -124,21 +113,24 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 
 
 
-## @elastic/platform-deployment-management
+## @elastic/obs-ux-infra_services-team
 
 | Plugin | Deprecated API | Reference location(s) | Remove By |
 | --------|-------|-----------|-----------|
-| indexLifecycleManagement | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 |
-| management | <DocLink id="kibKbnCoreApplicationBrowserPluginApi" section="def-common.AppMountParameters.appBasePath" text="appBasePath"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 |
-| licenseManagement | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 |
+| apm | <DocLink id="kibHomePluginApi" section="def-public.HomePublicPluginSetup.environment" text="environment"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 |
+| apm | <DocLink id="kibLicensingPluginApi" section="def-public.PublicLicense.mode" text="mode"/> | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 |
+| apm | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24), [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/components/contexts/license/license_context.tsx#:~:text=license%24) | 8.8.0 |
+| apm | <DocLink id="kibLicensingPluginApi" section="def-server.PublicLicense.mode" text="mode"/> | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 |
 
 
 
-## @elastic/profiling-ui
+## @elastic/platform-deployment-management
 
 | Plugin | Deprecated API | Reference location(s) | Remove By |
 | --------|-------|-----------|-----------|
-| profiling | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/components/contexts/license/license_context.tsx#:~:text=license%24) | 8.8.0 |
+| indexLifecycleManagement | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 |
+| management | <DocLink id="kibKbnCoreApplicationBrowserPluginApi" section="def-common.AppMountParameters.appBasePath" text="appBasePath"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 |
+| licenseManagement | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 |
 
 
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 6656244a0d104..8d49eb79c439b 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 103a4765aef64..618da8875e9b3 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index 67b7c83a7d522..eee34b2859336 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index f48f60612e27b..be96ff59a2a9a 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index cd980e046c0b5..15322b822d1b7 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 761f141445842..67453a2a6274a 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 3c59f403f5dba..79ecd24c1f144 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index cab0585e6f537..2a8eb0f2160f0 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index a48018513198b..a4eb4e7f8058c 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index 11688ce74c56b..9979fcc1f61f3 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 78a694fa803ca..0be3ead51ad11 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 64c97d517c370..77cb65e69eb63 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index 8cd31aeb6d5fb..e298adbb072d3 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index f9297e12ab770..3975741a49658 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
 
 
 
-Contact [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index 6745796a8aa5e..a53b896de90c4 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index 764e58d2003fd..e10c8812bc694 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index 85bf89ece8e81..4f529919ee788 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index adac11ffaecf4..21ede27908cd7 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index 7326d0fdf5254..d718a25a26886 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index a97eb757de584..ca69ef9c730d7 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index 983544c21cbc2..4ad0d0a4b033e 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index bb7c2b81099fe..1819769eca519 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index b4e3e9c43d205..3b7997d5148be 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 1ed61db0bee17..80b6090ec9bf5 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index 13b1d9d3eae4e..7c9035dc1a25c 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index c8da9bcbc5653..23217edcda655 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index 8884fde4b0f67..f2936e776b367 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index c1553755bfd99..70bcc3329a001 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index e46a389eb5773..8ea88f0467676 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index 7f14f33cdb14c..014df4a3c1505 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index e980892f16f03..5ba13004e76a8 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index 30db3006ece2f..7c95c19951cd1 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index f8533e2f32778..805bdaedf80fa 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index 862b1632b122e..2f28930fda786 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 251cfddacc854..4e352ea4f03fa 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index e219e64d767f7..dfb72c9c2c124 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index 37cd4ae02e441..b2f93eb65a44a 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 3c969b2ab4ad2..3a530c412f322 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index 58b67e713ea3e..85294a9426301 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index a34321ff0f302..876f2111604fd 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 4a367d304312d..957dc08aa1338 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index 0c87a6b713ba3..b019ca0c0d407 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index c26104ac0a39f..a48ffe71377ff 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index ad0216b320304..a2c63e47c48bc 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index 6f604c920df97..15311fe69a911 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index 98ea735696860..c5dd7d818cbfa 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index 12045a0c02eb3..ce2735b7c321f 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index db10981e828b7..e4298d6fbd707 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index 1594f03974d54..7ce321468cc4c 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index 28fe525991bc3..8daefe2429c8a 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index 92bcb7a2c96ce..a033763e6e021 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index b4db143e0a9fe..c5c36dbcbe364 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index 3a13d48ee8e29..b2a3e70841ff3 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index 281da92f3e3c8..5d8d8c8b4dd2c 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index 48d7861866496..5115b70e1e2da 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index d6229e94c02c5..05425f0e2d101 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index 197bb74e250f7..0437ad348e7cf 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index 86ea8741dddee..625ef98fdb119 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index 168efcb3f2e39..1b2fb81f2a42f 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index d7c2d33f3bf52..4d61c4f6fab18 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index 0aaac9c80ad79..b832156bd1b61 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index ca790ede16899..27dbdcf751ae2 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 35e560b489fa5..8701661ecf467 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index ff1d8867ba8a5..37f2a6d0685e0 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 108e0b9677253..53739bec858cc 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 5bd4eb8a09f47..4d85786eb2778 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index 48deda4b55534..66699c022bf2e 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 43471c74fa4ed..72d6458a84cbb 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index 19825ff1f7f95..88cd260cdba64 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index 75c795f3d4acf..25001d7c88932 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 08c9371334837..06e29d0b56bdc 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index b157724e74836..4c6dfc56b99a1 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index 1fce8782a8b23..94475d709e84f 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index b7770f070b0de..64c3cc5137f45 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index 9d451640efb4d..beaa056668544 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index 6e027fc66b3f0..3e3e8f72664ae 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index 76949a818d230..5c86d95ce6cd5 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index c183348f78a88..e4232cd65aea9 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index b247c70d504a2..09291f5c2e352 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 318efaf95edf3..4697952a480bb 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index b6993c5dd6235..f03f1cba601c7 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index 21b96743400fa..4585636c2c211 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index 8fd52869f10f7..0a3597f9d0a24 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index 720686d39ecf2..f4b16d2ddc9d8 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 820084b6f71d9..2d8b9ea7d93e1 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 7bb49b7dd5fe2..309cf898aa2e4 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index 06487d7ef5fdf..b228a4e9f74a4 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 9aee23e8863ad..8edef60f40ef1 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index 7e85a42cef8cb..c2124609bfbab 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index a9cedab78adfc..3d2224725e3ca 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index eabc8a5cfef54..2113da00397ae 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index 2ad3bd563556a..207fd4ce683fb 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index 445af76da653f..ed4d7be1c47a7 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index 360d67cbf935e..8c3b2296b760d 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index af28a47c6f7b7..3258c12ad837e 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index 19132a817b6f0..226b664174e92 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index b02e22ea97295..251378b2b4e09 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index 43339f74622b9..dde66329fb6b1 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index 59e11f0fd8c4e..3a8dbb54075e8 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index 0f6258cb2016c..e749a37ace742 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index b9239326dd787..190228528e7e9 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index e4d2da5afb2b1..c5954ad61a0ec 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index df3f158fbc6d2..11cbf264304a2 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index 4fce0e412c7e1..429593f78c724 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 3c331525f6809..5aaf838342d34 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 1a185fec94c7c..25d3faad0703d 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index f3752b9d4225c..5bd0dbea761bd 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index f6376e4546fe2..080a8fdce04f0 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index 898ce905acd3e..e93316cc35426 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index 5e1641b3b4ce5..46b6f7575f58a 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 9c49112e25eb4..37ec8ad4f5499 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index 52fbc00a463e4..61f0b0dc8e2c0 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index f70d8cd177327..2fc417d17b8be 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index d7d419049e986..07c42501f61cd 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index 8c66e31679dd6..44bd5f23b2bb7 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index a04eec2e92756..93633492d4228 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index 0705fbc91ac14..692a0e89b64df 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index f7c350cceef81..42794fb65bbde 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index a48105d6c1def..6ad48246e6314 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 15737ed45ca32..635ad66568bdb 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index e940f9c36bc1c..92987ba43d591 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index a11a18a78927d..edfe0586a4ace 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index f6a1de48a3a2f..91236179b066a 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index 3db04e475fe16..df2e2045c3235 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index bdc93099433aa..cf4e0a5bc2f0a 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index 5b5f1885bd4f7..e268cce98dab0 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 8c53db8ab16de..2b8f0360f08f6 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index a905ad90009e6..c31fe4d79fc8d 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 7e2dc38cf39ba..35437dde95171 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index 6ec1c848a1f65..eea3f43d0a6fa 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index d69ae9d51c8d0..405e300256fb4 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index 36ba5fd37735c..ad6333fe15333 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index d94e85a4bbe86..ae89b5cf1f34e 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 9f6f369cb1972..467dd5ecf0ddf 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index e9faf33a59e14..1f5b0c1ff55fe 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index b73a910433022..89815876f5e6d 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index c2a7abefd9840..80e7d4a98e8a8 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index 85f47ce51191d..e72d91c4c4c5f 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index c75ce0f5d0eb4..29a11eb7c331b 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index d3d2f417ec826..18c7fa52fe179 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index 8edcbc801a845..9fd700842c09b 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index e056393523f12..26a2d106a963c 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index e275039ec9dd1..8e5d98c54213f 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index 5e42ba2adb3ad..91eff09d50d38 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index 7cb9b3f4c43c2..74c361a888122 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index c5b8eb9691b3f..48615d2a8dfab 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index 5ca730bd160c8..8aed458d214d9 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 3ffc8b3a40ace..385daee249506 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index 0b87716d3456b..b2a59e0bcb5e0 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index 887fb1948733a..b5a6ed17e9528 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index 32aa75e78a3ac..1a321803586a3 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index f8b1715a07cee..592a487137d7c 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index 9d425fba47514..4fd9d08f9048e 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 000e1f4ad4a83..6c59ee7599e21 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index 43caace10e66a..a58614974cf24 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index 84b82148c8811..5d0a734d1b2c3 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 6a8d8ae1df4d6..24b0478a8aa73 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index 3878f4e4a96bd..ffada5d962a97 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index d456155e56941..c09b4ee600d1f 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index 36a6abca5a436..b5e6516038802 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index ab04ddf9a64c9..11d14be91b38d 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 4898e64944c2c..23308f7893c9a 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index d5246151aa7a4..88f1f242d9b8d 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index 46d3f3371c556..3cdf970e13a61 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index ad6e89d7c74a0..1435a3b8801a7 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index 4e21f4a5ac946..d70a9d0840daf 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index 269b53c80f27c..c95657c8f9cb9 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index aaf8ee0a2fbb5..99d1cc738688f 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index dab3d30bc864c..480dda23e0e6e 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index e96f50fb4ca83..d7beed8118214 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index 25b363454cf5a..d8e4327951340 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index 7748399fa5f78..79fedf5392ea3 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index a1bf7011c0d56..692fcb3d4a911 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index c4f03c8095bc5..2a600df292c2d 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index c74d96659a3fb..b69b9f631f062 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index e86898b07e98e..b1ca302842941 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index 8f761ad9f0683..02b282f2f033b 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index 84fe11dc540e9..781da4845e02f 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index 19d6f406b8bfd..d6337b83c13dc 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index f9d25a4dcee42..800a3fb3d73bc 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index 3277bf01e2fa2..25e8a18ef474d 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 2c69933c0b735..78b799734d2f3 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 2674634a617ad..8d4e9411e5381 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index e58442e08efca..859828d6f64a3 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index c25380c04384b..cdfe21e88848e 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index 1c58cca9a11e4..79f333e28c616 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index 30ed63bab1822..b10478d876d27 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index 28bab30dce5cf..9014806598a62 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index 30b2d43304b6d..87a01f07b32da 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index 04cf6c17985db..7f85d09a9395d 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index 122004ad3981b..d0a262e2a55df 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 50aa9328dc8d1..762b4d0d17ca7 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index f6405ee7549a2..ac60d73d17db0 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 1bfab0b145962..07219474b2b0a 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 866389f9d2e23..63ee8075087d6 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index 5062d43925dc5..0bb5e523a3f7a 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index 2a27057448908..6fbc4a9898fd3 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index afd5aa03b645b..981d23a6e54fc 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index 6c23da75e7b71..cf3aa89e27729 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 9594cf99e1f80..41242f7e42e6f 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index aa8f72a0f4c4c..a31114b190341 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index c844745679a3a..33ecafd8a2f88 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 8815a87f2283f..2c58d47cd0780 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index f1cd4f81f240f..e99b3eda698e4 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index 5ed640fa21782..c47cfaa541254 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index 7c4fce3446526..da54e0839ac0a 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index bacfe3767ab4c..75e2c7938710e 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index b6972bd5e2b6b..874ef35853c40 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 0549f5ba24520..7c1f0a84a4b82 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index d3a0d567278fc..18f9948a40385 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index d08c4f2c4b94f..ae89cf3a98457 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index 0a4380ca56aa1..19cf620c10cdd 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index af6f99c2484eb..7f8baf121215f 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index 6cc65d41c4195..bd2c8161f22fa 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index d1aba02e41355..f65f5b44702b3 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index 5901aaf1f0cd1..b6fe72d41cbe9 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index e7f510246535f..1c89712b97770 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index eab3ba41e0180..2f91a6bbd321a 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index 433273d1d1c58..324036600778a 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index a88b019022f70..c5ac2de0d44c9 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 701dfd478b3b9..71aa4202e64e4 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index 859eaee6a1937..b364600190736 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index 30c2072734aa3..41a80549ed4a7 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index b3adcc6683828..b474db754102a 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index 47ddf93ddfa92..7e0524e0b4e24 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index 3017e5cd19d48..e36fe42be9c8f 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 26268bfcb3e1a..1b7eb9df4f5ae 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index dce9956fe6907..052412b877fd3 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index 18143920c7907..4974df0266f2f 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index 134488dca2650..df5a9e4609162 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index 1ff09d1d4d78e..d2090ee39a84b 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index 8f18b912ae975..5429bc8d8d372 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index bb3af7b9503e6..db298418a1472 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index 6105ca324856d..c69c42d7f1d64 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index b7402f15bb751..0cb78a8d62341 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index ff0a567c8074b..9dd0a5ac598ed 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index e915b7f34e75a..c022b8fcb4da2 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index a7c4f1d6e7120..63256de70c435 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 4fadd67ce1fc7..72f0067780b71 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 67b836359a58b..9c7a65a3f50fa 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index 4bd349f3de587..86512f12aa6db 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 3fe1b0eed5069..2a7d7cfc9a2f3 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index a3afdeaad02e1..2a89e71bd1453 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index c7ea9616e4f59..a27761f9af1d3 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index 0568c0f3bcdc4..6c718af09f897 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index fe32464a50260..ffeb2daeeb780 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index 4f2520d3d0b98..9f6281b9f1e79 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 11f7868fc42ce..54fa9230107c0 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index b6d7cdafdf68f..64cde7b8b9f64 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index cb7bc21a167f0..7ed0fb4cdd708 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index 88efedef7468d..bfc0a00c94a8c 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index 51f1bb14d960a..3564a72b28b3b 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index b56317003cc5c..baef54341310e 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index 4d60e923a1924..57a8cdcf25502 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index 18a40c945e946..43604425a269a 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index bb409e0ab60b3..0772384e49b5f 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index 9e86b9fd56748..78bfb054d9de1 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index 98323049223a7..c1e919c94c392 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 33a49a8eb1d40..af90c9cbb0e69 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index 59bd05e52b2ee..9e7882dc21ea6 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index a6b844ecb2c7e..9e4ac47a3d42a 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index 701acd2db161a..79135a09c4981 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index deb2dffe0c509..7147130f2c737 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index bc638ff758be0..5cd81716d3510 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index 7f372a2861437..023dec8e101c5 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 0f799e1de81af..9aff00c50b610 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index aaf8d0984646c..8f9ad3312abef 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index 8c943d3b493fc..c15a006b986f3 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index 5b7a1dbc559b2..acafd621938b4 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index 3639a0d26346f..7e93f07ecf8e4 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index c0df38148db3e..21fbf44d6fd8b 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index d62985dfd7f6a..71d80dbbaeab2 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 2dd9d91dc5458..7f965e23722ec 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index 8ee78d7ed3078..797b7eaa04704 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index ca66104a17d5c..61cb22977f866 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 71f35c33fb24d..498826cd816a6 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 5942741073a49..4fdfeedcedbd7 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index 1432c8e6c190a..b4476fbe97ac3 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index 4f01caae82aa6..e1cf8f12472d8 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index 0c039b55f8212..c1df79c08b05d 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 85dd015f6d898..369182b8e471c 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index 0f77ad571695c..85cfae687c98a 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 3ca1a8041f8bb..24f3f32e470ae 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index d91b1be1a69af..dc47b2c7bf6d5 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 6163541650729..043110457fcd8 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index 7cd2e415cb5ce..b95afc2f00419 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index fee7b2349b33b..09f62942cb7c5 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index 76edaacf1fa44..bcdeeeb934193 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index f122259677fdb..a308cec0df168 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index 887669dd7dc82..f21779633d2f1 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index 4215068b0e66f..2adf6f95a4ce9 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index 1f9208f6a7188..0bf27604f0f52 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index 98eb9a65bb892..fb00b83b24036 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index ac6c06c6c981f..ec28ed86bc40e 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
 
 
 
-Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) for questions regarding this plugin.
+Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index f11396a09a7db..0c0ca1f109dc7 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index f8a4d3ce649de..c1aad9862892c 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index 7a0d4830906ae..e1cdc50df24a7 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index 86af1e84a1d25..d4a3d6a00e037 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index f7eafdb308342..196a10ce672bf 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index 35b177852a474..e6b680f0c091d 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 2deb7a2fa3ab0..3424b3a134228 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 095ab28b577a9..ae6fc24cf04e2 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index abd249b9861f6..ae9fc1be9b75b 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 46c44d5194b9d..af35dffb4465d 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 77d0231d9136b..5fffd9dbcd279 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index 9a5b2107084c2..c8017ae261963 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index 25a1f4c0eee36..e5e1801782e8d 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index 51cea3f0354cf..c536c9bd8e5cb 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index 4b3e8b1d11ecd..3c50689b4a31c 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index 8073070c26cdc..0c51b436c9783 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index 72de35943576d..97453d0a366a9 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index c9d6d1273a059..ecddc06a4a595 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 093f00a741a76..42a30037b9320 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index 1da482465a39a..0b326ed7a74ce 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index fb9d2e6df2c3e..d51f4f7b070d4 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index 8d897d09d1bce..cb635bd73b33f 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index 446e951b5c819..860646468f35e 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index 6c0ab70d88f5e..41004ca090223 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index 81ceb5c22c163..ca80e400ea05a 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index 3390f2aa29ae8..95659db6c6412 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 868dd6f63164d..b2e0c3fae7de3 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index 18d2649ac7898..e81b3714f2a4e 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index 6fd835578117f..35b68daf75f80 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index a4d36a1a7dd17..f393988640f3a 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index 62f91772c4620..12114392bbd54 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index 744369231b0d4..c88adac289e1d 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index 023c7f1a65524..9a31262324cf5 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index f479e3f74bc3b..775b02f93dbbd 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index 14bc890beed39..cebadc630cc61 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index f6a2a1a05afc0..3584886326327 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index 5b7695907d09d..b37ba6c830c89 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index ed416849c10d1..ff83a10ec6746 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index f9cff23934535..4f7cc343cc372 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index e745c7676de39..1c067471841a1 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index 4fe451eec3af0..569c9d6e3075c 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index 3b8fedf36224e..851e1d6531088 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index fba05a0aa55e0..fc7d88ce69d78 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index c42f3b4ef0369..2eda7fdcea06a 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index 6ba50731ad3c1..67b2b74ab291d 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index 0251140055373..5b3723deab5da 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index 7ccabe6a642fb..c17bc909615a7 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index 7d3ad89c97e16..caa68e2868c33 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 591cca7c47f1c..ae1eb3b17ade9 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index 0589f62bcb40e..c330d60337324 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index a3062145c75e0..7de49dba3bbb3 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 4beb02219d6c9..2b516711627c0 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index 48da152f6d22a..f60244fdeaf78 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index 6a5a0dac93cb0..eb9b6bbb50c6e 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index a4e6f0b6fabe0..c40d043aebd25 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index 8e61584fa1f3e..48339da270407 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 90348167e8150..6f54e9722e0bd 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index 1de0809809e3c..5a0d5740a19ce 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index 46ccc94006147..e3052a337b23c 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 48576fbc7a32f..08b72c563bc34 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
 
 
 
-Contact [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index df3be15b566b9..1d5572853c156 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index e64ea0608ca6f..a48119d797489 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 013b5c79a4187..81efb4c6a95d2 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index a6082fdcfa91f..f2298c403a79b 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index bfa3dfe2acc2b..1fda93bf012e7 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 364a64350d3bf..70a092abe7311 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index f61655e4cc153..bc274810cd408 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index fad1d2eb0ad65..b970d2578b763 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index 6e2c60e772bfb..416ffd7b763a9 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index 01e29f3224da3..b38795b5653d5 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index a66d9c7330bc6..81a98f5955e24 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index 02a1d10a6ca30..272dd4c4e3737 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index b2de84a316a81..8f95c65a46a7d 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index c721543728b6e..850de40565d32 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 59dc0964a4e02..8dfb0d4b9e96b 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index b7fe68e229c2d..ab217896fcc0f 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index e2d4a20e28804..e429a9e4fa4da 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index 8dc883f660aea..5ea6e6109dcfd 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index 2cdbca5cf9a87..db2e8743e143a 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index 05597b410d69d..486d13deb0eee 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index 22971865dffdf..58302b3b1dab7 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 0c34855f8b729..108c56eab0389 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index 9e9bded1356e2..b502143cbcac9 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index 095f7e2482f56..12b83d62f51e2 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index 7658198f9eb18..614f57ad2a42d 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index 16bbc27043155..a3fe74b32ba53 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index 356e58f57b2b8..37a20446489b6 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index d4d144344f10b..7dff81a34f9a7 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index ebdd2db31506f..7b72047d8282c 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index b8d583ea15bfa..9ac5ac2967f28 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index b5bfffd4723f8..8ef35b4f9bffb 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index 0af6bbe1a240e..dc92634e276aa 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index 8229f99be8a33..bdda07d0d50db 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index c3afbcfc88864..a3286883b72ef 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 1a8cd30377829..0fd917a5ae11e 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 1b121a8af5b73..8e18001fdee75 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index 76b31ec1fc2ec..eba1068653b56 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index a2a636dfcfed0..fc2bbbc628a44 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index 33ee4721a4e5f..be1e14a30b908 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 99c05769469d8..971006815395b 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 8bde93fe251bc..1988226db6a9c 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index ed278f21d54d0..9fec5f7b068d7 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index 40449d44b77e0..2eef3c7f77e89 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index 5700ce78a734e..fcb6c1b95d840 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index de330ec1cc27a..2d8491f1a9db9 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index f95afa09fc191..f100f3549a49d 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index be23f4cf70326..de992b35b41bd 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
 
 
 
-Contact [@elastic/appex-sharedux @elastic/apm-ui @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) for questions regarding this plugin.
+Contact [@elastic/appex-sharedux @elastic/platform-deployment-management @elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/appex-sharedux ) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 7fac78a9bb564..67a32fe45fe0c 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index ca9700a614db7..69de44d8b9cc8 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index a35895b0064e8..cf1574a8bb80f 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index c6229651ac711..c43f03aff7b2f 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index d123dce4c6f90..83394a64ab98b 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index f3eeeb44351c3..186e686dee278 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index 182c3a25dfe55..566f5d536fd02 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 0d7234decfc7f..60a220b649057 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index b14c67e7bb373..74a0ca81726a0 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index d3326928c3b76..8e1771c21abbf 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 1a9304dc02e81..614fdd5fd3510 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 2c0b00734e8ed..9c6709b1bc192 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index b5df255dc6b0d..2cf8f5ff61597 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index 377c45c300fbb..540e82ad00fc4 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index 92e686be4e3d4..587abaad862f9 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index d1b6eeb07f5ea..cec7fa8b80fd8 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index a26a1c60e853f..2c157dabb2e34 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 5d65e7ad38c18..1db76063af305 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index 2a72af7fd8b6d..8cfba30237699 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index d7522d4d80438..ae2c444598010 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index 4e1a3e6075aa4..2c5c99c7f42ec 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index ab46b7f9c0e41..4b50ad5292780 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 486fafde66755..0abcbcc8a2336 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index eaf99d1e22552..cadc78dd3a2ef 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index d796247eded57..57c4187f3c736 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index a996f8a427ad3..3468f5455e114 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index a6eaf67ff7989..4426f9b62e59b 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index f4875283dd1ad..ea4964774591d 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index 7998a5f67ce51..c8f111729c83b 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index 008e4a42ed3b6..875dbe31dce9a 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index 5daa87a2702f3..8f2ac04d85ad5 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 9c5d9c657a3f0..303b1347b41ea 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index 04446b52002b2..60c1e4628f4d1 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index cf3e33531aace..a6e7e60d6b2cc 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index 51f5f3a07c49d..cd8d9d9795acf 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index 1482c714a4c2b..b5ac636bc8456 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index e5de125c294aa..2e6214f4582a7 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 5fd7eda65f903..9b31fa1e2b0d4 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index 3daeaebda9713..56ee6c64a7ba4 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index 1598ae3876775..119adaf54c563 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index d7ead4950fb8a..595c91e63e455 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index eaf36f4f961ac..b762ba946e38f 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index 4d64731d7aa84..ac66676fb7fe1 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index ac1a5b68ebbf4..d24724b3e7859 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
 
 
 
-Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) for questions regarding this plugin.
+Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index 8cd27c028c974..4d0e133285caf 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index 11f0cef2b3d4b..b62b9e3e164e4 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index 6dd67f31b194e..1aaacdaffd811 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index eacecaf19be82..45dc120a15bb4 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index 40630d5fe3a36..531fbc6f5653d 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index 256b391a1d218..73cc2b44e84a5 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index 65c19d00f5606..b6b3866a7b711 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index d7ac3de8c5edc..6fa4571742c68 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index 16d945be03279..f9eb7fbe61b99 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index 855250440a526..681b1c3751c70 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index 46f5ca54a06dc..c0c610ab4af84 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index c458fbcca3621..bff45de4cf6b2 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index 5af49a8a89d65..a1d61e47a4706 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index 3595d9a5bf56a..55fcf8055bae5 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 9a1f7b71479d2..6b762d38358be 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index 22ab2668a15aa..27d57ca5190d2 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 93b16354a5a63..78471dc41276f 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index c1a77c0fe7583..cf4ce3779c9a0 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index cb332ab65b48c..adbc9f4911b7f 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index 1a5f5e8e55f8f..01c08c77b269c 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 6101e37fbe13d..081e72351b312 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index 9f11b02cf4498..81e8636adbdfe 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index c4734fefd337f..a92d2b393861e 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index e6f81e2132798..48e1fa438c454 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index ee7c0d8e6a9b9..d70fb4d6e7ad7 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 4847f2d418035..269b5630aa125 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index dc30fb8f702a2..86603c8ce76d7 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index ab36fa7eaeb4a..90ea9da16ea1b 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.devdocs.json b/api_docs/kbn_zod_helpers.devdocs.json
index aea5a227f726a..2001282ced394 100644
--- a/api_docs/kbn_zod_helpers.devdocs.json
+++ b/api_docs/kbn_zod_helpers.devdocs.json
@@ -19,6 +19,45 @@
   "common": {
     "classes": [],
     "functions": [
+      {
+        "parentPluginId": "@kbn/zod-helpers",
+        "id": "def-common.ArrayFromString",
+        "type": "Function",
+        "tags": [],
+        "label": "ArrayFromString",
+        "description": [
+          "\nThis is a helper schema to convert comma separated strings to arrays. Useful\nfor processing query params.\n"
+        ],
+        "signature": [
+          "(schema: T) => Zod.ZodEffects<Zod.ZodArray<T, \"many\">, T[\"_output\"][], unknown>"
+        ],
+        "path": "packages/kbn-zod-helpers/src/array_from_string.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/zod-helpers",
+            "id": "def-common.ArrayFromString.$1",
+            "type": "Uncategorized",
+            "tags": [],
+            "label": "schema",
+            "description": [
+              "Array items schema"
+            ],
+            "signature": [
+              "T"
+            ],
+            "path": "packages/kbn-zod-helpers/src/array_from_string.ts",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          }
+        ],
+        "returnComment": [
+          "Array schema that accepts a comma-separated string as input"
+        ],
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/zod-helpers",
         "id": "def-common.expectParseError",
@@ -180,6 +219,62 @@
         ],
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/zod-helpers",
+        "id": "def-common.safeParseResult",
+        "type": "Function",
+        "tags": [],
+        "label": "safeParseResult",
+        "description": [
+          "\nSafely parse a payload against a schema, returning the output or undefined.\nThis method does not throw validation errors and is useful for validating\noptional objects when we don't care about errors.\n"
+        ],
+        "signature": [
+          "(payload: unknown, schema: T) => T[\"_output\"] | undefined"
+        ],
+        "path": "packages/kbn-zod-helpers/src/safe_parse_result.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/zod-helpers",
+            "id": "def-common.safeParseResult.$1",
+            "type": "Unknown",
+            "tags": [],
+            "label": "payload",
+            "description": [
+              "Schema payload"
+            ],
+            "signature": [
+              "unknown"
+            ],
+            "path": "packages/kbn-zod-helpers/src/safe_parse_result.ts",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          },
+          {
+            "parentPluginId": "@kbn/zod-helpers",
+            "id": "def-common.safeParseResult.$2",
+            "type": "Uncategorized",
+            "tags": [],
+            "label": "schema",
+            "description": [
+              "Validation schema"
+            ],
+            "signature": [
+              "T"
+            ],
+            "path": "packages/kbn-zod-helpers/src/safe_parse_result.ts",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          }
+        ],
+        "returnComment": [
+          "Schema output or undefined"
+        ],
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/zod-helpers",
         "id": "def-common.stringifyZodError",
@@ -237,6 +332,24 @@
         "initialIsOpen": false
       }
     ],
-    "objects": []
+    "objects": [
+      {
+        "parentPluginId": "@kbn/zod-helpers",
+        "id": "def-common.BooleanFromString",
+        "type": "Object",
+        "tags": [],
+        "label": "BooleanFromString",
+        "description": [
+          "\nThis is a helper schema to convert a boolean string (\"true\" or \"false\") to a\nboolean. Useful for processing query params.\n\nAccepts \"true\" or \"false\" as strings, or a boolean."
+        ],
+        "signature": [
+          "Zod.ZodEffects<Zod.ZodUnion<[Zod.ZodEnum<[\"true\", \"false\"]>, Zod.ZodBoolean]>, boolean, boolean | \"true\" | \"false\">"
+        ],
+        "path": "packages/kbn-zod-helpers/src/boolean_from_string.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      }
+    ]
   }
 }
\ No newline at end of file
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 8de510a043a6c..5418192352c30 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
@@ -21,10 +21,13 @@ Contact [@elastic/security-detection-rule-management](https://github.com/orgs/el
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 12 | 0 | 9 | 0 |
+| 18 | 0 | 9 | 0 |
 
 ## Common
 
+### Objects
+<DocDefinitionList data={kbnZodHelpersObj.common.objects}/>
+
 ### Functions
 <DocDefinitionList data={kbnZodHelpersObj.common.functions}/>
 
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index a38c271a1362b..acda13eec48f9 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index eb013397ce6ad..148e2fd1ff899 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index b1050eb29ebb0..5b2c927e52ab3 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index f32ca38f7e803..7398253f9ec4b 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index 73e8c9ca0b144..4c425c02c4b0f 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index 52e82f34dd57e..2389f1fc1ab89 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index f38b0f2cd7c44..30828241be287 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index 40987eef022ec..f0b23f27f3769 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index 030db9e1bef80..f40501769034f 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 2c4d6431a3ee5..675946f917b11 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.devdocs.json b/api_docs/log_explorer.devdocs.json
index 238163290a823..783b558b4505e 100644
--- a/api_docs/log_explorer.devdocs.json
+++ b/api_docs/log_explorer.devdocs.json
@@ -4,6 +4,64 @@
     "classes": [],
     "functions": [],
     "interfaces": [
+      {
+        "parentPluginId": "logExplorer",
+        "id": "def-public.LogExplorerCustomizations",
+        "type": "Interface",
+        "tags": [],
+        "label": "LogExplorerCustomizations",
+        "description": [],
+        "path": "x-pack/plugins/log_explorer/public/components/log_explorer/types.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "logExplorer",
+            "id": "def-public.LogExplorerCustomizations.flyout",
+            "type": "Object",
+            "tags": [],
+            "label": "flyout",
+            "description": [],
+            "signature": [
+              "{ renderContent?: ",
+              "FlyoutRenderContent",
+              " | undefined; } | undefined"
+            ],
+            "path": "x-pack/plugins/log_explorer/public/components/log_explorer/types.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "logExplorer",
+        "id": "def-public.LogExplorerFlyoutContentProps",
+        "type": "Interface",
+        "tags": [],
+        "label": "LogExplorerFlyoutContentProps",
+        "description": [],
+        "path": "x-pack/plugins/log_explorer/public/components/log_explorer/types.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "logExplorer",
+            "id": "def-public.LogExplorerFlyoutContentProps.doc",
+            "type": "Object",
+            "tags": [],
+            "label": "doc",
+            "description": [],
+            "signature": [
+              "DataTableRecord"
+            ],
+            "path": "x-pack/plugins/log_explorer/public/components/log_explorer/types.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "logExplorer",
         "id": "def-public.LogExplorerStateContainer",
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index a611058166269..21bba29b8d30c 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,20 +8,20 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
 
 This plugin provides a LogExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption.
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 22 | 0 | 22 | 7 |
+| 26 | 0 | 26 | 8 |
 
 ## Client
 
diff --git a/api_docs/logs_shared.devdocs.json b/api_docs/logs_shared.devdocs.json
index 38c6515cf1aa6..7bb6418a73bc7 100644
--- a/api_docs/logs_shared.devdocs.json
+++ b/api_docs/logs_shared.devdocs.json
@@ -2580,10 +2580,10 @@
     "interfaces": [
       {
         "parentPluginId": "logsShared",
-        "id": "def-public.LogAIAssistantProps",
+        "id": "def-public.LogAIAssistantDocument",
         "type": "Interface",
         "tags": [],
-        "label": "LogAIAssistantProps",
+        "label": "LogAIAssistantDocument",
         "description": [],
         "path": "x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx",
         "deprecated": false,
@@ -2591,24 +2591,40 @@
         "children": [
           {
             "parentPluginId": "logsShared",
-            "id": "def-public.LogAIAssistantProps.aiAssistant",
-            "type": "Object",
+            "id": "def-public.LogAIAssistantDocument.fields",
+            "type": "Array",
             "tags": [],
-            "label": "aiAssistant",
+            "label": "fields",
             "description": [],
             "signature": [
+              "{ field: string; value: ",
               {
-                "pluginId": "observabilityAIAssistant",
-                "scope": "public",
-                "docId": "kibObservabilityAIAssistantPluginApi",
-                "section": "def-public.ObservabilityAIAssistantPluginStart",
-                "text": "ObservabilityAIAssistantPluginStart"
-              }
+                "pluginId": "@kbn/utility-types",
+                "scope": "common",
+                "docId": "kibKbnUtilityTypesPluginApi",
+                "section": "def-common.JsonArray",
+                "text": "JsonArray"
+              },
+              "; }[]"
             ],
             "path": "x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx",
             "deprecated": false,
             "trackAdoption": false
-          },
+          }
+        ],
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "logsShared",
+        "id": "def-public.LogAIAssistantProps",
+        "type": "Interface",
+        "tags": [],
+        "label": "LogAIAssistantProps",
+        "description": [],
+        "path": "x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
           {
             "parentPluginId": "logsShared",
             "id": "def-public.LogAIAssistantProps.doc",
@@ -2617,7 +2633,13 @@
             "label": "doc",
             "description": [],
             "signature": [
-              "LogAIAssistantDocument",
+              {
+                "pluginId": "logsShared",
+                "scope": "public",
+                "docId": "kibLogsSharedPluginApi",
+                "section": "def-public.LogAIAssistantDocument",
+                "text": "LogAIAssistantDocument"
+              },
               " | undefined"
             ],
             "path": "x-pack/plugins/logs_shared/public/components/log_ai_assistant/log_ai_assistant.tsx",
@@ -3283,6 +3305,28 @@
           "path": "x-pack/plugins/logs_shared/public/types.ts",
           "deprecated": false,
           "trackAdoption": false
+        },
+        {
+          "parentPluginId": "logsShared",
+          "id": "def-public.LogsSharedClientStartExports.LogAIAssistant",
+          "type": "CompoundType",
+          "tags": [],
+          "label": "LogAIAssistant",
+          "description": [],
+          "signature": [
+            "React.ComponentClass<",
+            "Optional",
+            "<",
+            "LogAIAssistantDeps",
+            ", \"observabilityAIAssistant\">, any> | React.FunctionComponent<",
+            "Optional",
+            "<",
+            "LogAIAssistantDeps",
+            ", \"observabilityAIAssistant\">>"
+          ],
+          "path": "x-pack/plugins/logs_shared/public/types.ts",
+          "deprecated": false,
+          "trackAdoption": false
         }
       ],
       "lifecycle": "start",
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index db509274dddc4..07c5395ae596c 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,20 +8,20 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
 
 Exposes the shared components and APIs to access and visualize logs.
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 285 | 11 | 270 | 28 |
+| 287 | 11 | 272 | 28 |
 
 ## Client
 
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index becb863e7f7f0..7070c3891da91 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index dc5cc8b17031d..94e4f40853f92 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index 226f35ef00c13..0d88f2fddfbb9 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index ed30c0408d076..def0fc90c6bf2 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
 
 Exposes utilities for accessing metrics data
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index 4d24b29d60728..fafff77be6326 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index d285e875528d6..0d90802e1d002 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 35896402f756c..40177041b010c 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
 
 
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index cfddc6104ff07..57cbeac274314 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index a8b52be88372a..0cbffc666898a 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index 6886646e95d92..c3ab370fade51 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 3768e2039b10b..78e6044611743 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 583578dcba391..2045af15dd41b 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
 
 
 
-Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) for questions regarding this plugin.
+Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index 52c4508d1c26b..cab458c4a6bd2 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
 
 
 
-Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) for questions regarding this plugin.
+Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index f736c55c923b1..28bf25c745233 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
 
 This plugin exposes and registers observability log consumption features.
 
-Contact [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index 082e2d93d41c2..93737144855d0 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
 
 
 
-Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index d60a6bee07678..15f0bd436fa67 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index db5498030bfa7..60b55c41fab64 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index 2f7be82d8cf73..e23405ae26578 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index daee76beae7a4..e282bac34027d 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | API Count | Any Count | Missing comments | Missing exports |
 |--------------|----------|-----------------|--------|
-| 76070 | 233 | 65040 | 1596 |
+| 76082 | 233 | 65046 | 1597 |
 
 ## Plugin Directory
 
@@ -31,9 +31,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibAdvancedSettingsPluginApi" text="advancedSettings"/> | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 17 | 1 | 15 | 2 |
 | <DocLink id="kibAiopsPluginApi" text="aiops"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 69 | 1 | 4 | 1 |
 | <DocLink id="kibAlertingPluginApi" text="alerting"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 809 | 1 | 778 | 50 |
-| <DocLink id="kibApmPluginApi" text="apm"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 29 | 0 | 29 | 120 |
-| <DocLink id="kibApmDataAccessPluginApi" text="apmDataAccess"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 9 | 0 | 9 | 0 |
-| <DocLink id="kibAssetManagerPluginApi" text="assetManager"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Asset manager plugin for entity assets (inventory, topology, etc) | 9 | 0 | 9 | 2 |
+| <DocLink id="kibApmPluginApi" text="apm"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | The user interface for Elastic APM | 29 | 0 | 29 | 120 |
+| <DocLink id="kibApmDataAccessPluginApi" text="apmDataAccess"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 9 | 0 | 9 | 0 |
+| <DocLink id="kibAssetManagerPluginApi" text="assetManager"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Asset manager plugin for entity assets (inventory, topology, etc) | 9 | 0 | 9 | 2 |
 | <DocLink id="kibBannersPluginApi" text="banners"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 9 | 0 |
 | <DocLink id="kibBfetchPluginApi" text="bfetch"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 91 | 1 | 75 | 2 |
 | <DocLink id="kibCanvasPluginApi" text="canvas"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 |
@@ -75,7 +75,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibEventAnnotationPluginApi" text="eventAnnotation"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 201 | 0 | 201 | 6 |
 | <DocLink id="kibEventAnnotationListingPluginApi" text="eventAnnotationListing"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The listing page for event annotations. | 15 | 0 | 15 | 0 |
 | <DocLink id="kibEventLogPluginApi" text="eventLog"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 111 | 0 | 111 | 11 |
-| <DocLink id="kibExploratoryViewPluginApi" text="exploratoryView"/> | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 131 | 1 | 131 | 14 |
+| <DocLink id="kibExploratoryViewPluginApi" text="exploratoryView"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 131 | 1 | 131 | 14 |
 | <DocLink id="kibExpressionErrorPluginApi" text="expressionError"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'error' renderer to expressions | 17 | 0 | 15 | 2 |
 | <DocLink id="kibExpressionGaugePluginApi" text="expressionGauge"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 59 | 0 | 59 | 2 |
 | <DocLink id="kibExpressionHeatmapPluginApi" text="expressionHeatmap"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Heatmap plugin adds a `heatmap` renderer and function to the expression plugin. The renderer will display the `heatmap` chart. | 112 | 0 | 108 | 2 |
@@ -123,30 +123,30 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibLicensingPluginApi" text="licensing"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 |
 | <DocLink id="kibLinksPluginApi" text="links"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | A dashboard panel for creating links to dashboards or external links. | 64 | 0 | 62 | 7 |
 | <DocLink id="kibListsPluginApi" text="lists"/> | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 224 | 0 | 96 | 51 |
-| <DocLink id="kibLogExplorerPluginApi" text="logExplorer"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin provides a LogExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 22 | 0 | 22 | 7 |
-| <DocLink id="kibLogsSharedPluginApi" text="logsShared"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Exposes the shared components and APIs to access and visualize logs. | 285 | 11 | 270 | 28 |
+| <DocLink id="kibLogExplorerPluginApi" text="logExplorer"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 26 | 0 | 26 | 8 |
+| <DocLink id="kibLogsSharedPluginApi" text="logsShared"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 287 | 11 | 272 | 28 |
 | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 |
 | <DocLink id="kibManagementPluginApi" text="management"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 45 | 7 |
 | <DocLink id="kibMapsPluginApi" text="maps"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 260 | 0 | 259 | 29 |
 | <DocLink id="kibMapsEmsPluginApi" text="mapsEms"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 68 | 0 | 68 | 0 |
-| <DocLink id="kibMetricsDataAccessPluginApi" text="metricsDataAccess"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Exposes utilities for accessing metrics data | 104 | 8 | 104 | 4 |
+| <DocLink id="kibMetricsDataAccessPluginApi" text="metricsDataAccess"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Exposes utilities for accessing metrics data | 104 | 8 | 104 | 4 |
 | <DocLink id="kibMlPluginApi" text="ml"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 150 | 3 | 64 | 33 |
-| <DocLink id="kibMonitoringPluginApi" text="monitoring"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 15 | 3 | 13 | 1 |
-| <DocLink id="kibMonitoringCollectionPluginApi" text="monitoringCollection"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 9 | 0 | 9 | 0 |
+| <DocLink id="kibMonitoringPluginApi" text="monitoring"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 15 | 3 | 13 | 1 |
+| <DocLink id="kibMonitoringCollectionPluginApi" text="monitoringCollection"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 9 | 0 | 9 | 0 |
 | <DocLink id="kibNavigationPluginApi" text="navigation"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 34 | 0 | 34 | 2 |
 | <DocLink id="kibNewsfeedPluginApi" text="newsfeed"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 |
 | <DocLink id="kibNoDataPagePluginApi" text="noDataPage"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 |
 | <DocLink id="kibNotificationsPluginApi" text="notifications"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 |
-| <DocLink id="kibObservabilityPluginApi" text="observability"/> | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 580 | 2 | 571 | 17 |
-| <DocLink id="kibObservabilityAIAssistantPluginApi" text="observabilityAIAssistant"/> | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 42 | 0 | 39 | 7 |
-| <DocLink id="kibObservabilityLogExplorerPluginApi" text="observabilityLogExplorer"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin exposes and registers observability log consumption features. | 15 | 0 | 15 | 1 |
-| <DocLink id="kibObservabilityOnboardingPluginApi" text="observabilityOnboarding"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 14 | 0 | 14 | 0 |
+| <DocLink id="kibObservabilityPluginApi" text="observability"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 580 | 2 | 571 | 17 |
+| <DocLink id="kibObservabilityAIAssistantPluginApi" text="observabilityAIAssistant"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 42 | 0 | 39 | 7 |
+| <DocLink id="kibObservabilityLogExplorerPluginApi" text="observabilityLogExplorer"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 15 | 0 | 15 | 1 |
+| <DocLink id="kibObservabilityOnboardingPluginApi" text="observabilityOnboarding"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 |
 | <DocLink id="kibObservabilitySharedPluginApi" text="observabilityShared"/> | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 292 | 1 | 289 | 15 |
 | <DocLink id="kibOsqueryPluginApi" text="osquery"/> | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 |
 | <DocLink id="kibPainlessLabPluginApi" text="painlessLab"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 2 | 0 | 2 | 0 |
 | <DocLink id="kibPresentationUtilPluginApi" text="presentationUtil"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 219 | 2 | 164 | 11 |
-| <DocLink id="kibProfilingPluginApi" text="profiling"/> | [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) | - | 16 | 1 | 16 | 0 |
-| <DocLink id="kibProfilingDataAccessPluginApi" text="profilingDataAccess"/> | [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) | - | 22 | 0 | 22 | 7 |
+| <DocLink id="kibProfilingPluginApi" text="profiling"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 16 | 1 | 16 | 0 |
+| <DocLink id="kibProfilingDataAccessPluginApi" text="profilingDataAccess"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 22 | 0 | 22 | 7 |
 | <DocLink id="kibRemoteClustersPluginApi" text="remoteClusters"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 23 | 0 | 23 | 0 |
 | <DocLink id="kibReportingPluginApi" text="reporting"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Reporting Services enables applications to feature reports that the user can automate with Watcher and download later. | 42 | 0 | 22 | 5 |
 | <DocLink id="kibRollupPluginApi" text="rollup"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 21 | 0 | 21 | 0 |
@@ -174,7 +174,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibSpacesPluginApi" text="spaces"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 256 | 0 | 65 | 0 |
 | <DocLink id="kibStackAlertsPluginApi" text="stackAlerts"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 23 | 0 | 23 | 3 |
 | <DocLink id="kibStackConnectorsPluginApi" text="stackConnectors"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 1 |
-| synthetics | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 |
+| synthetics | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 |
 | <DocLink id="kibTaskManagerPluginApi" text="taskManager"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 96 | 0 | 53 | 6 |
 | <DocLink id="kibTelemetryPluginApi" text="telemetry"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 45 | 0 | 1 | 0 |
 | <DocLink id="kibTelemetryCollectionManagerPluginApi" text="telemetryCollectionManager"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 |
@@ -192,11 +192,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibUnifiedHistogramPluginApi" text="unifiedHistogram"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 55 | 0 | 23 | 2 |
 | <DocLink id="kibUnifiedSearchPluginApi" text="unifiedSearch"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 148 | 2 | 110 | 23 |
 | upgradeAssistant | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 |
-| <DocLink id="kibUptimePluginApi" text="uptime"/> | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 1 | 0 |
+| <DocLink id="kibUptimePluginApi" text="uptime"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 1 | 0 |
 | urlDrilldown | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 |
 | <DocLink id="kibUrlForwardingPluginApi" text="urlForwarding"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 12 | 0 | 12 | 0 |
 | <DocLink id="kibUsageCollectionPluginApi" text="usageCollection"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 55 | 0 | 16 | 2 |
-| <DocLink id="kibUxPluginApi" text="ux"/> | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 2 | 0 | 2 | 0 |
+| <DocLink id="kibUxPluginApi" text="ux"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 2 | 0 | 2 | 0 |
 | <DocLink id="kibVisDefaultEditorPluginApi" text="visDefaultEditor"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The default editor used in most aggregation-based visualizations. | 56 | 0 | 49 | 4 |
 | <DocLink id="kibVisTypeGaugePluginApi" text="visTypeGauge"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the gauge chart implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy charts library advanced setting. | 7 | 0 | 7 | 2 |
 | <DocLink id="kibVisTypeHeatmapPluginApi" text="visTypeHeatmap"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the heatmap implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy heatmap charts library advanced setting. | 3 | 0 | 3 | 2 |
@@ -232,9 +232,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnAnalyticsShippersFullstoryPluginApi" text="@kbn/analytics-shippers-fullstory"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 21 | 0 | 0 | 0 |
 | <DocLink id="kibKbnAnalyticsShippersGainsightPluginApi" text="@kbn/analytics-shippers-gainsight"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 2 | 0 |
 | <DocLink id="kibKbnApmConfigLoaderPluginApi" text="@kbn/apm-config-loader"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 |
-| <DocLink id="kibKbnApmSynthtracePluginApi" text="@kbn/apm-synthtrace"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 31 | 0 | 31 | 7 |
-| <DocLink id="kibKbnApmSynthtraceClientPluginApi" text="@kbn/apm-synthtrace-client"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 181 | 0 | 181 | 27 |
-| <DocLink id="kibKbnApmUtilsPluginApi" text="@kbn/apm-utils"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 11 | 0 | 11 | 0 |
+| <DocLink id="kibKbnApmSynthtracePluginApi" text="@kbn/apm-synthtrace"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 31 | 0 | 31 | 7 |
+| <DocLink id="kibKbnApmSynthtraceClientPluginApi" text="@kbn/apm-synthtrace-client"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 181 | 0 | 181 | 27 |
+| <DocLink id="kibKbnApmUtilsPluginApi" text="@kbn/apm-utils"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 11 | 0 | 11 | 0 |
 | <DocLink id="kibKbnAxeConfigPluginApi" text="@kbn/axe-config"/> | [@elastic/kibana-qa](https://github.com/orgs/elastic/teams/kibana-qa) | - | 12 | 0 | 12 | 0 |
 | <DocLink id="kibKbnCasesComponentsPluginApi" text="@kbn/cases-components"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 19 | 0 | 16 | 0 |
 | <DocLink id="kibKbnCellActionsPluginApi" text="@kbn/cell-actions"/> | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 62 | 1 | 44 | 3 |
@@ -415,7 +415,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnCoreUserSettingsServerMocksPluginApi" text="@kbn/core-user-settings-server-mocks"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 3 | 0 | 3 | 0 |
 | <DocLink id="kibKbnCryptoPluginApi" text="@kbn/crypto"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 13 | 0 | 7 | 0 |
 | <DocLink id="kibKbnCryptoBrowserPluginApi" text="@kbn/crypto-browser"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 10 | 0 | 10 | 0 |
-| <DocLink id="kibKbnCustomIntegrationsPluginApi" text="@kbn/custom-integrations"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 19 | 0 | 17 | 6 |
+| <DocLink id="kibKbnCustomIntegrationsPluginApi" text="@kbn/custom-integrations"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 19 | 0 | 17 | 6 |
 | <DocLink id="kibKbnCypressConfigPluginApi" text="@kbn/cypress-config"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 |
 | <DocLink id="kibKbnDataServicePluginApi" text="@kbn/data-service"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 14 | 0 | 9 | 0 |
 | <DocLink id="kibKbnDatemathPluginApi" text="@kbn/datemath"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 44 | 0 | 43 | 0 |
@@ -423,7 +423,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnDeeplinksDevtoolsPluginApi" text="@kbn/deeplinks-devtools"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 5 | 0 | 5 | 0 |
 | <DocLink id="kibKbnDeeplinksManagementPluginApi" text="@kbn/deeplinks-management"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 0 |
 | <DocLink id="kibKbnDeeplinksMlPluginApi" text="@kbn/deeplinks-ml"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 3 | 0 | 3 | 0 |
-| <DocLink id="kibKbnDeeplinksObservabilityPluginApi" text="@kbn/deeplinks-observability"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 26 | 0 | 16 | 0 |
+| <DocLink id="kibKbnDeeplinksObservabilityPluginApi" text="@kbn/deeplinks-observability"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 26 | 0 | 16 | 0 |
 | <DocLink id="kibKbnDeeplinksSearchPluginApi" text="@kbn/deeplinks-search"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 4 | 0 | 4 | 0 |
 | <DocLink id="kibKbnDefaultNavAnalyticsPluginApi" text="@kbn/default-nav-analytics"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 8 | 0 | 8 | 0 |
 | <DocLink id="kibKbnDefaultNavDevtoolsPluginApi" text="@kbn/default-nav-devtools"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 8 | 0 |
@@ -467,15 +467,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnI18nPluginApi" text="@kbn/i18n"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 51 | 0 | 48 | 0 |
 | <DocLink id="kibKbnI18nReactPluginApi" text="@kbn/i18n-react"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 61 | 0 | 1 | 0 |
 | <DocLink id="kibKbnImportResolverPluginApi" text="@kbn/import-resolver"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 47 | 0 | 40 | 0 |
-| <DocLink id="kibKbnInfraForgePluginApi" text="@kbn/infra-forge"/> | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 9 | 0 | 9 | 0 |
+| <DocLink id="kibKbnInfraForgePluginApi" text="@kbn/infra-forge"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 |
 | <DocLink id="kibKbnInterpreterPluginApi" text="@kbn/interpreter"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 12 | 43 | 0 |
-| <DocLink id="kibKbnIoTsUtilsPluginApi" text="@kbn/io-ts-utils"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 52 | 0 | 52 | 4 |
+| <DocLink id="kibKbnIoTsUtilsPluginApi" text="@kbn/io-ts-utils"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 52 | 0 | 52 | 4 |
 | <DocLink id="kibKbnJestSerializersPluginApi" text="@kbn/jest-serializers"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 13 | 0 |
 | <DocLink id="kibKbnJourneysPluginApi" text="@kbn/journeys"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 85 | 0 | 77 | 6 |
 | <DocLink id="kibKbnJsonAstPluginApi" text="@kbn/json-ast"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 35 | 0 |
 | <DocLink id="kibKbnKibanaManifestSchemaPluginApi" text="@kbn/kibana-manifest-schema"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 108 | 0 | 107 | 0 |
 | <DocLink id="kibKbnLanguageDocumentationPopoverPluginApi" text="@kbn/language-documentation-popover"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 7 | 0 | 5 | 0 |
-| <DocLink id="kibKbnLensEmbeddableUtilsPluginApi" text="@kbn/lens-embeddable-utils"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 158 | 0 | 155 | 0 |
+| <DocLink id="kibKbnLensEmbeddableUtilsPluginApi" text="@kbn/lens-embeddable-utils"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 158 | 0 | 155 | 0 |
 | <DocLink id="kibKbnLoggingPluginApi" text="@kbn/logging"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 27 | 0 | 1 | 2 |
 | <DocLink id="kibKbnLoggingMocksPluginApi" text="@kbn/logging-mocks"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 |
 | <DocLink id="kibKbnManagedVscodeConfigPluginApi" text="@kbn/managed-vscode-config"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 6 | 0 | 1 | 1 |
@@ -527,7 +527,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnPerformanceTestingDatasetExtractorPluginApi" text="@kbn/performance-testing-dataset-extractor"/> | [@elastic/kibana-performance-testing](https://github.com/orgs/elastic/teams/kibana-performance-testing) | - | 3 | 0 | 3 | 1 |
 | <DocLink id="kibKbnPluginGeneratorPluginApi" text="@kbn/plugin-generator"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 |
 | <DocLink id="kibKbnPluginHelpersPluginApi" text="@kbn/plugin-helpers"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 |
-| <DocLink id="kibKbnProfilingUtilsPluginApi" text="@kbn/profiling-utils"/> | [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) | - | 171 | 0 | 28 | 0 |
+| <DocLink id="kibKbnProfilingUtilsPluginApi" text="@kbn/profiling-utils"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 171 | 0 | 28 | 0 |
 | <DocLink id="kibKbnRandomSamplingPluginApi" text="@kbn/random-sampling"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 |
 | <DocLink id="kibKbnReactFieldPluginApi" text="@kbn/react-field"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 |
 | <DocLink id="kibKbnReactKibanaContextCommonPluginApi" text="@kbn/react-kibana-context-common"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 2 | 0 |
@@ -572,14 +572,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnSecuritysolutionTGridPluginApi" text="@kbn/securitysolution-t-grid"/> | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 120 | 0 | 116 | 0 |
 | <DocLink id="kibKbnSecuritysolutionUtilsPluginApi" text="@kbn/securitysolution-utils"/> | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 37 | 0 | 32 | 0 |
 | <DocLink id="kibKbnServerHttpToolsPluginApi" text="@kbn/server-http-tools"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 54 | 0 | 51 | 1 |
-| <DocLink id="kibKbnServerRouteRepositoryPluginApi" text="@kbn/server-route-repository"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 31 | 0 | 30 | 1 |
+| <DocLink id="kibKbnServerRouteRepositoryPluginApi" text="@kbn/server-route-repository"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 31 | 0 | 30 | 1 |
 | <DocLink id="kibKbnServerlessCommonSettingsPluginApi" text="@kbn/serverless-common-settings"/> | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 1 | 0 | 1 | 0 |
-| <DocLink id="kibKbnServerlessObservabilitySettingsPluginApi" text="@kbn/serverless-observability-settings"/> | [@elastic/appex-sharedux @elastic/apm-ui @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 1 | 0 | 1 | 0 |
+| <DocLink id="kibKbnServerlessObservabilitySettingsPluginApi" text="@kbn/serverless-observability-settings"/> | [@elastic/appex-sharedux @elastic/platform-deployment-management @elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 1 | 0 | 1 | 0 |
 | <DocLink id="kibKbnServerlessProjectSwitcherPluginApi" text="@kbn/serverless-project-switcher"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 7 | 1 |
 | <DocLink id="kibKbnServerlessSearchSettingsPluginApi" text="@kbn/serverless-search-settings"/> | [@elastic/enterprise-search-frontend @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/enterprise-search-frontend ) | - | 1 | 0 | 1 | 0 |
 | <DocLink id="kibKbnServerlessSecuritySettingsPluginApi" text="@kbn/serverless-security-settings"/> | [@elastic/security-solution @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/security-solution ) | - | 1 | 0 | 1 | 0 |
 | <DocLink id="kibKbnServerlessStorybookConfigPluginApi" text="@kbn/serverless-storybook-config"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 |
-| <DocLink id="kibKbnSharedSvgPluginApi" text="@kbn/shared-svg"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 4 | 0 | 4 | 0 |
+| <DocLink id="kibKbnSharedSvgPluginApi" text="@kbn/shared-svg"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 4 | 0 | 4 | 0 |
 | <DocLink id="kibKbnSharedUxAvatarSolutionPluginApi" text="@kbn/shared-ux-avatar-solution"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 2 | 2 |
 | <DocLink id="kibKbnSharedUxButtonExitFullScreenPluginApi" text="@kbn/shared-ux-button-exit-full-screen"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 2 | 1 |
 | <DocLink id="kibKbnSharedUxButtonToolbarPluginApi" text="@kbn/shared-ux-button-toolbar"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 28 | 0 | 10 | 0 |
@@ -618,7 +618,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnSharedUxStorybookConfigPluginApi" text="@kbn/shared-ux-storybook-config"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 |
 | <DocLink id="kibKbnSharedUxStorybookMockPluginApi" text="@kbn/shared-ux-storybook-mock"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 |
 | <DocLink id="kibKbnSharedUxUtilityPluginApi" text="@kbn/shared-ux-utility"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 3 | 0 |
-| <DocLink id="kibKbnSloSchemaPluginApi" text="@kbn/slo-schema"/> | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 129 | 0 | 126 | 0 |
+| <DocLink id="kibKbnSloSchemaPluginApi" text="@kbn/slo-schema"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 129 | 0 | 126 | 0 |
 | <DocLink id="kibKbnSomeDevLogPluginApi" text="@kbn/some-dev-log"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 |
 | <DocLink id="kibKbnStdPluginApi" text="@kbn/std"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 102 | 2 | 65 | 1 |
 | <DocLink id="kibKbnStdioDevHelpersPluginApi" text="@kbn/stdio-dev-helpers"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 |
@@ -631,7 +631,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnTextBasedEditorPluginApi" text="@kbn/text-based-editor"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 22 | 0 | 21 | 0 |
 | <DocLink id="kibKbnToolingLogPluginApi" text="@kbn/tooling-log"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 |
 | <DocLink id="kibKbnTsProjectsPluginApi" text="@kbn/ts-projects"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 |
-| <DocLink id="kibKbnTypedReactRouterConfigPluginApi" text="@kbn/typed-react-router-config"/> | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 86 | 0 | 86 | 1 |
+| <DocLink id="kibKbnTypedReactRouterConfigPluginApi" text="@kbn/typed-react-router-config"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 86 | 0 | 86 | 1 |
 | <DocLink id="kibKbnUiActionsBrowserPluginApi" text="@kbn/ui-actions-browser"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 49 | 0 | 35 | 0 |
 | <DocLink id="kibKbnUiSharedDepsSrcPluginApi" text="@kbn/ui-shared-deps-src"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 53 | 0 | 44 | 0 |
 | <DocLink id="kibKbnUiThemePluginApi" text="@kbn/ui-theme"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 7 | 0 | 6 | 0 |
@@ -639,13 +639,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnUnifiedDocViewerPluginApi" text="@kbn/unified-doc-viewer"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 10 | 0 | 7 | 7 |
 | <DocLink id="kibKbnUnifiedFieldListPluginApi" text="@kbn/unified-field-list"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list and field stats which can be integrated into apps | 285 | 0 | 261 | 9 |
 | <DocLink id="kibKbnUrlStatePluginApi" text="@kbn/url-state"/> | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 4 | 0 | 0 | 0 |
-| <DocLink id="kibKbnUseTrackedPromisePluginApi" text="@kbn/use-tracked-promise"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 3 | 0 | 2 | 1 |
+| <DocLink id="kibKbnUseTrackedPromisePluginApi" text="@kbn/use-tracked-promise"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 2 | 1 |
 | <DocLink id="kibKbnUserProfileComponentsPluginApi" text="@kbn/user-profile-components"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 80 | 1 | 21 | 2 |
 | <DocLink id="kibKbnUtilityTypesPluginApi" text="@kbn/utility-types"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 16 | 1 |
 | <DocLink id="kibKbnUtilityTypesJestPluginApi" text="@kbn/utility-types-jest"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 |
 | <DocLink id="kibKbnUtilsPluginApi" text="@kbn/utils"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 24 | 0 | 14 | 0 |
 | <DocLink id="kibKbnVisualizationUiComponentsPluginApi" text="@kbn/visualization-ui-components"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 156 | 0 | 152 | 3 |
-| <DocLink id="kibKbnXstateUtilsPluginApi" text="@kbn/xstate-utils"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | - | 12 | 0 | 12 | 0 |
+| <DocLink id="kibKbnXstateUtilsPluginApi" text="@kbn/xstate-utils"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 12 | 0 | 12 | 0 |
 | <DocLink id="kibKbnYarnLockValidatorPluginApi" text="@kbn/yarn-lock-validator"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 6 | 0 | 2 | 0 |
-| <DocLink id="kibKbnZodHelpersPluginApi" text="@kbn/zod-helpers"/> | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 12 | 0 | 9 | 0 |
+| <DocLink id="kibKbnZodHelpersPluginApi" text="@kbn/zod-helpers"/> | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 18 | 0 | 9 | 0 |
 
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index cad15788af386..6fafaebb019af 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index 65c39106f3c7d..c8aa1e8ba86f9 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
 
 
 
-Contact [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index c933df9b7a3b1..7339d402d4812 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
 
 
 
-Contact [@elastic/profiling-ui](https://github.com/orgs/elastic/teams/profiling-ui) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index 8b1b854c25b95..e3a2975e71a79 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index b06e42765a180..3ea1700a77434 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index aa8e5f403cdb8..6a64d6ac1575e 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index 6cd95161b2d1e..6056b7f00fd5c 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index cc5d1473023dd..96f5504d74d7c 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index c4ff0314c0942..efe2afd257e77 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index cf43f50e2e5de..08722ac7171b6 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index 711e48ed70b84..d025a862f60cd 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index a32b3df0e2e16..f47c7dd2b25a7 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index 319a378a5e20f..a499008d9a782 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index 7391c7a13327e..28bc3a72a472d 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index bd2d600f360d0..7f7102506320a 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 9894eacfe9b02..81374d6c55653 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index cc464e41d7d4a..672ca2128baa4 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index b4f32f39b3aca..699574fab35e2 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index 9ab8031f4b959..e347cd66d4b40 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index fc8302b016670..37414db4c395e 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index e731388bcece3..51d33d2367c61 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index c266672321e10..7391544ff8663 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index 3392af32c8ef0..dc8fbfe48556e 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index 0f3bc5a320aff..d331e1c9e78c7 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index 9b005f0621e36..db9678e4f9498 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index d7b8c4809b756..b64a746e6b2d4 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 614d651ed4f7b..9aec3b6727545 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index c735c9c9c4647..b1baae66b6c3c 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index 69a87f0fd3b7a..71302d492d6b2 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index ec02a9a86be92..87e0b6ebda619 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index bd1953bb1d203..131742d7aa7a9 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 5d0131727876a..07198ec59ae8c 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index bbd273aa304ca..3610ff9250a8b 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 541d51e4e4889..55119da9d38db 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 2017b997085be..1ab1aec171c8d 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 69d95f9175a00..8a72db2d58893 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index 1191d658adf4c..cfa2b74f8abcf 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index 8627127fa1b1f..584484ffd70e1 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 0de8be7789564..4670b9bcfd53c 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index ea54386cd97bd..dbb5318f9ea6e 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index c44c1c4aadfed..1ad622851630a 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index 8761f7cb54937..febe3a84e4a06 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index 46ab457726c0a..c9d326d7babb2 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index 302257f89efbf..693a43ffa73e7 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 20d559e9f80d1..7e5808a1a4083 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index fbb328b3be339..536073b7a449d 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
 
 This plugin visualizes data from Heartbeat, and integrates with other Observability solutions.
 
-Contact [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index c8d2192b75ff7..fca96973e7d69 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index 415698c06c32e..6d61d40f1b1b1 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index b4d56592ee6f5..2f02e1cf2d3d9 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
 
 
 
-Contact [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) for questions regarding this plugin.
+Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin.
 
 **Code health stats**
 
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index 91f8599224c79..bad86282b61d9 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 2369294e8f9cb..16d0a8b7b848c 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index b89d17f073342..681470f8991ac 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 5e8e770b74460..164bb2345ebd5 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index ab11707fec3d6..0acaca2ab1f5f 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 2a47fcea37acd..d142d0ae25da8 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index 3881e77aa37e0..9538ee36852c6 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 1fc50e7629f9e..8d984e502640c 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index f50198bc12991..80799364b2c58 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 38029a048569c..0bc6246152ee6 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index a81f10ae8474b..58cdbe5bced47 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-08
+date: 2023-11-09
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From 6c10e7cd032578f92bd332701b2a539a31060e8e Mon Sep 17 00:00:00 2001
From: Maryam Saeidi <maryam.saeidi@elastic.co>
Date: Thu, 9 Nov 2023 10:21:15 +0100
Subject: [PATCH 030/147] Fix the custom threshold flyout validation style
 (#170858)

Closes #166275

## Summary

This PR fixes the custom threshold flyout validation style.


|Before|After|
|---|---|

|![image](https://github.com/elastic/kibana/assets/12370520/907a29d5-e593-4e75-a53a-a65fb7604659)|![image](https://github.com/elastic/kibana/assets/12370520/f16cbd67-d177-446e-9612-61fa7eaf1549)|
---
 .../components/custom_equation/custom_equation_editor.tsx    | 2 +-
 .../components/custom_equation/metric_row_with_agg.tsx       | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
index c835f636eaa2d..d0871dbfb75b2 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
@@ -167,7 +167,6 @@ export function CustomEquationEditor({
                 { defaultMessage: 'Equation and threshold' }
               )}
               error={[errors.equation]}
-              isInvalid={errors.equation != null}
             >
               <>
                 <EuiSpacer size="xs" />
@@ -182,6 +181,7 @@ export function CustomEquationEditor({
                   onClick={() => {
                     setCustomEqPopoverOpen(true);
                   }}
+                  isInvalid={errors.equation != null}
                 />
               </>
             </EuiFormRow>
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
index 834cffada60ce..891c0ceaabbb5 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
@@ -126,7 +126,6 @@ export function MetricRowWithAgg({
                   'xpack.observability.customThreshold.rule.alertFlyout.customEquationEditor.aggregationLabel',
                   { defaultMessage: 'Aggregation {name}', values: { name } }
                 )}
-                isInvalid={aggType !== Aggregators.COUNT && !field}
               >
                 <EuiExpression
                   data-test-subj="aggregationName"
@@ -139,6 +138,7 @@ export function MetricRowWithAgg({
                   onClick={() => {
                     setAggTypePopoverOpen(true);
                   }}
+                  isInvalid={aggType !== Aggregators.COUNT && !field}
                 />
               </EuiFormRow>
             }
@@ -167,7 +167,6 @@ export function MetricRowWithAgg({
                       'xpack.observability.customThreshold.rule.alertFlyout.customEquationEditor.aggregationType',
                       { defaultMessage: 'Aggregation type' }
                     )}
-                    isInvalid={isAggInvalid}
                   >
                     <EuiSelect
                       data-test-subj="aggregationTypeSelect"
@@ -183,6 +182,7 @@ export function MetricRowWithAgg({
                           value,
                         };
                       })}
+                      isInvalid={isAggInvalid}
                     />
                   </EuiFormRow>
                 </EuiFlexItem>
@@ -208,7 +208,6 @@ export function MetricRowWithAgg({
                         'xpack.observability.customThreshold.rule.alertFlyout.customEquationEditor.fieldLabel',
                         { defaultMessage: 'Field name' }
                       )}
-                      isInvalid={isFieldInvalid}
                     >
                       <EuiComboBox
                         fullWidth

From c29ce0d27be74e68e21f37eb2d132683b9581e7e Mon Sep 17 00:00:00 2001
From: Alex Szabo <alex.szabo@elastic.co>
Date: Thu, 9 Nov 2023 10:53:35 +0100
Subject: [PATCH 031/147] [Ops] Create emergency serverless release testing
 pipeline (#170863)

## Summary
This pipeline job runs sanity checks for changes on a one-off branch
(such as a serverless emergency-release) and creates serverless docker
images required for deployment.

Closes: https://github.com/elastic/kibana/issues/170828

Pipeline created by:
https://github.com/elastic/kibana-buildkite/pull/130
---
 .../emergency_relelease_branch_testing.yml      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 .buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml

diff --git a/.buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml b/.buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml
new file mode 100644
index 0000000000000..8fc5da666d56b
--- /dev/null
+++ b/.buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml
@@ -0,0 +1,17 @@
+# https://buildkite.com/elastic/kibana-serverless-emergency-release-branch-testing
+
+## Triggers the artifacts container image build for emergency releases
+agents:
+  queue: kibana-default
+
+notify:
+  - slack: "#kibana-mission-control"
+    if: "build.state == 'passed' || build.state == 'failed' || build.state == 'scheduled'"
+
+steps:
+  - trigger: "kibana-artifacts-container-image"
+    label: ":docker: Build Kibana Artifacts Container Image"
+    build:
+      branch: $BUILDKITE_BRANCH
+      commit: $BUILDKITE_COMMIT
+      message: Running PR build for $BUILDKITE_BRANCH

From 0b40e3e7c135fa65fe6d5c3a470c4a0227f791d0 Mon Sep 17 00:00:00 2001
From: Christos Nasikas <christos.nasikas@elastic.co>
Date: Thu, 9 Nov 2023 12:00:31 +0200
Subject: [PATCH 032/147] [Connectors][PagerDuty] Add support for `links` and
 `custom_details` in the API (#170459)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../task_runner/execution_handler.test.ts     |   9 +
 .../server/task_runner/execution_handler.ts   |   2 +
 .../task_runner/inject_action_params.test.ts  | 165 +++++++++++++++++-
 .../task_runner/inject_action_params.ts       |  29 +++
 x-pack/plugins/stack_connectors/README.md     |  45 ++++-
 .../connector_types/pagerduty/index.test.ts   |  79 +++++++++
 .../server/connector_types/pagerduty/index.ts |  13 ++
 .../actions/connector_types/pagerduty.ts      |  41 +++++
 8 files changed, 372 insertions(+), 11 deletions(-)

diff --git a/x-pack/plugins/alerting/server/task_runner/execution_handler.test.ts b/x-pack/plugins/alerting/server/task_runner/execution_handler.test.ts
index 3b3cd3a972825..0c032dd6a3e92 100644
--- a/x-pack/plugins/alerting/server/task_runner/execution_handler.test.ts
+++ b/x-pack/plugins/alerting/server/task_runner/execution_handler.test.ts
@@ -301,6 +301,7 @@ describe('Execution Handler', () => {
         foo: true,
         stateVal: 'My  goes here',
       },
+      ruleName: rule.name,
     });
 
     expect(ruleRunMetricsStore.getTriggeredActionsStatus()).toBe(ActionsCompletion.COMPLETE);
@@ -1988,6 +1989,7 @@ describe('Execution Handler', () => {
               "val": "rule url: http://localhost:12345/s/test1/app/management/insightsAndAlerting/triggersActions/rule/1",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": Object {
               "absoluteUrl": "http://localhost:12345/s/test1/app/management/insightsAndAlerting/triggersActions/rule/1",
               "basePathname": "",
@@ -2060,6 +2062,7 @@ describe('Execution Handler', () => {
               "val": "rule url: http://localhost:12345/basePath/s/test1/app/test/rule/1?start=30000&end=90000",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": Object {
               "absoluteUrl": "http://localhost:12345/basePath/s/test1/app/test/rule/1?start=30000&end=90000",
               "basePathname": "/basePath",
@@ -2095,6 +2098,7 @@ describe('Execution Handler', () => {
               "val": "rule url: http://localhost:12345/app/management/insightsAndAlerting/triggersActions/rule/1",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": Object {
               "absoluteUrl": "http://localhost:12345/app/management/insightsAndAlerting/triggersActions/rule/1",
               "basePathname": "",
@@ -2127,6 +2131,7 @@ describe('Execution Handler', () => {
               "val": "rule url: http://localhost:12345/s/test1/app/management/insightsAndAlerting/triggersActions/rule/1",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": Object {
               "absoluteUrl": "http://localhost:12345/s/test1/app/management/insightsAndAlerting/triggersActions/rule/1",
               "basePathname": "",
@@ -2159,6 +2164,7 @@ describe('Execution Handler', () => {
               "val": "rule url: ",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": undefined,
           },
         ]
@@ -2188,6 +2194,7 @@ describe('Execution Handler', () => {
               "val": "rule url: ",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": undefined,
           },
         ]
@@ -2217,6 +2224,7 @@ describe('Execution Handler', () => {
               "val": "rule url: ",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": undefined,
           },
         ]
@@ -2249,6 +2257,7 @@ describe('Execution Handler', () => {
               "val": "rule url: http://localhost:12345/s/test1/app/management/some/other/place",
             },
             "actionTypeId": "test",
+            "ruleName": "name-of-alert",
             "ruleUrl": Object {
               "absoluteUrl": "http://localhost:12345/s/test1/app/management/some/other/place",
               "basePathname": "",
diff --git a/x-pack/plugins/alerting/server/task_runner/execution_handler.ts b/x-pack/plugins/alerting/server/task_runner/execution_handler.ts
index 33c4c93abe111..288a4126c25a2 100644
--- a/x-pack/plugins/alerting/server/task_runner/execution_handler.ts
+++ b/x-pack/plugins/alerting/server/task_runner/execution_handler.ts
@@ -256,6 +256,7 @@ export class ExecutionHandler<
             params: injectActionParams({
               actionTypeId,
               ruleUrl,
+              ruleName: this.rule.name,
               actionParams: transformSummaryActionParams({
                 alerts: summarizedAlerts,
                 rule: this.rule,
@@ -296,6 +297,7 @@ export class ExecutionHandler<
             params: injectActionParams({
               actionTypeId,
               ruleUrl,
+              ruleName: this.rule.name,
               actionParams: transformActionParams({
                 actionsPlugin,
                 alertId: ruleId,
diff --git a/x-pack/plugins/alerting/server/task_runner/inject_action_params.test.ts b/x-pack/plugins/alerting/server/task_runner/inject_action_params.test.ts
index 9964f5f848b2d..d099c16bf52ed 100644
--- a/x-pack/plugins/alerting/server/task_runner/inject_action_params.test.ts
+++ b/x-pack/plugins/alerting/server/task_runner/inject_action_params.test.ts
@@ -8,14 +8,16 @@
 import { injectActionParams } from './inject_action_params';
 
 describe('injectActionParams', () => {
-  test(`passes through when actionTypeId isn't .email`, () => {
+  test(`passes through when actionTypeId isn't .email or .pagerduty`, () => {
     const actionParams = {
       message: 'State: "{{state.value}}", Context: "{{context.value}}"',
     };
+
     const result = injectActionParams({
       actionParams,
       actionTypeId: '.server-log',
     });
+
     expect(result).toMatchInlineSnapshot(`
       Object {
         "message": "State: \\"{{state.value}}\\", Context: \\"{{context.value}}\\"",
@@ -55,6 +57,146 @@ describe('injectActionParams', () => {
     `);
   });
 
+  test('injects the absoluteUrl to the links when actionTypeId is .pagerduty and there are no links', () => {
+    const actionParams = {
+      summary: 'My summary',
+    };
+
+    const ruleUrl = {
+      absoluteUrl:
+        'http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1',
+      kibanaBaseUrl: 'http://localhost:5601',
+      basePathname: '',
+      spaceIdSegment: '',
+      relativePath: '/app/management/insightsAndAlerting/triggersActions/rule/1',
+    };
+
+    const result = injectActionParams({
+      actionParams,
+      actionTypeId: '.pagerduty',
+      ruleUrl,
+    });
+
+    expect(result).toMatchInlineSnapshot(`
+      Object {
+        "links": Array [
+          Object {
+            "href": "http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1",
+            "text": "Elastic Rule \\"Unknown\\"",
+          },
+        ],
+        "summary": "My summary",
+      }
+    `);
+  });
+
+  test('adds the rule name if the rule is defined when actionTypeId is .pagerduty', () => {
+    const actionParams = {
+      summary: 'My summary',
+    };
+
+    const ruleUrl = {
+      absoluteUrl:
+        'http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1',
+      kibanaBaseUrl: 'http://localhost:5601',
+      basePathname: '',
+      spaceIdSegment: '',
+      relativePath: '/app/management/insightsAndAlerting/triggersActions/rule/1',
+    };
+
+    const result = injectActionParams({
+      actionParams,
+      actionTypeId: '.pagerduty',
+      ruleUrl,
+      ruleName: 'My rule',
+    });
+
+    expect(result).toMatchInlineSnapshot(`
+      Object {
+        "links": Array [
+          Object {
+            "href": "http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1",
+            "text": "Elastic Rule \\"My rule\\"",
+          },
+        ],
+        "summary": "My summary",
+      }
+    `);
+  });
+
+  test('does not produce a runtime error when the actionTypeId is .pagerduty and the links are not an array', () => {
+    const actionParams = {
+      summary: 'My summary',
+      links: 'error',
+    };
+
+    const ruleUrl = {
+      absoluteUrl:
+        'http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1',
+      kibanaBaseUrl: 'http://localhost:5601',
+      basePathname: '',
+      spaceIdSegment: '',
+      relativePath: '/app/management/insightsAndAlerting/triggersActions/rule/1',
+    };
+
+    const result = injectActionParams({
+      actionParams,
+      actionTypeId: '.pagerduty',
+      ruleUrl,
+      ruleName: 'My rule',
+    });
+
+    expect(result).toMatchInlineSnapshot(`
+      Object {
+        "links": Array [
+          Object {
+            "href": "http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1",
+            "text": "Elastic Rule \\"My rule\\"",
+          },
+        ],
+        "summary": "My summary",
+      }
+    `);
+  });
+
+  test('injects the absoluteUrl to the links when actionTypeId is .pagerduty with links', () => {
+    const actionParams = {
+      summary: 'My summary',
+      links: [{ href: 'https://example.com', text: 'My link' }],
+    };
+
+    const ruleUrl = {
+      absoluteUrl:
+        'http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1',
+      kibanaBaseUrl: 'http://localhost:5601',
+      basePathname: '',
+      spaceIdSegment: '',
+      relativePath: '/app/management/insightsAndAlerting/triggersActions/rule/1',
+    };
+
+    const result = injectActionParams({
+      actionParams,
+      actionTypeId: '.pagerduty',
+      ruleUrl,
+    });
+
+    expect(result).toMatchInlineSnapshot(`
+      Object {
+        "links": Array [
+          Object {
+            "href": "http://localhost:5601/app/management/insightsAndAlerting/triggersActions/rule/1",
+            "text": "Elastic Rule \\"Unknown\\"",
+          },
+          Object {
+            "href": "https://example.com",
+            "text": "My link",
+          },
+        ],
+        "summary": "My summary",
+      }
+    `);
+  });
+
   test('injects viewInKibanaPath and viewInKibanaText when actionTypeId is .email with basePathname and spaceId', () => {
     const actionParams = {
       body: {
@@ -88,16 +230,18 @@ describe('injectActionParams', () => {
     `);
   });
 
-  test('injects viewInKibanaPath as empty string when the ruleUrl is undefined', () => {
+  test('injects viewInKibanaPath as empty string when the ruleUrl is undefined and the actionTypeId is .email', () => {
     const actionParams = {
       body: {
         message: 'State: "{{state.value}}", Context: "{{context.value}}"',
       },
     };
+
     const result = injectActionParams({
       actionParams,
       actionTypeId: '.email',
     });
+
     expect(result).toMatchInlineSnapshot(`
       Object {
         "body": Object {
@@ -110,4 +254,21 @@ describe('injectActionParams', () => {
       }
     `);
   });
+
+  test('does not add the rule URL when the absoluteUrl is undefined and the actionTypeId is .pagerduty', () => {
+    const actionParams = {
+      summary: 'My summary',
+    };
+
+    const result = injectActionParams({
+      actionParams,
+      actionTypeId: '.pagerduty',
+    });
+
+    expect(result).toMatchInlineSnapshot(`
+      Object {
+        "summary": "My summary",
+      }
+    `);
+  });
 });
diff --git a/x-pack/plugins/alerting/server/task_runner/inject_action_params.ts b/x-pack/plugins/alerting/server/task_runner/inject_action_params.ts
index 321819188f39a..65cb7f9e65bad 100644
--- a/x-pack/plugins/alerting/server/task_runner/inject_action_params.ts
+++ b/x-pack/plugins/alerting/server/task_runner/inject_action_params.ts
@@ -13,11 +13,13 @@ export interface InjectActionParamsOpts {
   actionTypeId: string;
   actionParams: RuleActionParams;
   ruleUrl?: RuleUrl;
+  ruleName?: string;
 }
 
 export function injectActionParams({
   actionTypeId,
   actionParams,
+  ruleName,
   ruleUrl = {},
 }: InjectActionParamsOpts) {
   // Inject kibanaFooterLink if action type is email. This is used by the email action type
@@ -36,6 +38,33 @@ export function injectActionParams({
     };
   }
 
+  if (actionTypeId === '.pagerduty') {
+    /**
+     * TODO: Remove and use connector adapters
+     */
+    const path = ruleUrl?.absoluteUrl ?? '';
+
+    if (path.length === 0) {
+      return actionParams;
+    }
+
+    const links = Array.isArray(actionParams.links) ? actionParams.links : [];
+
+    return {
+      ...actionParams,
+      links: [
+        {
+          href: path,
+          text: i18n.translate('xpack.alerting.injectActionParams.pagerduty.kibanaLinkText', {
+            defaultMessage: 'Elastic Rule "{ruleName}"',
+            values: { ruleName: ruleName ?? 'Unknown' },
+          }),
+        },
+        ...links,
+      ],
+    };
+  }
+
   // Fallback, return action params unchanged
   return actionParams;
 }
diff --git a/x-pack/plugins/stack_connectors/README.md b/x-pack/plugins/stack_connectors/README.md
index dc4265e92e042..40199153902c0 100644
--- a/x-pack/plugins/stack_connectors/README.md
+++ b/x-pack/plugins/stack_connectors/README.md
@@ -6,6 +6,7 @@ The `stack_connectors` plugin provides connector types shipped with Kibana, buil
 
 Table of Contents
 
+- [Stack Connectors](#stack-connectors)
 - [Connector Types](#connector-types)
   - [ServiceNow ITSM](#servicenow-itsm)
     - [`params`](#params)
@@ -41,13 +42,17 @@ Table of Contents
   - [Swimlane](#swimlane)
     - [`params`](#params-5)
   - [| severity    | The severity of the incident.    | string _(optional)_ |](#-severity-----the-severity-of-the-incident-----string-optional-)
+  - [Ospgenie](#ospgenie)
+    - [`params`](#params-6)
+  - [PagerDuty](#pagerduty)
+    - [`params`](#params-7)
 - [Developing New Connector Types](#developing-new-connector-types)
-  - [licensing](#licensing)
-  - [plugin location](#plugin-location)
-  - [documentation](#documentation)
-  - [tests](#tests)
-  - [connector type config and secrets](#connector-type-config-and-secrets)
-  - [user interface](#user-interface)
+  - [Licensing](#licensing)
+  - [Plugin location](#plugin-location)
+  - [Documentation](#documentation)
+  - [Tests](#tests)
+  - [Connector type config and secrets](#connector-type-config-and-secrets)
+  - [User interface](#user-interface)
 
 # Connector Types
 
@@ -346,9 +351,9 @@ for the full list of properties.
 
 `subActionParams (createAlert)`
 
-| Property | Description                                                                                                   | Type                  |
-| -------- | ------------------------------------------------------------------------------------------------------------- | --------------------- |
-| message  | The alert message.                                                                                            | string                |
+| Property | Description        | Type   |
+| -------- | ------------------ | ------ |
+| message  | The alert message. | string |
 
 The optional parameters `alias`, `description`, `responders`, `visibleTo`, `actions`, `tags`, `details`, `entity`, `source`, `priority`, `user`, and `note` are supported. See the [Opsgenie API documentation](https://docs.opsgenie.com/docs/alert-api#create-alert) for more information on their types.
 
@@ -358,6 +363,28 @@ No parameters are required. For the definition of the optional parameters see th
 
 ---
 
+## PagerDuty 
+
+The [PagerDuty user documentation `params`](https://www.elastic.co/guide/en/kibana/master/pagerduty-action-type.html) lists configuration properties for the `params`. For more details on these properties, see [PagerDuty v2 event parameters](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event) .
+
+### `params`
+
+| Property      | Description                                                                                                                                                                  | Type                                               |
+| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| eventAction   | The type of event.                                                                                                                                                           | `trigger` \| `resolve` \| `acknowledge`            |
+| dedupKey      | All actions sharing this key will be associated with the same PagerDuty alert. This value is used to correlate trigger and resolution. The maximum length is 255 characters. | string                                             |
+| summary       | An optional text summary of the event. The maximum length is 1024 characters.                                                                                                | string _(optional)_                                |
+| source        | An optional value indicating the affected system, preferably a hostname or fully qualified domain name. Defaults to the Kibana saved object id of the action.                | string _(optional)_                                |
+| severity      | The perceived severity of on the affected system. Default: `info`.                                                                                                           | `critical` \| `error` \| `warning` \| `info`       |
+| timestamp     | An optional ISO-8601 format date-time, indicating the time the event was detected or generated.                                                                              | date _(optional)_                                  |
+| component     | An optional value indicating the component of the source machine that is responsible for the event, for example `mysql` or `eth0`.                                           | string _(optional)_                                |
+| group         | An optional value indicating the logical grouping of components of a service, for example `app-stack`.                                                                       | string _(optional)_                                |
+| class         | An optional value indicating the class/type of the event, for example `ping failure` or `cpu load`.                                                                          | string _(optional)_                                |
+| links         | List of links to add to the event                                                                                                                                            | Array<{ href: string; text: string }> _(optional)_ |
+| customDetails | Additional details to add to the event.                                                                                                                                      | object                                             |
+
+---
+
 # Developing New Connector Types
 
 When creating a new connector type, your plugin will eventually call `server.plugins.actions.setup.registerType()` to register the type with the `actions` plugin, but there are some additional things to think about about and implement.
diff --git a/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.test.ts
index 10752e53ae72a..86cdca4740f6d 100644
--- a/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.test.ts
+++ b/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.test.ts
@@ -316,6 +316,25 @@ describe('execute()', () => {
       component: 'the-component',
       group: 'the-group',
       class: 'the-class',
+      customDetails: {
+        myString: 'foo',
+        myNumber: 10,
+        myArray: ['foo', 'baz'],
+        myBoolean: true,
+        myObject: {
+          myNestedObject: 'foo',
+        },
+      },
+      links: [
+        {
+          href: 'http://example.com',
+          text: 'a link',
+        },
+        {
+          href: 'http://example.com',
+          text: 'a second link',
+        },
+      ],
     };
 
     postPagerdutyMock.mockImplementation(() => {
@@ -340,9 +359,31 @@ describe('execute()', () => {
         "data": Object {
           "dedup_key": "a-dedup-key",
           "event_action": "trigger",
+          "links": Array [
+            Object {
+              "href": "http://example.com",
+              "text": "a link",
+            },
+            Object {
+              "href": "http://example.com",
+              "text": "a second link",
+            },
+          ],
           "payload": Object {
             "class": "the-class",
             "component": "the-component",
+            "custom_details": Object {
+              "myArray": Array [
+                "foo",
+                "baz",
+              ],
+              "myBoolean": true,
+              "myNumber": 10,
+              "myObject": Object {
+                "myNestedObject": "foo",
+              },
+              "myString": "foo",
+            },
             "group": "the-group",
             "severity": "critical",
             "source": "the-source",
@@ -383,6 +424,25 @@ describe('execute()', () => {
       component: 'the-component',
       group: 'the-group',
       class: 'the-class',
+      customDetails: {
+        myString: 'foo',
+        myNumber: 10,
+        myArray: ['foo', 'baz'],
+        myBoolean: true,
+        myObject: {
+          myNestedObject: 'foo',
+        },
+      },
+      links: [
+        {
+          href: 'http://example.com',
+          text: 'a link',
+        },
+        {
+          href: 'http://example.com',
+          text: 'a second link',
+        },
+      ],
     };
 
     postPagerdutyMock.mockImplementation(() => {
@@ -441,6 +501,25 @@ describe('execute()', () => {
       component: 'the-component',
       group: 'the-group',
       class: 'the-class',
+      customDetails: {
+        myString: 'foo',
+        myNumber: 10,
+        myArray: ['foo', 'baz'],
+        myBoolean: true,
+        myObject: {
+          myNestedObject: 'foo',
+        },
+      },
+      links: [
+        {
+          href: 'http://example.com',
+          text: 'a link',
+        },
+        {
+          href: 'http://example.com',
+          text: 'a second link',
+        },
+      ],
     };
 
     postPagerdutyMock.mockImplementation(() => {
diff --git a/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.ts
index 76a19836b0cda..6d2ee36e6439a 100644
--- a/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.ts
+++ b/x-pack/plugins/stack_connectors/server/connector_types/pagerduty/index.ts
@@ -79,6 +79,9 @@ const PayloadSeveritySchema = schema.oneOf([
   schema.literal('info'),
 ]);
 
+const LinksSchema = schema.arrayOf(schema.object({ href: schema.string(), text: schema.string() }));
+const customDetailsSchema = schema.recordOf(schema.string(), schema.any());
+
 const ParamsSchema = schema.object(
   {
     eventAction: schema.maybe(EventActionSchema),
@@ -90,6 +93,8 @@ const ParamsSchema = schema.object(
     component: schema.maybe(schema.string()),
     group: schema.maybe(schema.string()),
     class: schema.maybe(schema.string()),
+    links: schema.maybe(LinksSchema),
+    customDetails: schema.maybe(customDetailsSchema),
   },
   { validate: validateParams }
 );
@@ -292,7 +297,9 @@ interface PagerDutyPayload {
     component?: string;
     group?: string;
     class?: string;
+    custom_details?: Record<string, unknown>;
   };
+  links?: Array<{ href: string; text: string }>;
 }
 
 function getBodyForEventAction(actionId: string, params: ActionParamsType): PagerDutyPayload {
@@ -301,6 +308,7 @@ function getBodyForEventAction(actionId: string, params: ActionParamsType): Page
   const data: PagerDutyPayload = {
     event_action: eventAction,
   };
+
   if (params.dedupKey) {
     data.dedup_key = params.dedupKey;
   }
@@ -318,7 +326,12 @@ function getBodyForEventAction(actionId: string, params: ActionParamsType): Page
     severity: params.severity || 'info',
     ...(validatedTimestamp ? { timestamp: moment(validatedTimestamp).toISOString() } : {}),
     ...omitBy(pick(params, ['component', 'group', 'class']), isUndefined),
+    ...(params.customDetails ? { custom_details: params.customDetails } : {}),
   };
 
+  if (params.links) {
+    data.links = params.links;
+  }
+
   return data;
 }
diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/pagerduty.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/pagerduty.ts
index 81a3c2ef966b9..7148ac962c728 100644
--- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/pagerduty.ts
+++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/pagerduty.ts
@@ -175,6 +175,47 @@ export default function pagerdutyTest({ getService }: FtrProviderContext) {
       });
     });
 
+    it('should execute successfully with links and customDetails', async () => {
+      const { body: result } = await supertest
+        .post(`/api/actions/connector/${simulatedActionId}/_execute`)
+        .set('kbn-xsrf', 'foo')
+        .send({
+          params: {
+            summary: 'just a test',
+            customDetails: {
+              myString: 'foo',
+              myNumber: 10,
+              myArray: ['foo', 'baz'],
+              myBoolean: true,
+              myObject: {
+                myNestedObject: 'foo',
+              },
+            },
+            links: [
+              {
+                href: 'http://example.com',
+                text: 'a link',
+              },
+              {
+                href: 'http://example.com',
+                text: 'a second link',
+              },
+            ],
+          },
+        })
+        .expect(200);
+
+      expect(proxyHaveBeenCalled).to.equal(true);
+      expect(result).to.eql({
+        status: 'ok',
+        connector_id: simulatedActionId,
+        data: {
+          message: 'Event processed',
+          status: 'success',
+        },
+      });
+    });
+
     it('should handle a 40x pagerduty error', async () => {
       const { body: result } = await supertest
         .post(`/api/actions/connector/${simulatedActionId}/_execute`)

From 5fa46caa5c8d2b92d86cc850188a33382a80fb69 Mon Sep 17 00:00:00 2001
From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
Date: Thu, 9 Nov 2023 11:09:52 +0100
Subject: [PATCH 033/147] [Lens] removes DatasourcePublicAPI  (#170725)

## Summary

We have 2 very similar structures in Lens - FramePublicAPI and
DatasourcePublicAPI. Creating `DatasourcePublicAPI` was an attempt to
remove framePublicAPI by firstly limiting it and then just using redux
store directly. Unfortunately, due to Lens architecture it never
progressed so we're stuck with those two structures for no reason
whatsover. This PR merges them back together.

Apart from that it also moves some code from app.tsx to the hook that is
responsible for creating `getUserMessages` helper. This way we could use
it in other places (inline editor, for example)


### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 x-pack/plugins/lens/public/app_plugin/app.tsx | 116 +++------------
 .../get_application_user_messages.test.tsx    |  16 +-
 .../get_application_user_messages.tsx         | 138 ++++++++++++++++--
 .../datasources/form_based/form_based.test.ts |  56 +++----
 .../datasources/form_based/form_based.tsx     |  34 ++---
 .../operations/definitions/index.ts           |   4 +-
 .../definitions/terms/helpers.test.ts         |  10 +-
 .../operations/definitions/terms/helpers.ts   |   4 +-
 .../definitions/terms/terms.test.tsx          |   4 +-
 .../form_based/operations/layer_helpers.ts    |   4 +-
 .../text_based/text_based_languages.test.ts   |   4 +-
 .../config_panel/config_panel.test.tsx        |   4 +-
 .../editor_frame/editor_frame.test.tsx        |  28 ++--
 .../editor_frame/state_helpers.ts             |   4 +-
 .../editor_frame/suggestion_panel.test.tsx    |   5 +-
 .../editor_frame/suggestion_panel.tsx         |  11 +-
 .../workspace_panel/workspace_panel.test.tsx  |   2 +-
 .../lens/public/embeddable/embeddable.tsx     |  17 ++-
 .../lens/public/mocks/datasource_mock.tsx     |   6 +-
 x-pack/plugins/lens/public/mocks/index.ts     |  40 +----
 .../lens/public/mocks/visualization_mock.tsx  |   6 +-
 .../lens/public/state_management/selectors.ts |  11 +-
 .../lens/public/state_management/types.ts     |   7 +-
 x-pack/plugins/lens/public/types.ts           |  11 +-
 .../__snapshots__/to_expression.test.ts.snap  |   5 +
 .../visualizations/xy/to_expression.test.ts   |  15 +-
 26 files changed, 289 insertions(+), 273 deletions(-)

diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx
index d68476598ad99..39a614b568799 100644
--- a/x-pack/plugins/lens/public/app_plugin/app.tsx
+++ b/x-pack/plugins/lens/public/app_plugin/app.tsx
@@ -17,7 +17,7 @@ import type { LensAppLocatorParams } from '../../common/locator/locator';
 import { LensAppProps, LensAppServices } from './types';
 import { LensTopNavMenu } from './lens_top_nav';
 import { LensByReferenceInput } from '../embeddable';
-import { AddUserMessages, EditorFrameInstance, UserMessage, UserMessagesGetter } from '../types';
+import { AddUserMessages, EditorFrameInstance, UserMessagesGetter } from '../types';
 import { Document } from '../persistence/saved_object_store';
 
 import {
@@ -28,9 +28,8 @@ import {
   LensAppState,
   selectSavedObjectFormat,
   updateIndexPatterns,
-  updateDatasourceState,
   selectActiveDatasourceId,
-  selectFrameDatasourceAPI,
+  selectFramePublicAPI,
 } from '../state_management';
 import { SaveModalContainer, runSaveLensVisualization } from './save_modal_container';
 import { LensInspector } from '../lens_inspector_service';
@@ -41,10 +40,7 @@ import {
   createIndexPatternService,
 } from '../data_views_service/service';
 import { replaceIndexpattern } from '../state_management/lens_slice';
-import {
-  filterAndSortUserMessages,
-  getApplicationUserMessages,
-} from './get_application_user_messages';
+import { useApplicationUserMessages } from './get_application_user_messages';
 
 export type SaveProps = Omit<OnSaveProps, 'onTitleDuplicate' | 'newDescription'> & {
   returnToOrigin: boolean;
@@ -509,99 +505,25 @@ export function App({
 
   const activeDatasourceId = useLensSelector(selectActiveDatasourceId);
 
-  const frameDatasourceAPI = useLensSelector((state) =>
-    selectFrameDatasourceAPI(state, datasourceMap)
-  );
-
-  const [userMessages, setUserMessages] = useState<UserMessage[]>([]);
+  const framePublicAPI = useLensSelector((state) => selectFramePublicAPI(state, datasourceMap));
 
-  useEffect(() => {
-    setUserMessages([
-      ...(activeDatasourceId
-        ? datasourceMap[activeDatasourceId].getUserMessages(
-            datasourceStates[activeDatasourceId].state,
-            {
-              frame: frameDatasourceAPI,
-              setState: (newStateOrUpdater) => {
-                dispatch(
-                  updateDatasourceState({
-                    newDatasourceState:
-                      typeof newStateOrUpdater === 'function'
-                        ? newStateOrUpdater(datasourceStates[activeDatasourceId].state)
-                        : newStateOrUpdater,
-                    datasourceId: activeDatasourceId,
-                  })
-                );
-              },
-            }
-          )
-        : []),
-      ...(visualization.activeId && visualization.state
-        ? visualizationMap[visualization.activeId]?.getUserMessages?.(visualization.state, {
-            frame: frameDatasourceAPI,
-          }) ?? []
-        : []),
-      ...getApplicationUserMessages({
-        visualizationType: persistedDoc?.visualizationType,
-        visualizationMap,
-        visualization,
-        activeDatasource: activeDatasourceId ? datasourceMap[activeDatasourceId] : null,
-        activeDatasourceState: activeDatasourceId ? datasourceStates[activeDatasourceId] : null,
-        core: coreStart,
-        dataViews: frameDatasourceAPI.dataViews,
-      }),
-    ]);
-  }, [
-    activeDatasourceId,
+  const { getUserMessages, addUserMessages } = useApplicationUserMessages({
     coreStart,
-    datasourceMap,
-    datasourceStates,
+    framePublicAPI,
+    activeDatasourceId,
+    datasourceState:
+      activeDatasourceId && datasourceStates[activeDatasourceId]
+        ? datasourceStates[activeDatasourceId]
+        : null,
+    datasource:
+      activeDatasourceId && datasourceMap[activeDatasourceId]
+        ? datasourceMap[activeDatasourceId]
+        : null,
     dispatch,
-    frameDatasourceAPI,
-    persistedDoc?.visualizationType,
-    visualization,
-    visualizationMap,
-  ]);
-
-  // these are messages managed from other parts of Lens
-  const [additionalUserMessages, setAdditionalUserMessages] = useState<Record<string, UserMessage>>(
-    {}
-  );
-
-  const getUserMessages: UserMessagesGetter = (locationId, filterArgs) =>
-    filterAndSortUserMessages(
-      [...userMessages, ...Object.values(additionalUserMessages)],
-      locationId,
-      filterArgs ?? {}
-    );
-
-  const addUserMessages: AddUserMessages = (messages) => {
-    const newMessageMap = {
-      ...additionalUserMessages,
-    };
-
-    const addedMessageIds: string[] = [];
-    messages.forEach((message) => {
-      if (!newMessageMap[message.uniqueId]) {
-        addedMessageIds.push(message.uniqueId);
-        newMessageMap[message.uniqueId] = message;
-      }
-    });
-
-    if (addedMessageIds.length) {
-      setAdditionalUserMessages(newMessageMap);
-    }
-
-    return () => {
-      const withMessagesRemoved = {
-        ...additionalUserMessages,
-      };
-
-      addedMessageIds.forEach((id) => delete withMessagesRemoved[id]);
-
-      setAdditionalUserMessages(withMessagesRemoved);
-    };
-  };
+    visualization: visualization.activeId ? visualizationMap[visualization.activeId] : undefined,
+    visualizationType: visualization.activeId,
+    visualizationState: visualization,
+  });
 
   return (
     <>
diff --git a/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.test.tsx b/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.test.tsx
index fa0ed4e21a668..f511e7e59112a 100644
--- a/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.test.tsx
+++ b/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.test.tsx
@@ -25,8 +25,8 @@ describe('application-level user messages', () => {
       getApplicationUserMessages({
         visualizationType: undefined,
 
-        visualizationMap: {},
-        visualization: { activeId: '', state: {} },
+        visualization: undefined,
+        visualizationState: { activeId: '', state: {} },
         activeDatasource: {} as Datasource,
         activeDatasourceState: null,
         dataViews: {} as DataViewsState,
@@ -53,8 +53,8 @@ describe('application-level user messages', () => {
     expect(
       getApplicationUserMessages({
         visualizationType: '123',
-        visualizationMap: {},
-        visualization: { activeId: 'id_for_type_that_doesnt_exist', state: {} },
+        visualization: undefined,
+        visualizationState: { activeId: 'id_for_type_that_doesnt_exist', state: {} },
 
         activeDatasource: {} as Datasource,
         activeDatasourceState: null,
@@ -84,8 +84,8 @@ describe('application-level user messages', () => {
         activeDatasource: null,
 
         visualizationType: '123',
-        visualizationMap: { 'some-id': {} as Visualization },
-        visualization: { activeId: 'some-id', state: {} },
+        visualization: {} as Visualization,
+        visualizationState: { activeId: 'some-id', state: {} },
         activeDatasourceState: null,
         dataViews: {} as DataViewsState,
         core: {} as CoreStart,
@@ -138,8 +138,8 @@ describe('application-level user messages', () => {
 
     const irrelevantProps = {
       dataViews: {} as DataViewsState,
-      visualizationMap: { foo: {} as Visualization },
-      visualization: { activeId: 'foo', state: {} },
+      visualization: {} as Visualization,
+      visualizationState: { activeId: 'foo', state: {} },
     };
 
     it('generates error if missing an index pattern', () => {
diff --git a/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.tsx b/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.tsx
index b5a2e0fe24def..4041fce3bbd0a 100644
--- a/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.tsx
+++ b/x-pack/plugins/lens/public/app_plugin/get_application_user_messages.tsx
@@ -5,18 +5,27 @@
  * 2.0.
  */
 
-import React from 'react';
+import React, { useEffect, useState } from 'react';
 import { i18n } from '@kbn/i18n';
 import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { FormattedMessage } from '@kbn/i18n-react';
 import type { CoreStart } from '@kbn/core/public';
-import type { DataViewsState, VisualizationState } from '../state_management';
+import { Dispatch } from '@reduxjs/toolkit';
+import {
+  updateDatasourceState,
+  type DataViewsState,
+  type VisualizationState,
+  DatasourceState,
+} from '../state_management';
 import type {
+  AddUserMessages,
   Datasource,
+  FramePublicAPI,
   UserMessage,
   UserMessageFilters,
   UserMessagesDisplayLocationId,
-  VisualizationMap,
+  UserMessagesGetter,
+  Visualization,
 } from '../types';
 import { getMissingIndexPattern } from '../editor_frame_service/editor_frame/state_helpers';
 
@@ -26,15 +35,15 @@ import { getMissingIndexPattern } from '../editor_frame_service/editor_frame/sta
 export const getApplicationUserMessages = ({
   visualizationType,
   visualization,
-  visualizationMap,
+  visualizationState,
   activeDatasource,
   activeDatasourceState,
   dataViews,
   core,
 }: {
   visualizationType: string | null | undefined;
-  visualization: VisualizationState | undefined;
-  visualizationMap: VisualizationMap;
+  visualization: Visualization | undefined;
+  visualizationState: VisualizationState | undefined;
   activeDatasource: Datasource | null | undefined;
   activeDatasourceState: { isLoading: boolean; state: unknown } | null;
   dataViews: DataViewsState;
@@ -46,8 +55,8 @@ export const getApplicationUserMessages = ({
     messages.push(getMissingVisTypeError());
   }
 
-  if (visualization?.activeId && !visualizationMap[visualization.activeId]) {
-    messages.push(getUnknownVisualizationTypeError(visualization.activeId));
+  if (visualizationState?.activeId && !visualization) {
+    messages.push(getUnknownVisualizationTypeError(visualizationState.activeId));
   }
 
   if (!activeDatasource) {
@@ -182,8 +191,8 @@ function getMissingIndexPatternsErrors(
 
 export const filterAndSortUserMessages = (
   userMessages: UserMessage[],
-  locationId: UserMessagesDisplayLocationId | UserMessagesDisplayLocationId[] | undefined,
-  { dimensionId, severity }: UserMessageFilters
+  locationId?: UserMessagesDisplayLocationId | UserMessagesDisplayLocationId[],
+  { dimensionId, severity }: UserMessageFilters = {}
 ) => {
   const locationIds = Array.isArray(locationId)
     ? locationId
@@ -231,3 +240,112 @@ function bySeverity(a: UserMessage, b: UserMessage) {
   }
   return 1;
 }
+
+export const useApplicationUserMessages = ({
+  coreStart,
+  dispatch,
+  activeDatasourceId,
+  datasource,
+  datasourceState,
+  framePublicAPI,
+  visualizationType,
+  visualization,
+  visualizationState,
+}: {
+  activeDatasourceId: string | null;
+  coreStart: CoreStart;
+  datasource: Datasource | null;
+  datasourceState: DatasourceState | null;
+  dispatch: Dispatch;
+  framePublicAPI: FramePublicAPI;
+  visualizationType: string | null;
+  visualizationState?: VisualizationState;
+  visualization?: Visualization;
+}) => {
+  const [userMessages, setUserMessages] = useState<UserMessage[]>([]);
+  // these are messages managed from other parts of Lens
+  const [additionalUserMessages, setAdditionalUserMessages] = useState<Record<string, UserMessage>>(
+    {}
+  );
+
+  useEffect(() => {
+    setUserMessages([
+      ...(datasourceState && datasourceState.state && datasource && activeDatasourceId
+        ? datasource.getUserMessages(datasourceState.state, {
+            frame: framePublicAPI,
+            setState: (newStateOrUpdater) => {
+              dispatch(
+                updateDatasourceState({
+                  newDatasourceState:
+                    typeof newStateOrUpdater === 'function'
+                      ? newStateOrUpdater(datasourceState.state)
+                      : newStateOrUpdater,
+                  datasourceId: activeDatasourceId,
+                })
+              );
+            },
+          })
+        : []),
+      ...(visualizationState?.activeId && visualizationState.state
+        ? visualization?.getUserMessages?.(visualizationState.state, {
+            frame: framePublicAPI,
+          }) ?? []
+        : []),
+      ...getApplicationUserMessages({
+        visualizationType,
+        visualization,
+        visualizationState,
+        activeDatasource: datasource,
+        activeDatasourceState: datasourceState,
+        core: coreStart,
+        dataViews: framePublicAPI.dataViews,
+      }),
+    ]);
+  }, [
+    activeDatasourceId,
+    datasource,
+    datasourceState,
+    dispatch,
+    framePublicAPI,
+    visualization,
+    visualizationState,
+    visualizationType,
+    coreStart,
+  ]);
+
+  const getUserMessages: UserMessagesGetter = (locationId, filterArgs) =>
+    filterAndSortUserMessages(
+      [...userMessages, ...Object.values(additionalUserMessages)],
+      locationId,
+      filterArgs ?? {}
+    );
+
+  const addUserMessages: AddUserMessages = (messages) => {
+    const newMessageMap = {
+      ...additionalUserMessages,
+    };
+
+    const addedMessageIds: string[] = [];
+    messages.forEach((message) => {
+      if (!newMessageMap[message.uniqueId]) {
+        addedMessageIds.push(message.uniqueId);
+        newMessageMap[message.uniqueId] = message;
+      }
+    });
+
+    if (addedMessageIds.length) {
+      setAdditionalUserMessages(newMessageMap);
+    }
+
+    return () => {
+      const withMessagesRemoved = {
+        ...additionalUserMessages,
+      };
+
+      addedMessageIds.forEach((id) => delete withMessagesRemoved[id]);
+
+      setAdditionalUserMessages(withMessagesRemoved);
+    };
+  };
+  return { getUserMessages, addUserMessages };
+};
diff --git a/x-pack/plugins/lens/public/datasources/form_based/form_based.test.ts b/x-pack/plugins/lens/public/datasources/form_based/form_based.test.ts
index 591cfc322a8a0..acc77bd34c39c 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/form_based.test.ts
+++ b/x-pack/plugins/lens/public/datasources/form_based/form_based.test.ts
@@ -26,7 +26,6 @@ import {
   Datasource,
   FramePublicAPI,
   OperationDescriptor,
-  FrameDatasourceAPI,
   UserMessage,
 } from '../../types';
 import { getFieldByNameFactory } from './pure_helpers';
@@ -49,8 +48,9 @@ import {
 import { createMockedFullReference } from './operations/mocks';
 import { cloneDeep } from 'lodash';
 import { Datatable, DatatableColumn } from '@kbn/expressions-plugin/common';
-import { createMockFramePublicAPI } from '../../mocks';
 import { filterAndSortUserMessages } from '../../app_plugin/get_application_user_messages';
+import { createMockFramePublicAPI } from '../../mocks';
+import { createMockDataViewsState } from '../../data_views_service/mocks';
 
 jest.mock('./loader');
 jest.mock('../../id_generator');
@@ -3062,22 +3062,6 @@ describe('IndexPattern Data Source', () => {
   });
 
   describe('#getUserMessages', () => {
-    function createMockFrameDatasourceAPI({
-      activeData,
-      dataViews,
-    }: Partial<Omit<FramePublicAPI, 'dataViews'>> & {
-      dataViews?: Partial<FramePublicAPI['dataViews']>;
-    }): FrameDatasourceAPI {
-      return {
-        ...createMockFramePublicAPI({
-          activeData,
-          dataViews,
-        }),
-        query: { query: '', language: 'kuery' },
-        filters: [],
-      };
-    }
-
     describe('error messages', () => {
       it('should generate error messages for a single layer', () => {
         (getErrorMessages as jest.Mock).mockClear();
@@ -3094,7 +3078,9 @@ describe('IndexPattern Data Source', () => {
         };
         expect(
           FormBasedDatasource.getUserMessages(state, {
-            frame: createMockFrameDatasourceAPI({ dataViews: { indexPatterns } }),
+            frame: createMockFramePublicAPI({
+              dataViews: createMockDataViewsState({ indexPatterns }),
+            }),
             setState: () => {},
           })
         ).toMatchInlineSnapshot(`
@@ -3146,7 +3132,9 @@ describe('IndexPattern Data Source', () => {
         };
         expect(
           FormBasedDatasource.getUserMessages(state, {
-            frame: createMockFrameDatasourceAPI({ dataViews: { indexPatterns } }),
+            frame: createMockFramePublicAPI({
+              dataViews: createMockDataViewsState({ indexPatterns }),
+            }),
             setState: () => {},
           })
         ).toMatchInlineSnapshot(`
@@ -3235,7 +3223,9 @@ describe('IndexPattern Data Source', () => {
           (getErrorMessages as jest.Mock).mockReturnValueOnce([]);
 
           const messages = FormBasedDatasource.getUserMessages(state, {
-            frame: createMockFrameDatasourceAPI({ dataViews: { indexPatterns } }),
+            frame: createMockFramePublicAPI({
+              dataViews: createMockDataViewsState({ indexPatterns }),
+            }),
             setState: () => {},
           });
 
@@ -3273,7 +3263,9 @@ describe('IndexPattern Data Source', () => {
           ] as ReturnType<typeof getErrorMessages>);
 
           const messages = FormBasedDatasource.getUserMessages(state, {
-            frame: createMockFrameDatasourceAPI({ dataViews: { indexPatterns } }),
+            frame: createMockFramePublicAPI({
+              dataViews: createMockDataViewsState({ indexPatterns }),
+            }),
             setState: () => {},
           });
 
@@ -3303,7 +3295,7 @@ describe('IndexPattern Data Source', () => {
 
     describe('warning messages', () => {
       let state: FormBasedPrivateState;
-      let framePublicAPI: FrameDatasourceAPI;
+      let framePublicAPI: FramePublicAPI;
 
       beforeEach(() => {
         (getErrorMessages as jest.Mock).mockReturnValueOnce([]);
@@ -3385,7 +3377,7 @@ describe('IndexPattern Data Source', () => {
           currentIndexPatternId: '1',
         };
 
-        framePublicAPI = createMockFrameDatasourceAPI({
+        framePublicAPI = createMockFramePublicAPI({
           activeData: {
             first: {
               type: 'datatable',
@@ -3419,9 +3411,9 @@ describe('IndexPattern Data Source', () => {
               ],
             },
           },
-          dataViews: {
+          dataViews: createMockDataViewsState({
             indexPatterns: expectedIndexPatterns,
-          },
+          }),
         });
       });
 
@@ -3549,13 +3541,13 @@ describe('IndexPattern Data Source', () => {
               currentIndexPatternId: '1',
             },
             {
-              frame: createMockFrameDatasourceAPI({
+              frame: createMockFramePublicAPI({
                 activeData: {
                   first: createDatatableForLayer(0),
                 },
-                dataViews: {
+                dataViews: createMockDataViewsState({
                   indexPatterns: expectedIndexPatterns,
-                },
+                }),
               }),
               setState: () => {},
               visualizationInfo: { layers: [] },
@@ -3574,14 +3566,14 @@ describe('IndexPattern Data Source', () => {
           currentIndexPatternId: '1',
         };
         const messages = FormBasedDatasource.getUserMessages!(state, {
-          frame: createMockFrameDatasourceAPI({
+          frame: createMockFramePublicAPI({
             activeData: {
               first: createDatatableForLayer(0),
               second: createDatatableForLayer(1),
             },
-            dataViews: {
+            dataViews: createMockDataViewsState({
               indexPatterns: expectedIndexPatterns,
-            },
+            }),
           }),
           setState: () => {},
           visualizationInfo: { layers: [] },
diff --git a/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx b/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx
index a458c6f804da4..8099a787437ba 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx
+++ b/x-pack/plugins/lens/public/datasources/form_based/form_based.tsx
@@ -38,7 +38,6 @@ import type {
   IndexPatternRef,
   DataSourceInfo,
   UserMessage,
-  FrameDatasourceAPI,
   StateSetter,
   IndexPatternMap,
 } from '../../types';
@@ -749,18 +748,12 @@ export function getFormBasedDatasource({
     getDatasourceSuggestionsForVisualizeField,
     getDatasourceSuggestionsForVisualizeCharts,
 
-    getUserMessages(state, { frame: frameDatasourceAPI, setState, visualizationInfo }) {
+    getUserMessages(state, { frame: framePublicAPI, setState, visualizationInfo }) {
       if (!state) {
         return [];
       }
 
-      const layerErrorMessages = getLayerErrorMessages(
-        state,
-        frameDatasourceAPI,
-        setState,
-        core,
-        data
-      );
+      const layerErrorMessages = getLayerErrorMessages(state, framePublicAPI, setState, core, data);
 
       const dimensionErrorMessages = getInvalidDimensionErrorMessages(
         state,
@@ -770,8 +763,8 @@ export function getFormBasedDatasource({
           return !isColumnInvalid(
             layer,
             columnId,
-            frameDatasourceAPI.dataViews.indexPatterns[layer.indexPatternId],
-            frameDatasourceAPI.dateRange,
+            framePublicAPI.dataViews.indexPatterns[layer.indexPatternId],
+            framePublicAPI.dateRange,
             uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET)
           );
         }
@@ -779,11 +772,8 @@ export function getFormBasedDatasource({
 
       const warningMessages = [
         ...[
-          ...(getStateTimeShiftWarningMessages(
-            data.datatableUtilities,
-            state,
-            frameDatasourceAPI
-          ) || []),
+          ...(getStateTimeShiftWarningMessages(data.datatableUtilities, state, framePublicAPI) ||
+            []),
         ].map((longMessage) => {
           const message: UserMessage = {
             severity: 'warning',
@@ -798,14 +788,14 @@ export function getFormBasedDatasource({
         ...getPrecisionErrorWarningMessages(
           data.datatableUtilities,
           state,
-          frameDatasourceAPI,
+          framePublicAPI,
           core.docLinks,
           setState
         ),
-        ...getUnsupportedOperationsWarningMessage(state, frameDatasourceAPI, core.docLinks),
+        ...getUnsupportedOperationsWarningMessage(state, framePublicAPI, core.docLinks),
       ];
 
-      const infoMessages = getNotifiableFeatures(state, frameDatasourceAPI, visualizationInfo);
+      const infoMessages = getNotifiableFeatures(state, framePublicAPI, visualizationInfo);
 
       return layerErrorMessages.concat(dimensionErrorMessages, warningMessages, infoMessages);
     },
@@ -922,12 +912,12 @@ function blankLayer(indexPatternId: string, linkToLayers?: string[]): FormBasedL
 
 function getLayerErrorMessages(
   state: FormBasedPrivateState,
-  frameDatasourceAPI: FrameDatasourceAPI,
+  framePublicAPI: FramePublicAPI,
   setState: StateSetter<FormBasedPrivateState, unknown>,
   core: CoreStart,
   data: DataPublicPluginStart
 ) {
-  const indexPatterns = frameDatasourceAPI.dataViews.indexPatterns;
+  const indexPatterns = framePublicAPI.dataViews.indexPatterns;
 
   const layerErrors: UserMessage[][] = Object.entries(state.layers)
     .filter(([_, layer]) => !!indexPatterns[layer.indexPatternId])
@@ -954,7 +944,7 @@ function getLayerErrorMessages(
                   <EuiButton
                     data-test-subj="errorFixAction"
                     onClick={async () => {
-                      const newState = await error.fixAction?.newState(frameDatasourceAPI);
+                      const newState = await error.fixAction?.newState(framePublicAPI);
                       if (newState) {
                         setState(newState);
                       }
diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts
index a5ac36a5b4ad1..3c62f34cbc1f2 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts
+++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts
@@ -51,7 +51,7 @@ import {
 import { staticValueOperation } from './static_value';
 import { lastValueOperation } from './last_value';
 import type {
-  FrameDatasourceAPI,
+  FramePublicAPI,
   IndexPattern,
   IndexPatternField,
   OperationMetadata,
@@ -477,7 +477,7 @@ export type FieldBasedOperationErrorMessage =
         newState: (
           data: DataPublicPluginStart,
           core: CoreStart,
-          frame: FrameDatasourceAPI,
+          frame: FramePublicAPI,
           layerId: string
         ) => Promise<FormBasedLayer>;
       };
diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.test.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.test.ts
index 6be9e8a76fa3e..583f3ff5015c2 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.test.ts
+++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.test.ts
@@ -7,7 +7,7 @@
 
 import { dataPluginMock } from '@kbn/data-plugin/public/mocks';
 import { coreMock as corePluginMock } from '@kbn/core/public/mocks';
-import type { FrameDatasourceAPI } from '../../../../../types';
+import type { FramePublicAPI } from '../../../../../types';
 import type { CountIndexPatternColumn } from '..';
 import type { TermsIndexPatternColumn } from './types';
 import type { GenericIndexPatternColumn } from '../../../form_based';
@@ -245,7 +245,7 @@ describe('getDisallowedTermsMessage()', () => {
           fromDate: '2020',
           toDate: '2021',
         },
-      } as unknown as FrameDatasourceAPI,
+      } as unknown as FramePublicAPI,
       'first'
     );
 
@@ -299,7 +299,7 @@ describe('getDisallowedTermsMessage()', () => {
             rows: [{ col1: 'myTerm' }, { col1: 'myOtherTerm' }],
           },
         },
-      } as unknown as FrameDatasourceAPI,
+      } as unknown as FramePublicAPI,
       'first'
     );
 
@@ -335,7 +335,7 @@ describe('getDisallowedTermsMessage()', () => {
           fromDate: '2020',
           toDate: '2021',
         },
-      } as unknown as FrameDatasourceAPI,
+      } as unknown as FramePublicAPI,
       'first'
     );
 
@@ -385,7 +385,7 @@ describe('getDisallowedTermsMessage()', () => {
             ],
           },
         },
-      } as unknown as FrameDatasourceAPI,
+      } as unknown as FramePublicAPI,
       'first'
     );
 
diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.ts
index a1b528f2d0f7f..cb3ed583d7cda 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.ts
+++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/helpers.ts
@@ -17,7 +17,7 @@ import { GenericIndexPatternColumn, operationDefinitionMap } from '..';
 import { defaultLabel } from '../filters';
 import { isReferenced } from '../../layer_helpers';
 
-import type { FrameDatasourceAPI, IndexPattern, IndexPatternField } from '../../../../../types';
+import type { FramePublicAPI, IndexPattern, IndexPatternField } from '../../../../../types';
 import type { FiltersIndexPatternColumn } from '..';
 import type { TermsIndexPatternColumn } from './types';
 import type { LastValueIndexPatternColumn } from '../last_value';
@@ -126,7 +126,7 @@ export function getDisallowedTermsMessage(
       newState: async (
         data: DataPublicPluginStart,
         core: CoreStart,
-        frame: FrameDatasourceAPI,
+        frame: FramePublicAPI,
         layerId: string
       ) => {
         const currentColumn = layer.columns[columnId] as TermsIndexPatternColumn;
diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/terms.test.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/terms.test.tsx
index c5af3b5b40e2f..a74872a46f907 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/terms.test.tsx
+++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/terms.test.tsx
@@ -33,7 +33,7 @@ import {
   operationDefinitionMap,
 } from '..';
 import { FormBasedLayer, FormBasedPrivateState } from '../../../types';
-import { FrameDatasourceAPI } from '../../../../../types';
+import { FramePublicAPI } from '../../../../../types';
 import { DateHistogramIndexPatternColumn } from '../date_histogram';
 import { getOperationSupportMatrix } from '../../../dimension_panel/operation_support';
 import { FieldSelect } from '../../../dimension_panel/field_select';
@@ -2867,7 +2867,7 @@ describe('terms', () => {
               fromDate: '2020',
               toDate: '2021',
             },
-          } as unknown as FrameDatasourceAPI,
+          } as unknown as FramePublicAPI,
           'first'
         );
         expect(newLayer.columns.col1).toEqual(
diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/layer_helpers.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/layer_helpers.ts
index 37a742b426edb..6ab10a097010d 100644
--- a/x-pack/plugins/lens/public/datasources/form_based/operations/layer_helpers.ts
+++ b/x-pack/plugins/lens/public/datasources/form_based/operations/layer_helpers.ts
@@ -13,7 +13,7 @@ import { DataPublicPluginStart, UI_SETTINGS } from '@kbn/data-plugin/public';
 import type { DateRange } from '../../../../common/types';
 import type {
   DatasourceFixAction,
-  FrameDatasourceAPI,
+  FramePublicAPI,
   IndexPattern,
   IndexPatternField,
   OperationMetadata,
@@ -1594,7 +1594,7 @@ export function getErrorMessages(
         fixAction: errorMessage.fixAction
           ? {
               ...errorMessage.fixAction,
-              newState: async (frame: FrameDatasourceAPI) => ({
+              newState: async (frame: FramePublicAPI) => ({
                 ...state,
                 layers: {
                   ...state.layers,
diff --git a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.test.ts b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.test.ts
index 0b0437cc96c0b..8aab2f3670959 100644
--- a/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.test.ts
+++ b/x-pack/plugins/lens/public/datasources/text_based/text_based_languages.test.ts
@@ -13,7 +13,7 @@ import { dataPluginMock } from '@kbn/data-plugin/public/mocks';
 import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks';
 import { getTextBasedDatasource } from './text_based_languages';
 import { generateId } from '../../id_generator';
-import { DatasourcePublicAPI, Datasource, FrameDatasourceAPI } from '../../types';
+import { DatasourcePublicAPI, Datasource, FramePublicAPI } from '../../types';
 
 jest.mock('../../id_generator');
 
@@ -551,7 +551,7 @@ describe('Textbased Data Source', () => {
       } as unknown as TextBasedPrivateState;
       expect(
         TextBasedDatasource.getUserMessages(state, {
-          frame: { dataViews: indexPatterns } as unknown as FrameDatasourceAPI,
+          frame: { dataViews: indexPatterns } as unknown as FramePublicAPI,
           setState: () => {},
         })
       ).toMatchInlineSnapshot(`
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx
index c5ec748aa9bf0..b0729cb489ba7 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.test.tsx
@@ -477,12 +477,14 @@ describe('ConfigPanel', () => {
       expect(visualizationMap.testVis.setDimension).toHaveBeenCalledWith({
         columnId: 'newId',
         frame: {
+          dataViews: expect.anything(),
           activeData: undefined,
           datasourceLayers: {
             a: expect.anything(),
           },
           dateRange: expect.anything(),
-          dataViews: expect.anything(),
+          filters: [],
+          query: undefined,
         },
         groupId: 'a',
         layerId: 'newId',
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx
index 3d90273ef0d14..0362f130be87d 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx
@@ -38,6 +38,7 @@ import {
   DatasourceMock,
   createExpressionRendererMock,
   mockStoreDeps,
+  renderWithReduxStore,
 } from '../../mocks';
 import { inspectorPluginMock } from '@kbn/inspector-plugin/public/mocks';
 import { ReactExpressionRendererType } from '@kbn/expressions-plugin/public';
@@ -283,7 +284,7 @@ describe('editor_frame', () => {
       const props = {
         ...getDefaultProps(),
         visualizationMap: {
-          testVis: mockVisualization,
+          testVis: { ...mockVisualization, toExpression: () => null },
         },
         datasourceMap: {
           testDatasource: mockDatasource,
@@ -291,18 +292,23 @@ describe('editor_frame', () => {
 
         ExpressionRenderer: expressionRendererMock,
       };
-      await mountWithProvider(<EditorFrame {...props} />, {
-        preloadedState: {
-          activeDatasourceId: 'testDatasource',
-          visualization: { activeId: mockVisualization.id, state: {} },
-          datasourceStates: {
-            testDatasource: {
-              isLoading: false,
-              state: '',
+      renderWithReduxStore(
+        <EditorFrame {...props} />,
+        {},
+        {
+          preloadedState: {
+            activeDatasourceId: 'testDatasource',
+            visualization: { activeId: mockVisualization.id, state: {} },
+            datasourceStates: {
+              testDatasource: {
+                isLoading: false,
+                state: '',
+              },
             },
           },
-        },
-      });
+        }
+      );
+
       const updatedState = {};
       const setDatasourceState = (mockDatasource.DataPanelComponent as jest.Mock).mock.calls[0][0]
         .setState;
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts
index e12182cd07bff..466773ec1c6b2 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts
@@ -35,7 +35,7 @@ import type {
 import { buildExpression } from './expression_helpers';
 import { Document } from '../../persistence/saved_object_store';
 import { getActiveDatasourceIdFromDoc, sortDataViewRefs } from '../../utils';
-import type { DatasourceStates, VisualizationState } from '../../state_management';
+import type { DatasourceState, DatasourceStates, VisualizationState } from '../../state_management';
 import { readFromStorage } from '../../settings_storage';
 import { loadIndexPatternRefs, loadIndexPatterns } from '../../data_views_service/loader';
 import { getDatasourceLayers } from '../../state_management/utils';
@@ -461,7 +461,7 @@ export async function persistedStateToExpression(
 
 export function getMissingIndexPattern(
   currentDatasource: Datasource | null | undefined,
-  currentDatasourceState: { isLoading: boolean; state: unknown } | null,
+  currentDatasourceState: DatasourceState | null,
   indexPatterns: IndexPatternMap
 ) {
   if (
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx
index 09e5c6406e793..24fe5c971558c 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx
@@ -381,8 +381,9 @@ describe('suggestion_panel', () => {
       },
     ] as Suggestion[]);
 
-    (mockVisualization.toPreviewExpression as jest.Mock).mockReturnValueOnce(undefined);
-    (mockVisualization.toPreviewExpression as jest.Mock).mockReturnValueOnce('test | expression');
+    (mockVisualization.toPreviewExpression as jest.Mock)
+      .mockReturnValue(undefined)
+      .mockReturnValueOnce('test | expression');
     mockDatasource.toExpression.mockReturnValue('datasource_expression');
 
     mountWithProvider(<SuggestionPanel {...defaultProps} frame={createMockFramePublicAPI()} />);
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx
index 51f0e3310ccdb..a4e65b280d203 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx
@@ -41,7 +41,6 @@ import {
   VisualizationMap,
   DatasourceLayers,
   UserMessagesGetter,
-  FrameDatasourceAPI,
 } from '../../types';
 import { getSuggestions, switchToSuggestion } from './suggestion_helpers';
 import { getDatasourceExpressionsByLayers } from './expression_helpers';
@@ -63,7 +62,7 @@ import {
   selectChangesApplied,
   applyChanges,
   selectStagedActiveData,
-  selectFrameDatasourceAPI,
+  selectFramePublicAPI,
 } from '../../state_management';
 import { filterAndSortUserMessages } from '../../app_plugin/get_application_user_messages';
 const MAX_SUGGESTIONS_DISPLAYED = 5;
@@ -74,7 +73,7 @@ const configurationsValid = (
   currentDatasourceState: unknown,
   currentVisualization: Visualization,
   currentVisualizationState: unknown,
-  frame: FrameDatasourceAPI
+  frame: FramePublicAPI
 ): boolean => {
   try {
     return (
@@ -241,9 +240,7 @@ export function SuggestionPanel({
   const currentVisualization = useLensSelector(selectCurrentVisualization);
   const currentDatasourceStates = useLensSelector(selectCurrentDatasourceStates);
 
-  const frameDatasourceAPI = useLensSelector((state) =>
-    selectFrameDatasourceAPI(state, datasourceMap)
-  );
+  const framePublicAPI = useLensSelector((state) => selectFramePublicAPI(state, datasourceMap));
   const changesApplied = useLensSelector(selectChangesApplied);
   // get user's selection from localStorage, this key defines if the suggestions panel will be hidden or not
   const [hideSuggestions, setHideSuggestions] = useLocalStorage(
@@ -289,7 +286,7 @@ export function SuggestionPanel({
                   suggestionDatasourceState,
                   visualizationMap[visualizationId],
                   suggestionVisualizationState,
-                  frameDatasourceAPI
+                  framePublicAPI
                 )
               );
             }
diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx
index 6323dbf5c96f4..a8e834e43881c 100644
--- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx
+++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx
@@ -380,7 +380,7 @@ describe('workspace_panel', () => {
           }}
           framePublicAPI={framePublicAPI}
           visualizationMap={{
-            testVis: mockVisualization,
+            testVis: { ...mockVisualization, toExpression: () => null },
           }}
           ExpressionRenderer={expressionRendererMock}
         />,
diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx
index a0a2faec5294d..b9d0bae197909 100644
--- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx
+++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx
@@ -97,7 +97,7 @@ import {
   GetCompatibleCellValueActions,
   UserMessage,
   IndexPatternRef,
-  FrameDatasourceAPI,
+  FramePublicAPI,
   AddUserMessages,
   isMessageRemovable,
   UserMessagesGetter,
@@ -608,11 +608,14 @@ export class Embeddable
     userMessages.push(
       ...getApplicationUserMessages({
         visualizationType: this.savedVis?.visualizationType,
-        visualization: {
+        visualizationState: {
           state: this.activeVisualizationState,
           activeId: this.activeVisualizationId,
         },
-        visualizationMap: this.deps.visualizationMap,
+        visualization:
+          this.activeVisualizationId && this.deps.visualizationMap[this.activeVisualizationId]
+            ? this.deps.visualizationMap[this.activeVisualizationId]
+            : undefined,
         activeDatasource: this.activeDatasource,
         activeDatasourceState: {
           isLoading: !this.activeDatasourceState,
@@ -631,7 +634,7 @@ export class Embeddable
     }
     const mergedSearchContext = this.getMergedSearchContext();
 
-    const frameDatasourceAPI: FrameDatasourceAPI = {
+    const framePublicAPI: FramePublicAPI = {
       dataViews: {
         indexPatterns: this.indexPatterns,
         indexPatternRefs: this.indexPatternRefs,
@@ -658,14 +661,14 @@ export class Embeddable
     userMessages.push(
       ...(this.activeDatasource?.getUserMessages(this.activeDatasourceState, {
         setState: () => {},
-        frame: frameDatasourceAPI,
+        frame: framePublicAPI,
         visualizationInfo: this.activeVisualization?.getVisualizationInfo?.(
           this.activeVisualizationState,
-          frameDatasourceAPI
+          framePublicAPI
         ),
       }) ?? []),
       ...(this.activeVisualization?.getUserMessages?.(this.activeVisualizationState, {
-        frame: frameDatasourceAPI,
+        frame: framePublicAPI,
       }) ?? [])
     );
 
diff --git a/x-pack/plugins/lens/public/mocks/datasource_mock.tsx b/x-pack/plugins/lens/public/mocks/datasource_mock.tsx
index e4f9f5c88fdc1..c92c3007a800a 100644
--- a/x-pack/plugins/lens/public/mocks/datasource_mock.tsx
+++ b/x-pack/plugins/lens/public/mocks/datasource_mock.tsx
@@ -44,7 +44,9 @@ export function createMockDatasource(
     getRenderEventCounters: jest.fn((_state) => []),
     getPublicAPI: jest.fn().mockReturnValue(publicAPIMock),
     initialize: jest.fn((_state?) => {}),
-    toExpression: jest.fn((_frame, _state, _indexPatterns, dateRange, nowInstant) => null),
+    toExpression: jest.fn(
+      (_frame, _state, _indexPatterns, dateRange, nowInstant) => 'datasource_expression'
+    ),
     insertLayer: jest.fn((_state, _newLayerId) => ({})),
     removeLayer: jest.fn((state, layerId) => ({ newState: state, removedLayerIds: [layerId] })),
     cloneLayer: jest.fn((_state, _layerId, _newLayerId, getNewId) => {}),
@@ -62,7 +64,7 @@ export function createMockDatasource(
     getUserMessages: jest.fn((_state, _deps) => []),
     checkIntegrity: jest.fn((_state, _indexPatterns) => []),
     isTimeBased: jest.fn(),
-    isEqual: jest.fn(),
+    isEqual: jest.fn((a, b, c, d) => a === c),
     getUsedDataView: jest.fn((state, layer) => 'mockip'),
     getUsedDataViews: jest.fn(),
     onRefreshIndexPattern: jest.fn(),
diff --git a/x-pack/plugins/lens/public/mocks/index.ts b/x-pack/plugins/lens/public/mocks/index.ts
index 74fbe267d635a..6cc3ff02ff92e 100644
--- a/x-pack/plugins/lens/public/mocks/index.ts
+++ b/x-pack/plugins/lens/public/mocks/index.ts
@@ -8,7 +8,7 @@
 import { DragContextState, DragContextValue } from '@kbn/dom-drag-drop';
 import { DatatableColumnType } from '@kbn/expressions-plugin/common';
 import { createMockDataViewsState } from '../data_views_service/mocks';
-import { FramePublicAPI, FrameDatasourceAPI } from '../types';
+import { FramePublicAPI } from '../types';
 export { mockDataPlugin } from './data_plugin_mock';
 export {
   visualizationMap,
@@ -32,40 +32,16 @@ export { lensPluginMock } from './lens_plugin_mock';
 
 export type FrameMock = jest.Mocked<FramePublicAPI>;
 
-export const createMockFramePublicAPI = ({
-  datasourceLayers,
-  dateRange,
-  dataViews,
-  activeData,
-}: Partial<Omit<FramePublicAPI, 'dataViews'>> & {
-  dataViews?: Partial<FramePublicAPI['dataViews']>;
-} = {}): FrameMock => ({
-  datasourceLayers: datasourceLayers ?? {},
-  dateRange: dateRange ?? {
+export const createMockFramePublicAPI = (overrides: Partial<FramePublicAPI> = {}): FrameMock => ({
+  datasourceLayers: {},
+  dateRange: {
     fromDate: '2022-03-17T08:25:00.000Z',
     toDate: '2022-04-17T08:25:00.000Z',
   },
-  dataViews: createMockDataViewsState(dataViews),
-  activeData,
-});
-
-export type FrameDatasourceMock = jest.Mocked<FrameDatasourceAPI>;
-
-export const createMockFrameDatasourceAPI = ({
-  datasourceLayers,
-  dateRange,
-  dataViews,
-  query,
-  filters,
-}: Partial<FrameDatasourceAPI> = {}): FrameDatasourceMock => ({
-  datasourceLayers: datasourceLayers ?? {},
-  dateRange: dateRange ?? {
-    fromDate: '2022-03-17T08:25:00.000Z',
-    toDate: '2022-04-17T08:25:00.000Z',
-  },
-  query: query ?? { query: '', language: 'lucene' },
-  filters: filters ?? [],
-  dataViews: createMockDataViewsState(dataViews),
+  dataViews: createMockDataViewsState(),
+  query: { query: '', language: 'lucene' },
+  filters: [],
+  ...overrides,
 });
 
 export function createMockedDragDropContext(
diff --git a/x-pack/plugins/lens/public/mocks/visualization_mock.tsx b/x-pack/plugins/lens/public/mocks/visualization_mock.tsx
index 80f20e8c3af4e..3d25f7e29864b 100644
--- a/x-pack/plugins/lens/public/mocks/visualization_mock.tsx
+++ b/x-pack/plugins/lens/public/mocks/visualization_mock.tsx
@@ -44,9 +44,9 @@ export function createMockVisualization(id = 'testVis'): jest.Mocked<Visualizati
         },
       ],
     })),
-    toExpression: jest.fn((_state, _frame) => null),
-    toPreviewExpression: jest.fn((_state, _frame) => null),
-
+    toExpression: jest.fn((_state, _frame) => 'expression'),
+    toPreviewExpression: jest.fn((_state, _frame) => 'expression'),
+    getUserMessages: jest.fn((_state) => []),
     setDimension: jest.fn(),
     removeDimension: jest.fn(),
     DimensionEditorComponent: jest.fn(() => <div />),
diff --git a/x-pack/plugins/lens/public/state_management/selectors.ts b/x-pack/plugins/lens/public/state_management/selectors.ts
index 6bf40638554f9..7572c31287297 100644
--- a/x-pack/plugins/lens/public/state_management/selectors.ts
+++ b/x-pack/plugins/lens/public/state_management/selectors.ts
@@ -220,10 +220,10 @@ export const selectFramePublicAPI = createSelector(
     selectCurrentDatasourceStates,
     selectActiveData,
     selectInjectedDependencies as SelectInjectedDependenciesFunction<DatasourceMap>,
-    selectResolvedDateRange,
     selectDataViews,
+    selectExecutionContext,
   ],
-  (datasourceStates, activeData, datasourceMap, dateRange, dataViews) => {
+  (datasourceStates, activeData, datasourceMap, dataViews, context) => {
     return {
       datasourceLayers: getDatasourceLayers(
         datasourceStates,
@@ -231,13 +231,8 @@ export const selectFramePublicAPI = createSelector(
         dataViews.indexPatterns
       ),
       activeData,
-      dateRange,
       dataViews,
+      ...context,
     };
   }
 );
-
-export const selectFrameDatasourceAPI = createSelector(
-  [selectFramePublicAPI, selectExecutionContext],
-  (framePublicAPI, context) => ({ ...context, ...framePublicAPI })
-);
diff --git a/x-pack/plugins/lens/public/state_management/types.ts b/x-pack/plugins/lens/public/state_management/types.ts
index c2d0e1ef2e386..85e7dae2f92ce 100644
--- a/x-pack/plugins/lens/public/state_management/types.ts
+++ b/x-pack/plugins/lens/public/state_management/types.ts
@@ -34,7 +34,12 @@ export interface DataViewsState {
   indexPatterns: Record<string, IndexPattern>;
 }
 
-export type DatasourceStates = Record<string, { isLoading: boolean; state: unknown }>;
+export interface DatasourceState {
+  isLoading: boolean;
+  state: unknown;
+}
+
+export type DatasourceStates = Record<string, DatasourceState>;
 export interface PreviewState {
   visualization: VisualizationState;
   datasourceStates: DatasourceStates;
diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts
index 70ee578c47cc2..6ac2b98569d7f 100644
--- a/x-pack/plugins/lens/public/types.ts
+++ b/x-pack/plugins/lens/public/types.ts
@@ -460,7 +460,7 @@ export interface Datasource<T = unknown, P = unknown> {
   getUserMessages: (
     state: T,
     deps: {
-      frame: FrameDatasourceAPI;
+      frame: FramePublicAPI;
       setState: StateSetter<T>;
       visualizationInfo?: VisualizationInfo;
     }
@@ -513,7 +513,7 @@ export interface Datasource<T = unknown, P = unknown> {
 
 export interface DatasourceFixAction<T> {
   label: string;
-  newState: (frame: FrameDatasourceAPI) => Promise<T>;
+  newState: (frame: FramePublicAPI) => Promise<T>;
 }
 
 /**
@@ -925,6 +925,8 @@ export interface VisualizationSuggestion<T = unknown> {
 export type DatasourceLayers = Partial<Record<string, DatasourcePublicAPI>>;
 
 export interface FramePublicAPI {
+  query: Query;
+  filters: Filter[];
   datasourceLayers: DatasourceLayers;
   dateRange: DateRange;
   /**
@@ -936,11 +938,6 @@ export interface FramePublicAPI {
   dataViews: DataViewsState;
 }
 
-export interface FrameDatasourceAPI extends FramePublicAPI {
-  query: Query;
-  filters: Filter[];
-}
-
 /**
  * A visualization type advertised to the user in the chart switcher
  */
diff --git a/x-pack/plugins/lens/public/visualizations/xy/__snapshots__/to_expression.test.ts.snap b/x-pack/plugins/lens/public/visualizations/xy/__snapshots__/to_expression.test.ts.snap
index 0cb3d014853fe..7dfe39667fd22 100644
--- a/x-pack/plugins/lens/public/visualizations/xy/__snapshots__/to_expression.test.ts.snap
+++ b/x-pack/plugins/lens/public/visualizations/xy/__snapshots__/to_expression.test.ts.snap
@@ -27,6 +27,11 @@ Object {
         "layers": Array [
           Object {
             "chain": Array [
+              Object {
+                "arguments": Object {},
+                "function": "datasource_expression",
+                "type": "function",
+              },
               Object {
                 "arguments": Object {
                   "accessors": Array [
diff --git a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts
index 9cdf33c134c8c..2e63f26413c5e 100644
--- a/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts
+++ b/x-pack/plugins/lens/public/visualizations/xy/to_expression.test.ts
@@ -265,7 +265,7 @@ describe('#toExpression', () => {
     expect(mockDatasource.publicAPIMock.getOperationForColumnId).toHaveBeenCalledWith('c');
     expect(mockDatasource.publicAPIMock.getOperationForColumnId).toHaveBeenCalledWith('d');
     expect(
-      (expression.chain[0].arguments.layers[0] as Ast).chain[0].arguments.columnToLabel
+      (expression.chain[0].arguments.layers[0] as Ast).chain[1].arguments.columnToLabel
     ).toEqual([
       JSON.stringify({
         b: 'col_b',
@@ -536,13 +536,18 @@ describe('#toExpression', () => {
       datasourceExpressionsByLayers
     ) as Ast;
 
-    function getYConfigColorForLayer(ast: Ast, index: number) {
+    function getYConfigColorForDataLayer(ast: Ast, index: number) {
+      return (
+        (ast.chain[0].arguments.layers[index] as Ast).chain[1].arguments.decorations[0] as Ast
+      ).chain[0].arguments?.color;
+    }
+    function getYConfigColorForReferenceLayer(ast: Ast, index: number) {
       return (
         (ast.chain[0].arguments.layers[index] as Ast).chain[0].arguments.decorations[0] as Ast
-      ).chain[0].arguments.color;
+      ).chain[0].arguments?.color;
     }
-    expect(getYConfigColorForLayer(expression, 0)).toBeUndefined();
-    expect(getYConfigColorForLayer(expression, 1)).toEqual([defaultReferenceLineColor]);
+    expect(getYConfigColorForDataLayer(expression, 0)).toBeUndefined();
+    expect(getYConfigColorForReferenceLayer(expression, 1)).toEqual([defaultReferenceLineColor]);
   });
 
   it('should ignore annotation layers with no event configured', () => {

From e252b8548c0c1e6ce6113e1e8664875c0d020255 Mon Sep 17 00:00:00 2001
From: Shahzad <shahzad31comp@gmail.com>
Date: Thu, 9 Nov 2023 11:13:28 +0100
Subject: [PATCH 034/147] [Observability] Update code owner for infra (#170926)

## Summary

Use plugin code owner generation !!
---
 .github/CODEOWNERS                | 3 +--
 x-pack/plugins/infra/kibana.jsonc | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 72f3f7e7a884f..74ac68c1c0dd6 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -446,7 +446,7 @@ x-pack/plugins/index_lifecycle_management @elastic/platform-deployment-managemen
 x-pack/plugins/index_management @elastic/platform-deployment-management
 test/plugin_functional/plugins/index_patterns @elastic/kibana-data-discovery
 x-pack/packages/kbn-infra-forge @elastic/obs-ux-management-team
-x-pack/plugins/infra @elastic/infra-monitoring-ui
+x-pack/plugins/infra @elastic/infra-monitoring-ui @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team
 x-pack/plugins/ingest_pipelines @elastic/platform-deployment-management
 src/plugins/input_control_vis @elastic/kibana-presentation
 src/plugins/inspector @elastic/kibana-presentation
@@ -938,7 +938,6 @@ x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
 /.github/workflows/oblt-github-commands @elastic/observablt-robots
 
 # Infra Monitoring
-/x-pack/plugins/infra @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
 /x-pack/plugins/infra/server/routes @elastic/obs-ux-infra_services-team
 /x-pack/plugins/infra/server/routes/log_analysis @elastic/obs-ux-logs-team
 /x-pack/plugins/infra/server/routes/log_alerts @elastic/obs-ux-logs-team
diff --git a/x-pack/plugins/infra/kibana.jsonc b/x-pack/plugins/infra/kibana.jsonc
index debd656bddeed..b97a273b91f71 100644
--- a/x-pack/plugins/infra/kibana.jsonc
+++ b/x-pack/plugins/infra/kibana.jsonc
@@ -1,7 +1,7 @@
 {
   "type": "plugin",
   "id": "@kbn/infra-plugin",
-  "owner": "@elastic/infra-monitoring-ui",
+  "owner": ["@elastic/infra-monitoring-ui", "@elastic/obs-ux-logs-team", "@elastic/obs-ux-infra_services-team"],
   "description": "This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions",
   "plugin": {
     "id": "infra",

From 5c44377de17f8a2da8790c5308822e1fc4d8aa95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9sar?=
 <56847527+LikeTheSalad@users.noreply.github.com>
Date: Thu, 9 Nov 2023 11:16:09 +0100
Subject: [PATCH 035/147] Average mobile app launch (#170773)

## Summary

Enabled the "Average app load time" panel in the mobile dashboard.

![Screenshot 2023-11-08 at 18 35
12](https://github.com/elastic/kibana/assets/56847527/4ae1b05b-d71b-47e2-9f11-a884251de975)

### Checklist

Delete any items that are not applicable to this PR.

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Katerina <kate@kpatticha.com>
---
 .../mobile/service_overview/stats/stats.tsx   |  23 +--
 .../mobile/get_mobile_average_launch_time.ts  | 161 ++++++++++++++++++
 .../server/routes/mobile/get_mobile_stats.ts  |  11 +-
 .../translations/translations/fr-FR.json      |   1 -
 .../translations/translations/ja-JP.json      |   1 -
 .../translations/translations/zh-CN.json      |   1 -
 .../tests/mobile/mobile_stats.spec.ts         |  17 +-
 7 files changed, 200 insertions(+), 15 deletions(-)
 create mode 100644 x-pack/plugins/apm/server/routes/mobile/get_mobile_average_launch_time.ts

diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/stats.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/stats.tsx
index a0caf4b3002ac..85e29bbe53e39 100644
--- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/stats.tsx
+++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/stats/stats.tsx
@@ -7,9 +7,9 @@
 import { MetricDatum, MetricTrendShape } from '@elastic/charts';
 import { i18n } from '@kbn/i18n';
 import {
-  EuiIcon,
   EuiFlexGroup,
   EuiFlexItem,
+  EuiIcon,
   EuiLoadingSpinner,
 } from '@elastic/eui';
 import React, { useCallback } from 'react';
@@ -17,9 +17,9 @@ import { useTheme } from '@kbn/observability-shared-plugin/public';
 import { NOT_AVAILABLE_LABEL } from '../../../../../../common/i18n';
 import { useAnyOfApmParams } from '../../../../../hooks/use_apm_params';
 import {
-  useFetcher,
   FETCH_STATUS,
   isPending,
+  useFetcher,
 } from '../../../../../hooks/use_fetcher';
 import { MetricItem } from './metric_item';
 import { usePreviousPeriodLabel } from '../../../../../hooks/use_previous_period_text';
@@ -120,17 +120,20 @@ export function MobileStats({
       trendShape: MetricTrendShape.Area,
     },
     {
-      color: euiTheme.eui.euiColorDisabled,
+      color: euiTheme.eui.euiColorLightestShade,
       title: i18n.translate('xpack.apm.mobile.metrics.load.time', {
-        defaultMessage: 'Slowest App load time',
-      }),
-      subtitle: i18n.translate('xpack.apm.mobile.coming.soon', {
-        defaultMessage: 'Coming Soon',
+        defaultMessage: 'Average app load time',
       }),
       icon: getIcon('visGauge'),
-      value: 'N/A',
-      valueFormatter: (value: number) => valueFormatter(value, 's'),
-      trend: [],
+      value: data?.currentPeriod?.launchTimes?.value ?? NaN,
+      valueFormatter: (value: number) =>
+        Number.isNaN(value)
+          ? NOT_AVAILABLE_LABEL
+          : valueFormatter(Number(value.toFixed(1)), 'ms'),
+      trend: data?.currentPeriod?.launchTimes?.timeseries,
+      extra: getComparisonValueFormatter(
+        data?.previousPeriod.launchTimes?.value?.toFixed(1)
+      ),
       trendShape: MetricTrendShape.Area,
     },
     {
diff --git a/x-pack/plugins/apm/server/routes/mobile/get_mobile_average_launch_time.ts b/x-pack/plugins/apm/server/routes/mobile/get_mobile_average_launch_time.ts
new file mode 100644
index 0000000000000..e711d5c72fb3b
--- /dev/null
+++ b/x-pack/plugins/apm/server/routes/mobile/get_mobile_average_launch_time.ts
@@ -0,0 +1,161 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { ProcessorEvent } from '@kbn/observability-plugin/common';
+import {
+  kqlQuery,
+  rangeQuery,
+  termQuery,
+} from '@kbn/observability-plugin/server';
+import { offsetPreviousPeriodCoordinates } from '../../../common/utils/offset_previous_period_coordinate';
+import { APP_LAUNCH_TIME, SERVICE_NAME } from '../../../common/es_fields/apm';
+import { environmentQuery } from '../../../common/utils/environment_query';
+import { getOffsetInMs } from '../../../common/utils/get_offset_in_ms';
+import { APMEventClient } from '../../lib/helpers/create_es_client/create_apm_event_client';
+import { getBucketSize } from '../../../common/utils/get_bucket_size';
+import { Coordinate } from '../../../typings/timeseries';
+import { Maybe } from '../../../typings/common';
+
+export interface AvgLaunchTimeTimeseries {
+  currentPeriod: { timeseries: Coordinate[]; value: Maybe<number> };
+  previousPeriod: { timeseries: Coordinate[]; value: Maybe<number> };
+}
+
+interface Props {
+  apmEventClient: APMEventClient;
+  serviceName: string;
+  transactionName?: string;
+  environment: string;
+  start: number;
+  end: number;
+  kuery: string;
+  offset?: string;
+}
+
+async function getAvgLaunchTimeTimeseries({
+  apmEventClient,
+  serviceName,
+  transactionName,
+  environment,
+  start,
+  end,
+  kuery,
+  offset,
+}: Props) {
+  const { startWithOffset, endWithOffset } = getOffsetInMs({
+    start,
+    end,
+    offset,
+  });
+
+  const { intervalString } = getBucketSize({
+    start: startWithOffset,
+    end: endWithOffset,
+    minBucketSize: 60,
+  });
+
+  const aggs = {
+    launchTimeAvg: {
+      avg: { field: APP_LAUNCH_TIME },
+    },
+  };
+
+  const response = await apmEventClient.search('get_mobile_launch_time', {
+    apm: {
+      events: [ProcessorEvent.metric],
+    },
+    body: {
+      track_total_hits: false,
+      size: 0,
+      query: {
+        bool: {
+          filter: [
+            ...termQuery(SERVICE_NAME, serviceName),
+            ...rangeQuery(startWithOffset, endWithOffset),
+            ...environmentQuery(environment),
+            ...kqlQuery(kuery),
+          ],
+        },
+      },
+      aggs: {
+        timeseries: {
+          date_histogram: {
+            field: '@timestamp',
+            fixed_interval: intervalString,
+            min_doc_count: 0,
+            extended_bounds: { min: startWithOffset, max: endWithOffset },
+          },
+          aggs,
+        },
+        ...aggs,
+      },
+    },
+  });
+
+  const timeseries =
+    response?.aggregations?.timeseries.buckets.map((bucket) => {
+      return {
+        x: bucket.key,
+        y: bucket.launchTimeAvg.value,
+      };
+    }) ?? [];
+
+  return {
+    timeseries,
+    value: response.aggregations?.launchTimeAvg?.value,
+  };
+}
+
+export async function getMobileAvgLaunchTime({
+  kuery,
+  apmEventClient,
+  serviceName,
+  transactionName,
+  environment,
+  start,
+  end,
+  offset,
+}: Props): Promise<AvgLaunchTimeTimeseries> {
+  const options = {
+    serviceName,
+    transactionName,
+    apmEventClient,
+    kuery,
+    environment,
+  };
+
+  const currentPeriodPromise = getAvgLaunchTimeTimeseries({
+    ...options,
+    start,
+    end,
+  });
+
+  const previousPeriodPromise = offset
+    ? getAvgLaunchTimeTimeseries({
+        ...options,
+        start,
+        end,
+        offset,
+      })
+    : { timeseries: [], value: null };
+
+  const [currentPeriod, previousPeriod] = await Promise.all([
+    currentPeriodPromise,
+    previousPeriodPromise,
+  ]);
+
+  return {
+    currentPeriod,
+    previousPeriod: {
+      timeseries: offsetPreviousPeriodCoordinates({
+        currentPeriodTimeseries: currentPeriod.timeseries,
+        previousPeriodTimeseries: previousPeriod.timeseries,
+      }),
+      value: previousPeriod?.value,
+    },
+  };
+}
diff --git a/x-pack/plugins/apm/server/routes/mobile/get_mobile_stats.ts b/x-pack/plugins/apm/server/routes/mobile/get_mobile_stats.ts
index 071487298ab7a..116117426405c 100644
--- a/x-pack/plugins/apm/server/routes/mobile/get_mobile_stats.ts
+++ b/x-pack/plugins/apm/server/routes/mobile/get_mobile_stats.ts
@@ -10,16 +10,19 @@ import { getOffsetInMs } from '../../../common/utils/get_offset_in_ms';
 import { getMobileSessions } from './get_mobile_sessions';
 import { getMobileHttpRequests } from './get_mobile_http_requests';
 import { getMobileCrashRate } from './get_mobile_crash_rate';
+import { getMobileAvgLaunchTime } from './get_mobile_average_launch_time';
 import { Maybe } from '../../../typings/common';
 
 export interface Timeseries {
   x: number;
   y: number;
 }
+
 interface MobileStats {
   sessions: { timeseries: Timeseries[]; value: Maybe<number> };
   requests: { timeseries: Timeseries[]; value: Maybe<number> };
   crashRate: { timeseries: Timeseries[]; value: Maybe<number> };
+  launchTimes: { timeseries: Timeseries[]; value: Maybe<number> };
 }
 
 export interface MobilePeriodStats {
@@ -62,10 +65,11 @@ async function getMobileStats({
     offset,
   };
 
-  const [sessions, httpRequests, crashes] = await Promise.all([
+  const [sessions, httpRequests, crashes, launchTimeAvg] = await Promise.all([
     getMobileSessions({ ...commonProps }),
     getMobileHttpRequests({ ...commonProps }),
     getMobileCrashRate({ ...commonProps }),
+    getMobileAvgLaunchTime({ ...commonProps }),
   ]);
 
   return {
@@ -89,6 +93,10 @@ async function getMobileStats({
         };
       }) as Timeseries[],
     },
+    launchTimes: {
+      value: launchTimeAvg.currentPeriod.value,
+      timeseries: launchTimeAvg.currentPeriod.timeseries as Timeseries[],
+    },
   };
 }
 
@@ -123,6 +131,7 @@ export async function getMobileStatsPeriods({
         sessions: { timeseries: [], value: null },
         requests: { timeseries: [], value: null },
         crashRate: { timeseries: [], value: null },
+        launchTimes: { timeseries: [], value: null },
       };
 
   const [currentPeriod, previousPeriod] = await Promise.all([
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 9024c08ddcc3d..d00b542c58131 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -9023,7 +9023,6 @@
     "xpack.apm.mobile.charts.nct": "Type de connexion réseau",
     "xpack.apm.mobile.charts.noResultsFound": "Résultat introuvable",
     "xpack.apm.mobile.charts.osVersion": "Version du système d'exploitation",
-    "xpack.apm.mobile.coming.soon": "Bientôt disponible",
     "xpack.apm.mobile.filters.appVersion": "Version de l'application",
     "xpack.apm.mobile.filters.device": "Appareil",
     "xpack.apm.mobile.filters.nct": "NCT",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 6f0fada5b569d..1ce0c2df38db5 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -9038,7 +9038,6 @@
     "xpack.apm.mobile.charts.nct": "ネットワーク接続タイプ",
     "xpack.apm.mobile.charts.noResultsFound": "結果が見つかりませんでした",
     "xpack.apm.mobile.charts.osVersion": "OSバージョン",
-    "xpack.apm.mobile.coming.soon": "まもなくリリース",
     "xpack.apm.mobile.filters.appVersion": "アプリバージョン",
     "xpack.apm.mobile.filters.device": "デバイス",
     "xpack.apm.mobile.filters.nct": "NCT",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 307ba7316f7fc..2fd8d38a579a5 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -9037,7 +9037,6 @@
     "xpack.apm.mobile.charts.nct": "网络连接类型",
     "xpack.apm.mobile.charts.noResultsFound": "找不到结果",
     "xpack.apm.mobile.charts.osVersion": "操作系统版本",
-    "xpack.apm.mobile.coming.soon": "即将推出",
     "xpack.apm.mobile.filters.appVersion": "应用版本",
     "xpack.apm.mobile.filters.device": "设备",
     "xpack.apm.mobile.filters.nct": "NCT",
diff --git a/x-pack/test/apm_api_integration/tests/mobile/mobile_stats.spec.ts b/x-pack/test/apm_api_integration/tests/mobile/mobile_stats.spec.ts
index edc852d97ad2a..f7bb8f328d220 100644
--- a/x-pack/test/apm_api_integration/tests/mobile/mobile_stats.spec.ts
+++ b/x-pack/test/apm_api_integration/tests/mobile/mobile_stats.spec.ts
@@ -10,7 +10,7 @@ import { apm, timerange } from '@kbn/apm-synthtrace-client';
 import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace';
 import { APIReturnType } from '@kbn/apm-plugin/public/services/rest/create_call_apm_api';
 import { ENVIRONMENT_ALL } from '@kbn/apm-plugin/common/environment_filter_values';
-import { sumBy, meanBy } from 'lodash';
+import { meanBy, sumBy } from 'lodash';
 import { FtrProviderContext } from '../../common/ftr_provider_context';
 
 type MobileStats = APIReturnType<'GET /internal/apm/mobile-services/{serviceName}/stats'>;
@@ -101,6 +101,7 @@ async function generateData({
         galaxy10.startNewSession();
         huaweiP2.startNewSession();
         return [
+          galaxy10.appMetrics({ 'application.launch.time': 100 }).timestamp(timestamp),
           galaxy10
             .transaction('Start View - View Appearing', 'Android Activity')
             .errors(galaxy10.crash({ message: 'error  C' }).timestamp(timestamp))
@@ -224,6 +225,14 @@ export default function ApiTest({ getService }: FtrProviderContext) {
         );
         expect(value).to.be(timeseriesMean);
       });
+      it('returns same launch times', () => {
+        const { value, timeseries } = response.currentPeriod.launchTimes;
+        const timeseriesMean = meanBy(
+          timeseries.filter((bucket) => bucket.y !== null),
+          'y'
+        );
+        expect(value).to.be(timeseriesMean);
+      });
     });
 
     describe('when filters are applied', () => {
@@ -237,6 +246,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
         expect(response.currentPeriod.sessions.value).to.eql(0);
         expect(response.currentPeriod.requests.value).to.eql(0);
         expect(response.currentPeriod.crashRate.value).to.eql(0);
+        expect(response.currentPeriod.launchTimes.value).to.eql(null);
 
         expect(response.currentPeriod.sessions.timeseries.every((item) => item.y === 0)).to.eql(
           true
@@ -247,6 +257,9 @@ export default function ApiTest({ getService }: FtrProviderContext) {
         expect(response.currentPeriod.crashRate.timeseries.every((item) => item.y === 0)).to.eql(
           true
         );
+        expect(
+          response.currentPeriod.launchTimes.timeseries.every((item) => item.y === null)
+        ).to.eql(true);
       });
 
       it('returns the correct values when single filter is applied', async () => {
@@ -259,6 +272,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
         expect(response.currentPeriod.sessions.value).to.eql(3);
         expect(response.currentPeriod.requests.value).to.eql(0);
         expect(response.currentPeriod.crashRate.value).to.eql(3);
+        expect(response.currentPeriod.launchTimes.value).to.eql(null);
       });
 
       it('returns the correct values when multiple filters are applied', async () => {
@@ -269,6 +283,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
         expect(response.currentPeriod.sessions.value).to.eql(3);
         expect(response.currentPeriod.requests.value).to.eql(3);
         expect(response.currentPeriod.crashRate.value).to.eql(1);
+        expect(response.currentPeriod.launchTimes.value).to.eql(100);
       });
     });
   });

From b86e74106d89646a95d6f119d523f22f15490398 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20S=C3=A1nchez?= <david.sanchezsoler@elastic.co>
Date: Thu, 9 Nov 2023 11:48:20 +0100
Subject: [PATCH 036/147] [Security Solution] [Endpoint] Cypress Increase
 create policy task timeout (#170001)

## Summary

Increase policy task timeout to 5 minutes to avoid flaky tests.

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../response_console/execute.cy.ts              |  3 +--
 ...olicy_details_with_security_essentials.cy.ts |  9 ++++++---
 .../public/management/cypress/tasks/fleet.ts    | 17 +++++++++++------
 3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts
index d43037f4d7f97..dad573bb09c2b 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts
@@ -21,8 +21,7 @@ import { enableAllPolicyProtections } from '../../../tasks/endpoint_policy';
 import { createEndpointHost } from '../../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../../tasks/delete_all_endpoint_data';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170373
-describe.skip('Response console', { tags: ['@ess', '@serverless'] }, () => {
+describe('Response console', { tags: ['@ess', '@serverless'] }, () => {
   beforeEach(() => {
     login();
   });
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts
index efb48f6543542..36ebb060454c5 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts
@@ -9,8 +9,7 @@ import { login } from '../../tasks/login';
 import { visitPolicyDetailsPage } from '../../screens/policy_details';
 import type { IndexedFleetEndpointPolicyResponse } from '../../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170666
-describe.skip(
+describe(
   'When displaying the Policy Details in Security Essentials PLI',
   {
     tags: ['@serverless'],
@@ -24,7 +23,11 @@ describe.skip(
     let loadedPolicyData: IndexedFleetEndpointPolicyResponse;
 
     before(() => {
-      cy.task('indexFleetEndpointPolicy', { policyName: 'tests-serverless' }).then((response) => {
+      cy.task(
+        'indexFleetEndpointPolicy',
+        { policyName: 'tests-serverless' },
+        { timeout: 5 * 60 * 1000 }
+      ).then((response) => {
         loadedPolicyData = response as IndexedFleetEndpointPolicyResponse;
       });
     });
diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
index 8f1da4a0ec020..bc0f94d712058 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
@@ -81,15 +81,20 @@ export const yieldEndpointPolicyRevision = (): Cypress.Chainable<number> =>
 
 export const createAgentPolicyTask = (
   version: string,
-  policyPrefix?: string
+  policyPrefix?: string,
+  timeout?: number
 ): Cypress.Chainable<IndexedFleetEndpointPolicyResponse> => {
   const policyName = `${policyPrefix || 'Reassign'} ${Math.random().toString(36).substring(2, 7)}`;
 
-  return cy.task<IndexedFleetEndpointPolicyResponse>('indexFleetEndpointPolicy', {
-    policyName,
-    endpointPackageVersion: version,
-    agentPolicyName: policyName,
-  });
+  return cy.task<IndexedFleetEndpointPolicyResponse>(
+    'indexFleetEndpointPolicy',
+    {
+      policyName,
+      endpointPackageVersion: version,
+      agentPolicyName: policyName,
+    },
+    { timeout: timeout ?? 5 * 60 * 1000 }
+  );
 };
 
 export const enableAgentTamperProtectionFeatureFlagInPolicy = (agentPolicyId: string) => {

From 55d94c772a18282b989fe2fa6d8ded9340826982 Mon Sep 17 00:00:00 2001
From: Khristinin Nikita <nikita.khristinin@elastic.co>
Date: Thu, 9 Nov 2023 12:04:34 +0100
Subject: [PATCH 037/147] Move to EA (#170824)

## Summary

This PR is simply moving the `risk_engine` folder into the
`entity_analytics` folder, to be able better consolidate future
architecture modules like `asset_criticality` and potential others
---
 .github/CODEOWNERS                                        | 2 +-
 .../security_solution/public/entity_analytics/api/api.ts  | 2 +-
 .../api/hooks/use_disable_risk_engine_mutation.ts         | 2 +-
 .../api/hooks/use_enable_risk_engine_mutation.ts          | 2 +-
 .../api/hooks/use_init_risk_engine_mutation.ts            | 2 +-
 .../detection_engine/routes/__mocks__/request_context.ts  | 2 +-
 .../risk_engine/calculate_and_persist_risk_scores.mock.ts | 0
 .../risk_engine/calculate_and_persist_risk_scores.test.ts | 0
 .../risk_engine/calculate_and_persist_risk_scores.ts      | 0
 .../risk_engine/calculate_risk_scores.mock.ts             | 2 +-
 .../risk_engine/calculate_risk_scores.test.ts             | 0
 .../risk_engine/calculate_risk_scores.ts                  | 6 +++---
 .../{ => entity_analytics}/risk_engine/configurations.ts  | 4 ++--
 .../risk_engine/get_risk_inputs_index.mock.ts             | 0
 .../risk_engine/get_risk_inputs_index.test.ts             | 0
 .../risk_engine/get_risk_inputs_index.ts                  | 0
 .../{ => entity_analytics}/risk_engine/helpers.test.ts    | 0
 .../lib/{ => entity_analytics}/risk_engine/helpers.ts     | 2 +-
 .../risk_engine/risk_engine_data_client.mock.ts           | 0
 .../risk_engine/risk_engine_data_client.test.ts           | 2 +-
 .../risk_engine/risk_engine_data_client.ts                | 6 +++---
 .../risk_engine/risk_engine_data_writer.test.ts           | 0
 .../risk_engine/risk_engine_data_writer.ts                | 2 +-
 .../risk_engine/risk_score_service.mock.ts                | 2 +-
 .../risk_engine/risk_score_service.ts                     | 0
 .../risk_engine/risk_weights.test.ts                      | 2 +-
 .../{ => entity_analytics}/risk_engine/risk_weights.ts    | 4 ++--
 .../{ => entity_analytics}/risk_engine/routes/index.ts    | 0
 .../risk_engine/routes/risk_engine_disable_route.test.ts  | 4 ++--
 .../risk_engine/routes/risk_engine_disable_route.ts       | 6 +++---
 .../risk_engine/routes/risk_engine_enable_route.test.ts   | 4 ++--
 .../risk_engine/routes/risk_engine_enable_route.ts        | 6 +++---
 .../risk_engine/routes/risk_engine_init_route.ts          | 6 +++---
 .../risk_engine/routes/risk_engine_status_route.ts        | 4 ++--
 .../routes/risk_score_calculation_route.test.ts           | 4 ++--
 .../risk_engine/routes/risk_score_calculation_route.ts    | 8 ++++----
 .../risk_engine/routes/risk_score_preview_route.test.ts   | 6 +++---
 .../risk_engine/routes/risk_score_preview_route.ts        | 8 ++++----
 .../risk_engine/routes/translations.ts                    | 0
 .../risk_engine/saved_object/index.ts                     | 0
 .../saved_object/risk_engine_configuration_type.ts        | 0
 .../risk_engine/schema/risk_score_apis.yml                | 0
 .../{ => entity_analytics}/risk_engine/tasks/constants.ts | 0
 .../risk_engine/tasks/helpers.test.ts                     | 0
 .../{ => entity_analytics}/risk_engine/tasks/helpers.ts   | 2 +-
 .../lib/{ => entity_analytics}/risk_engine/tasks/index.ts | 0
 .../risk_engine/tasks/risk_scoring_task.mock.ts           | 0
 .../risk_engine/tasks/risk_scoring_task.test.ts           | 0
 .../risk_engine/tasks/risk_scoring_task.ts                | 8 ++++----
 .../lib/{ => entity_analytics}/risk_engine/tasks/state.ts | 0
 .../lib/{ => entity_analytics}/risk_engine/types.ts       | 2 +-
 .../risk_engine/utils/create_datastream.ts                | 0
 .../risk_engine/utils/create_index.ts                     | 0
 .../risk_engine/utils/retry_transient_es_errors.test.ts   | 0
 .../risk_engine/utils/retry_transient_es_errors.ts        | 0
 .../risk_engine/utils/saved_object_configuration.ts       | 2 +-
 .../risk_engine/utils/transforms.test.ts                  | 0
 .../risk_engine/utils/transforms.ts                       | 4 ++--
 x-pack/plugins/security_solution/server/plugin.ts         | 2 +-
 .../security_solution/server/request_context_factory.ts   | 2 +-
 x-pack/plugins/security_solution/server/routes/index.ts   | 4 ++--
 x-pack/plugins/security_solution/server/saved_objects.ts  | 2 +-
 x-pack/plugins/security_solution/server/types.ts          | 2 +-
 .../group10/risk_engine/init_and_status_apis.ts           | 2 +-
 .../security_and_spaces/group10/risk_engine/utils.ts      | 2 +-
 65 files changed, 67 insertions(+), 67 deletions(-)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_and_persist_risk_scores.mock.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_and_persist_risk_scores.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_and_persist_risk_scores.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_risk_scores.mock.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_risk_scores.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/calculate_risk_scores.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/configurations.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/get_risk_inputs_index.mock.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/get_risk_inputs_index.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/get_risk_inputs_index.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/helpers.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/helpers.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_engine_data_client.mock.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_engine_data_client.test.ts (99%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_engine_data_client.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_engine_data_writer.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_engine_data_writer.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_score_service.mock.ts (94%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_score_service.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_weights.test.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/risk_weights.ts (96%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/index.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_disable_route.test.ts (96%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_disable_route.ts (89%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_enable_route.test.ts (96%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_enable_route.ts (89%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_init_route.ts (93%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_engine_status_route.ts (91%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_score_calculation_route.test.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_score_calculation_route.ts (89%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_score_preview_route.test.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/risk_score_preview_route.ts (90%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/routes/translations.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/saved_object/index.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/saved_object/risk_engine_configuration_type.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/schema/risk_score_apis.yml (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/constants.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/helpers.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/helpers.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/index.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/risk_scoring_task.mock.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/risk_scoring_task.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/risk_scoring_task.ts (96%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/tasks/state.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/types.ts (98%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/create_datastream.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/create_index.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/retry_transient_es_errors.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/retry_transient_es_errors.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/saved_object_configuration.ts (97%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/transforms.test.ts (100%)
 rename x-pack/plugins/security_solution/server/lib/{ => entity_analytics}/risk_engine/utils/transforms.ts (97%)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 74ac68c1c0dd6..3e96ce3a0a616 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1436,7 +1436,7 @@ x-pack/plugins/security_solution/public/entity_analytics @elastic/security-entit
 x-pack/plugins/security_solution/public/explore/components/risk_score @elastic/security-entity-analytics
 x-pack/plugins/security_solution/public/overview/pages/entity_analytics.tsx @elastic/security-entity-analytics
 x-pack/plugins/security_solution/public/overview/components/entity_analytics
-x-pack/plugins/security_solution/server/lib/risk_engine @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/detection_engine_api_integration/security_and_spaces/group10/risk_engine @elastic/security-entity-analytics
 
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts
index cc2b01f75da57..6b92583b1ddde 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts
+++ b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts
@@ -20,7 +20,7 @@ import type {
   GetRiskEngineStatusResponse,
   InitRiskEngineResponse,
   DisableRiskEngineResponse,
-} from '../../../server/lib/risk_engine/types';
+} from '../../../server/lib/entity_analytics/risk_engine/types';
 import type { RiskScorePreviewRequestSchema } from '../../../common/risk_engine/risk_score_preview/request_schema';
 
 /**
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts
index 997e93136339e..68b63300061b6 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts
+++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts
@@ -11,7 +11,7 @@ import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status';
 import type {
   EnableRiskEngineResponse,
   EnableDisableRiskEngineErrorResponse,
-} from '../../../../server/lib/risk_engine/types';
+} from '../../../../server/lib/entity_analytics/risk_engine/types';
 
 export const DISABLE_RISK_ENGINE_MUTATION_KEY = ['POST', 'DISABLE_RISK_ENGINE'];
 
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts
index 3875a79399dcc..40b3f1b4bddb6 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts
+++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts
@@ -11,7 +11,7 @@ import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status';
 import type {
   EnableRiskEngineResponse,
   EnableDisableRiskEngineErrorResponse,
-} from '../../../../server/lib/risk_engine/types';
+} from '../../../../server/lib/entity_analytics/risk_engine/types';
 export const ENABLE_RISK_ENGINE_MUTATION_KEY = ['POST', 'ENABLE_RISK_ENGINE'];
 
 export const useEnableRiskEngineMutation = (options?: UseMutationOptions<{}>) => {
diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts
index d220885148cac..35b1071b62b80 100644
--- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts
+++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts
@@ -11,7 +11,7 @@ import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status';
 import type {
   InitRiskEngineResponse,
   InitRiskEngineError,
-} from '../../../../server/lib/risk_engine/types';
+} from '../../../../server/lib/entity_analytics/risk_engine/types';
 
 export const INIT_RISK_ENGINE_STATUS_KEY = ['POST', 'INIT_RISK_ENGINE'];
 
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts
index e68e84acf6029..f65d788945deb 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts
@@ -34,7 +34,7 @@ import type {
 
 import { getEndpointAuthzInitialStateMock } from '../../../../../common/endpoint/service/authz/mocks';
 import type { EndpointAuthz } from '../../../../../common/endpoint/types/authz';
-import { riskEngineDataClientMock } from '../../../risk_engine/risk_engine_data_client.mock';
+import { riskEngineDataClientMock } from '../../../entity_analytics/risk_engine/risk_engine_data_client.mock';
 
 export const createMockClients = () => {
   const core = coreMock.createRequestHandlerContext();
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.mock.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.mock.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_and_persist_risk_scores.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_and_persist_risk_scores.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.mock.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.mock.ts
index 183a00eb0fe5c..c81d1336c162b 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.mock.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.mock.ts
@@ -9,7 +9,7 @@ import {
   ALERT_RISK_SCORE,
   ALERT_RULE_NAME,
 } from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names';
-import { RiskCategories } from '../../../common/risk_engine';
+import { RiskCategories } from '../../../../common/risk_engine';
 import type {
   CalculateRiskScoreAggregations,
   CalculateScoresResponse,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.ts
index a5c22b867b72f..ecacf95020251 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/calculate_risk_scores.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/calculate_risk_scores.ts
@@ -22,9 +22,9 @@ import type {
   IdentifierType,
   RiskWeights,
   RiskScore,
-} from '../../../common/risk_engine';
-import { RiskCategories } from '../../../common/risk_engine';
-import { withSecuritySpan } from '../../utils/with_security_span';
+} from '../../../../common/risk_engine';
+import { RiskCategories } from '../../../../common/risk_engine';
+import { withSecuritySpan } from '../../../utils/with_security_span';
 import { getAfterKeyForIdentifierType, getFieldForIdentifierAgg } from './helpers';
 import {
   buildCategoryCountDeclarations,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/configurations.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/configurations.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/configurations.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/configurations.ts
index 6f9a49bb47bbb..35547187e4ddc 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/configurations.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/configurations.ts
@@ -5,8 +5,8 @@
  * 2.0.
  */
 import type { FieldMap } from '@kbn/alerts-as-data-utils';
-import type { IdentifierType } from '../../../common/risk_engine';
-import { RiskScoreEntity, riskScoreBaseIndexName } from '../../../common/risk_engine';
+import type { IdentifierType } from '../../../../common/risk_engine';
+import { RiskScoreEntity, riskScoreBaseIndexName } from '../../../../common/risk_engine';
 import type { IIndexPatternString } from './utils/create_datastream';
 
 const commonRiskFields: FieldMap = {
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.mock.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.mock.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/get_risk_inputs_index.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/get_risk_inputs_index.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/helpers.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/helpers.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/helpers.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/helpers.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/helpers.ts
index 90a7b0c54c275..09836ff94fe2d 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/helpers.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/helpers.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { AfterKey, AfterKeys, IdentifierType } from '../../../common/risk_engine';
+import type { AfterKey, AfterKeys, IdentifierType } from '../../../../common/risk_engine';
 import type { CalculateAndPersistScoresResponse } from './types';
 
 export const getFieldForIdentifierAgg = (identifierType: IdentifierType): string =>
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts
similarity index 99%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts
index 8dc2da15c2e18..619952859fc0f 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts
@@ -67,7 +67,7 @@ jest.mock('./utils/create_datastream', () => ({
   createDataStream: jest.fn(),
 }));
 
-jest.mock('../risk_score/transform/helpers/transforms', () => ({
+jest.mock('../../risk_score/transform/helpers/transforms', () => ({
   createAndStartTransform: jest.fn(),
 }));
 
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts
index 269f4b6dad9fd..ea564ffe2395c 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_client.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts
@@ -26,13 +26,13 @@ import {
 import { createDataStream } from './utils/create_datastream';
 import type { RiskEngineDataWriter as Writer } from './risk_engine_data_writer';
 import { RiskEngineDataWriter } from './risk_engine_data_writer';
-import type { InitRiskEngineResult } from '../../../common/risk_engine';
+import type { InitRiskEngineResult } from '../../../../common/risk_engine';
 import {
   RiskEngineStatus,
   getRiskScoreLatestIndex,
   MAX_SPACES_COUNT,
   RiskScoreEntity,
-} from '../../../common/risk_engine';
+} from '../../../../common/risk_engine';
 import {
   getLegacyTransforms,
   getLatestTransformId,
@@ -48,7 +48,7 @@ import {
 import { getRiskInputsIndex } from './get_risk_inputs_index';
 import { removeRiskScoringTask, startRiskScoringTask } from './tasks';
 import { createIndex } from './utils/create_index';
-import { bulkDeleteSavedObjects } from '../risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects';
+import { bulkDeleteSavedObjects } from '../../risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects';
 
 interface InitOpts {
   namespace: string;
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_writer.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_writer.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_writer.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_writer.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_writer.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_writer.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_writer.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_writer.ts
index a897dd0462f69..8e859449bb32d 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_engine_data_writer.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_writer.ts
@@ -7,7 +7,7 @@
 
 import type { BulkOperationContainer } from '@elastic/elasticsearch/lib/api/types';
 import type { Logger, ElasticsearchClient } from '@kbn/core/server';
-import type { IdentifierType, RiskScore } from '../../../common/risk_engine';
+import type { IdentifierType, RiskScore } from '../../../../common/risk_engine';
 
 interface WriterBulkResponse {
   errors: string[];
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_score_service.mock.ts
similarity index 94%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_score_service.mock.ts
index 54fd66c7d3e97..68b5b55dbda42 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.mock.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_score_service.mock.ts
@@ -6,7 +6,7 @@
  */
 
 import type { RiskScoreService } from './risk_score_service';
-import type { RiskScore } from '../../../common/risk_engine';
+import type { RiskScore } from '../../../../common/risk_engine';
 
 const createRiskScoreMock = (overrides: Partial<RiskScore> = {}): RiskScore => ({
   '@timestamp': '2023-02-15T00:15:19.231Z',
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_score_service.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_score_service.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_score_service.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.test.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.test.ts
index 0bc25121771bd..40b3ee800b1bd 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { RiskWeightTypes, RiskCategories } from '../../../common/risk_engine';
+import { RiskWeightTypes, RiskCategories } from '../../../../common/risk_engine';
 import {
   buildCategoryAssignment,
   buildCategoryWeights,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.ts
similarity index 96%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.ts
index 34ab491b74b04..225887f2dce55 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/risk_weights.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_weights.ts
@@ -12,8 +12,8 @@ import type {
   RiskCategoryRiskWeight,
   RiskWeight,
   RiskWeights,
-} from '../../../common/risk_engine';
-import { RiskCategories, RiskWeightTypes } from '../../../common/risk_engine';
+} from '../../../../common/risk_engine';
+import { RiskCategories, RiskWeightTypes } from '../../../../common/risk_engine';
 
 const RISK_CATEGORIES = Object.values(RiskCategories);
 
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/index.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.test.ts
similarity index 96%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.test.ts
index 90a2182fee573..23e58896199a9 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.test.ts
@@ -8,12 +8,12 @@
 import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks';
 import { riskEngineDisableRoute } from './risk_engine_disable_route';
 
-import { RISK_ENGINE_DISABLE_URL } from '../../../../common/constants';
+import { RISK_ENGINE_DISABLE_URL } from '../../../../../common/constants';
 import {
   serverMock,
   requestContextMock,
   requestMock,
-} from '../../detection_engine/routes/__mocks__';
+} from '../../../detection_engine/routes/__mocks__';
 import { riskEngineDataClientMock } from '../risk_engine_data_client.mock';
 
 describe('risk score disable route', () => {
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.ts
similarity index 89%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.ts
index 6a2221c4eb2be..dde7ddbee9e83 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.ts
@@ -8,10 +8,10 @@
 import type { StartServicesAccessor } from '@kbn/core/server';
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
-import { RISK_ENGINE_DISABLE_URL, APP_ID } from '../../../../common/constants';
+import { RISK_ENGINE_DISABLE_URL, APP_ID } from '../../../../../common/constants';
+import type { StartPlugins } from '../../../../plugin';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
 import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
-import type { StartPlugins } from '../../../plugin';
-import type { SecuritySolutionPluginRouter } from '../../../types';
 
 export const riskEngineDisableRoute = (
   router: SecuritySolutionPluginRouter,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.test.ts
similarity index 96%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.test.ts
index b64fd3f025c41..79a6c88c4fadf 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.test.ts
@@ -8,12 +8,12 @@
 import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks';
 import { riskEngineEnableRoute } from './risk_engine_enable_route';
 
-import { RISK_ENGINE_ENABLE_URL } from '../../../../common/constants';
+import { RISK_ENGINE_ENABLE_URL } from '../../../../../common/constants';
 import {
   serverMock,
   requestContextMock,
   requestMock,
-} from '../../detection_engine/routes/__mocks__';
+} from '../../../detection_engine/routes/__mocks__';
 import { riskEngineDataClientMock } from '../risk_engine_data_client.mock';
 
 describe('risk score enable route', () => {
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.ts
similarity index 89%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.ts
index cd8cb05072ff1..bebc8b7236bb8 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.ts
@@ -8,10 +8,10 @@
 import type { StartServicesAccessor } from '@kbn/core/server';
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
-import { RISK_ENGINE_ENABLE_URL, APP_ID } from '../../../../common/constants';
+import { RISK_ENGINE_ENABLE_URL, APP_ID } from '../../../../../common/constants';
 import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
-import type { StartPlugins } from '../../../plugin';
-import type { SecuritySolutionPluginRouter } from '../../../types';
+import type { StartPlugins } from '../../../../plugin';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
 
 export const riskEngineEnableRoute = (
   router: SecuritySolutionPluginRouter,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_init_route.ts
similarity index 93%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_init_route.ts
index bacd8ba55bcf0..e5b719dfbc42f 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_init_route.ts
@@ -8,10 +8,10 @@
 import type { StartServicesAccessor } from '@kbn/core/server';
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
-import { RISK_ENGINE_INIT_URL, APP_ID } from '../../../../common/constants';
-import type { StartPlugins } from '../../../plugin';
+import { RISK_ENGINE_INIT_URL, APP_ID } from '../../../../../common/constants';
+import type { StartPlugins } from '../../../../plugin';
 import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations';
-import type { SecuritySolutionPluginRouter } from '../../../types';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
 
 export const riskEngineInitRoute = (
   router: SecuritySolutionPluginRouter,
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_status_route.ts
similarity index 91%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_status_route.ts
index 4d8c9a1547f68..a7d649c0d7784 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_status_route.ts
@@ -7,9 +7,9 @@
 
 import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils';
 import { transformError } from '@kbn/securitysolution-es-utils';
-import { RISK_ENGINE_STATUS_URL, APP_ID } from '../../../../common/constants';
+import { RISK_ENGINE_STATUS_URL, APP_ID } from '../../../../../common/constants';
 
-import type { SecuritySolutionPluginRouter } from '../../../types';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
 
 export const riskEngineStatusRoute = (router: SecuritySolutionPluginRouter) => {
   router.versioned
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.test.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.test.ts
index 2792727ae74f1..7cf7b5304a01d 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.test.ts
@@ -9,12 +9,12 @@ import { riskScoreCalculationRoute } from './risk_score_calculation_route';
 
 import { loggerMock } from '@kbn/logging-mocks';
 
-import { RISK_SCORE_CALCULATION_URL } from '../../../../common/constants';
+import { RISK_SCORE_CALCULATION_URL } from '../../../../../common/constants';
 import {
   serverMock,
   requestContextMock,
   requestMock,
-} from '../../detection_engine/routes/__mocks__';
+} from '../../../detection_engine/routes/__mocks__';
 import { riskScoreServiceFactory } from '../risk_score_service';
 import { riskScoreServiceMock } from '../risk_score_service.mock';
 import { getRiskInputsIndex } from '../get_risk_inputs_index';
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.ts
similarity index 89%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.ts
index f9ebd13131562..cfbd80afb0d5f 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.ts
@@ -12,10 +12,10 @@ import {
   APP_ID,
   DEFAULT_RISK_SCORE_PAGE_SIZE,
   RISK_SCORE_CALCULATION_URL,
-} from '../../../../common/constants';
-import { riskScoreCalculationRequestSchema } from '../../../../common/risk_engine/risk_score_calculation/request_schema';
-import type { SecuritySolutionPluginRouter } from '../../../types';
-import { buildRouteValidation } from '../../../utils/build_validation/route_validation';
+} from '../../../../../common/constants';
+import { riskScoreCalculationRequestSchema } from '../../../../../common/risk_engine/risk_score_calculation/request_schema';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
+import { buildRouteValidation } from '../../../../utils/build_validation/route_validation';
 import { riskScoreServiceFactory } from '../risk_score_service';
 import { getRiskInputsIndex } from '../get_risk_inputs_index';
 
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.test.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.test.ts
index 72963995594a8..ba87e94c3ccc2 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.test.ts
@@ -7,13 +7,13 @@
 
 import { loggerMock } from '@kbn/logging-mocks';
 
-import { RISK_SCORE_PREVIEW_URL } from '../../../../common/constants';
-import { RiskCategories, RiskWeightTypes } from '../../../../common/risk_engine';
+import { RISK_SCORE_PREVIEW_URL } from '../../../../../common/constants';
+import { RiskCategories, RiskWeightTypes } from '../../../../../common/risk_engine';
 import {
   serverMock,
   requestContextMock,
   requestMock,
-} from '../../detection_engine/routes/__mocks__';
+} from '../../../detection_engine/routes/__mocks__';
 import { getRiskInputsIndex } from '../get_risk_inputs_index';
 import { riskScoreServiceFactory } from '../risk_score_service';
 import { riskScoreServiceMock } from '../risk_score_service.mock';
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.ts
similarity index 90%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.ts
index e91a2fa1144bb..05f80c526a927 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.ts
@@ -13,10 +13,10 @@ import {
   APP_ID,
   DEFAULT_RISK_SCORE_PAGE_SIZE,
   RISK_SCORE_PREVIEW_URL,
-} from '../../../../common/constants';
-import { riskScorePreviewRequestSchema } from '../../../../common/risk_engine/risk_score_preview/request_schema';
-import type { SecuritySolutionPluginRouter } from '../../../types';
-import { buildRouteValidation } from '../../../utils/build_validation/route_validation';
+} from '../../../../../common/constants';
+import { riskScorePreviewRequestSchema } from '../../../../../common/risk_engine/risk_score_preview/request_schema';
+import type { SecuritySolutionPluginRouter } from '../../../../types';
+import { buildRouteValidation } from '../../../../utils/build_validation/route_validation';
 import { riskScoreServiceFactory } from '../risk_score_service';
 import { getRiskInputsIndex } from '../get_risk_inputs_index';
 
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/routes/translations.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/saved_object/index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/saved_object/index.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/saved_object/risk_engine_configuration_type.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/saved_object/risk_engine_configuration_type.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/schema/risk_score_apis.yml
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/schema/risk_score_apis.yml
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/schema/risk_score_apis.yml
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/constants.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/constants.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/constants.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/constants.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/helpers.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/helpers.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/helpers.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/helpers.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/helpers.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/helpers.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/helpers.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/helpers.ts
index dfacb8b78f30a..b2db9b348b55e 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/helpers.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/helpers.ts
@@ -14,7 +14,7 @@ import {
 } from '@kbn/core/server';
 import { addSpaceIdToPath } from '@kbn/spaces-plugin/server';
 
-import type { Range } from '../../../../common/risk_engine';
+import type { Range } from '../../../../../common/risk_engine';
 
 export const convertDateToISOString = (dateString: string): string => {
   const date = datemath.parse(dateString);
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/index.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/index.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/index.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.mock.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.mock.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.mock.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts
similarity index 96%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts
index b0482b43b5c13..525f2247b63bd 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts
@@ -18,8 +18,8 @@ import type {
   TaskManagerStartContract,
 } from '@kbn/task-manager-plugin/server';
 import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server';
-import type { AfterKeys, IdentifierType } from '../../../../common/risk_engine';
-import type { StartPlugins } from '../../../plugin';
+import type { AfterKeys, IdentifierType } from '../../../../../common/risk_engine';
+import type { StartPlugins } from '../../../../plugin';
 import { type RiskScoreService, riskScoreServiceFactory } from '../risk_score_service';
 import { RiskEngineDataClient } from '../risk_engine_data_client';
 import { isRiskScoreCalculationComplete } from '../helpers';
@@ -30,12 +30,12 @@ import {
 } from './state';
 import { INTERVAL, SCOPE, TIMEOUT, TYPE, VERSION } from './constants';
 import { buildScopedInternalSavedObjectsClientUnsafe, convertRangeToISO } from './helpers';
-import { RiskScoreEntity } from '../../../../common/risk_engine/types';
+import { RiskScoreEntity } from '../../../../../common/risk_engine/types';
 import {
   RISK_SCORE_EXECUTION_SUCCESS_EVENT,
   RISK_SCORE_EXECUTION_ERROR_EVENT,
   RISK_SCORE_EXECUTION_CANCELLATION_EVENT,
-} from '../../telemetry/event_based/events';
+} from '../../../telemetry/event_based/events';
 
 const logFactory =
   (logger: Logger, taskId: string) =>
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/tasks/state.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/state.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/tasks/state.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/state.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/types.ts
similarity index 98%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/types.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/types.ts
index 4b6da2b65f553..f5aeaf4f56428 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/types.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/types.ts
@@ -14,7 +14,7 @@ import type {
   Range,
   RiskEngineStatus,
   RiskScore,
-} from '../../../common/risk_engine';
+} from '../../../../common/risk_engine';
 
 export interface CalculateScoresParams {
   afterKeys: AfterKeys;
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/create_datastream.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/create_datastream.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/create_datastream.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/create_datastream.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/create_index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/create_index.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/create_index.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/create_index.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/retry_transient_es_errors.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/retry_transient_es_errors.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/retry_transient_es_errors.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/retry_transient_es_errors.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/retry_transient_es_errors.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/retry_transient_es_errors.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/retry_transient_es_errors.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/retry_transient_es_errors.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/saved_object_configuration.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/saved_object_configuration.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts
index 8d1562d805e57..e39f2f73e5df2 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/saved_object_configuration.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts
@@ -6,7 +6,7 @@
  */
 import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server';
 
-import { getAlertsIndex } from '../../../../common/utils/risk_score_modules';
+import { getAlertsIndex } from '../../../../../common/utils/risk_score_modules';
 import type { RiskEngineConfiguration } from '../types';
 import { riskEngineConfigurationTypeName } from '../saved_object';
 
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/transforms.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/transforms.test.ts
similarity index 100%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/transforms.test.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/transforms.test.ts
diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/transforms.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/transforms.ts
similarity index 97%
rename from x-pack/plugins/security_solution/server/lib/risk_engine/utils/transforms.ts
rename to x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/transforms.ts
index d1a544233339e..b78ea9ccfa644 100644
--- a/x-pack/plugins/security_solution/server/lib/risk_engine/utils/transforms.ts
+++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/transforms.ts
@@ -14,11 +14,11 @@ import type {
   TransformPutTransformRequest,
   TransformGetTransformStatsTransformStats,
 } from '@elastic/elasticsearch/lib/api/types';
-import { RiskScoreEntity } from '../../../../common/search_strategy';
+import { RiskScoreEntity } from '../../../../../common/search_strategy';
 import {
   getRiskScorePivotTransformId,
   getRiskScoreLatestTransformId,
-} from '../../../../common/utils/risk_score_modules';
+} from '../../../../../common/utils/risk_score_modules';
 
 export const getLegacyTransforms = async ({
   namespace,
diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts
index adbf06cc1da99..66f22e0c44bef 100644
--- a/x-pack/plugins/security_solution/server/plugin.ts
+++ b/x-pack/plugins/security_solution/server/plugin.ts
@@ -107,7 +107,7 @@ import {
 } from '../common/endpoint/constants';
 
 import { AppFeaturesService } from './lib/app_features_service/app_features_service';
-import { registerRiskScoringTask } from './lib/risk_engine/tasks/risk_scoring_task';
+import { registerRiskScoringTask } from './lib/entity_analytics/risk_engine/tasks/risk_scoring_task';
 import { registerProtectionUpdatesNoteRoutes } from './endpoint/routes/protection_updates_note';
 import { latestRiskScoreIndexPattern, allRiskScoreIndexPattern } from '../common/risk_engine';
 import { isEndpointPackageV2 } from '../common/endpoint/utils/package_v2';
diff --git a/x-pack/plugins/security_solution/server/request_context_factory.ts b/x-pack/plugins/security_solution/server/request_context_factory.ts
index be810fd5ae41e..fde473d2a253e 100644
--- a/x-pack/plugins/security_solution/server/request_context_factory.ts
+++ b/x-pack/plugins/security_solution/server/request_context_factory.ts
@@ -25,7 +25,7 @@ import type {
 import type { Immutable } from '../common/endpoint/types';
 import type { EndpointAuthz } from '../common/endpoint/types/authz';
 import type { EndpointAppContextService } from './endpoint/endpoint_app_context_services';
-import { RiskEngineDataClient } from './lib/risk_engine/risk_engine_data_client';
+import { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client';
 
 export interface IRequestContextFactory {
   create(
diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/plugins/security_solution/server/routes/index.ts
index d3786ea8acb88..b5b6a5c205e95 100644
--- a/x-pack/plugins/security_solution/server/routes/index.ts
+++ b/x-pack/plugins/security_solution/server/routes/index.ts
@@ -80,8 +80,8 @@ import {
   riskEngineInitRoute,
   riskEngineEnableRoute,
   riskEngineStatusRoute,
-} from '../lib/risk_engine/routes';
-import { riskScoreCalculationRoute } from '../lib/risk_engine/routes/risk_score_calculation_route';
+} from '../lib/entity_analytics/risk_engine/routes';
+import { riskScoreCalculationRoute } from '../lib/entity_analytics/risk_engine/routes/risk_score_calculation_route';
 
 export const initRoutes = (
   router: SecuritySolutionPluginRouter,
diff --git a/x-pack/plugins/security_solution/server/saved_objects.ts b/x-pack/plugins/security_solution/server/saved_objects.ts
index 3f91bcf149ac6..0b1fec5677488 100644
--- a/x-pack/plugins/security_solution/server/saved_objects.ts
+++ b/x-pack/plugins/security_solution/server/saved_objects.ts
@@ -14,7 +14,7 @@ import { legacyType as legacyRuleActionsType } from './lib/detection_engine/rule
 import { prebuiltRuleAssetType } from './lib/detection_engine/prebuilt_rules';
 import { type as signalsMigrationType } from './lib/detection_engine/migrations/saved_objects';
 import { manifestType } from './endpoint/lib/artifacts/saved_object_mappings';
-import { riskEngineConfigurationType } from './lib/risk_engine/saved_object';
+import { riskEngineConfigurationType } from './lib/entity_analytics/risk_engine/saved_object';
 
 const types = [
   noteType,
diff --git a/x-pack/plugins/security_solution/server/types.ts b/x-pack/plugins/security_solution/server/types.ts
index 8326d13ad03a7..c979cc25c172b 100644
--- a/x-pack/plugins/security_solution/server/types.ts
+++ b/x-pack/plugins/security_solution/server/types.ts
@@ -29,7 +29,7 @@ import type {
 import type { FrameworkRequest } from './lib/framework';
 import type { EndpointAuthz } from '../common/endpoint/types/authz';
 import type { EndpointInternalFleetServicesInterface } from './endpoint/services/fleet';
-import type { RiskEngineDataClient } from './lib/risk_engine/risk_engine_data_client';
+import type { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client';
 
 export { AppClient };
 
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
index ecf413fcfed70..fd263716ca530 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
@@ -6,7 +6,7 @@
  */
 
 import expect from '@kbn/expect';
-import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/risk_engine/saved_object';
+import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/entity_analytics/risk_engine/saved_object';
 import { FtrProviderContext } from '../../../common/ftr_provider_context';
 import {
   legacyTransformIds,
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
index 3911f55d01631..8a36471b1a6a7 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
@@ -11,7 +11,7 @@ import SuperTest from 'supertest';
 import type { Client } from '@elastic/elasticsearch';
 import type { ToolingLog } from '@kbn/tooling-log';
 import type { EcsRiskScore, RiskScore } from '@kbn/security-solution-plugin/common/risk_engine';
-import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/risk_engine/saved_object';
+import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/entity_analytics/risk_engine/saved_object';
 import type { KbnClient } from '@kbn/test';
 import {
   RISK_ENGINE_INIT_URL,

From 4557ac83e010f3ae49d538e14b62d01c873ed992 Mon Sep 17 00:00:00 2001
From: jennypavlova <dzheni.pavlova@elastic.co>
Date: Thu, 9 Nov 2023 13:04:25 +0100
Subject: [PATCH 038/147] [ObsUX] Asset details storybook fixes (#170262)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #169123
## Summary

This PR fixes the asset details storybook. There are a lot of changes we
did that broke the existing stories - adding the feature flags, using
the URL state to select the active tab, using new services/hooks, etc.
The order of the decorators was also returning an error in the component
stories.

The background of the tab switching issue is that the active tab is set
in the URL and we can't use the query params here (they won't be set in
the storybook in case a different tab is selected)
As a workaround for the tab selection issue, I added an extra `arg` to
see all tab names and to select one of them - it's not perfect but I was
trying to avoid changing the tab switcher code only to make the story
work. One issue with that is after selecting a value in the controls the
canvas is not refreshed so I added different stories for different tabs.
It works in Docs mode:



https://github.com/elastic/kibana/assets/14139027/aa6ec610-14b9-48c3-a7e4-02f57bac9390

That's the result so far:



https://github.com/elastic/kibana/assets/14139027/d7eb6ed0-f655-4576-9480-b096f5aec007


## Next steps 🐾

The stories can be useful even if not everything inside the component is
available and the mocks do not cover every case. Supporting more cases
can become tricky so we can keep it in this minimum component view and
have the tabs available as part of the asset details story ( flyout and
page ). Tab switching can be improved as currently they can be switched
only using the Story Controls, flyout dropdown in the story, or the left
navigation (clicking on them won't work) - I explained that in the PRs
summary. We can also decide if we want to keep the stories for the asset
details as they are pretty easy to break. If we decide to support it in
the future we should keep it in mind while testing PRs.

## Update on found issues 🔍

Other issues I see (currently not fixed) are:
- Anomalies are not rendered for the default case
- Update: I tried different things and I saw that the date change is
helping the anomalies to show (on initial load they never show - but
after a date change using the date picker they appear, even when the
same date is selected:


https://github.com/elastic/kibana/assets/14139027/ce0461cc-4c2c-4134-96dc-829b480a5be1


It's really odd and I couldn't find a solution for that - As a
workaround, I removed the anomalies component story as it won't work
without the date picker.
- Logs Tab data is not visible (even without data the tab renders
without errors)
- Process list: when clicking on a process in the list there is an error
shown (related AI feature context)
- Update: This is fixed - the AI assistant component will be visible
(not functional)
<img width="1916" alt="image"
src="https://github.com/elastic/kibana/assets/14139027/9d41484d-506c-4f5d-8940-57010ec11303">

## Testing

- The easy way is to click on [Storybooks
Preview](https://ci-artifacts.kibana.dev/storybooks/pr-170262/cd96eb6d6da95fa34c9b2582c353b7ecd6e80b66)
inside the PR build section
- To see the stories locally run `yarn storybook infra` and open
http://localhost:9001/
---
 .../__stories__/context/fixtures/anomalies.ts |  4 +-
 .../context/fixtures/asset_details_props.ts   | 12 +--
 .../asset_details/__stories__/decorator.tsx   | 73 ++++++++++++++++--
 .../asset_details/asset_details.stories.tsx   | 77 ++++++++++++++++---
 .../tabs/anomalies/anomalies.stories.tsx      | 48 ------------
 .../tabs/metadata/metadata.stories.tsx        |  7 +-
 .../tabs/processes/processes.stories.tsx      |  2 +-
 7 files changed, 144 insertions(+), 79 deletions(-)
 delete mode 100644 x-pack/plugins/infra/public/components/asset_details/tabs/anomalies/anomalies.stories.tsx

diff --git a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/anomalies.ts b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/anomalies.ts
index b49e14850f7b6..543b46ceb17b9 100644
--- a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/anomalies.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/anomalies.ts
@@ -16,7 +16,7 @@ const anomalies: GetMetricsHostsAnomaliesSuccessResponsePayload = {
         actual: 758.8220213274412,
         anomalyScore: 0.024881740359975164,
         duration: 900,
-        startTime: 1486845000000,
+        startTime: 1681038638000,
         type: 'metrics_hosts',
         partitionFieldName: 'airline',
         partitionFieldValue: 'NKS',
@@ -42,7 +42,7 @@ const anomalies: GetMetricsHostsAnomaliesSuccessResponsePayload = {
         actual: 758.8220213274412,
         anomalyScore: 100.024881740359975164,
         duration: 900,
-        startTime: 1486845000000,
+        startTime: 1681038638000,
         type: 'metrics_hosts',
         partitionFieldName: 'airline',
         partitionFieldValue: 'NKS',
diff --git a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts
index 601c064471078..9d6b4efb96ec2 100644
--- a/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts
+++ b/x-pack/plugins/infra/public/components/asset_details/__stories__/context/fixtures/asset_details_props.ts
@@ -16,12 +16,6 @@ const tabs: Tab[] = [
       defaultMessage: 'Overview',
     }),
   },
-  {
-    id: ContentTabIds.LOGS,
-    name: i18n.translate('xpack.infra.nodeDetails.tabs.logs', {
-      defaultMessage: 'Logs',
-    }),
-  },
   {
     id: ContentTabIds.METADATA,
     name: i18n.translate('xpack.infra.metrics.nodeDetails.tabs.metadata', {
@@ -34,6 +28,12 @@ const tabs: Tab[] = [
       defaultMessage: 'Processes',
     }),
   },
+  {
+    id: ContentTabIds.LOGS,
+    name: i18n.translate('xpack.infra.nodeDetails.tabs.logs', {
+      defaultMessage: 'Logs',
+    }),
+  },
   {
     id: ContentTabIds.ANOMALIES,
     name: i18n.translate('xpack.infra.nodeDetails.tabs.anomalies', {
diff --git a/x-pack/plugins/infra/public/components/asset_details/__stories__/decorator.tsx b/x-pack/plugins/infra/public/components/asset_details/__stories__/decorator.tsx
index 11401bd256feb..e779808347ec4 100644
--- a/x-pack/plugins/infra/public/components/asset_details/__stories__/decorator.tsx
+++ b/x-pack/plugins/infra/public/components/asset_details/__stories__/decorator.tsx
@@ -11,24 +11,33 @@ import {
   KibanaContextProvider,
   type KibanaReactContextValue,
 } from '@kbn/kibana-react-plugin/public';
-import { of } from 'rxjs';
+import { Observable, of } from 'rxjs';
 import { action } from '@storybook/addon-actions';
 import type { DecoratorFn } from '@storybook/react';
 import { useParameter } from '@storybook/addons';
 import type { DeepPartial } from 'utility-types';
 import type { LocatorPublic } from '@kbn/share-plugin/public';
-import type { IKibanaSearchRequest, ISearchOptions } from '@kbn/data-plugin/public';
+import type {
+  IKibanaSearchRequest,
+  ISearchOptions,
+  SearchSessionState,
+} from '@kbn/data-plugin/public';
 import { AlertSummaryWidget } from '@kbn/triggers-actions-ui-plugin/public/application/sections/alert_summary_widget/alert_summary_widget';
 import type { Theme } from '@elastic/charts/dist/utils/themes/theme';
 import type { AlertSummaryWidgetProps } from '@kbn/triggers-actions-ui-plugin/public/application/sections/alert_summary_widget';
 import { defaultLogViewAttributes } from '@kbn/logs-shared-plugin/common';
 import { DataView, DataViewField } from '@kbn/data-views-plugin/common';
+import { MemoryRouter } from 'react-router-dom';
+import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
+import { ObservabilityAIAssistantService } from '@kbn/observability-ai-assistant-plugin/public/types';
+import { PluginConfigProvider } from '../../../containers/plugin_config_context';
 import type { PluginKibanaContextValue } from '../../../hooks/use_kibana';
 import { SourceProvider } from '../../../containers/metrics_source';
 import { getHttp } from './context/http';
 import { assetDetailsProps, getLogEntries } from './context/fixtures';
 import { ContextProviders } from '../context_providers';
 import { DataViewsProvider } from '../hooks/use_data_views';
+import type { InfraConfig } from '../../../../server';
 
 const settings: Record<string, any> = {
   'dateFormat:scaled': [['', 'HH:mm:ss.SSS']],
@@ -58,6 +67,10 @@ export const DecorateWithKibanaContext: DecoratorFn = (story) => {
         search: (request: IKibanaSearchRequest, options?: ISearchOptions) => {
           return getLogEntries(request, options) as any;
         },
+        session: {
+          start: () => 'started',
+          state$: { closed: false } as unknown as Observable<SearchSessionState>,
+        },
       },
       query: {
         filterManager: {
@@ -144,14 +157,64 @@ export const DecorateWithKibanaContext: DecoratorFn = (story) => {
     },
     telemetry: {
       reportAssetDetailsFlyoutViewed: () => {},
+      reportAssetDetailsPageViewed: () => {},
+    },
+  };
+
+  const config: InfraConfig = {
+    alerting: {
+      inventory_threshold: {
+        group_by_page_size: 11,
+      },
+      metric_threshold: {
+        group_by_page_size: 11,
+      },
+    },
+    enabled: true,
+    inventory: {
+      compositeSize: 11,
+    },
+    sources: {
+      default: {
+        fields: {
+          message: ['default'],
+        },
+      },
+    },
+    featureFlags: {
+      customThresholdAlertsEnabled: true,
+      logsUIEnabled: false,
+      metricsExplorerEnabled: false,
+      osqueryEnabled: true,
+      inventoryThresholdAlertRuleEnabled: true,
+      metricThresholdAlertRuleEnabled: true,
+      logThresholdAlertRuleEnabled: true,
+      alertsAndRulesDropdownEnabled: true,
     },
   };
 
   return (
     <I18nProvider>
-      <KibanaContextProvider services={mockServices}>
-        <SourceProvider sourceId="default">{story()}</SourceProvider>
-      </KibanaContextProvider>
+      <MemoryRouter initialEntries={['/infra/metrics/hosts']}>
+        <PluginConfigProvider value={config}>
+          <KibanaContextProvider services={mockServices}>
+            <ObservabilityAIAssistantProvider
+              value={
+                {
+                  isEnabled: () => true,
+                  callApi: () => {},
+                  getCurrentUser: () => {},
+                  getLicense: () => {},
+                  getLicenseManagementLocator: () => {},
+                  start: {},
+                } as unknown as ObservabilityAIAssistantService
+              }
+            >
+              <SourceProvider sourceId="default">{story()}</SourceProvider>
+            </ObservabilityAIAssistantProvider>
+          </KibanaContextProvider>
+        </PluginConfigProvider>
+      </MemoryRouter>
     </I18nProvider>
   );
 };
diff --git a/x-pack/plugins/infra/public/components/asset_details/asset_details.stories.tsx b/x-pack/plugins/infra/public/components/asset_details/asset_details.stories.tsx
index 0816e25dc800b..c85677dbace94 100644
--- a/x-pack/plugins/infra/public/components/asset_details/asset_details.stories.tsx
+++ b/x-pack/plugins/infra/public/components/asset_details/asset_details.stories.tsx
@@ -6,19 +6,32 @@
  */
 
 import React, { useState } from 'react';
-import { EuiButton } from '@elastic/eui';
+import { EuiButton, EuiCallOut, EuiSelect, EuiSpacer } from '@elastic/eui';
 import type { Meta, Story } from '@storybook/react/types-6-0';
+import { MemoryRouter } from 'react-router-dom';
+import { useArgs } from '@storybook/addons';
 import { AssetDetails } from './asset_details';
 import { decorateWithGlobalStorybookThemeProviders } from '../../test_utils/use_global_storybook_theme';
-import { type AssetDetailsProps } from './types';
+import { type TabIds, type AssetDetailsProps } from './types';
 import { DecorateWithKibanaContext } from './__stories__/decorator';
 import { assetDetailsProps } from './__stories__/context/fixtures';
 
-const stories: Meta<AssetDetailsProps> = {
+interface AssetDetailsStoryArgs extends AssetDetailsProps {
+  tabId: TabIds;
+}
+
+const stories: Meta<AssetDetailsStoryArgs> = {
   title: 'infra/Asset Details View',
   decorators: [decorateWithGlobalStorybookThemeProviders, DecorateWithKibanaContext],
   component: AssetDetails,
   argTypes: {
+    tabId: {
+      options: assetDetailsProps.tabs.filter(({ id }) => id !== 'linkToApm').map(({ id }) => id),
+      defaultValue: 'overview',
+      control: {
+        type: 'radio',
+      },
+    },
     links: {
       options: assetDetailsProps.links,
       control: {
@@ -26,20 +39,42 @@ const stories: Meta<AssetDetailsProps> = {
       },
     },
   },
-  args: {
-    ...assetDetailsProps,
-  },
+  args: { ...assetDetailsProps },
 };
 
-const PageTemplate: Story<AssetDetailsProps> = (args) => {
-  return <AssetDetails {...args} />;
+const PageTabTemplate: Story<AssetDetailsStoryArgs> = (args) => {
+  return (
+    <MemoryRouter initialEntries={[`/infra/metrics/hosts?assetDetails=(tabId:${args.tabId})`]}>
+      <AssetDetails {...args} />
+    </MemoryRouter>
+  );
 };
 
-const FlyoutTemplate: Story<AssetDetailsProps> = (args) => {
+const FlyoutTemplate: Story<AssetDetailsStoryArgs> = (args) => {
   const [isOpen, setIsOpen] = useState(false);
   const closeFlyout = () => setIsOpen(false);
+  const options = assetDetailsProps.tabs.filter(({ id }) => id !== 'linkToApm').map(({ id }) => id);
+  const [{ tabId }, updateArgs] = useArgs();
+
   return (
     <div>
+      <EuiCallOut
+        color="warning"
+        title={`To see different tab content please close the flyout if opened, select one of the options from the drop-down and open the flyout again:`}
+      />
+      <EuiSpacer />
+      <EuiSelect
+        data-test-subj="infraFlyoutTemplateSelect"
+        value={tabId}
+        onChange={(e) => {
+          updateArgs({ tabId: e.target.value as TabIds });
+        }}
+        options={options.map((id) => ({
+          text: id,
+          value: id,
+        }))}
+      />
+      <EuiSpacer />
       <EuiButton
         data-test-subj="infraFlyoutTemplateOpenFlyoutButton"
         onClick={() => setIsOpen(true)}
@@ -47,13 +82,33 @@ const FlyoutTemplate: Story<AssetDetailsProps> = (args) => {
         Open flyout
       </EuiButton>
       <div hidden={!isOpen}>
-        {isOpen && <AssetDetails {...args} renderMode={{ mode: 'flyout', closeFlyout }} />}
+        {isOpen && (
+          <MemoryRouter
+            key={tabId}
+            initialEntries={[`/infra/metrics/hosts?assetDetails=(tabId:${tabId ?? args?.tabId})`]}
+          >
+            <AssetDetails {...args} renderMode={{ mode: 'flyout', closeFlyout }} />
+          </MemoryRouter>
+        )}
       </div>
     </div>
   );
 };
 
-export const Page = PageTemplate.bind({});
+export const OverviewTab = PageTabTemplate.bind({});
+OverviewTab.args = { tabId: 'overview' };
+
+export const MetadataTab = PageTabTemplate.bind({});
+MetadataTab.args = { tabId: 'metadata' };
+
+export const ProcessesTab = PageTabTemplate.bind({});
+ProcessesTab.args = { tabId: 'processes' };
+
+export const LogsTab = PageTabTemplate.bind({});
+LogsTab.args = { tabId: 'logs' };
+
+export const AnomaliesTab = PageTabTemplate.bind({});
+AnomaliesTab.args = { tabId: 'anomalies' };
 
 export const Flyout = FlyoutTemplate.bind({});
 
diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/anomalies/anomalies.stories.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/anomalies/anomalies.stories.tsx
deleted file mode 100644
index 25db2ae7445d6..0000000000000
--- a/x-pack/plugins/infra/public/components/asset_details/tabs/anomalies/anomalies.stories.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import React from 'react';
-import type { Meta, Story } from '@storybook/react/types-6-0';
-
-import { Anomalies } from './anomalies';
-import { decorateWithGlobalStorybookThemeProviders } from '../../../../test_utils/use_global_storybook_theme';
-import {
-  DecorateWithKibanaContext,
-  DecorateWithAssetDetailsStateContext,
-} from '../../__stories__/decorator';
-
-const stories: Meta = {
-  title: 'infra/Asset Details View/Components/Anomalies',
-  decorators: [
-    decorateWithGlobalStorybookThemeProviders,
-    DecorateWithKibanaContext,
-    DecorateWithAssetDetailsStateContext,
-  ],
-  component: Anomalies,
-};
-
-const Template: Story = () => {
-  return <Anomalies />;
-};
-
-export const Default = Template.bind({});
-
-export const NoData = Template.bind({});
-NoData.parameters = {
-  apiResponse: {
-    mock: 'noData',
-  },
-};
-
-export const LoadingState = Template.bind({});
-LoadingState.parameters = {
-  apiResponse: {
-    mock: 'loading',
-  },
-};
-
-export default stories;
diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/metadata/metadata.stories.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/metadata/metadata.stories.tsx
index 4a48b63f73d41..323d3302589d9 100644
--- a/x-pack/plugins/infra/public/components/asset_details/tabs/metadata/metadata.stories.tsx
+++ b/x-pack/plugins/infra/public/components/asset_details/tabs/metadata/metadata.stories.tsx
@@ -18,8 +18,8 @@ const stories: Meta = {
   title: 'infra/Asset Details View/Components/Metadata',
   decorators: [
     decorateWithGlobalStorybookThemeProviders,
-    DecorateWithKibanaContext,
     DecorateWithAssetDetailsStateContext,
+    DecorateWithKibanaContext,
   ],
   component: Metadata,
 };
@@ -30,11 +30,6 @@ const Template: Story = () => {
 
 export const Default = Template.bind({});
 
-export const WithActions = Template.bind({});
-WithActions.args = {
-  showActionsColumn: true,
-};
-
 export const NoData = Template.bind({});
 NoData.parameters = {
   apiResponse: {
diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/processes/processes.stories.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/processes/processes.stories.tsx
index feb055a6a14e0..94e153d1f0589 100644
--- a/x-pack/plugins/infra/public/components/asset_details/tabs/processes/processes.stories.tsx
+++ b/x-pack/plugins/infra/public/components/asset_details/tabs/processes/processes.stories.tsx
@@ -18,8 +18,8 @@ const stories: Meta = {
   title: 'infra/Asset Details View/Components/Processes',
   decorators: [
     decorateWithGlobalStorybookThemeProviders,
-    DecorateWithKibanaContext,
     DecorateWithAssetDetailsStateContext,
+    DecorateWithKibanaContext,
   ],
   component: Processes,
 };

From 7ba20f67dbcc24687611a3fb1441a4a1f0653ce0 Mon Sep 17 00:00:00 2001
From: Shahzad <shahzad31comp@gmail.com>
Date: Thu, 9 Nov 2023 13:08:00 +0100
Subject: [PATCH 039/147] [Observability] Add more specific code owners below
 (#170931)

---
 .github/CODEOWNERS | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 3e96ce3a0a616..0291dc3de2be4 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -927,12 +927,6 @@ packages/kbn-monaco/src/esql @elastic/kibana-visualizations
 
 ### Observability Plugins
 
-# Actionable observability
-x-pack/packages/observability/alert_details @elastic/obs-ux-management-team
-x-pack/test/observability_functional @elastic/obs-ux-management-team
-x-pack/plugins/infra/public/alerting @elastic/obs-ux-management-team
-x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
-
 # Observability robots
 /.github/workflows/deploy-my-kibana.yml @elastic/observablt-robots
 /.github/workflows/oblt-github-commands @elastic/observablt-robots
@@ -995,6 +989,12 @@ x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
 /x-pack/test/functional/apps/infra @elastic/infra-monitoring-ui @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team
 /x-pack/test/api_integration/apis/infra @elastic/infra-monitoring-ui @elastic/obs-ux-infra_services-team
 
+# Actionable observability
+x-pack/packages/observability/alert_details @elastic/obs-ux-management-team
+x-pack/test/observability_functional @elastic/obs-ux-management-team
+x-pack/plugins/infra/public/alerting @elastic/obs-ux-management-team
+x-pack/plugins/infra/server/lib/alerting @elastic/obs-ux-management-team
+
 # Elastic Stack Monitoring
 /x-pack/test/functional/apps/monitoring @elastic/obs-ux-infra_services-team
 /x-pack/test/api_integration/apis/monitoring @elastic/obs-ux-infra_services-team

From 8b7c677902c821c007a5dadea48df6c0eb0e5396 Mon Sep 17 00:00:00 2001
From: Pierre Gayvallet <pierre.gayvallet@elastic.co>
Date: Thu, 9 Nov 2023 13:20:25 +0100
Subject: [PATCH 040/147] Core capabilities: improve the performances of
 `resolveCapabilities` (#170454)

## Summary

Fix https://github.com/elastic/kibana/issues/146881

Introduce the concept of "capability path" to Core's capabilities API,
and rely on it to perform various performance optimization during
capabilities resolving.

### API Changes

#### CapabilitiesSetup.registerSwitcher

A new mandatory `capabilityPath` option was added to the API signature.

Plugins registering capability switchers must now define the path(s) of
capabilities the switcher will impact.

E.g a live example with the `ml` capabilities switcher that was only
mutating `ml.{something}` capabilities:

*Before:*

```ts
coreSetup.capabilities.registerSwitcher(getSwitcher(license$, logger, enabledFeatures));
```

*After:*

```ts
  coreSetup.capabilities.registerSwitcher(getSwitcher(license$, logger, enabledFeatures), {
    capabilityPath: 'ml.*',
  });
```

#### CapabilitiesStart.resolveCapabilities

The `resolveCapabilities` was also changed accordingly, forcing API
consumers to specify the path(s) of capabilities they're planning to
access.

E.g for the `ml` plugin's capabilities resolving

*Before:*

```ts
const capabilities = await this.capabilities.resolveCapabilities(request);
return capabilities.ml as MlCapabilities;
```

*After:*

```ts
const capabilities = await this.capabilities.resolveCapabilities(request, {
   capabilityPath: 'ml.*',
});
return capabilities.ml as MlCapabilities;
```

### Performance optimizations

Knowing which capability path(s) the switchers are impacting and which
capability path(s) the resolver wants to use allow us to optimize the
way we're chaining the resolvers during the `resolveCapabilities`
internal implementation:

#### 1. We only apply switchers that may impact the paths the resolver
requested

E.g when requesting the ml capabilities, we now only apply the `ml`,
`security` and `spaces` switchers.

#### 2. We can call non-intersecting switchers in parallel

Before, all switchers were executed in sequence. With these changes, we
now group non-intersecting switchers to resolve them in parallel.

E.g the `ml` (`ml.*`) and `fileUpload` (`fileUpload.*`) can be executed
and applied in parallel because they're not touching the same set of
capabilities.

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../src/capabilities_service.test.ts          | 110 ++--
 .../src/capabilities_service.ts               |  31 +-
 .../src/resolve_capabilities.test.mocks.ts    |  18 +
 .../src/resolve_capabilities.test.ts          | 539 +++++++++++++++---
 .../src/resolve_capabilities.ts               | 141 ++++-
 .../src/resolve_helpers.test.ts               | 172 ++++++
 .../src/resolve_helpers.ts                    | 117 ++++
 .../src/routes/resolve_capabilities.ts        |   7 +-
 .../src/types.ts                              |  23 +
 .../core-capabilities-server/index.ts         |   1 +
 .../core-capabilities-server/src/contracts.ts |  61 +-
 .../capabilities/capabilities_service.test.ts |   4 +-
 .../server/data_views_service_factory.ts      |  12 +-
 .../enterprise_search/server/plugin.ts        |  80 +--
 .../file_upload/server/capabilities.test.ts   |  10 +
 .../file_upload/server/capabilities.ts        |  47 +-
 .../server/services/context.test.ts           |   4 +-
 .../global_search/server/services/context.ts  |   4 +-
 .../lib/capabilities/capabilities_switcher.ts |   4 +-
 x-pack/plugins/ml/server/plugin.ts            |   4 +-
 .../live_query/create_live_query_route.ts     |   4 +-
 .../anonymous_access_service.test.ts          |   6 +-
 .../anonymous_access_service.ts               |   1 +
 .../authorization_service.test.ts             |   4 +-
 .../authorization/authorization_service.tsx   |   6 +
 .../spaces/server/capabilities/index.ts       |   4 +-
 .../monitor_cruds/add_monitor_project.ts      |   7 +-
 .../routes/monitor_cruds/edit_monitor.ts      |   7 +-
 .../routes/monitor_cruds/get_api_key.ts       |   7 +-
 .../routes/monitor_cruds/get_monitor.ts       |   6 +-
 .../routes/monitor_cruds/inspect_monitor.ts   |   9 +-
 .../server/routes/settings/params/params.ts   |   6 +-
 .../get_service_locations.ts                  |   7 +-
 .../plugins/transform/server/capabilities.ts  |  89 +--
 34 files changed, 1249 insertions(+), 303 deletions(-)
 create mode 100644 packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.mocks.ts
 create mode 100644 packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.test.ts
 create mode 100644 packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.ts
 create mode 100644 packages/core/capabilities/core-capabilities-server-internal/src/types.ts

diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.test.ts b/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.test.ts
index 29e6c5a937898..23e2e06c02c1f 100644
--- a/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.test.ts
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.test.ts
@@ -8,6 +8,7 @@
 
 import { mockCoreContext } from '@kbn/core-base-server-mocks';
 import { mockRouter, RouterMock } from '@kbn/core-http-router-server-mocks';
+import type { KibanaRequest } from '@kbn/core-http-server';
 import {
   httpServiceMock,
   InternalHttpServicePrebootMock,
@@ -16,6 +17,8 @@ import {
 import type { CapabilitiesSetup } from '@kbn/core-capabilities-server';
 import { CapabilitiesService } from './capabilities_service';
 
+const fakeRequest = {} as KibanaRequest;
+
 describe('CapabilitiesService', () => {
   let http: InternalHttpServiceSetupMock;
   let service: CapabilitiesService;
@@ -71,7 +74,8 @@ describe('CapabilitiesService', () => {
         catalogue: { myPlugin: true },
       }));
       const start = service.start();
-      expect(await start.resolveCapabilities({} as any)).toMatchInlineSnapshot(`
+      expect(await start.resolveCapabilities(fakeRequest, { capabilityPath: '*' }))
+        .toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {
             "myPlugin": true,
@@ -100,7 +104,8 @@ describe('CapabilitiesService', () => {
         },
       }));
       const start = service.start();
-      expect(await start.resolveCapabilities({} as any)).toMatchInlineSnapshot(`
+      expect(await start.resolveCapabilities(fakeRequest, { capabilityPath: '*' }))
+        .toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {
             "A": true,
@@ -123,17 +128,21 @@ describe('CapabilitiesService', () => {
       setup.registerProvider(() => ({
         catalogue: { a: true, b: true, c: true },
       }));
-      setup.registerSwitcher((req, capabilities) => {
-        return {
-          ...capabilities,
-          catalogue: {
-            ...capabilities.catalogue,
-            b: false,
-          },
-        };
-      });
+      setup.registerSwitcher(
+        (req, capabilities) => {
+          return {
+            ...capabilities,
+            catalogue: {
+              ...capabilities.catalogue,
+              b: false,
+            },
+          };
+        },
+        { capabilityPath: '*' }
+      );
       const start = service.start();
-      expect(await start.resolveCapabilities({} as any)).toMatchInlineSnapshot(`
+      expect(await start.resolveCapabilities(fakeRequest, { capabilityPath: '*' }))
+        .toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {
             "a": true,
@@ -162,29 +171,39 @@ describe('CapabilitiesService', () => {
           c: true,
         },
       }));
-      setup.registerSwitcher((req, capabilities) => {
-        return {
-          catalogue: {
-            b: false,
-          },
-        };
-      });
-
-      setup.registerSwitcher((req, capabilities) => {
-        return {
-          navLinks: { c: false },
-        };
-      });
-      setup.registerSwitcher((req, capabilities) => {
-        return {
-          customSection: {
-            c: false,
-          },
-        };
-      });
+      setup.registerSwitcher(
+        (req, capabilities) => {
+          return {
+            catalogue: {
+              b: false,
+            },
+          };
+        },
+        { capabilityPath: '*' }
+      );
+
+      setup.registerSwitcher(
+        (req, capabilities) => {
+          return {
+            navLinks: { c: false },
+          };
+        },
+        { capabilityPath: '*' }
+      );
+      setup.registerSwitcher(
+        (req, capabilities) => {
+          return {
+            customSection: {
+              c: false,
+            },
+          };
+        },
+        { capabilityPath: '*' }
+      );
 
       const start = service.start();
-      expect(await start.resolveCapabilities({} as any)).toMatchInlineSnapshot(`
+      expect(await start.resolveCapabilities(fakeRequest, { capabilityPath: '*' }))
+        .toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {
             "a": true,
@@ -206,12 +225,15 @@ describe('CapabilitiesService', () => {
 
     it('allows to indicate that default capabilities should be returned', async () => {
       setup.registerProvider(() => ({ customSection: { isDefault: true } }));
-      setup.registerSwitcher((req, capabilities, useDefaultCapabilities) =>
-        useDefaultCapabilities ? capabilities : { customSection: { isDefault: false } }
+      setup.registerSwitcher(
+        (req, capabilities, useDefaultCapabilities) =>
+          useDefaultCapabilities ? capabilities : { customSection: { isDefault: false } },
+        { capabilityPath: '*' }
       );
 
       const start = service.start();
-      expect(await start.resolveCapabilities({} as any)).toMatchInlineSnapshot(`
+      expect(await start.resolveCapabilities(fakeRequest, { capabilityPath: '*' }))
+        .toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {},
           "customSection": Object {
@@ -221,8 +243,12 @@ describe('CapabilitiesService', () => {
           "navLinks": Object {},
         }
       `);
-      expect(await start.resolveCapabilities({} as any, { useDefaultCapabilities: false }))
-        .toMatchInlineSnapshot(`
+      expect(
+        await start.resolveCapabilities({} as any, {
+          useDefaultCapabilities: false,
+          capabilityPath: '*',
+        })
+      ).toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {},
           "customSection": Object {
@@ -232,8 +258,12 @@ describe('CapabilitiesService', () => {
           "navLinks": Object {},
         }
       `);
-      expect(await start.resolveCapabilities({} as any, { useDefaultCapabilities: true }))
-        .toMatchInlineSnapshot(`
+      expect(
+        await start.resolveCapabilities({} as any, {
+          useDefaultCapabilities: true,
+          capabilityPath: '*',
+        })
+      ).toMatchInlineSnapshot(`
         Object {
           "catalogue": Object {},
           "customSection": Object {
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.ts b/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.ts
index 4abb13eb03b82..bdcaad897f9aa 100644
--- a/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.ts
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/capabilities_service.ts
@@ -18,7 +18,9 @@ import type {
   CapabilitiesSwitcher,
   CapabilitiesStart,
   CapabilitiesSetup,
+  CapabilitiesSwitcherOptions,
 } from '@kbn/core-capabilities-server';
+import type { SwitcherWithOptions } from './types';
 import { mergeCapabilities } from './merge_capabilities';
 import { getCapabilitiesResolver, CapabilitiesResolver } from './resolve_capabilities';
 import { registerRoutes } from './routes';
@@ -41,8 +43,9 @@ const defaultCapabilities: Capabilities = {
 export class CapabilitiesService {
   private readonly logger: Logger;
   private readonly capabilitiesProviders: CapabilitiesProvider[] = [];
-  private readonly capabilitiesSwitchers: CapabilitiesSwitcher[] = [];
+  private readonly capabilitiesSwitchers: SwitcherWithOptions[] = [];
   private readonly resolveCapabilities: CapabilitiesResolver;
+  private started = false;
 
   constructor(core: CoreContext) {
     this.logger = core.logger.get('capabilities-service');
@@ -73,18 +76,38 @@ export class CapabilitiesService {
 
     return {
       registerProvider: (provider: CapabilitiesProvider) => {
+        if (this.started) {
+          throw new Error('registerProvider cannot be called after #start');
+        }
         this.capabilitiesProviders.push(provider);
       },
-      registerSwitcher: (switcher: CapabilitiesSwitcher) => {
-        this.capabilitiesSwitchers.push(switcher);
+      registerSwitcher: (switcher: CapabilitiesSwitcher, options: CapabilitiesSwitcherOptions) => {
+        if (this.started) {
+          throw new Error('registerSwitcher cannot be called after #start');
+        }
+        this.capabilitiesSwitchers.push({
+          switcher,
+          capabilityPath: Array.isArray(options.capabilityPath)
+            ? options.capabilityPath
+            : [options.capabilityPath],
+        });
       },
     };
   }
 
   public start(): CapabilitiesStart {
+    this.started = true;
+
     return {
       resolveCapabilities: (request, options) =>
-        this.resolveCapabilities(request, [], options?.useDefaultCapabilities ?? false),
+        this.resolveCapabilities({
+          request,
+          capabilityPath: Array.isArray(options.capabilityPath)
+            ? options.capabilityPath
+            : [options.capabilityPath],
+          useDefaultCapabilities: options.useDefaultCapabilities ?? false,
+          applications: [],
+        }),
     };
   }
 }
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.mocks.ts b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.mocks.ts
new file mode 100644
index 0000000000000..9724732917b76
--- /dev/null
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.mocks.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+const actualHelpers = jest.requireActual('./resolve_helpers');
+
+export const splitIntoBucketsMock = jest.fn().mockImplementation(actualHelpers.splitIntoBuckets);
+
+jest.doMock('./resolve_helpers', () => {
+  return {
+    ...actualHelpers,
+    splitIntoBuckets: splitIntoBucketsMock,
+  };
+});
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.ts b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.ts
index 12589890f32e5..7bd1e0e6d3832 100644
--- a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.ts
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.test.ts
@@ -6,16 +6,20 @@
  * Side Public License, v 1.
  */
 
+import { splitIntoBucketsMock } from './resolve_capabilities.test.mocks';
 import type { KibanaRequest } from '@kbn/core-http-server';
 import { httpServerMock } from '@kbn/core-http-server-mocks';
 import type { Capabilities } from '@kbn/core-capabilities-common';
-import { resolveCapabilities } from './resolve_capabilities';
+import { getCapabilitiesResolver } from './resolve_capabilities';
+import type { SwitcherWithOptions } from './types';
 
 describe('resolveCapabilities', () => {
   let defaultCaps: Capabilities;
   let request: KibanaRequest;
 
   beforeEach(() => {
+    splitIntoBucketsMock.mockClear();
+
     defaultCaps = {
       navLinks: {},
       catalogue: {},
@@ -24,28 +28,53 @@ describe('resolveCapabilities', () => {
     request = httpServerMock.createKibanaRequest();
   });
 
-  it('returns the initial capabilities if no switcher are used', async () => {
-    const result = await resolveCapabilities(defaultCaps, [], request, [], true);
-    expect(result).toEqual(defaultCaps);
-  });
+  describe('base feature', () => {
+    it('returns the initial capabilities if no switcher are used', async () => {
+      const result = await getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
 
-  it('applies the switcher to the capabilities ', async () => {
-    const caps = {
-      ...defaultCaps,
-      catalogue: {
-        A: true,
-        B: true,
-      },
-    };
-    const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
-      ...capabilities,
-      catalogue: {
-        ...capabilities.catalogue,
-        A: false,
-      },
+      expect(result).toEqual(defaultCaps);
     });
-    const result = await resolveCapabilities(caps, [switcher], request, [], true);
-    expect(result).toMatchInlineSnapshot(`
+
+    it('applies the switcher to the capabilities ', async () => {
+      const caps = {
+        ...defaultCaps,
+        catalogue: {
+          A: true,
+          B: true,
+        },
+      };
+      const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
+        ...capabilities,
+        catalogue: {
+          ...capabilities.catalogue,
+          A: false,
+        },
+      });
+
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [
+          {
+            switcher,
+            capabilityPath: ['*'],
+          },
+        ]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(result).toMatchInlineSnapshot(`
       Object {
         "catalogue": Object {
           "A": false,
@@ -55,99 +84,423 @@ describe('resolveCapabilities', () => {
         "navLinks": Object {},
       }
     `);
-  });
+    });
+
+    it('does not mutate the input capabilities', async () => {
+      const caps = {
+        ...defaultCaps,
+        catalogue: {
+          A: true,
+          B: true,
+        },
+      };
+      const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
+        ...capabilities,
+        catalogue: {
+          ...capabilities.catalogue,
+          A: false,
+        },
+      });
+
+      await getCapabilitiesResolver(
+        () => caps,
+        () => [
+          {
+            switcher,
+            capabilityPath: ['*'],
+          },
+        ]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
 
-  it('does not mutate the input capabilities', async () => {
-    const caps = {
-      ...defaultCaps,
-      catalogue: {
+      expect(caps.catalogue).toEqual({
         A: true,
         B: true,
-      },
-    };
-    const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
-      ...capabilities,
-      catalogue: {
-        ...capabilities.catalogue,
-        A: false,
-      },
-    });
-    await resolveCapabilities(caps, [switcher], request, [], true);
-    expect(caps.catalogue).toEqual({
-      A: true,
-      B: true,
+      });
     });
-  });
 
-  it('ignores any added capability from the switcher', async () => {
-    const caps = {
-      ...defaultCaps,
-      catalogue: {
+    it('ignores any added capability from the switcher', async () => {
+      const caps = {
+        ...defaultCaps,
+        catalogue: {
+          A: true,
+          B: true,
+        },
+      };
+      const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
+        ...capabilities,
+        catalogue: {
+          ...capabilities.catalogue,
+          C: false,
+        },
+      });
+
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [
+          {
+            switcher,
+            capabilityPath: ['*'],
+          },
+        ]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(result.catalogue).toEqual({
         A: true,
         B: true,
-      },
-    };
-    const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
-      ...capabilities,
-      catalogue: {
-        ...capabilities.catalogue,
-        C: false,
-      },
+      });
     });
-    const result = await resolveCapabilities(caps, [switcher], request, [], true);
-    expect(result.catalogue).toEqual({
-      A: true,
-      B: true,
-    });
-  });
 
-  it('ignores any removed capability from the switcher', async () => {
-    const caps = {
-      ...defaultCaps,
-      catalogue: {
+    it('ignores any removed capability from the switcher', async () => {
+      const caps = {
+        ...defaultCaps,
+        catalogue: {
+          A: true,
+          B: true,
+          C: true,
+        },
+      };
+      const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
+        ...capabilities,
+        catalogue: Object.entries(capabilities.catalogue)
+          .filter(([key]) => key !== 'B')
+          .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
+      });
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [
+          {
+            switcher,
+            capabilityPath: ['*'],
+          },
+        ]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+      expect(result.catalogue).toEqual({
         A: true,
         B: true,
         C: true,
-      },
-    };
-    const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
-      ...capabilities,
-      catalogue: Object.entries(capabilities.catalogue)
-        .filter(([key]) => key !== 'B')
-        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
-    });
-    const result = await resolveCapabilities(caps, [switcher], request, [], true);
-    expect(result.catalogue).toEqual({
-      A: true,
-      B: true,
-      C: true,
+      });
     });
-  });
 
-  it('ignores any capability type mutation from the switcher', async () => {
-    const caps = {
-      ...defaultCaps,
-      section: {
+    it('ignores any capability type mutation from the switcher', async () => {
+      const caps = {
+        ...defaultCaps,
+        section: {
+          boolean: true,
+          record: {
+            entry: true,
+          },
+        },
+      };
+      const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
+        section: {
+          boolean: {
+            entry: false,
+          },
+          record: false,
+        },
+      });
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [
+          {
+            switcher,
+            capabilityPath: ['*'],
+          },
+        ]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+      expect(result.section).toEqual({
         boolean: true,
         record: {
           entry: true,
         },
-      },
+      });
+    });
+  });
+
+  describe('multiple switchers', () => {
+    const getCapabilities = (overrides: Partial<Capabilities>): Capabilities => {
+      return {
+        ...defaultCaps,
+        ...overrides,
+      } as Capabilities;
     };
-    const switcher = (req: KibanaRequest, capabilities: Capabilities) => ({
-      section: {
-        boolean: {
-          entry: false,
+
+    it('applies multiple switchers', async () => {
+      const caps = getCapabilities({
+        section: {
+          entryA: true,
+          entryB: true,
+          entryC: true,
+        },
+      });
+
+      const switcherA: SwitcherWithOptions = {
+        switcher: (req: KibanaRequest, capabilities: Capabilities) => ({
+          section: {
+            entryA: false,
+          },
+        }),
+        capabilityPath: ['*'],
+      };
+      const switcherB: SwitcherWithOptions = {
+        switcher: (req: KibanaRequest, capabilities: Capabilities) => ({
+          section: {
+            entryB: false,
+          },
+        }),
+        capabilityPath: ['*'],
+      };
+
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [switcherA, switcherB]
+      )({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(result.section).toEqual({
+        entryA: false,
+        entryB: false,
+        entryC: true,
+      });
+    });
+
+    it('only applies the switchers intersecting with the requested paths', async () => {
+      const caps = getCapabilities({
+        section: {
+          entryA: true,
+          entryB: true,
+          entryC: true,
         },
-        record: false,
-      },
+      });
+
+      const switcherAFunc = jest.fn().mockResolvedValue({});
+      const switcherBFunc = jest.fn().mockResolvedValue({});
+      const switcherCFunc = jest.fn().mockResolvedValue({});
+
+      const switcherA: SwitcherWithOptions = {
+        switcher: switcherAFunc,
+        capabilityPath: ['*'],
+      };
+      const switcherB: SwitcherWithOptions = {
+        switcher: switcherBFunc,
+        capabilityPath: ['ml.*'],
+      };
+      const switcherC: SwitcherWithOptions = {
+        switcher: switcherCFunc,
+        capabilityPath: ['fileUpload.*'],
+      };
+
+      await getCapabilitiesResolver(
+        () => caps,
+        () => [switcherA, switcherB, switcherC]
+      )({
+        request,
+        capabilityPath: ['ml.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(switcherAFunc).toHaveBeenCalledTimes(1);
+      expect(switcherBFunc).toHaveBeenCalledTimes(1);
+      expect(switcherCFunc).toHaveBeenCalledTimes(0);
+    });
+
+    it('returns full capabilities even if not all switchers were applied', async () => {
+      const caps = getCapabilities({
+        section: {
+          entryA: true,
+          entryB: true,
+          entryC: true,
+        },
+      });
+
+      const switcherA: SwitcherWithOptions = {
+        switcher: (req: KibanaRequest, capabilities: Capabilities) => ({
+          section: {
+            entryA: false,
+          },
+        }),
+        capabilityPath: ['section.entryA'],
+      };
+      const switcherB: SwitcherWithOptions = {
+        switcher: (req: KibanaRequest, capabilities: Capabilities) => ({
+          section: {
+            entryB: false,
+          },
+        }),
+        capabilityPath: ['section.entryB'],
+      };
+
+      const result = await getCapabilitiesResolver(
+        () => caps,
+        () => [switcherA, switcherB]
+      )({
+        request,
+        capabilityPath: ['section.entryA'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(result.section).toEqual({
+        entryA: false,
+        entryB: true,
+        entryC: true,
+      });
     });
-    const result = await resolveCapabilities(caps, [switcher], request, [], true);
-    expect(result.section).toEqual({
-      boolean: true,
-      record: {
-        entry: true,
-      },
+  });
+
+  describe('caching behavior', () => {
+    it('caches results between calls for the same capability path', async () => {
+      const resolver = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+
+      await resolver({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+
+      await resolver({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+    });
+
+    it('does not cache results between calls for different capability path', async () => {
+      const resolver = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+
+      await resolver({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+
+      await resolver({
+        request,
+        capabilityPath: ['ml.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(2);
+    });
+
+    it('caches results between calls for the same capability paths', async () => {
+      const resolver = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+
+      await resolver({
+        request,
+        capabilityPath: ['ml.*', 'file.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+
+      await resolver({
+        request,
+        capabilityPath: ['ml.*', 'file.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+    });
+
+    it('does not cache results between calls for different capability paths', async () => {
+      const resolver = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+
+      await resolver({
+        request,
+        capabilityPath: ['ml.*', 'file.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+
+      await resolver({
+        request,
+        capabilityPath: ['ml.*', 'not-file.*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(2);
+    });
+
+    it('does not cache results between calls from different resolvers', async () => {
+      const resolverA = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+      const resolverB = getCapabilitiesResolver(
+        () => defaultCaps,
+        () => []
+      );
+
+      await resolverA({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(1);
+
+      await resolverB({
+        request,
+        capabilityPath: ['*'],
+        applications: [],
+        useDefaultCapabilities: false,
+      });
+
+      expect(splitIntoBucketsMock).toHaveBeenCalledTimes(2);
     });
   });
 });
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.ts b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.ts
index f30392a2213ba..b1dc24ef64d06 100644
--- a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.ts
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_capabilities.ts
@@ -6,46 +6,92 @@
  * Side Public License, v 1.
  */
 
-import { cloneDeep } from 'lodash';
+import { cloneDeep, memoize, uniqueId } from 'lodash';
 import { withSpan } from '@kbn/apm-utils';
+import type { CapabilitiesSwitcher } from '@kbn/core-capabilities-server';
 import type { KibanaRequest } from '@kbn/core-http-server';
 import type { Capabilities } from '@kbn/core-capabilities-common';
-import type { CapabilitiesSwitcher } from '@kbn/core-capabilities-server';
+import type { SwitcherWithOptions, SwitcherWithId } from './types';
+import { pathsIntersect, splitIntoBuckets, convertBucketToSwitcher } from './resolve_helpers';
 
-export type CapabilitiesResolver = (
-  request: KibanaRequest,
-  applications: string[],
-  useDefaultCapabilities: boolean
-) => Promise<Capabilities>;
+export type CapabilitiesResolver = ({
+  request,
+  capabilityPath,
+  applications,
+  useDefaultCapabilities,
+}: {
+  request: KibanaRequest;
+  capabilityPath: string[];
+  applications: string[];
+  useDefaultCapabilities: boolean;
+}) => Promise<Capabilities>;
+
+type ForPathSwitcherResolver = (path: string, switchers: SwitcherWithId[]) => string[];
+type AggregatedSwitchersResolver = (capabilityPaths: string[]) => CapabilitiesSwitcher[];
+
+export const getCapabilitiesResolver = (
+  getCapabilities: () => Capabilities,
+  getSwitchers: () => SwitcherWithOptions[]
+): CapabilitiesResolver => {
+  let initialized = false;
+  let capabilities: Capabilities;
+  let switchers: Map<string, SwitcherWithId>;
+  // memoize is on the first argument only by default, which is what we want here
+  const getSwitcherForPath: ForPathSwitcherResolver = memoize(getSwitchersToUseForPath);
+  let getAggregatedSwitchers: AggregatedSwitchersResolver;
+
+  return async ({
+    request,
+    capabilityPath,
+    applications,
+    useDefaultCapabilities,
+  }): Promise<Capabilities> => {
+    // initialize on first call (can't do it before as we need to wait plugins start to complete)
+    if (!initialized) {
+      capabilities = getCapabilities();
+      switchers = new Map();
+      getSwitchers().forEach((switcher) => {
+        const switcherId = uniqueId('s-');
+        switchers.set(switcherId, {
+          id: switcherId,
+          ...switcher,
+        });
+      });
+      getAggregatedSwitchers = memoize(
+        buildGetAggregatedSwitchers(getSwitcherForPath, switchers),
+        (capabilityPaths: string[]) => capabilityPaths.join('|')
+      );
+      initialized = true;
+    }
 
-export const getCapabilitiesResolver =
-  (
-    capabilities: () => Capabilities,
-    switchers: () => CapabilitiesSwitcher[]
-  ): CapabilitiesResolver =>
-  async (
-    request: KibanaRequest,
-    applications: string[],
-    useDefaultCapabilities: boolean
-  ): Promise<Capabilities> => {
     return withSpan({ name: 'resolve capabilities', type: 'capabilities' }, () =>
-      resolveCapabilities(
-        capabilities(),
-        switchers(),
+      resolveCapabilities({
+        capabilities,
         request,
+        capabilityPath,
         applications,
-        useDefaultCapabilities
-      )
+        useDefaultCapabilities,
+        getAggregatedSwitchers,
+      })
     );
   };
+};
 
-export const resolveCapabilities = async (
-  capabilities: Capabilities,
-  switchers: CapabilitiesSwitcher[],
-  request: KibanaRequest,
-  applications: string[],
-  useDefaultCapabilities: boolean
-): Promise<Capabilities> => {
+const resolveCapabilities = async ({
+  capabilities,
+  request,
+  capabilityPath,
+  applications,
+  useDefaultCapabilities,
+  getAggregatedSwitchers,
+}: {
+  capabilities: Capabilities;
+  request: KibanaRequest;
+  applications: string[];
+  capabilityPath: string[];
+  useDefaultCapabilities: boolean;
+  getAggregatedSwitchers: AggregatedSwitchersResolver;
+}): Promise<Capabilities> => {
   const mergedCaps: Capabilities = cloneDeep({
     ...capabilities,
     navLinks: applications.reduce((acc, app) => {
@@ -54,6 +100,8 @@ export const resolveCapabilities = async (
     }, capabilities.navLinks),
   });
 
+  const switchers = getAggregatedSwitchers(capabilityPath);
+
   return switchers.reduce(async (caps, switcher) => {
     const resolvedCaps = await caps;
     const changes = await switcher(request, resolvedCaps, useDefaultCapabilities);
@@ -82,3 +130,38 @@ function recursiveApplyChanges<
       return acc;
     }, {} as TDestination);
 }
+
+const getSwitchersToUseForPath = (path: string, switchers: SwitcherWithId[]): string[] => {
+  const switcherIds: string[] = [];
+  switchers.forEach((switcher) => {
+    if (switcher.capabilityPath.some((switcherPath) => pathsIntersect(path, switcherPath))) {
+      switcherIds.push(switcher.id);
+    }
+  });
+  return switcherIds;
+};
+
+const buildGetAggregatedSwitchers =
+  (
+    getSwitcherForPath: ForPathSwitcherResolver,
+    switcherMap: Map<string, SwitcherWithId>
+  ): AggregatedSwitchersResolver =>
+  (capabilityPaths: string[]): CapabilitiesSwitcher[] => {
+    // find switchers that should be applied for the provided capabilityPaths
+    const allSwitchers = [...switcherMap.values()];
+    const switcherIdsToApply = new Set<string>();
+    capabilityPaths.forEach((path) => {
+      getSwitcherForPath(path, allSwitchers).forEach((switcherId) =>
+        switcherIdsToApply.add(switcherId)
+      );
+    });
+    const switchersToApply = [...switcherIdsToApply].map(
+      (switcherId) => switcherMap.get(switcherId)!
+    );
+
+    // split the switchers into buckets for parallel execution
+    const switcherBuckets = splitIntoBuckets(switchersToApply);
+
+    // convert the multi-switcher buckets into switchers
+    return switcherBuckets.map(convertBucketToSwitcher);
+  };
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.test.ts b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.test.ts
new file mode 100644
index 0000000000000..6e3e6164505d0
--- /dev/null
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.test.ts
@@ -0,0 +1,172 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { httpServerMock } from '@kbn/core-http-server-mocks';
+import type { Capabilities } from '@kbn/core-capabilities-common';
+import type { CapabilitiesSwitcher } from '@kbn/core-capabilities-server';
+import { pathsIntersect, splitIntoBuckets, convertBucketToSwitcher } from './resolve_helpers';
+import type { SwitcherWithId, SwitcherBucket } from './types';
+
+describe('pathsIntersect', () => {
+  test.each([
+    ['*', '*', true],
+    ['foo', 'foo', true],
+    ['foo.*', '*', true],
+    ['bar', '*', true],
+    ['foo.bar', '*', true],
+    ['foo.bar', 'foo.*', true],
+    ['foo.bar', 'foo.bar', true],
+    ['foo', 'bar', false],
+    ['foo.*', 'bar.*', false],
+    ['foo.bar', 'bar.*', false],
+    ['common.foo', 'common.bar', false],
+    ['common.foo.*', 'common.bar.*', false],
+  ])('%p and %p returns %p', (pathA, pathB, expected) => {
+    expect(pathsIntersect(pathA, pathB)).toBe(expected);
+    expect(pathsIntersect(pathB, pathA)).toBe(expected);
+  });
+});
+
+describe('splitIntoBuckets', () => {
+  const extractIds = (buckets: SwitcherBucket[]): string[][] => {
+    return buckets.map((bucket) => bucket.switchers.map((switcher) => switcher.id));
+  };
+
+  const switcherWithId = (id: string, paths: string | string[]): SwitcherWithId => {
+    return {
+      id,
+      capabilityPath: Array.isArray(paths) ? paths : [paths],
+      switcher: jest.fn(),
+    };
+  };
+
+  it('properly dispatch the switchers, simple case', () => {
+    const switchers = [
+      switcherWithId('1', ['*']),
+      switcherWithId('2', ['foo.*']),
+      switcherWithId('3', ['*']),
+      switcherWithId('4', ['bar.*']),
+    ];
+
+    const result = splitIntoBuckets(switchers);
+    expect(extractIds(result)).toEqual([['1'], ['2', '4'], ['3']]);
+  });
+
+  it('properly dispatch the switchers, more advanced case', () => {
+    const switchers = [
+      switcherWithId('1', ['*']),
+      switcherWithId('2', ['foo.*']),
+      switcherWithId('3', ['foo.hello.*']),
+      switcherWithId('4', ['bar.*']),
+      switcherWithId('5', ['*']),
+      switcherWithId('6', ['bar.*']),
+    ];
+
+    const result = splitIntoBuckets(switchers);
+    expect(extractIds(result)).toEqual([['1'], ['2', '4'], ['3', '6'], ['5']]);
+  });
+});
+
+describe('convertBucketToSwitcher', () => {
+  const switcherFromFn = (fn: CapabilitiesSwitcher): SwitcherWithId => {
+    return {
+      id: '42',
+      capabilityPath: ['*'],
+      switcher: fn,
+    };
+  };
+
+  test('the underlying switchers are all called', async () => {
+    const switcher1 = jest.fn();
+    const switcher2 = jest.fn();
+    const switcher3 = jest.fn();
+
+    const bucket: SwitcherBucket = {
+      bucketPaths: new Set(['*']),
+      switchers: [switcherFromFn(switcher1), switcherFromFn(switcher2), switcherFromFn(switcher3)],
+    };
+
+    const switcher = convertBucketToSwitcher(bucket);
+
+    const request = httpServerMock.createKibanaRequest();
+    await switcher(request, {} as Capabilities, false);
+
+    expect(switcher1).toHaveBeenCalledTimes(1);
+    expect(switcher2).toHaveBeenCalledTimes(1);
+    expect(switcher3).toHaveBeenCalledTimes(1);
+  });
+
+  test('the underlying switchers are called with the correct arguments', async () => {
+    const switcher1 = jest.fn();
+    const switcher2 = jest.fn();
+    const switcher3 = jest.fn();
+
+    const bucket: SwitcherBucket = {
+      bucketPaths: new Set(['*']),
+      switchers: [switcherFromFn(switcher1), switcherFromFn(switcher2), switcherFromFn(switcher3)],
+    };
+
+    const switcher = convertBucketToSwitcher(bucket);
+
+    const request = httpServerMock.createKibanaRequest();
+    const capabilities = { navLinks: { bar: false } } as unknown as Capabilities;
+    await switcher(request, capabilities, false);
+
+    expect(switcher1).toHaveBeenCalledWith(request, capabilities, false);
+    expect(switcher2).toHaveBeenCalledWith(request, capabilities, false);
+    expect(switcher3).toHaveBeenCalledWith(request, capabilities, false);
+  });
+
+  test('returns the aggregated result from all the underlying switchers', async () => {
+    const switcher1 = jest.fn().mockResolvedValue({ foo: { bar: 1 } });
+    const switcher2 = jest.fn().mockResolvedValue({ bar: { hello: 2 } });
+    const switcher3 = jest.fn().mockResolvedValue({ hello: { dolly: 3 } });
+
+    const bucket: SwitcherBucket = {
+      bucketPaths: new Set(['*']),
+      switchers: [switcherFromFn(switcher1), switcherFromFn(switcher2), switcherFromFn(switcher3)],
+    };
+
+    const switcher = convertBucketToSwitcher(bucket);
+
+    const request = httpServerMock.createKibanaRequest();
+    const capabilities = { navLinks: { bar: false } } as unknown as Capabilities;
+    const changes = await switcher(request, capabilities, false);
+
+    expect(changes).toEqual({
+      foo: { bar: 1 },
+      bar: { hello: 2 },
+      hello: { dolly: 3 },
+    });
+  });
+
+  test('result aggregation works even for non-intersecting nested values', async () => {
+    const switcher1 = jest.fn().mockResolvedValue({ nested: { foo: 1 } });
+    const switcher2 = jest.fn().mockResolvedValue({ nested: { bar: 2 } });
+    const switcher3 = jest.fn().mockResolvedValue({ nested: { dolly: 3 } });
+
+    const bucket: SwitcherBucket = {
+      bucketPaths: new Set(['*']),
+      switchers: [switcherFromFn(switcher1), switcherFromFn(switcher2), switcherFromFn(switcher3)],
+    };
+
+    const switcher = convertBucketToSwitcher(bucket);
+
+    const request = httpServerMock.createKibanaRequest();
+    const capabilities = { navLinks: { bar: false } } as unknown as Capabilities;
+    const changes = await switcher(request, capabilities, false);
+
+    expect(changes).toEqual({
+      nested: {
+        foo: 1,
+        bar: 2,
+        dolly: 3,
+      },
+    });
+  });
+});
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.ts b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.ts
new file mode 100644
index 0000000000000..5b183ec52b530
--- /dev/null
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/resolve_helpers.ts
@@ -0,0 +1,117 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { merge } from 'lodash';
+import type { CapabilitiesSwitcher } from '@kbn/core-capabilities-server';
+import type { SwitcherWithId, SwitcherBucket } from './types';
+
+/**
+ * Returns true if the two globing paths can intersect.
+ *
+ * @example
+ * ```ts
+ * pathsIntersect('*', '*'); // true
+ * pathsIntersect('*', 'foo.bar'); // true
+ * pathsIntersect('foo.*', 'bar.*'); // false
+ * ```
+ *
+ * @internal
+ */
+export const pathsIntersect = (pathA: string, pathB: string): boolean => {
+  const splitA = pathA.split('.');
+  const splitB = pathB.split('.');
+  const minLength = Math.min(splitA.length, splitB.length);
+
+  for (let i = 0; i < minLength; i++) {
+    const segA = splitA[i];
+    const segB = splitB[i];
+    if (segA === '*' || segB === '*') {
+      return true;
+    }
+    if (segA !== segB) {
+      return false;
+    }
+  }
+  return splitA.length === splitB.length;
+};
+
+/**
+ * Splits the provided switchers into buckets so that switchers allocated
+ * into a given buckets can all be executed in parallel.
+ * (each switcher in a given bucket doesn't intersect with any other switcher of the same bucket)
+ *
+ * @internal
+ */
+export const splitIntoBuckets = (switchers: SwitcherWithId[]): SwitcherBucket[] => {
+  const buckets: SwitcherBucket[] = [];
+
+  const canBeAddedToBucket = (switcher: SwitcherWithId, bucket: SwitcherBucket): boolean => {
+    const bucketPaths = [...bucket.bucketPaths];
+    for (const switcherPath of switcher.capabilityPath) {
+      for (const bucketPath of bucketPaths) {
+        if (pathsIntersect(switcherPath, bucketPath)) {
+          return false;
+        }
+      }
+    }
+    return true;
+  };
+
+  const addIntoBucket = (switcher: SwitcherWithId, bucket: SwitcherBucket) => {
+    bucket.switchers.push(switcher);
+    switcher.capabilityPath.forEach((path) => {
+      bucket.bucketPaths.add(path);
+    });
+  };
+
+  for (const switcher of switchers) {
+    let added = false;
+    for (const bucket of buckets) {
+      // switcher can be added -> we do and we break
+      if (canBeAddedToBucket(switcher, bucket)) {
+        addIntoBucket(switcher, bucket);
+        added = true;
+        break;
+      }
+    }
+    // could not find a bucket to add the switch to -> creating a new one
+    if (!added) {
+      buckets.push({
+        switchers: [switcher],
+        bucketPaths: new Set(switcher.capabilityPath),
+      });
+    }
+  }
+
+  return buckets;
+};
+
+/**
+ * Aggregates all the switchers of the given bucket to a single switcher function.
+ * Only works under the assumption that the switchers in the bucket don't intersect
+ * (But that's the definition of a switcher bucket)
+ *
+ * @internal
+ */
+export const convertBucketToSwitcher = (bucket: SwitcherBucket): CapabilitiesSwitcher => {
+  // only one switcher in the bucket -> no need to wrap
+  if (bucket.switchers.length === 1) {
+    return bucket.switchers[0].switcher;
+  }
+
+  const switchers = bucket.switchers.map((switcher) => switcher.switcher);
+
+  return async (request, uiCapabilities, useDefaultCapabilities) => {
+    const allChanges = await Promise.all(
+      switchers.map((switcher) => {
+        return switcher(request, uiCapabilities, useDefaultCapabilities);
+      })
+    );
+    return merge({}, ...allChanges);
+  };
+};
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts b/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts
index 1b29473801e49..48b182aa61016 100644
--- a/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts
@@ -39,7 +39,12 @@ export function registerCapabilitiesRoutes(router: IRouter, resolver: Capabiliti
     async (ctx, req, res) => {
       const { useDefaultCapabilities } = req.query;
       const { applications } = req.body;
-      const capabilities = await resolver(req, applications, useDefaultCapabilities);
+      const capabilities = await resolver({
+        request: req,
+        applications,
+        useDefaultCapabilities,
+        capabilityPath: ['*'],
+      });
       return res.ok({
         body: capabilities,
       });
diff --git a/packages/core/capabilities/core-capabilities-server-internal/src/types.ts b/packages/core/capabilities/core-capabilities-server-internal/src/types.ts
new file mode 100644
index 0000000000000..dcf8b03d57c50
--- /dev/null
+++ b/packages/core/capabilities/core-capabilities-server-internal/src/types.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import type { CapabilitiesSwitcher } from '@kbn/core-capabilities-server';
+
+export interface SwitcherWithOptions {
+  switcher: CapabilitiesSwitcher;
+  capabilityPath: string[];
+}
+
+export interface SwitcherWithId extends SwitcherWithOptions {
+  id: string;
+}
+
+export interface SwitcherBucket {
+  switchers: SwitcherWithId[];
+  bucketPaths: Set<string>;
+}
diff --git a/packages/core/capabilities/core-capabilities-server/index.ts b/packages/core/capabilities/core-capabilities-server/index.ts
index 16fe575072521..286fa8e80e907 100644
--- a/packages/core/capabilities/core-capabilities-server/index.ts
+++ b/packages/core/capabilities/core-capabilities-server/index.ts
@@ -11,4 +11,5 @@ export type {
   CapabilitiesSetup,
   CapabilitiesStart,
   ResolveCapabilitiesOptions,
+  CapabilitiesSwitcherOptions,
 } from './src/contracts';
diff --git a/packages/core/capabilities/core-capabilities-server/src/contracts.ts b/packages/core/capabilities/core-capabilities-server/src/contracts.ts
index 8f89b2fc777d4..9dfc5995dd7d5 100644
--- a/packages/core/capabilities/core-capabilities-server/src/contracts.ts
+++ b/packages/core/capabilities/core-capabilities-server/src/contracts.ts
@@ -61,7 +61,7 @@ export interface CapabilitiesSetup {
    * ```ts
    * // my-plugin/server/plugin.ts
    * public setup(core: CoreSetup, deps: {}) {
-   *    core.capabilities.registerSwitcher((request, capabilities, useDefaultCapabilities) => {
+   *    core.capabilities.registerSwitcher(async (request, capabilities, useDefaultCapabilities) => {
    *      // useDefaultCapabilities is a special case that switchers typically don't have to concern themselves with.
    *      // The default capabilities are typically the ones you provide in your CapabilitiesProvider, but this flag
    *      // gives each switcher an opportunity to change the default capabilities of other plugins' capabilities.
@@ -74,7 +74,7 @@ export interface CapabilitiesSetup {
    *          }
    *        }
    *      }
-   *      if(myPluginApi.shouldRestrictSomePluginBecauseOf(request)) {
+   *      if(await myPluginApi.shouldRestrictSomePluginBecauseOf(request)) {
    *        return {
    *          somePlugin: {
    *            featureEnabledByDefault: false // `featureEnabledByDefault` will be disabled. All other capabilities will remain unchanged.
@@ -82,36 +82,73 @@ export interface CapabilitiesSetup {
    *        }
    *      }
    *      return {}; // All capabilities will remain unchanged.
+   *    }, {
+   *      // the switcher only toggles capabilities under the 'somePlugin' path
+   *      capabilityPath: 'somePlugin',
    *    });
    * }
    * ```
    */
-  registerSwitcher(switcher: CapabilitiesSwitcher): void;
+  registerSwitcher(switcher: CapabilitiesSwitcher, options: CapabilitiesSwitcherOptions): void;
 }
 
 /**
- * Defines a set of additional options for the `resolveCapabilities` method of {@link CapabilitiesStart}.
+ * APIs to access the application {@link Capabilities}.
+ *
+ * @public
+ */
+export interface CapabilitiesStart {
+  /**
+   * Resolve the {@link Capabilities} to be used for given request
+   *
+   * @param request The request to resolve capabilities for
+   * @param options.capabilityPath The path(s) of the capabilities that needs to be retrieved. Use '*' to retrieve all paths.
+   * Used to avoid unnecessarily running switched on parts of the capabilities that won't be used by the API consumer.
+   *
+   * @example
+   * ```ts
+   * const mlCapabilities = (await coreStart.capabilities.resolveCapabilities(request, 'ml')).ml;
+   * ```
+   */
+  resolveCapabilities(
+    request: KibanaRequest,
+    options: ResolveCapabilitiesOptions
+  ): Promise<Capabilities>;
+}
+
+/**
+ * Options for {@link CapabilitiesStart.resolveCapabilities}.
  *
  * @public
  */
 export interface ResolveCapabilitiesOptions {
+  /**
+   * The path(s) of capabilities that the API consumer is interested in. The '*' wildcard is supported as a suffix only.
+   *
+   * E.g. capabilityPath: "*" or capabilityPath: "myPlugin.*" or capabilityPath: "myPlugin.myKey"
+   *
+   * @remark All the capabilities will be returned, but the ones not matching the specified path(s) may not have been processed
+   *        by the capability switchers and should not be used.
+   */
+  capabilityPath: string | string[];
   /**
    * Indicates if capability switchers are supposed to return a default set of capabilities.
+   *
+   * Defaults to `false`
    */
-  useDefaultCapabilities: boolean;
+  useDefaultCapabilities?: boolean;
 }
 
 /**
- * APIs to access the application {@link Capabilities}.
+ * Options for the {@link CapabilitiesSetup.registerSwitcher} API.
  *
  * @public
  */
-export interface CapabilitiesStart {
+export interface CapabilitiesSwitcherOptions {
   /**
-   * Resolve the {@link Capabilities} to be used for given request
+   * The path(s) of capabilities the switcher may alter. The '*' wildcard is supported as a suffix only.
+   *
+   * E.g. capabilityPath: "myPlugin.*" or capabilityPath: "myPlugin.myKey"
    */
-  resolveCapabilities(
-    request: KibanaRequest,
-    options?: ResolveCapabilitiesOptions
-  ): Promise<Capabilities>;
+  capabilityPath: string | string[];
 }
diff --git a/src/core/server/integration_tests/capabilities/capabilities_service.test.ts b/src/core/server/integration_tests/capabilities/capabilities_service.test.ts
index 23a8905bcb565..6ee87dc5a7931 100644
--- a/src/core/server/integration_tests/capabilities/capabilities_service.test.ts
+++ b/src/core/server/integration_tests/capabilities/capabilities_service.test.ts
@@ -82,7 +82,7 @@ describe('CapabilitiesService', () => {
       serviceSetup.registerProvider(() => getInitialCapabilities());
 
       const switcher = jest.fn((_, capabilities) => capabilities);
-      serviceSetup.registerSwitcher(switcher);
+      serviceSetup.registerSwitcher(switcher, { capabilityPath: '*' });
 
       const result = await supertest(httpSetup.server.listener)
         .post('/api/core/capabilities')
@@ -113,7 +113,7 @@ describe('CapabilitiesService', () => {
       serviceSetup.registerProvider(() => getInitialCapabilities());
 
       const switcher = jest.fn((_, capabilities) => capabilities);
-      serviceSetup.registerSwitcher(switcher);
+      serviceSetup.registerSwitcher(switcher, { capabilityPath: '*' });
 
       const result = await supertest(httpSetup.server.listener)
         .post('/api/core/capabilities?useDefaultCapabilities=true')
diff --git a/src/plugins/data_views/server/data_views_service_factory.ts b/src/plugins/data_views/server/data_views_service_factory.ts
index e5324b2eb02d2..430ebd36489b6 100644
--- a/src/plugins/data_views/server/data_views_service_factory.ts
+++ b/src/plugins/data_views/server/data_views_service_factory.ts
@@ -63,13 +63,21 @@ export const dataViewsServiceFactory = (deps: DataViewsServiceFactoryDeps) =>
         byPassCapabilities
           ? true
           : request
-          ? (await capabilities.resolveCapabilities(request)).indexPatterns.save === true
+          ? (
+              await capabilities.resolveCapabilities(request, {
+                capabilityPath: 'indexPatterns.save',
+              })
+            ).indexPatterns.save === true
           : false,
       getCanSaveAdvancedSettings: async () =>
         byPassCapabilities
           ? true
           : request
-          ? (await capabilities.resolveCapabilities(request)).advancedSettings.save === true
+          ? (
+              await capabilities.resolveCapabilities(request, {
+                capabilityPath: 'advancedSettings.save',
+              })
+            ).advancedSettings.save === true
           : false,
       scriptedFieldsEnabled: deps.scriptedFieldsEnabled,
     });
diff --git a/x-pack/plugins/enterprise_search/server/plugin.ts b/x-pack/plugins/enterprise_search/server/plugin.ts
index 4a5e3689ded5c..baaa772989eb2 100644
--- a/x-pack/plugins/enterprise_search/server/plugin.ts
+++ b/x-pack/plugins/enterprise_search/server/plugin.ts
@@ -103,7 +103,9 @@ export interface PluginsStart {
 export interface RouteDependencies {
   config: ConfigType;
   enterpriseSearchRequestHandler: IEnterpriseSearchRequestHandler;
+
   getSavedObjectsService?(): SavedObjectsServiceStart;
+
   log: Logger;
   ml?: MlPluginSetup;
   router: IRouter;
@@ -112,6 +114,7 @@ export interface RouteDependencies {
 export class EnterpriseSearchPlugin implements Plugin {
   private readonly config: ConfigType;
   private readonly logger: Logger;
+
   /**
    * Exposed services
    */
@@ -177,42 +180,47 @@ export class EnterpriseSearchPlugin implements Plugin {
     /**
      * Register user access to the Enterprise Search plugins
      */
-    capabilities.registerSwitcher(async (request: KibanaRequest) => {
-      const [, { spaces }] = await getStartServices();
-
-      const dependencies = { config, security, spaces, request, log, ml };
-
-      const { hasAppSearchAccess, hasWorkplaceSearchAccess } = await checkAccess(dependencies);
-      const showEnterpriseSearch =
-        hasAppSearchAccess || hasWorkplaceSearchAccess || !config.canDeployEntSearch;
-
-      return {
-        navLinks: {
-          enterpriseSearch: showEnterpriseSearch,
-          enterpriseSearchContent: showEnterpriseSearch,
-          enterpriseSearchAnalytics: showEnterpriseSearch,
-          enterpriseSearchApplications: showEnterpriseSearch,
-          enterpriseSearchAISearch: showEnterpriseSearch,
-          enterpriseSearchVectorSearch: showEnterpriseSearch,
-          enterpriseSearchElasticsearch: showEnterpriseSearch,
-          appSearch: hasAppSearchAccess && config.canDeployEntSearch,
-          workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch,
-          searchExperiences: showEnterpriseSearch,
-        },
-        catalogue: {
-          enterpriseSearch: showEnterpriseSearch,
-          enterpriseSearchContent: showEnterpriseSearch,
-          enterpriseSearchAnalytics: showEnterpriseSearch,
-          enterpriseSearchApplications: showEnterpriseSearch,
-          enterpriseSearchAISearch: showEnterpriseSearch,
-          enterpriseSearchVectorSearch: showEnterpriseSearch,
-          enterpriseSearchElasticsearch: showEnterpriseSearch,
-          appSearch: hasAppSearchAccess && config.canDeployEntSearch,
-          workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch,
-          searchExperiences: showEnterpriseSearch,
-        },
-      };
-    });
+    capabilities.registerSwitcher(
+      async (request: KibanaRequest) => {
+        const [, { spaces }] = await getStartServices();
+
+        const dependencies = { config, security, spaces, request, log, ml };
+
+        const { hasAppSearchAccess, hasWorkplaceSearchAccess } = await checkAccess(dependencies);
+        const showEnterpriseSearch =
+          hasAppSearchAccess || hasWorkplaceSearchAccess || !config.canDeployEntSearch;
+
+        return {
+          navLinks: {
+            enterpriseSearch: showEnterpriseSearch,
+            enterpriseSearchContent: showEnterpriseSearch,
+            enterpriseSearchAnalytics: showEnterpriseSearch,
+            enterpriseSearchApplications: showEnterpriseSearch,
+            enterpriseSearchAISearch: showEnterpriseSearch,
+            enterpriseSearchVectorSearch: showEnterpriseSearch,
+            enterpriseSearchElasticsearch: showEnterpriseSearch,
+            appSearch: hasAppSearchAccess && config.canDeployEntSearch,
+            workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch,
+            searchExperiences: showEnterpriseSearch,
+          },
+          catalogue: {
+            enterpriseSearch: showEnterpriseSearch,
+            enterpriseSearchContent: showEnterpriseSearch,
+            enterpriseSearchAnalytics: showEnterpriseSearch,
+            enterpriseSearchApplications: showEnterpriseSearch,
+            enterpriseSearchAISearch: showEnterpriseSearch,
+            enterpriseSearchVectorSearch: showEnterpriseSearch,
+            enterpriseSearchElasticsearch: showEnterpriseSearch,
+            appSearch: hasAppSearchAccess && config.canDeployEntSearch,
+            workplaceSearch: hasWorkplaceSearchAccess && config.canDeployEntSearch,
+            searchExperiences: showEnterpriseSearch,
+          },
+        };
+      },
+      {
+        capabilityPath: ['navLinks.*', 'catalogue.*'],
+      }
+    );
 
     /**
      * Register routes
diff --git a/x-pack/plugins/file_upload/server/capabilities.test.ts b/x-pack/plugins/file_upload/server/capabilities.test.ts
index e5f0a01cd6abe..b32150b80fe6b 100644
--- a/x-pack/plugins/file_upload/server/capabilities.test.ts
+++ b/x-pack/plugins/file_upload/server/capabilities.test.ts
@@ -26,6 +26,16 @@ describe('setupCapabilities', () => {
     `);
   });
 
+  it('registers a capabilities switcher with the correct options', async () => {
+    const coreSetup = coreMock.createSetup();
+    setupCapabilities(coreSetup);
+
+    expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1);
+    expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledWith(expect.any(Function), {
+      capabilityPath: 'fileUpload.*',
+    });
+  });
+
   it('registers a capabilities switcher that returns unaltered capabilities when security is disabled', async () => {
     const coreSetup = coreMock.createSetup();
     setupCapabilities(coreSetup);
diff --git a/x-pack/plugins/file_upload/server/capabilities.ts b/x-pack/plugins/file_upload/server/capabilities.ts
index 9217176fb2b25..9e940a0e9a649 100644
--- a/x-pack/plugins/file_upload/server/capabilities.ts
+++ b/x-pack/plugins/file_upload/server/capabilities.ts
@@ -20,28 +20,33 @@ export const setupCapabilities = (
     };
   });
 
-  core.capabilities.registerSwitcher(async (request, capabilities, useDefaultCapabilities) => {
-    if (useDefaultCapabilities) {
-      return {};
-    }
-    const [, { security }] = await core.getStartServices();
+  core.capabilities.registerSwitcher(
+    async (request, capabilities, useDefaultCapabilities) => {
+      if (useDefaultCapabilities) {
+        return {};
+      }
+      const [, { security }] = await core.getStartServices();
 
-    // Check the bare minimum set of privileges required to get some utility out of this feature
-    const { hasImportPermission } = await checkFileUploadPrivileges({
-      authorization: security?.authz,
-      request,
-      checkCreateDataView: true,
-      checkHasManagePipeline: false,
-    });
+      // Check the bare minimum set of privileges required to get some utility out of this feature
+      const { hasImportPermission } = await checkFileUploadPrivileges({
+        authorization: security?.authz,
+        request,
+        checkCreateDataView: true,
+        checkHasManagePipeline: false,
+      });
 
-    if (!hasImportPermission) {
-      return {
-        fileUpload: {
-          show: false,
-        },
-      };
-    }
+      if (!hasImportPermission) {
+        return {
+          fileUpload: {
+            show: false,
+          },
+        };
+      }
 
-    return {};
-  });
+      return {};
+    },
+    {
+      capabilityPath: 'fileUpload.*',
+    }
+  );
 };
diff --git a/x-pack/plugins/global_search/server/services/context.test.ts b/x-pack/plugins/global_search/server/services/context.test.ts
index f90c0bc0f6c84..eebf583b6fc3a 100644
--- a/x-pack/plugins/global_search/server/services/context.test.ts
+++ b/x-pack/plugins/global_search/server/services/context.test.ts
@@ -26,7 +26,9 @@ describe('getContextFactory', () => {
     expect(coreStart.uiSettings.asScopedToClient).toHaveBeenCalledWith(soClient);
 
     expect(coreStart.capabilities.resolveCapabilities).toHaveBeenCalledTimes(1);
-    expect(coreStart.capabilities.resolveCapabilities).toHaveBeenCalledWith(request);
+    expect(coreStart.capabilities.resolveCapabilities).toHaveBeenCalledWith(request, {
+      capabilityPath: '*',
+    });
 
     expect(context).toEqual({
       core: {
diff --git a/x-pack/plugins/global_search/server/services/context.ts b/x-pack/plugins/global_search/server/services/context.ts
index 02d86c909ab72..06be3f4acd35c 100644
--- a/x-pack/plugins/global_search/server/services/context.ts
+++ b/x-pack/plugins/global_search/server/services/context.ts
@@ -27,7 +27,9 @@ export const getContextFactory =
         uiSettings: {
           client: coreStart.uiSettings.asScopedToClient(soClient),
         },
-        capabilities: from(coreStart.capabilities.resolveCapabilities(request)),
+        capabilities: from(
+          coreStart.capabilities.resolveCapabilities(request, { capabilityPath: '*' })
+        ),
       },
     };
   };
diff --git a/x-pack/plugins/ml/server/lib/capabilities/capabilities_switcher.ts b/x-pack/plugins/ml/server/lib/capabilities/capabilities_switcher.ts
index ba08ab5066701..e55f2dfc46d83 100644
--- a/x-pack/plugins/ml/server/lib/capabilities/capabilities_switcher.ts
+++ b/x-pack/plugins/ml/server/lib/capabilities/capabilities_switcher.ts
@@ -23,7 +23,9 @@ export const setupCapabilitiesSwitcher = (
   enabledFeatures: MlFeatures,
   logger: Logger
 ) => {
-  coreSetup.capabilities.registerSwitcher(getSwitcher(license$, logger, enabledFeatures));
+  coreSetup.capabilities.registerSwitcher(getSwitcher(license$, logger, enabledFeatures), {
+    capabilityPath: 'ml.*',
+  });
 };
 
 function getSwitcher(
diff --git a/x-pack/plugins/ml/server/plugin.ts b/x-pack/plugins/ml/server/plugin.ts
index d148fc8f148d9..c268cd3383211 100644
--- a/x-pack/plugins/ml/server/plugin.ts
+++ b/x-pack/plugins/ml/server/plugin.ts
@@ -195,7 +195,9 @@ export class MlServerPlugin
       if (this.capabilities === null) {
         return null;
       }
-      const capabilities = await this.capabilities.resolveCapabilities(request);
+      const capabilities = await this.capabilities.resolveCapabilities(request, {
+        capabilityPath: 'ml.*',
+      });
       return capabilities.ml as MlCapabilities;
     };
 
diff --git a/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts b/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts
index 586ebe3716a96..fff242db7475c 100644
--- a/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts
+++ b/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts
@@ -45,7 +45,9 @@ export const createLiveQueryRoute = (router: IRouter, osqueryContext: OsqueryApp
 
         const {
           osquery: { writeLiveQueries, runSavedQueries },
-        } = await coreStartServices.capabilities.resolveCapabilities(request);
+        } = await coreStartServices.capabilities.resolveCapabilities(request, {
+          capabilityPath: 'osquery.*',
+        });
 
         const isInvalid = !(
           writeLiveQueries ||
diff --git a/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.test.ts b/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.test.ts
index 3cee2adf03f5c..398ff6a3c425b 100644
--- a/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.test.ts
+++ b/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.test.ts
@@ -165,6 +165,7 @@ describe('AnonymousAccessService', () => {
           expect.objectContaining({ headers: {} }),
           {
             useDefaultCapabilities: true,
+            capabilityPath: '*',
           }
         );
       });
@@ -202,6 +203,7 @@ describe('AnonymousAccessService', () => {
           expect.objectContaining({ headers: {} }),
           {
             useDefaultCapabilities: true,
+            capabilityPath: '*',
           }
         );
       });
@@ -225,7 +227,7 @@ describe('AnonymousAccessService', () => {
         expect(startParams.capabilities.resolveCapabilities).toHaveBeenCalledTimes(1);
         expect(startParams.capabilities.resolveCapabilities).toHaveBeenCalledWith(
           expect.objectContaining({ headers: { authorization: 'Basic dXNlcjpwYXNzd29yZA==' } }),
-          { useDefaultCapabilities: false }
+          { useDefaultCapabilities: false, capabilityPath: '*' }
         );
       });
 
@@ -245,7 +247,7 @@ describe('AnonymousAccessService', () => {
         expect(startParams.capabilities.resolveCapabilities).toHaveBeenCalledTimes(1);
         expect(startParams.capabilities.resolveCapabilities).toHaveBeenCalledWith(
           expect.objectContaining({ headers: { authorization: 'Basic dXNlcjpwYXNzd29yZA==' } }),
-          { useDefaultCapabilities: false }
+          { useDefaultCapabilities: false, capabilityPath: '*' }
         );
       });
     });
diff --git a/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.ts b/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.ts
index 8641d242d56eb..ad0a9b79fff46 100644
--- a/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.ts
+++ b/x-pack/plugins/security/server/anonymous_access/anonymous_access_service.ts
@@ -121,6 +121,7 @@ export class AnonymousAccessService {
 
         try {
           return await capabilities.resolveCapabilities(fakeAnonymousRequest, {
+            capabilityPath: '*',
             useDefaultCapabilities,
           });
         } catch (err) {
diff --git a/x-pack/plugins/security/server/authorization/authorization_service.test.ts b/x-pack/plugins/security/server/authorization/authorization_service.test.ts
index 0d1009bdd4b9e..a052d67532480 100644
--- a/x-pack/plugins/security/server/authorization/authorization_service.test.ts
+++ b/x-pack/plugins/security/server/authorization/authorization_service.test.ts
@@ -116,7 +116,9 @@ it(`#setup returns exposed services`, () => {
   expect(authorizationModeFactory).toHaveBeenCalledWith(mockLicense);
 
   expect(mockCoreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1);
-  expect(mockCoreSetup.capabilities.registerSwitcher).toHaveBeenCalledWith(expect.any(Function));
+  expect(mockCoreSetup.capabilities.registerSwitcher).toHaveBeenCalledWith(expect.any(Function), {
+    capabilityPath: '*',
+  });
 });
 
 describe('#start', () => {
diff --git a/x-pack/plugins/security/server/authorization/authorization_service.tsx b/x-pack/plugins/security/server/authorization/authorization_service.tsx
index a2b32a0a6b13e..10bee6309438f 100644
--- a/x-pack/plugins/security/server/authorization/authorization_service.tsx
+++ b/x-pack/plugins/security/server/authorization/authorization_service.tsx
@@ -64,8 +64,11 @@ interface AuthorizationServiceSetupParams {
   loggers: LoggerFactory;
   features: FeaturesPluginSetup;
   kibanaIndexName: string;
+
   getSpacesService(): SpacesService | undefined;
+
   getCurrentUser(request: KibanaRequest): AuthenticatedUser | null;
+
   customBranding: CustomBrandingSetup;
 }
 
@@ -174,6 +177,9 @@ export class AuthorizationService {
         }
 
         return await disableUICapabilities.usingPrivileges(uiCapabilities);
+      },
+      {
+        capabilityPath: '*',
       }
     );
 
diff --git a/x-pack/plugins/spaces/server/capabilities/index.ts b/x-pack/plugins/spaces/server/capabilities/index.ts
index 745015b50042f..801564d9990b8 100644
--- a/x-pack/plugins/spaces/server/capabilities/index.ts
+++ b/x-pack/plugins/spaces/server/capabilities/index.ts
@@ -18,5 +18,7 @@ export const setupCapabilities = (
   logger: Logger
 ) => {
   core.capabilities.registerProvider(capabilitiesProvider);
-  core.capabilities.registerSwitcher(setupCapabilitiesSwitcher(core, getSpacesService, logger));
+  core.capabilities.registerSwitcher(setupCapabilitiesSwitcher(core, getSpacesService, logger), {
+    capabilityPath: '*',
+  });
 };
diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts
index e3ca890d1712e..f878e8bb40c70 100644
--- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts
+++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts
@@ -102,8 +102,11 @@ export const validatePermissions = async (
 
   const elasticManagedLocationsEnabled =
     Boolean(
-      (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime
-        .elasticManagedLocationsEnabled
+      (
+        await server.coreStart?.capabilities.resolveCapabilities(request, {
+          capabilityPath: 'uptime.*',
+        })
+      ).uptime.elasticManagedLocationsEnabled
     ) ?? true;
   if (!elasticManagedLocationsEnabled) {
     return ELASTIC_MANAGED_LOCATIONS_DISABLED;
diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts
index c6ff9852b6777..d9e9b918e3fff 100644
--- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts
+++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts
@@ -251,8 +251,11 @@ export const validatePermissions = async (
 
   const elasticManagedLocationsEnabled =
     Boolean(
-      (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime
-        .elasticManagedLocationsEnabled
+      (
+        await server.coreStart?.capabilities.resolveCapabilities(request, {
+          capabilityPath: 'uptime.*',
+        })
+      ).uptime.elasticManagedLocationsEnabled
     ) ?? true;
   if (!elasticManagedLocationsEnabled) {
     return ELASTIC_MANAGED_LOCATIONS_DISABLED;
diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts
index 0dab70565aeea..53cd56fc24bf6 100644
--- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts
+++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts
@@ -34,8 +34,11 @@ export const getAPIKeySyntheticsRoute: SyntheticsRestApiRouteFactory = () => ({
     if (accessToElasticManagedLocations) {
       const elasticManagedLocationsEnabled =
         Boolean(
-          (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime
-            .elasticManagedLocationsEnabled
+          (
+            await server.coreStart?.capabilities.resolveCapabilities(request, {
+              capabilityPath: 'uptime.*',
+            })
+          ).uptime.elasticManagedLocationsEnabled
         ) ?? true;
       if (!elasticManagedLocationsEnabled) {
         return response.customError({
diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts
index 549c812eec27f..b693718e7a63b 100644
--- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts
+++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts
@@ -52,7 +52,11 @@ export const getSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({
       } else {
         // only user with write permissions can decrypt the monitor
         const canSave =
-          (await coreStart?.capabilities.resolveCapabilities(request)).uptime.save ?? false;
+          (
+            await coreStart?.capabilities.resolveCapabilities(request, {
+              capabilityPath: 'uptime.*',
+            })
+          ).uptime.save ?? false;
         if (!canSave) {
           return response.forbidden();
         }
diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts
index 0cbdda79c18eb..78f445190d2e9 100644
--- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts
+++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts
@@ -54,8 +54,13 @@ export const inspectSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () =
     );
 
     const canSave =
-      Boolean((await server.coreStart?.capabilities.resolveCapabilities(request)).uptime.save) ??
-      false;
+      Boolean(
+        (
+          await server.coreStart?.capabilities.resolveCapabilities(request, {
+            capabilityPath: 'uptime.*',
+          })
+        ).uptime.save
+      ) ?? false;
 
     try {
       const newMonitorId = id ?? uuidV4();
diff --git a/x-pack/plugins/synthetics/server/routes/settings/params/params.ts b/x-pack/plugins/synthetics/server/routes/settings/params/params.ts
index 8f9f4f76efd89..01f2dd6465dfd 100644
--- a/x-pack/plugins/synthetics/server/routes/settings/params/params.ts
+++ b/x-pack/plugins/synthetics/server/routes/settings/params/params.ts
@@ -37,7 +37,11 @@ export const getSyntheticsParamsRoute: SyntheticsRestApiRouteFactory<
       const encryptedSavedObjectsClient = server.encryptedSavedObjects.getClient();
 
       const canSave =
-        (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime.save ?? false;
+        (
+          await server.coreStart?.capabilities.resolveCapabilities(request, {
+            capabilityPath: 'uptime.*',
+          })
+        ).uptime.save ?? false;
 
       if (canSave) {
         if (paramId) {
diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts
index 24660c537a238..a9142170c9e26 100644
--- a/x-pack/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts
+++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts
@@ -23,8 +23,11 @@ export const getServiceLocationsRoute: SyntheticsRestApiRouteFactory = () => ({
   }): Promise<any> => {
     const elasticManagedLocationsEnabled =
       Boolean(
-        (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime
-          .elasticManagedLocationsEnabled
+        (
+          await server.coreStart?.capabilities.resolveCapabilities(request, {
+            capabilityPath: 'uptime.*',
+          })
+        ).uptime.elasticManagedLocationsEnabled
       ) ?? true;
 
     if (elasticManagedLocationsEnabled) {
diff --git a/x-pack/plugins/transform/server/capabilities.ts b/x-pack/plugins/transform/server/capabilities.ts
index 5fd542d428a70..58d47cbb5ca41 100644
--- a/x-pack/plugins/transform/server/capabilities.ts
+++ b/x-pack/plugins/transform/server/capabilities.ts
@@ -127,50 +127,55 @@ export const setupCapabilities = (
     };
   });
 
-  core.capabilities.registerSwitcher(async (request, capabilities, useDefaultCapabilities) => {
-    if (useDefaultCapabilities) {
-      return {};
-    }
-
-    const isSecurityPluginEnabled = securitySetup?.license.isEnabled() ?? false;
-    const startServices = await core.getStartServices();
-    const [, { security: securityStart }] = startServices;
+  core.capabilities.registerSwitcher(
+    async (request, capabilities, useDefaultCapabilities) => {
+      if (useDefaultCapabilities) {
+        return {};
+      }
+
+      const isSecurityPluginEnabled = securitySetup?.license.isEnabled() ?? false;
+      const startServices = await core.getStartServices();
+      const [, { security: securityStart }] = startServices;
+
+      // If security is not enabled or not available, transform should have full permission
+      if (!isSecurityPluginEnabled || !securityStart) {
+        return {
+          transform: getInitialTransformCapabilities(true),
+        };
+      }
+
+      const checkPrivileges = securityStart.authz.checkPrivilegesDynamicallyWithRequest(request);
+
+      const { hasAllRequested, privileges } = await checkPrivileges({
+        elasticsearch: {
+          cluster: APP_CLUSTER_PRIVILEGES,
+          index: {},
+        },
+      });
+
+      const clusterPrivileges: Record<string, boolean> = Array.isArray(
+        privileges?.elasticsearch?.cluster
+      )
+        ? privileges.elasticsearch.cluster.reduce<Record<string, boolean>>((acc, p) => {
+            acc[p.privilege] = p.authorized;
+            return acc;
+          }, {})
+        : {};
+
+      const hasOneIndexWithAllPrivileges = false;
+
+      const transformCapabilities = getPrivilegesAndCapabilities(
+        clusterPrivileges,
+        hasOneIndexWithAllPrivileges,
+        hasAllRequested
+      ).capabilities;
 
-    // If security is not enabled or not available, transform should have full permission
-    if (!isSecurityPluginEnabled || !securityStart) {
       return {
-        transform: getInitialTransformCapabilities(true),
+        transform: transformCapabilities as Record<string, boolean | Record<string, boolean>>,
       };
+    },
+    {
+      capabilityPath: 'transform.*',
     }
-
-    const checkPrivileges = securityStart.authz.checkPrivilegesDynamicallyWithRequest(request);
-
-    const { hasAllRequested, privileges } = await checkPrivileges({
-      elasticsearch: {
-        cluster: APP_CLUSTER_PRIVILEGES,
-        index: {},
-      },
-    });
-
-    const clusterPrivileges: Record<string, boolean> = Array.isArray(
-      privileges?.elasticsearch?.cluster
-    )
-      ? privileges.elasticsearch.cluster.reduce<Record<string, boolean>>((acc, p) => {
-          acc[p.privilege] = p.authorized;
-          return acc;
-        }, {})
-      : {};
-
-    const hasOneIndexWithAllPrivileges = false;
-
-    const transformCapabilities = getPrivilegesAndCapabilities(
-      clusterPrivileges,
-      hasOneIndexWithAllPrivileges,
-      hasAllRequested
-    ).capabilities;
-
-    return {
-      transform: transformCapabilities as Record<string, boolean | Record<string, boolean>>,
-    };
-  });
+  );
 };

From 1d35c0f013286f6cae32ec5d0cb5c9d64287a4e8 Mon Sep 17 00:00:00 2001
From: Jon <jon@elastic.co>
Date: Thu, 9 Nov 2023 06:48:15 -0600
Subject: [PATCH 041/147] [build] Update ironbank base to UBI 9.3 (#170910)

---
 .../os_packages/docker_generator/templates/ironbank/Dockerfile  | 2 +-
 .../docker_generator/templates/ironbank/hardening_manifest.yaml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/Dockerfile
index b68130f1d201c..7fbba7d72ea78 100644
--- a/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/Dockerfile
+++ b/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/Dockerfile
@@ -4,7 +4,7 @@
 ################################################################################
 ARG BASE_REGISTRY=registry1.dso.mil
 ARG BASE_IMAGE=redhat/ubi/ubi9
-ARG BASE_TAG=9.2
+ARG BASE_TAG=9.3
 
 FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} as prep_files
 
diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/hardening_manifest.yaml b/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/hardening_manifest.yaml
index 3bbd4d7f31d12..43800a045da9c 100644
--- a/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/hardening_manifest.yaml
+++ b/src/dev/build/tasks/os_packages/docker_generator/templates/ironbank/hardening_manifest.yaml
@@ -14,7 +14,7 @@ tags:
 # Build args passed to Dockerfile ARGs
 args:
   BASE_IMAGE: 'redhat/ubi/ubi9'
-  BASE_TAG: '9.2'
+  BASE_TAG: '9.3'
 
 # Docker image labels
 labels:

From 82953b5d27a955895e26a1179c4433e74b3c9514 Mon Sep 17 00:00:00 2001
From: Jon <jon@elastic.co>
Date: Thu, 9 Nov 2023 06:48:45 -0600
Subject: [PATCH 042/147] [ci] Support multiple project deployments (#170783)

---
 .../steps/serverless/build_and_deploy.sh      | 177 ++++++++++--------
 1 file changed, 94 insertions(+), 83 deletions(-)

diff --git a/.buildkite/scripts/steps/serverless/build_and_deploy.sh b/.buildkite/scripts/steps/serverless/build_and_deploy.sh
index 41a8880706b3d..6c5b72a0b4922 100644
--- a/.buildkite/scripts/steps/serverless/build_and_deploy.sh
+++ b/.buildkite/scripts/steps/serverless/build_and_deploy.sh
@@ -6,91 +6,102 @@ set -euo pipefail
 source .buildkite/scripts/common/util.sh
 source .buildkite/scripts/steps/artifacts/docker_image.sh
 
-PROJECT_TYPE=""
-is_pr_with_label "ci:project-deploy-elasticsearch" && PROJECT_TYPE="elasticsearch"
-is_pr_with_label "ci:project-deploy-observability" && PROJECT_TYPE="observability"
-is_pr_with_label "ci:project-deploy-security" && PROJECT_TYPE="security"
-if [ -z "${PROJECT_TYPE}" ]; then
-  echo "Mising project type"
-  exit 10
-fi
-
-PROJECT_NAME="kibana-pr-$BUILDKITE_PULL_REQUEST-$PROJECT_TYPE"
-PROJECT_CREATE_CONFIGURATION='{
-  "name": "'"$PROJECT_NAME"'",
-  "region_id": "aws-eu-west-1",
-  "overrides": {
-      "kibana": {
-          "docker_image": "'"$KIBANA_IMAGE"'"
-      }
-  }
-}'
-PROJECT_UPDATE_CONFIGURATION='{
-  "name": "'"$PROJECT_NAME"'",
-  "overrides": {
-      "kibana": {
-          "docker_image": "'"$KIBANA_IMAGE"'"
-      }
-  }
-}'
-
-echo "--- Create project"
-DEPLOY_LOGS=$(mktemp --suffix ".json")
-
-echo "Checking if project already exists..."
-curl -s \
-  -H "Authorization: ApiKey $PROJECT_API_KEY" \
-  "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}" \
-  -XGET &>> $DEPLOY_LOGS
-
-PROJECT_ID=$(jq -r --slurp '[.[0].items[] | select(.name == "'$PROJECT_NAME'")] | .[0].id' $DEPLOY_LOGS)
-if [ -z "${PROJECT_ID}" ] || [ "$PROJECT_ID" = 'null' ]; then
-  echo "Creating project..."
-  curl -s \
-    -H "Authorization: ApiKey $PROJECT_API_KEY" \
-    -H "Content-Type: application/json" \
-    "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}" \
-    -XPOST -d "$PROJECT_CREATE_CONFIGURATION" &>> $DEPLOY_LOGS
-
-  PROJECT_ID=$(jq -r --slurp '.[1].id' $DEPLOY_LOGS)
 
-  echo "Get credentials..."
-  curl -s -XPOST -H "Authorization: ApiKey $PROJECT_API_KEY" \
-    "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}/${PROJECT_ID}/_reset-credentials" &>> $DEPLOY_LOGS
-
-  PROJECT_USERNAME=$(jq -r --slurp '.[2].username' $DEPLOY_LOGS)
-  PROJECT_PASSWORD=$(jq -r --slurp '.[2].password' $DEPLOY_LOGS)
-
-  echo "Write to vault..."
-  VAULT_ROLE_ID="$(retry 5 15 gcloud secrets versions access latest --secret=kibana-buildkite-vault-role-id)"
-  VAULT_SECRET_ID="$(retry 5 15 gcloud secrets versions access latest --secret=kibana-buildkite-vault-secret-id)"
-  VAULT_TOKEN=$(retry 5 30 vault write -field=token auth/approle/login role_id="$VAULT_ROLE_ID" secret_id="$VAULT_SECRET_ID")
-  retry 5 30 vault login -no-print "$VAULT_TOKEN"
-  retry 5 5 vault write "secret/kibana-issues/dev/cloud-deploy/$PROJECT_NAME" username="$PROJECT_USERNAME" password="$PROJECT_PASSWORD" id="$PROJECT_ID"
-else
-  echo "Updating project..."
+deploy() {
+  PROJECT_TYPE=$1
+  case $PROJECT_TYPE in
+    elasticsearch)
+      PROJECT_TYPE_LABEL='Elasticsearch Serverless'
+    ;;
+    observability)
+      PROJECT_TYPE_LABEL='Observability'
+    ;;
+    security)
+      PROJECT_TYPE_LABEL='Security'
+    ;;
+  esac
+
+  PROJECT_NAME="kibana-pr-$BUILDKITE_PULL_REQUEST-$PROJECT_TYPE"
+  PROJECT_CREATE_CONFIGURATION='{
+    "name": "'"$PROJECT_NAME"'",
+    "region_id": "aws-eu-west-1",
+    "overrides": {
+        "kibana": {
+            "docker_image": "'"$KIBANA_IMAGE"'"
+        }
+    }
+  }'
+  PROJECT_UPDATE_CONFIGURATION='{
+    "name": "'"$PROJECT_NAME"'",
+    "overrides": {
+        "kibana": {
+            "docker_image": "'"$KIBANA_IMAGE"'"
+        }
+    }
+  }'
+
+  echo "--- Create $PROJECT_TYPE_LABEL project"
+  DEPLOY_LOGS=$(mktemp --suffix ".json")
+
+  echo "Checking if project already exists..."
   curl -s \
     -H "Authorization: ApiKey $PROJECT_API_KEY" \
-    -H "Content-Type: application/json" \
-    "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}/${PROJECT_ID}" \
-    -XPUT -d "$PROJECT_UPDATE_CONFIGURATION" &>> $DEPLOY_LOGS
-fi
-
-PROJECT_KIBANA_URL=$(jq -r --slurp '.[1].endpoints.kibana' $DEPLOY_LOGS)
-PROJECT_KIBANA_LOGIN_URL="${PROJECT_KIBANA_URL}/login"
-PROJECT_ELASTICSEARCH_URL=$(jq -r --slurp '.[1].endpoints.elasticsearch' $DEPLOY_LOGS)
-
-cat << EOF | buildkite-agent annotate --style "info" --context project
-  ### Project Deployment
-
-  Kibana: $PROJECT_KIBANA_LOGIN_URL
-
-  Elasticsearch: $PROJECT_ELASTICSEARCH_URL
-
-  Credentials: \`vault read secret/kibana-issues/dev/cloud-deploy/$PROJECT_NAME\`
-
-  Kibana image: \`$KIBANA_IMAGE\`
+    "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}" \
+    -XGET &>> $DEPLOY_LOGS
+
+  PROJECT_ID=$(jq -r --slurp '[.[0].items[] | select(.name == "'$PROJECT_NAME'")] | .[0].id' $DEPLOY_LOGS)
+  if [ -z "${PROJECT_ID}" ] || [ "$PROJECT_ID" = 'null' ]; then
+    echo "Creating project..."
+    curl -s \
+      -H "Authorization: ApiKey $PROJECT_API_KEY" \
+      -H "Content-Type: application/json" \
+      "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}" \
+      -XPOST -d "$PROJECT_CREATE_CONFIGURATION" &>> $DEPLOY_LOGS
+
+    PROJECT_ID=$(jq -r --slurp '.[1].id' $DEPLOY_LOGS)
+
+    echo "Get credentials..."
+    curl -s -XPOST -H "Authorization: ApiKey $PROJECT_API_KEY" \
+      "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}/${PROJECT_ID}/_reset-credentials" &>> $DEPLOY_LOGS
+
+    PROJECT_USERNAME=$(jq -r --slurp '.[2].username' $DEPLOY_LOGS)
+    PROJECT_PASSWORD=$(jq -r --slurp '.[2].password' $DEPLOY_LOGS)
+
+    echo "Write to vault..."
+    VAULT_ROLE_ID="$(retry 5 15 gcloud secrets versions access latest --secret=kibana-buildkite-vault-role-id)"
+    VAULT_SECRET_ID="$(retry 5 15 gcloud secrets versions access latest --secret=kibana-buildkite-vault-secret-id)"
+    VAULT_TOKEN=$(retry 5 30 vault write -field=token auth/approle/login role_id="$VAULT_ROLE_ID" secret_id="$VAULT_SECRET_ID")
+    retry 5 30 vault login -no-print "$VAULT_TOKEN"
+    retry 5 5 vault write "secret/kibana-issues/dev/cloud-deploy/$PROJECT_NAME" username="$PROJECT_USERNAME" password="$PROJECT_PASSWORD" id="$PROJECT_ID"
+  else
+    echo "Updating project..."
+    curl -s \
+      -H "Authorization: ApiKey $PROJECT_API_KEY" \
+      -H "Content-Type: application/json" \
+      "${PROJECT_API_DOMAIN}/api/v1/serverless/projects/${PROJECT_TYPE}/${PROJECT_ID}" \
+      -XPUT -d "$PROJECT_UPDATE_CONFIGURATION" &>> $DEPLOY_LOGS
+  fi
+
+  PROJECT_KIBANA_URL=$(jq -r --slurp '.[1].endpoints.kibana' $DEPLOY_LOGS)
+  PROJECT_KIBANA_LOGIN_URL="${PROJECT_KIBANA_URL}/login"
+  PROJECT_ELASTICSEARCH_URL=$(jq -r --slurp '.[1].endpoints.elasticsearch' $DEPLOY_LOGS)
+
+  cat << EOF | buildkite-agent annotate --style "info" --context "project-$PROJECT_TYPE"
+### $PROJECT_TYPE_LABEL Deployment
+
+Kibana: $PROJECT_KIBANA_LOGIN_URL
+
+Elasticsearch: $PROJECT_ELASTICSEARCH_URL
+
+Credentials: \`vault read secret/kibana-issues/dev/cloud-deploy/$PROJECT_NAME\`
+
+Kibana image: \`$KIBANA_IMAGE\`
 EOF
 
-buildkite-agent meta-data set pr_comment:deploy_project:head "* [Project Deployment](${PROJECT_KIBANA_LOGIN_URL})"
-buildkite-agent meta-data set pr_comment:early_comment_job_id "$BUILDKITE_JOB_ID"
+  buildkite-agent meta-data set "pr_comment:deploy_project_$PROJECT_TYPE:head" "* [$PROJECT_TYPE_LABEL Deployment](${PROJECT_KIBANA_LOGIN_URL})"
+  buildkite-agent meta-data set pr_comment:early_comment_job_id "$BUILDKITE_JOB_ID"
+}
+
+is_pr_with_label "ci:project-deploy-elasticsearch" && deploy "elasticsearch"
+is_pr_with_label "ci:project-deploy-observability" && deploy "observability"
+is_pr_with_label "ci:project-deploy-security" && deploy "security"

From 79335e66539ff9d5c6bfbcc47491fbaa63ba7533 Mon Sep 17 00:00:00 2001
From: Maxim Kholod <maxim.kholod@elastic.co>
Date: Thu, 9 Nov 2023 13:51:26 +0100
Subject: [PATCH 043/147] [Cloud Security] Add step 1 to CIS Azure ARM Template
 to select "New Hosts" (#170840)

## Summary

part of
- https://github.com/elastic/security-team/issues/7994

adding step 1, plus changing the color to match all other cloud
providers
---
 .../azure_credentials_form/azure_credentials_form.tsx  | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx
index 5d16f64fce34a..19fe841e3b01b 100644
--- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx
@@ -104,12 +104,18 @@ const ArmTemplateSetup = ({
 
   return (
     <>
-      <EuiText color="text" size="s">
+      <EuiText color="subdued" size="s">
         <ol
           css={css`
             list-style: auto;
           `}
         >
+          <li>
+            <FormattedMessage
+              id="xpack.csp.azureIntegration.armTemplateSetupStep.hostRequirement"
+              defaultMessage='Ensure "New hosts" is selected in the "Where to add this integration?" section below'
+            />
+          </li>
           <li>
             <FormattedMessage
               id="xpack.csp.azureIntegration.armTemplateSetupStep.login"
@@ -158,7 +164,7 @@ const ArmTemplateSetup = ({
 const ManualSetup = ({ integrationLink }: { integrationLink: string }) => {
   return (
     <>
-      <EuiText color="text" size="s">
+      <EuiText color="subdued" size="s">
         <FormattedMessage
           id="xpack.csp.azureIntegration.manualCredentialType.instructions"
           defaultMessage="Ensure the agent is deployed on a resource that supports managed identities (e.g., Azure Virtual Machines). No explicit credentials need to be provided; Azure handles the authentication. Refer to our {gettingStartedLink} for details."

From d43eebbffd86d30dd2ae8e8ea5081f390daf9fde Mon Sep 17 00:00:00 2001
From: Maxim Kholod <maxim.kholod@elastic.co>
Date: Thu, 9 Nov 2023 13:51:55 +0100
Subject: [PATCH 044/147] [Cloud Security] align descriptions for account type
 between GCP and AWS (#170860)

## Summary

just a wording change to be the same between GCP and AWS

part of
- https://github.com/elastic/security-team/issues/7994
---
 .../public/components/fleet_extensions/policy_template_form.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx
index 77422d7abf465..92ee1f34a59b2 100644
--- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx
@@ -355,7 +355,7 @@ const GcpAccountTypeSelect = ({
       <EuiText color="subdued" size="s">
         <FormattedMessage
           id="xpack.csp.fleetIntegration.gcpAccountTypeDescriptionLabel"
-          defaultMessage="Select between single account or organization."
+          defaultMessage="Select between single account or organization, and then fill in the name and description to help identify this integration."
         />
       </EuiText>
       <EuiSpacer size="l" />

From 46dc6ca8bf291d6a4f061edefc3e3cd11cfbcf04 Mon Sep 17 00:00:00 2001
From: Maxim Kholod <maxim.kholod@elastic.co>
Date: Thu, 9 Nov 2023 13:52:42 +0100
Subject: [PATCH 045/147] [Cloud Security] making sure different percentage
 doesn't affect the bar size (#170885)

## Summary


Part of
- https://github.com/elastic/security-team/issues/7994

## Screenshots
**Before**
<img width="137" alt="Screenshot 2023-11-08 at 17 22 36"
src="https://github.com/elastic/kibana/assets/478762/8a864dba-956b-477d-82ea-876e5cd8d979">
<img width="181" alt="Screenshot 2023-11-08 at 17 22 24"
src="https://github.com/elastic/kibana/assets/478762/e0489bea-e82b-4f8c-b3e5-bc60dd9205d2">

**After**
<img width="133" alt="Screenshot 2023-11-08 at 17 21 50"
src="https://github.com/elastic/kibana/assets/478762/a8953cbb-1483-4c8b-8b2a-593db357d1a6">
<img width="182" alt="Screenshot 2023-11-08 at 17 22 03"
src="https://github.com/elastic/kibana/assets/478762/850fb486-2699-4238-8197-9a623e606dc3">
---
 .../public/components/compliance_score_bar.tsx                | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx b/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx
index 3f6c78fe6b2ef..8f866079ab160 100644
--- a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx
@@ -45,7 +45,7 @@ export const ComplianceScoreBar = ({
         gutterSize="none"
         alignItems="center"
         justifyContent="flexEnd"
-        style={{ gap: euiTheme.size.s }}
+        style={{ gap: euiTheme.size.xs }}
       >
         <EuiFlexItem>
           <EuiFlexGroup
@@ -75,7 +75,7 @@ export const ComplianceScoreBar = ({
             )}
           </EuiFlexGroup>
         </EuiFlexItem>
-        <EuiFlexItem grow={false}>
+        <EuiFlexItem grow={false} style={{ width: euiTheme.size.xxl, textAlign: 'right' }}>
           <EuiText
             size="xs"
             style={{ fontWeight: euiTheme.font.weight.bold }}

From ffc1a48b7e24b3a5e9108c8cf33b1e52e5d17b6d Mon Sep 17 00:00:00 2001
From: Panagiota Mitsopoulou <panagiota.mitsopoulou@elastic.co>
Date: Thu, 9 Nov 2023 13:58:57 +0100
Subject: [PATCH 046/147] [SLO] [Embeddables] provide initial width for the slo
 overview embeddable (#170720)

Fixes https://github.com/elastic/kibana/issues/170710

<img width="1007" alt="Screenshot 2023-11-07 at 11 52 38"
src="https://github.com/elastic/kibana/assets/2852703/b39e999e-8823-4e02-bcb4-8e08e76b799d">

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../slo/overview/slo_embeddable_factory.ts         | 14 +++++++++++++-
 x-pack/plugins/observability/tsconfig.json         |  3 ++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/observability/public/embeddable/slo/overview/slo_embeddable_factory.ts b/x-pack/plugins/observability/public/embeddable/slo/overview/slo_embeddable_factory.ts
index 7adb76eb9acfe..bbdf4cafad731 100644
--- a/x-pack/plugins/observability/public/embeddable/slo/overview/slo_embeddable_factory.ts
+++ b/x-pack/plugins/observability/public/embeddable/slo/overview/slo_embeddable_factory.ts
@@ -13,12 +13,15 @@ import {
   EmbeddableFactory,
   ErrorEmbeddable,
 } from '@kbn/embeddable-plugin/public';
+import { IProvidesPanelPlacementSettings } from '@kbn/dashboard-plugin/public/dashboard_container/component/panel_placement/types';
 import { SLOEmbeddable, SLO_EMBEDDABLE } from './slo_embeddable';
 import { ObservabilityPublicPluginsStart, ObservabilityPublicStart } from '../../..';
 import type { SloEmbeddableInput } from './types';
 
 export type SloOverviewEmbeddableFactory = EmbeddableFactory;
-export class SloOverviewEmbeddableFactoryDefinition implements EmbeddableFactoryDefinition {
+export class SloOverviewEmbeddableFactoryDefinition
+  implements EmbeddableFactoryDefinition, IProvidesPanelPlacementSettings<SloEmbeddableInput>
+{
   public readonly type = SLO_EMBEDDABLE;
 
   constructor(
@@ -42,6 +45,15 @@ export class SloOverviewEmbeddableFactoryDefinition implements EmbeddableFactory
     }
   }
 
+  public getPanelPlacementSettings: IProvidesPanelPlacementSettings<
+    SloEmbeddableInput,
+    unknown
+  >['getPanelPlacementSettings'] = () => {
+    const width = 8;
+    const height = 7;
+    return { width, height, strategy: 'placeAtTop' };
+  };
+
   public async create(initialInput: SloEmbeddableInput, parent?: IContainer) {
     try {
       const [{ uiSettings, application, http, i18n: i18nService }] = await this.getStartServices();
diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json
index d0d4114fe4612..4e2f8ef70482c 100644
--- a/x-pack/plugins/observability/tsconfig.json
+++ b/x-pack/plugins/observability/tsconfig.json
@@ -93,7 +93,8 @@
     "@kbn/react-kibana-context-theme",
     "@kbn/shared-ux-link-redirect-app",
     "@kbn/core-chrome-browser",
-    "@kbn/serverless"
+    "@kbn/serverless",
+    "@kbn/dashboard-plugin"
   ],
   "exclude": [
     "target/**/*"

From 6bb46fd8cbc581f8de10966ff0a0c031f328f732 Mon Sep 17 00:00:00 2001
From: Kevin Delemme <kevin.delemme@elastic.co>
Date: Thu, 9 Nov 2023 07:59:53 -0500
Subject: [PATCH 047/147] chore(slo): auto refresh related alerts in slo
 details page (#170909)

---
 .../public/hooks/slo/use_fetch_active_alerts.ts           | 8 +++++++-
 .../public/pages/slo_details/components/slo_details.tsx   | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts
index 31cf30ca03a1d..2d234b57ab8ed 100644
--- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts
+++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts
@@ -49,6 +49,7 @@ type SloIdAndInstanceId = [string, string];
 
 interface Params {
   sloIdsAndInstanceIds: SloIdAndInstanceId[];
+  shouldRefetch?: boolean;
 }
 
 export interface UseFetchActiveAlerts {
@@ -70,9 +71,13 @@ interface FindApiResponse {
   };
 }
 
+const LONG_REFETCH_INTERVAL = 1000 * 60; // 1 minute
 const EMPTY_ACTIVE_ALERTS_MAP = new ActiveAlerts();
 
-export function useFetchActiveAlerts({ sloIdsAndInstanceIds = [] }: Params): UseFetchActiveAlerts {
+export function useFetchActiveAlerts({
+  sloIdsAndInstanceIds = [],
+  shouldRefetch = false,
+}: Params): UseFetchActiveAlerts {
   const { http } = useKibana().services;
 
   const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data } = useQuery({
@@ -136,6 +141,7 @@ export function useFetchActiveAlerts({ sloIdsAndInstanceIds = [] }: Params): Use
       }
     },
     refetchOnWindowFocus: false,
+    refetchInterval: shouldRefetch ? LONG_REFETCH_INTERVAL : undefined,
     enabled: Boolean(sloIdsAndInstanceIds.length),
   });
 
diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx
index d70a4cbbfcbe3..e05c9c7403dd6 100644
--- a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx
@@ -42,6 +42,7 @@ export function SloDetails({ slo, isAutoRefreshing }: Props) {
   const { search } = useLocation();
   const { data: activeAlerts } = useFetchActiveAlerts({
     sloIdsAndInstanceIds: [[slo.id, slo.instanceId ?? ALL_VALUE]],
+    shouldRefetch: isAutoRefreshing,
   });
   const { isLoading: historicalSummaryLoading, data: historicalSummaries = [] } =
     useFetchHistoricalSummary({

From 99aa3f81e1840f4c39bf14d04cff1973fe1ccf74 Mon Sep 17 00:00:00 2001
From: Drew Tate <drew.tate@elastic.co>
Date: Thu, 9 Nov 2023 06:13:09 -0700
Subject: [PATCH 048/147] [Event annotation] stabilize library editing tests
 (#170784)

## Summary

Fix https://github.com/elastic/kibana/issues/170568

Flaky test runner (x200):
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3949

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../apps/visualize/group3/_annotation_listing.ts      |  3 +--
 .../page_objects/annotation_library_editor_page.ts    | 11 ++++++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/test/functional/apps/visualize/group3/_annotation_listing.ts b/test/functional/apps/visualize/group3/_annotation_listing.ts
index 3f361919b0279..53ae9d48e2b5c 100644
--- a/test/functional/apps/visualize/group3/_annotation_listing.ts
+++ b/test/functional/apps/visualize/group3/_annotation_listing.ts
@@ -121,8 +121,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
         await listingTable.expectItemsCount('eventAnnotation', 1);
       });
 
-      // FLAKY: https://github.com/elastic/kibana/issues/170568
-      describe.skip('individual annotations', () => {
+      describe('individual annotations', () => {
         it('edits an existing annotation', async function () {
           await listingTable.clickItemLink('eventAnnotation', 'edited title');
           expect(await PageObjects.annotationEditor.getAnnotationCount()).to.be(1);
diff --git a/test/functional/page_objects/annotation_library_editor_page.ts b/test/functional/page_objects/annotation_library_editor_page.ts
index f5c66b9f6c1e9..2a031d98429b3 100644
--- a/test/functional/page_objects/annotation_library_editor_page.ts
+++ b/test/functional/page_objects/annotation_library_editor_page.ts
@@ -10,6 +10,7 @@ import { FtrService } from '../ftr_provider_context';
 
 export class AnnotationEditorPageObject extends FtrService {
   private readonly testSubjects = this.ctx.getService('testSubjects');
+  private readonly find = this.ctx.getService('find');
   private readonly retry = this.ctx.getService('retry');
 
   /**
@@ -56,12 +57,20 @@ export class AnnotationEditorPageObject extends FtrService {
     const queryInput = await this.testSubjects.find('annotation-query-based-query-input');
     await queryInput.type(config.query);
 
-    await this.testSubjects.setValue('lnsXYThickness', '' + config.lineThickness);
+    const titles = await this.find.allByCssSelector(
+      '.euiFlyout h3.lnsDimensionEditorSection__heading'
+    );
+    const lastTitle = titles[titles.length - 1];
+    await lastTitle.click(); // close query input pop-up
+    await lastTitle.focus(); // scroll down to the bottom of the section
 
     await this.testSubjects.setValue(
       'euiColorPickerAnchor indexPattern-dimension-colorPicker',
       config.color
     );
+    await lastTitle.click(); // close color picker pop-up
+
+    await this.testSubjects.setValue('lnsXYThickness', '' + config.lineThickness);
 
     await this.retry.waitFor('annotation editor UI to close', async () => {
       await this.testSubjects.click('backToGroupSettings');

From a7abca336aab48eb97afdbd679981306f12fd08f Mon Sep 17 00:00:00 2001
From: Maryam Saeidi <maryam.saeidi@elastic.co>
Date: Thu, 9 Nov 2023 14:18:09 +0100
Subject: [PATCH 049/147] Add the query delay mechanism to the inventory rule
 type (#170628)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #170531

## Summary

This PR adds the query delay mechanism to the inventory rule type.


![image](https://github.com/elastic/kibana/assets/12370520/c511fd13-f297-4d1e-8c60-7cd10c23621f)

This PR also changes the inventory rule type consumer from
`infrastructure` to `observability`:

<img
src="https://github.com/elastic/kibana/assets/12370520/e93da707-0e4e-4e49-80eb-17c4aebbb188"
width=400 />


## 🧪 How to test
- On serverless
    - Create an inventory rule and make sure,
        - by default, the query execution has 15s delay
        - consumer field in alert is `observability`
- Change the query settings delay in the Observability rule setting and
ensure the specified delay is applied to the related query


![image](https://github.com/elastic/kibana/assets/12370520/b6acc154-0f15-40c0-912a-8b8c2235a253)

- On stateful
- This mechanism is not applied to stateful, so the query execution time
should not have any delay
- Make sure consumer for inventory rule is `infrastructure` as before

---------

Co-authored-by: Shahzad <shahzad31comp@gmail.com>
---
 .../src/rule_types/o11y_rules.ts              |  2 +
 .../inventory/components/alert_flyout.tsx     |  1 +
 ...nventory_metric_threshold_executor.test.ts | 43 +++++++++++++++++--
 .../inventory_metric_threshold_executor.ts    |  4 +-
 x-pack/plugins/observability/server/plugin.ts |  2 +
 5 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/packages/kbn-rule-data-utils/src/rule_types/o11y_rules.ts b/packages/kbn-rule-data-utils/src/rule_types/o11y_rules.ts
index b88e0f708a980..844c8e994947c 100644
--- a/packages/kbn-rule-data-utils/src/rule_types/o11y_rules.ts
+++ b/packages/kbn-rule-data-utils/src/rule_types/o11y_rules.ts
@@ -8,6 +8,8 @@
 
 export const OBSERVABILITY_THRESHOLD_RULE_TYPE_ID = 'observability.rules.custom_threshold';
 
+export const METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID = 'metrics.alert.inventory.threshold';
+
 export enum ApmRuleType {
   ErrorCount = 'apm.error_rate', // ErrorRate was renamed to ErrorCount but the key is kept as `error_rate` for backwards-compat.
   TransactionErrorRate = 'apm.transaction_error_rate',
diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx
index 41fdc1b6f7d30..d3f564818f03e 100644
--- a/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx
+++ b/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx
@@ -41,6 +41,7 @@ export const AlertFlyout = ({ options, nodeType, filter, visible, setVisible }:
           filter,
           customMetrics,
         },
+        useRuleProducer: true,
       }),
     // eslint-disable-next-line react-hooks/exhaustive-deps
     [triggersActionsUI, visible]
diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.test.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.test.ts
index 29c4bfe0a159a..bd6350ba59dd0 100644
--- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.test.ts
+++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.test.ts
@@ -90,7 +90,9 @@ const mockOptions = {
 };
 
 const setEvaluationResults = (response: Record<string, ConditionResult>) => {
-  jest.requireMock('./evaluate_condition').evaluateCondition.mockImplementation(() => response);
+  return jest
+    .requireMock('./evaluate_condition')
+    .evaluateCondition.mockImplementation(() => response);
 };
 const createMockStaticConfiguration = (sources: any) => ({
   alerting: {
@@ -192,7 +194,7 @@ const baseCriterion = {
 describe('The inventory threshold alert type', () => {
   describe('querying with Hosts and rule tags', () => {
     afterAll(() => clearInstances());
-    const execute = (comparator: Comparator, threshold: number[], state?: any) =>
+    const execute = (comparator: Comparator, threshold: number[], options?: any) =>
       executor({
         ...mockOptions,
         services,
@@ -206,11 +208,12 @@ describe('The inventory threshold alert type', () => {
             },
           ],
         },
-        state: state ?? {},
+        state: {},
         rule: {
           ...mockOptions.rule,
           tags: ['ruleTag1', 'ruleTag2'],
         },
+        ...options,
       });
 
     const instanceIdA = 'host-01';
@@ -305,5 +308,39 @@ describe('The inventory threshold alert type', () => {
       expect(mostRecentAction(instanceIdA).action.tags).toStrictEqual(['ruleTag1', 'ruleTag2']);
       expect(mostRecentAction(instanceIdB).action.tags).toStrictEqual(['ruleTag1', 'ruleTag2']);
     });
+
+    test('should call evaluation query with delay', async () => {
+      const mockedStartDate = new Date('2023-11-06T10:04:26.465Z');
+      const mockedEndDate = new Date('2023-11-06T10:05:26.465Z');
+      const options = {
+        getTimeRange: () => {
+          return { dateStart: mockedStartDate, dateEnd: mockedEndDate };
+        },
+      };
+      const evaluateConditionFn = setEvaluationResults({
+        'host-01': {
+          ...baseCriterion,
+          metric: 'count',
+          timeSize: 1,
+          timeUnit: 'm',
+          threshold: [0.75],
+          comparator: Comparator.GT,
+          shouldFire: true,
+          shouldWarn: false,
+          currentValue: 1.0,
+          isNoData: false,
+          isError: false,
+          context: {
+            cloud: undefined,
+          },
+        },
+      });
+      await execute(Comparator.GT, [0.75], options);
+      expect(evaluateConditionFn).toHaveBeenCalledWith(
+        expect.objectContaining({
+          executionTimestamp: mockedEndDate,
+        })
+      );
+    });
   });
 });
diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts
index 7e3315510feec..ce2f66645bf1d 100644
--- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts
+++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts
@@ -83,6 +83,7 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) =
       spaceId,
       startedAt,
       rule: { id: ruleId, tags: ruleTags },
+      getTimeRange,
     }) => {
       const startTime = Date.now();
 
@@ -175,13 +176,14 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) =
         );
 
       const compositeSize = libs.configuration.alerting.inventory_threshold.group_by_page_size;
+      const { dateEnd } = getTimeRange();
       const results = await Promise.all(
         criteria.map((condition) =>
           evaluateCondition({
             compositeSize,
             condition,
             esClient,
-            executionTimestamp: startedAt,
+            executionTimestamp: new Date(dateEnd),
             filterQuery,
             logger,
             logQueryFields,
diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts
index 4e2c7a57ead13..17476d335f48f 100644
--- a/x-pack/plugins/observability/server/plugin.ts
+++ b/x-pack/plugins/observability/server/plugin.ts
@@ -29,6 +29,7 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server';
 import {
   ApmRuleType,
   ES_QUERY_ID,
+  METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID,
   OBSERVABILITY_THRESHOLD_RULE_TYPE_ID,
 } from '@kbn/rule-data-utils';
 import { ObservabilityConfig } from '.';
@@ -81,6 +82,7 @@ const o11yRuleTypes = [
   SLO_BURN_RATE_RULE_TYPE_ID,
   OBSERVABILITY_THRESHOLD_RULE_TYPE_ID,
   ES_QUERY_ID,
+  METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID,
   ...Object.values(ApmRuleType),
 ];
 

From 877cc130e3f61fec545e9531009e27c88138764d Mon Sep 17 00:00:00 2001
From: Carlos Crespo <crespocarlos@users.noreply.github.com>
Date: Thu, 9 Nov 2023 14:19:51 +0100
Subject: [PATCH 050/147] [ObsUX] Performance adjustments on the Inventory UI
 (#170526)

closes: https://github.com/elastic/kibana/issues/170508

## Summary

This PR makes a small adjustment in the inventory UI, optimizing the
usage of the Snapshot API.

Basically, 2 things were changed:

1 - AbortController, to interrupt ongoing any requests when new ones are
made
2 - Stop requesting time-series data in the waffle map view (table view
and history section still need it)


### `/snapshot` with time-series data
<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/562aaaf0-299d-4170-87e2-0e92b309f50c">

<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/29d68239-17e6-416f-be7b-c5928cf1545c">


<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/619473b8-983a-4ba7-a279-b44b5f2bbfbd">

### `/snapshot` without time-series data
<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/4f25caf9-08cd-4388-8a54-7916a3c70786">

<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/5719d012-57ce-42aa-a186-f65827b487e0">

<img width="1400" alt="image"
src="https://github.com/elastic/kibana/assets/2767137/2df40aed-8a5f-4428-af85-34997789f62a">





### How to test
- Navigate to `Infrastructure`
- Inspect the `/snapshot` request to see if time-series data was
returned
- it should be returned when: opening the History accordion and loading
table view
- it shouldn't be returned when: hovering on a waffle map item, loading
waffle map view
- Ongoing requests must be aborted when new ones are made

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../infra/public/hooks/use_http_request.tsx   |   3 +-
 .../components/snapshot_container.tsx         |  30 +++--
 .../conditional_tooltip.test.tsx.snap         |   2 +-
 .../waffle/conditional_tooltip.test.tsx       |  29 ++--
 .../components/waffle/conditional_tooltip.tsx | 105 +++++++++------
 .../inventory_view/hooks/use_timeline.ts      |  55 +++-----
 .../framework/kibana_framework_adapter.ts     | 126 ++++++++++++++----
 .../server/lib/cancel_request_on_abort.ts     |  22 +++
 .../infra/server/lib/create_search_client.ts  |   9 +-
 .../infra/server/routes/snapshot/index.ts     |   2 +-
 .../test/functional/apps/infra/home_page.ts   |  32 ++---
 11 files changed, 255 insertions(+), 160 deletions(-)
 create mode 100644 x-pack/plugins/infra/server/lib/cancel_request_on_abort.ts

diff --git a/x-pack/plugins/infra/public/hooks/use_http_request.tsx b/x-pack/plugins/infra/public/hooks/use_http_request.tsx
index 7e2b6f03ab916..8196677004714 100644
--- a/x-pack/plugins/infra/public/hooks/use_http_request.tsx
+++ b/x-pack/plugins/infra/public/hooks/use_http_request.tsx
@@ -7,8 +7,7 @@
 
 import React, { useCallback, useEffect, useRef, useState } from 'react';
 import { i18n } from '@kbn/i18n';
-import { HttpHandler } from '@kbn/core/public';
-import { ToastInput } from '@kbn/core/public';
+import { HttpHandler, ToastInput } from '@kbn/core/public';
 import { useKibana } from '@kbn/kibana-react-plugin/public';
 import { AbortError } from '@kbn/kibana-utils-plugin/common';
 import { useTrackedPromise, CanceledPromiseError } from '../utils/use_tracked_promise';
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/snapshot_container.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/snapshot_container.tsx
index b22bcb59a3c12..40b41ac3a1d5e 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/snapshot_container.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/snapshot_container.tsx
@@ -25,7 +25,7 @@ interface Props {
 }
 export const SnapshotContainer = ({ render }: Props) => {
   const { sourceId } = useSourceContext();
-  const { metric, groupBy, nodeType, accountId, region } = useWaffleOptionsContext();
+  const { metric, groupBy, nodeType, accountId, region, view } = useWaffleOptionsContext();
   const { currentTime } = useWaffleTimeContext();
   const { filterQueryAsJson } = useWaffleFiltersContext();
   const {
@@ -33,17 +33,23 @@ export const SnapshotContainer = ({ render }: Props) => {
     nodes,
     reload,
     interval = '60s',
-  } = useSnapshot({
-    filterQuery: filterQueryAsJson,
-    metrics: [metric],
-    groupBy,
-    nodeType,
-    sourceId,
-    currentTime,
-    accountId,
-    region,
-    sendRequestImmediately: false,
-  });
+  } = useSnapshot(
+    {
+      filterQuery: filterQueryAsJson,
+      metrics: [metric],
+      groupBy,
+      nodeType,
+      sourceId,
+      currentTime,
+      accountId,
+      region,
+      sendRequestImmediately: false,
+      includeTimeseries: view === 'table',
+    },
+    {
+      abortable: true,
+    }
+  );
 
   return render({ loading, nodes, reload, interval });
 };
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/__snapshots__/conditional_tooltip.test.tsx.snap b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/__snapshots__/conditional_tooltip.test.tsx.snap
index 02c8f6aa6ed3b..f3368be815f1b 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/__snapshots__/conditional_tooltip.test.tsx.snap
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/__snapshots__/conditional_tooltip.test.tsx.snap
@@ -6,7 +6,7 @@ exports[`ConditionalToolTip renders correctly 1`] = `
   style="min-width: 200px;"
 >
   <div
-    style="border-bottom: 1px solid #98a2b3; padding-bottom: 4px; margin-bottom: 4px;"
+    style="border-bottom: 1px solid #D3DAE6; border-bottom-color: #98A2B3; padding-bottom: 4px; margin-bottom: 4px;"
   >
     host-01
   </div>
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
index 66b8ff975ba30..f023cc1c5760c 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.test.tsx
@@ -7,7 +7,6 @@
 
 import React from 'react';
 import { mount } from 'enzyme';
-import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 import { ConditionalToolTip } from './conditional_tooltip';
 import { SnapshotNodeResponse } from '../../../../../../common/http_api';
 import { InfraWaffleMapNode } from '../../../../../lib/lib';
@@ -98,23 +97,25 @@ describe('ConditionalToolTip', () => {
       },
     ];
     const wrapper = mount(
-      <EuiThemeProvider darkMode={false}>
-        <ConditionalToolTip currentTime={currentTime} node={NODE} nodeType="host" />
-      </EuiThemeProvider>
+      <ConditionalToolTip currentTime={currentTime} node={NODE} nodeType="host" />
     );
     const tooltip = wrapper.find('[data-test-subj~="conditionalTooltipContent-host-01"]');
     expect(tooltip.render()).toMatchSnapshot();
 
-    expect(mockedUseSnapshot).toBeCalledWith({
-      filterQuery: expectedQuery,
-      metrics: expectedMetrics,
-      groupBy: [],
-      nodeType: 'host',
-      sourceId: 'default',
-      currentTime,
-      accountId: '',
-      region: '',
-    } as UseSnapshotRequest);
+    expect(mockedUseSnapshot).toBeCalledWith(
+      {
+        filterQuery: expectedQuery,
+        metrics: expectedMetrics,
+        groupBy: [],
+        includeTimeseries: false,
+        nodeType: 'host',
+        sourceId: 'default',
+        currentTime,
+        accountId: '',
+        region: '',
+      } as UseSnapshotRequest,
+      { abortable: true }
+    );
   });
 });
 
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
index 4d82f7b7a39c8..7bbb696103cd6 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx
@@ -5,10 +5,9 @@
  * 2.0.
  */
 
-import React from 'react';
-import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import React, { useRef } from 'react';
+import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner, useEuiTheme } from '@elastic/eui';
 import { first } from 'lodash';
-import { withTheme, EuiTheme } from '@kbn/kibana-react-plugin/common';
 import { findInventoryModel } from '@kbn/metrics-data-access-plugin/common';
 import {
   InventoryItemType,
@@ -29,10 +28,13 @@ export interface Props {
   currentTime: number;
   node: InfraWaffleMapNode;
   nodeType: InventoryItemType;
-  theme: EuiTheme | undefined;
 }
-export const ConditionalToolTip = withTheme(({ theme, node, nodeType, currentTime }: Props) => {
+
+export const ConditionalToolTip = ({ node, nodeType, currentTime }: Props) => {
+  const { euiTheme } = useEuiTheme();
   const { sourceId } = useSourceContext();
+  // prevents auto-refresh from cancelling ongoing requests to fetch the data for the tooltip
+  const requestCurrentTime = useRef(currentTime);
   const model = findInventoryModel(nodeType);
   const { customMetrics } = useWaffleOptionsContext();
   const requestMetrics = model.tooltipMetrics
@@ -50,16 +52,22 @@ export const ConditionalToolTip = withTheme(({ theme, node, nodeType, currentTim
       },
     },
   });
-  const { nodes } = useSnapshot({
-    filterQuery: query,
-    metrics: requestMetrics,
-    groupBy: [],
-    nodeType,
-    sourceId,
-    currentTime,
-    accountId: '',
-    region: '',
-  });
+  const { nodes, loading } = useSnapshot(
+    {
+      filterQuery: query,
+      metrics: requestMetrics,
+      groupBy: [],
+      nodeType,
+      sourceId,
+      currentTime: requestCurrentTime.current,
+      accountId: '',
+      region: '',
+      includeTimeseries: false,
+    },
+    {
+      abortable: true,
+    }
+  );
 
   const dataNode = first(nodes);
   const metrics = (dataNode && dataNode.metrics) || [];
@@ -67,38 +75,47 @@ export const ConditionalToolTip = withTheme(({ theme, node, nodeType, currentTim
     <div style={{ minWidth: 200 }} data-test-subj={`conditionalTooltipContent-${node.name}`}>
       <div
         style={{
-          borderBottom: `1px solid ${theme?.eui.euiColorMediumShade}`,
-          paddingBottom: theme?.eui.euiSizeXS,
-          marginBottom: theme?.eui.euiSizeXS,
+          borderBottom: `${euiTheme.border.thin}`,
+          borderBottomColor: `${euiTheme.colors.mediumShade}`,
+          paddingBottom: euiTheme.size.xs,
+          marginBottom: euiTheme.size.xs,
         }}
       >
         {node.name}
       </div>
-      {metrics.map((metric) => {
-        const metricName = SnapshotMetricTypeRT.is(metric.name) ? metric.name : 'custom';
-        const name = SNAPSHOT_METRIC_TRANSLATIONS[metricName] || metricName;
-        // if custom metric, find field and label from waffleOptionsContext result
-        // because useSnapshot does not return it
-        const customMetric =
-          name === 'custom' ? customMetrics.find((item) => item.id === metric.name) : null;
-        const formatter = customMetric
-          ? createFormatterForMetric(customMetric)
-          : createInventoryMetricFormatter({ type: metricName });
-        return (
-          <EuiFlexGroup gutterSize="s" key={metric.name}>
-            <EuiFlexItem
-              grow={1}
-              className="eui-textTruncate eui-displayBlock"
-              data-test-subj="conditionalTooltipContent-metric"
-            >
-              {customMetric ? getCustomMetricLabel(customMetric) : name}
-            </EuiFlexItem>
-            <EuiFlexItem grow={false} data-test-subj="conditionalTooltipContent-value">
-              {(metric.value && formatter(metric.value)) || '-'}
-            </EuiFlexItem>
-          </EuiFlexGroup>
-        );
-      })}
+      {loading ? (
+        <EuiFlexGroup alignItems="center" justifyContent="center">
+          <EuiFlexItem grow={false} data-test-subj="conditionalTooltipContent-loading">
+            <EuiLoadingSpinner size="s" />
+          </EuiFlexItem>
+        </EuiFlexGroup>
+      ) : (
+        metrics.map((metric) => {
+          const metricName = SnapshotMetricTypeRT.is(metric.name) ? metric.name : 'custom';
+          const name = SNAPSHOT_METRIC_TRANSLATIONS[metricName] || metricName;
+          // if custom metric, find field and label from waffleOptionsContext result
+          // because useSnapshot does not return it
+          const customMetric =
+            name === 'custom' ? customMetrics.find((item) => item.id === metric.name) : null;
+          const formatter = customMetric
+            ? createFormatterForMetric(customMetric)
+            : createInventoryMetricFormatter({ type: metricName });
+          return (
+            <EuiFlexGroup gutterSize="s" key={metric.name}>
+              <EuiFlexItem
+                grow={1}
+                className="eui-textTruncate eui-displayBlock"
+                data-test-subj="conditionalTooltipContent-metric"
+              >
+                {customMetric ? getCustomMetricLabel(customMetric) : name}
+              </EuiFlexItem>
+              <EuiFlexItem grow={false} data-test-subj="conditionalTooltipContent-value">
+                {(metric.value && formatter(metric.value)) || '-'}
+              </EuiFlexItem>
+            </EuiFlexGroup>
+          );
+        })
+      )}
     </div>
   );
-});
+};
diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts
index d603972743e0a..f949ee5f3a87b 100644
--- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts
+++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_timeline.ts
@@ -5,21 +5,12 @@
  * 2.0.
  */
 
-import { fold } from 'fp-ts/lib/Either';
-import { identity } from 'fp-ts/lib/function';
-import { pipe } from 'fp-ts/lib/pipeable';
 import { first } from 'lodash';
-import { useEffect, useMemo, useCallback } from 'react';
+import { useEffect, useMemo } from 'react';
 import type { InventoryItemType, SnapshotMetricType } from '@kbn/metrics-data-access-plugin/common';
 import { getIntervalInSeconds } from '../../../../../common/utils/get_interval_in_seconds';
-import { throwErrors, createPlainError } from '../../../../../common/runtime_types';
-import { useHTTPRequest } from '../../../../hooks/use_http_request';
-import {
-  SnapshotNodeResponseRT,
-  SnapshotNodeResponse,
-  SnapshotRequest,
-  InfraTimerangeInput,
-} from '../../../../../common/http_api/snapshot_api';
+import { InfraTimerangeInput } from '../../../../../common/http_api/snapshot_api';
+import { useSnapshot } from './use_snaphot';
 
 const ONE_MINUTE = 60;
 const ONE_HOUR = ONE_MINUTE * 60;
@@ -64,13 +55,6 @@ export function useTimeline(
   interval: string | undefined,
   shouldReload: boolean
 ) {
-  const decodeResponse = (response: any) => {
-    return pipe(
-      SnapshotNodeResponseRT.decode(response),
-      fold(throwErrors(createPlainError), identity)
-    );
-  };
-
   const displayInterval = useMemo(() => getDisplayInterval(interval), [interval]);
 
   const timeLengthResult = useMemo(
@@ -88,12 +72,11 @@ export function useTimeline(
     forceInterval: true,
   };
 
-  const { error, loading, response, makeRequest } = useHTTPRequest<SnapshotNodeResponse>(
-    '/api/metrics/snapshot',
-    'POST',
-    JSON.stringify({
+  const { nodes, error, loading, reload } = useSnapshot(
+    {
       metrics,
       groupBy: null,
+      currentTime,
       nodeType,
       timerange,
       filterQuery,
@@ -101,33 +84,27 @@ export function useTimeline(
       accountId,
       region,
       includeTimeseries: true,
-    } as SnapshotRequest),
-    decodeResponse
+      sendRequestImmediately: false,
+    },
+    {
+      abortable: true,
+    }
   );
 
-  const loadData = useCallback(() => {
-    if (shouldReload) return makeRequest();
-    return Promise.resolve();
-  }, [makeRequest, shouldReload]);
-
   useEffect(() => {
     (async () => {
-      if (timeLength) {
-        await loadData();
-      }
+      if (shouldReload) return reload();
     })();
-  }, [loadData, timeLength]);
+  }, [reload, shouldReload]);
 
-  const timeseries = response
-    ? first(response.nodes.map((node) => first(node.metrics)?.timeseries))
-    : null;
+  const timeseries = nodes ? first(nodes.map((node) => first(node.metrics)?.timeseries)) : null;
 
   return {
-    error: (error && error.message) || null,
+    error: error || null,
     loading: !interval ? true : loading,
     timeseries,
     startTime,
     endTime,
-    reload: makeRequest,
+    reload,
   };
 }
diff --git a/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts b/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts
index 9780a7811b824..9a593af54a010 100644
--- a/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts
+++ b/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts
@@ -26,6 +26,7 @@ import {
   InfraServerPluginStartDeps,
   InfraVersionedRouteConfig,
 } from './adapter_types';
+import { subscribeToAborted$ } from '../../cancel_request_on_abort';
 
 interface FrozenIndexParams {
   ignore_throttled?: boolean;
@@ -115,42 +116,50 @@ export class KibanaFramework {
   callWithRequest<Hit = {}, Aggregation = undefined>(
     requestContext: InfraPluginRequestHandlerContext,
     endpoint: 'search',
-    options?: CallWithRequestParams
+    options?: CallWithRequestParams,
+    request?: KibanaRequest
   ): Promise<InfraDatabaseSearchResponse<Hit, Aggregation>>;
   callWithRequest<Hit = {}, Aggregation = undefined>(
     requestContext: InfraPluginRequestHandlerContext,
     endpoint: 'msearch',
-    options?: CallWithRequestParams
+    options?: CallWithRequestParams,
+    request?: KibanaRequest
   ): Promise<InfraDatabaseMultiResponse<Hit, Aggregation>>;
   callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     endpoint: 'indices.existsAlias',
-    options?: CallWithRequestParams
+    options?: CallWithRequestParams,
+    request?: KibanaRequest
   ): Promise<boolean>;
   callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     method: 'indices.getAlias',
-    options?: object
+    options?: object,
+    request?: KibanaRequest
   ): Promise<InfraDatabaseGetIndicesAliasResponse>;
   callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     method: 'indices.get' | 'ml.getBuckets',
-    options?: object
+    options?: object,
+    request?: KibanaRequest
   ): Promise<InfraDatabaseGetIndicesResponse>;
   callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     method: 'transport.request',
-    options?: CallWithRequestParams
+    options?: CallWithRequestParams,
+    request?: KibanaRequest
   ): Promise<unknown>;
   callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     endpoint: string,
-    options?: CallWithRequestParams
+    options?: CallWithRequestParams,
+    request?: KibanaRequest
   ): Promise<InfraDatabaseSearchResponse>;
   public async callWithRequest(
     requestContext: InfraPluginRequestHandlerContext,
     endpoint: string,
-    params: CallWithRequestParams
+    params: CallWithRequestParams,
+    request?: KibanaRequest
   ) {
     const { elasticsearch, uiSettings } = await requestContext.core;
 
@@ -164,6 +173,16 @@ export class KibanaFramework {
       }
     }
 
+    function callWrapper<T>({
+      makeRequestWithSignal,
+    }: {
+      makeRequestWithSignal: (signal: AbortSignal) => Promise<T>;
+    }) {
+      const controller = new AbortController();
+      const promise = makeRequestWithSignal(controller.signal);
+      return request ? subscribeToAborted$(promise, request, controller) : promise;
+    }
+
     // Only set the "ignore_throttled" value (to false) if the Kibana setting
     // for "search:includeFrozen" is true (i.e. don't ignore throttled indices, a triple negative!)
     // More information:
@@ -179,41 +198,90 @@ export class KibanaFramework {
     let apiResult;
     switch (endpoint) {
       case 'search':
-        apiResult = elasticsearch.client.asCurrentUser.search({
-          ...params,
-          ...frozenIndicesParams,
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.search(
+              {
+                ...params,
+                ...frozenIndicesParams,
+              } as estypes.MsearchRequest,
+              { signal }
+            ),
         });
+
         break;
       case 'msearch':
-        apiResult = elasticsearch.client.asCurrentUser.msearch({
-          ...params,
-          ...frozenIndicesParams,
-        } as estypes.MsearchRequest);
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.msearch(
+              {
+                ...params,
+                ...frozenIndicesParams,
+              } as estypes.MsearchRequest,
+              { signal }
+            ),
+        });
+
         break;
       case 'indices.existsAlias':
-        apiResult = elasticsearch.client.asCurrentUser.indices.existsAlias({
-          ...params,
-        } as estypes.IndicesExistsAliasRequest);
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.indices.existsAlias(
+              {
+                ...params,
+              } as estypes.IndicesExistsAliasRequest,
+              { signal }
+            ),
+        });
+
         break;
       case 'indices.getAlias':
-        apiResult = elasticsearch.client.asCurrentUser.indices.getAlias({
-          ...params,
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.indices.getAlias(
+              {
+                ...params,
+              },
+              { signal }
+            ),
         });
+
         break;
       case 'indices.get':
-        apiResult = elasticsearch.client.asCurrentUser.indices.get({
-          ...params,
-        } as estypes.IndicesGetRequest);
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.indices.get(
+              {
+                ...params,
+              } as estypes.IndicesGetRequest,
+              { signal }
+            ),
+        });
+
         break;
       case 'transport.request':
-        apiResult = elasticsearch.client.asCurrentUser.transport.request({
-          ...params,
-        } as TransportRequestParams);
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.transport.request(
+              {
+                ...params,
+              } as TransportRequestParams,
+              { signal }
+            ),
+        });
+
         break;
       case 'ml.getBuckets':
-        apiResult = elasticsearch.client.asCurrentUser.ml.getBuckets({
-          ...params,
-        } as estypes.MlGetBucketsRequest);
+        apiResult = callWrapper({
+          makeRequestWithSignal: (signal) =>
+            elasticsearch.client.asCurrentUser.ml.getBuckets(
+              {
+                ...params,
+              } as estypes.MlGetBucketsRequest,
+              { signal }
+            ),
+        });
+
         break;
     }
     return apiResult ? await apiResult : undefined;
diff --git a/x-pack/plugins/infra/server/lib/cancel_request_on_abort.ts b/x-pack/plugins/infra/server/lib/cancel_request_on_abort.ts
new file mode 100644
index 0000000000000..631af6991bd09
--- /dev/null
+++ b/x-pack/plugins/infra/server/lib/cancel_request_on_abort.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { KibanaRequest } from '@kbn/core/server';
+
+export function subscribeToAborted$<T extends Promise<any>>(
+  promise: T,
+  request: KibanaRequest,
+  controller: AbortController
+): T {
+  const subscription = request.events.aborted$.subscribe(() => {
+    controller.abort();
+  });
+
+  return promise.finally(() => {
+    subscription.unsubscribe();
+  }) as T;
+}
diff --git a/x-pack/plugins/infra/server/lib/create_search_client.ts b/x-pack/plugins/infra/server/lib/create_search_client.ts
index 6688ae1af1afc..00f89fb3c8e8b 100644
--- a/x-pack/plugins/infra/server/lib/create_search_client.ts
+++ b/x-pack/plugins/infra/server/lib/create_search_client.ts
@@ -5,13 +5,18 @@
  * 2.0.
  */
 
+import type { KibanaRequest } from '@kbn/core/server';
 import type { InfraPluginRequestHandlerContext } from '../types';
 import { CallWithRequestParams, InfraDatabaseSearchResponse } from './adapters/framework';
 import { KibanaFramework } from './adapters/framework/kibana_framework_adapter';
 
 export const createSearchClient =
-  (requestContext: InfraPluginRequestHandlerContext, framework: KibanaFramework) =>
+  (
+    requestContext: InfraPluginRequestHandlerContext,
+    framework: KibanaFramework,
+    request?: KibanaRequest
+  ) =>
   <Hit = {}, Aggregation = undefined>(
     opts: CallWithRequestParams
   ): Promise<InfraDatabaseSearchResponse<Hit, Aggregation>> =>
-    framework.callWithRequest(requestContext, 'search', opts);
+    framework.callWithRequest(requestContext, 'search', opts, request);
diff --git a/x-pack/plugins/infra/server/routes/snapshot/index.ts b/x-pack/plugins/infra/server/routes/snapshot/index.ts
index 085be4584e2a7..ae1f02a04ca93 100644
--- a/x-pack/plugins/infra/server/routes/snapshot/index.ts
+++ b/x-pack/plugins/infra/server/routes/snapshot/index.ts
@@ -53,7 +53,7 @@ export const initSnapshotRoute = (libs: InfraBackendLibs) => {
         );
 
       UsageCollector.countNode(snapshotRequest.nodeType);
-      const client = createSearchClient(requestContext, framework);
+      const client = createSearchClient(requestContext, framework, request);
 
       try {
         const snapshotResponse = await getNodes(
diff --git a/x-pack/test/functional/apps/infra/home_page.ts b/x-pack/test/functional/apps/infra/home_page.ts
index 8c0cc688cb582..27cc61ca0c273 100644
--- a/x-pack/test/functional/apps/infra/home_page.ts
+++ b/x-pack/test/functional/apps/infra/home_page.ts
@@ -238,12 +238,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
         await retry.try(async () => {
           const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
           expect(nodesWithValue).to.eql([
-            { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
-            { name: 'demo-stack-mysql-01', value: 1.2, color: '#82a7cd' },
-            { name: 'demo-stack-nginx-01', value: 1.1, color: '#93b1d3' },
-            { name: 'demo-stack-redis-01', value: 1, color: '#a2bcd9' },
+            { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
+            { name: 'demo-stack-mysql-01', value: 1, color: '#93b1d3' },
+            { name: 'demo-stack-nginx-01', value: 0.9, color: '#b2c7df' },
+            { name: 'demo-stack-redis-01', value: 0.8, color: '#b2c7df' },
             { name: 'demo-stack-haproxy-01', value: 0.8, color: '#c2d2e6' },
-            { name: 'demo-stack-client-01', value: 0.6, color: '#f0f4f9' },
+            { name: 'demo-stack-client-01', value: 0.5, color: '#f0f4f9' },
           ]);
         });
       });
@@ -256,12 +256,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
         await retry.try(async () => {
           const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
           expect(nodesWithValue).to.eql([
-            { name: 'demo-stack-client-01', value: 0.6, color: '#f0f4f9' },
+            { name: 'demo-stack-client-01', value: 0.5, color: '#f0f4f9' },
             { name: 'demo-stack-haproxy-01', value: 0.8, color: '#c2d2e6' },
-            { name: 'demo-stack-redis-01', value: 1, color: '#a2bcd9' },
-            { name: 'demo-stack-nginx-01', value: 1.1, color: '#93b1d3' },
-            { name: 'demo-stack-mysql-01', value: 1.2, color: '#82a7cd' },
-            { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
+            { name: 'demo-stack-redis-01', value: 0.8, color: '#b2c7df' },
+            { name: 'demo-stack-nginx-01', value: 0.9, color: '#b2c7df' },
+            { name: 'demo-stack-mysql-01', value: 1, color: '#93b1d3' },
+            { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
           ]);
         });
       });
@@ -282,7 +282,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
         await retry.try(async () => {
           const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
           expect(nodesWithValue).to.eql([
-            { name: 'demo-stack-apache-01', value: 1.4, color: '#6092c0' },
+            { name: 'demo-stack-apache-01', value: 1.2, color: '#6092c0' },
           ]);
         });
         await pageObjects.infraHome.clearSearchTerm();
@@ -295,12 +295,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
         await retry.try(async () => {
           const nodesWithValue = await pageObjects.infraHome.getNodesWithValues();
           expect(nodesWithValue).to.eql([
-            { name: 'demo-stack-client-01', value: 0.6, color: '#6092c0' },
+            { name: 'demo-stack-client-01', value: 0.5, color: '#6092c0' },
             { name: 'demo-stack-haproxy-01', value: 0.8, color: '#b5c9df' },
-            { name: 'demo-stack-redis-01', value: 1, color: '#f1d9b9' },
-            { name: 'demo-stack-nginx-01', value: 1.1, color: '#eec096' },
-            { name: 'demo-stack-mysql-01', value: 1.2, color: '#eba47a' },
-            { name: 'demo-stack-apache-01', value: 1.4, color: '#e7664c' },
+            { name: 'demo-stack-redis-01', value: 0.8, color: '#d0dcea' },
+            { name: 'demo-stack-nginx-01', value: 0.9, color: '#d0dcea' },
+            { name: 'demo-stack-mysql-01', value: 1, color: '#eec096' },
+            { name: 'demo-stack-apache-01', value: 1.2, color: '#e7664c' },
           ]);
         });
       });

From 629ee090c37493acf5e84522873cdf654596701e Mon Sep 17 00:00:00 2001
From: Maxim Kholod <maxim.kholod@elastic.co>
Date: Thu, 9 Nov 2023 14:28:15 +0100
Subject: [PATCH 051/147] [Cloud Security] add a tooltip for CIS logo (#170880)

## Summary

Part of:
- https://github.com/elastic/security-team/issues/7994
---
 .../pages/configurations/findings_flyout/findings_flyout.tsx | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx
index 524e893092e53..a6bb3b5bc08e3 100644
--- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx
+++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx
@@ -22,6 +22,7 @@ import {
   EuiIcon,
   EuiPagination,
   EuiFlyoutFooter,
+  EuiToolTip,
 } from '@elastic/eui';
 import { assertNever } from '@kbn/std';
 import { i18n } from '@kbn/i18n';
@@ -98,7 +99,9 @@ export const CisKubernetesIcons = ({
 }) => (
   <EuiFlexGroup gutterSize="s" alignItems="center">
     <EuiFlexItem grow={false}>
-      <EuiIcon type={cisLogoIcon} size="xxl" />
+      <EuiToolTip content="Center for Internet Security">
+        <EuiIcon type={cisLogoIcon} size="xxl" />
+      </EuiToolTip>
     </EuiFlexItem>
     <EuiFlexItem grow={false}>
       <CISBenchmarkIcon type={benchmarkId} name={benchmarkName} />

From eeaf815d23c8836ae9605e2e5c88bdfbd0aeb12a Mon Sep 17 00:00:00 2001
From: Wafaa Nasr <wafaa.nasr@elastic.co>
Date: Thu, 9 Nov 2023 14:52:45 +0100
Subject: [PATCH 052/147] [Security Solution][API testing] Move and
 restructures Risk Engine tests (#170530)

## Summary

Following the initial work in this
https://github.com/elastic/kibana/pull/166755
- Addresses part of https://github.com/elastic/kibana/issues/151902 for
Entity Analytics/Risk Engine
- Introduced new folders called `entity_analytics/risk_engine` under
`security_solution_api_integration`
- Moved the utility files associated with risk_engine to the new
directory `security_solution_api_integration`. Files that were not
actively used in the previous folder were moved, while any duplicate
files remained in their original positions.
- Updated the CodeOwner file for the newly moved tests
- Old / new groups details and execution time
[document](https://docs.google.com/document/d/1CRFfDWMzw3ob03euWIvT4-IoiLXjoiPWI8mTBqP4Zks/edit)


| Action | File | New Path if moved |
|--------|------|----------|
| Moved|
group10/risk_engine/init_and_status_apis|/entity_analytics/default_license/risk_engine/init_and_status_apis.ts
|
| Moved|
group10/risk_engine/risk_score_calculation|/entity_analytics/default_license/risk_engine/risk_score_calculation.ts
|
| Moved|
group10/risk_engine/risk_score_preview|/entity_analytics/default_license/risk_engine/risk_score_preview.ts
|
| Moved|
group10/risk_engine/risk_scoring_task_execution|/entity_analytics/default_license/risk_engine/risk_scoring_task_execution.ts
|
| Moved|
group10/risk_engine/telemetry_usage|/entity_analytics/default_license/risk_engine/telemetry_usage.ts
|
| Moved| group10/risk_engine/utils|entity_analytics/utils/risk_engine.ts
|
| Moved| utils/get_stats|entity_analytics/utils/get_risk_engine_stats.ts
|

Tests skipped on main:


https://github.com/elastic/kibana/blob/main/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts#L363

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Nikita Khristinin <nkhristinin@gmail.com>
---
 .buildkite/ftr_configs.yml                    |   3 +
 .github/CODEOWNERS                            |   2 +-
 .../security_and_spaces/group10/index.ts      |   5 -
 .../README.md                                 | 102 +--
 .../ftr_provider_context.d.ts                 |   5 +-
 .../package.json                              |   9 +-
 .../utils/alerts/get_alerts_by_ids.ts         |   7 +-
 .../alerts/wait_for_alerts_to_be_present.ts   |   5 +-
 .../utils/data_generator/README.md            | 606 ++++++++++++++++++
 .../data_generator/data_generator_factory.ts  |  75 +++
 .../utils/data_generator/enhance_document.ts  |  29 +
 .../utils/data_generator/enhance_documents.ts |  32 +
 .../data_generator/generate_documents.ts      |  39 ++
 .../get_kql_query_from_documents_list.ts      |  41 ++
 .../utils/data_generator/get_timestamp.ts     |  16 +
 .../utils/data_generator/index.ts             |  14 +
 .../utils/data_generator/index_documents.ts   |  39 ++
 .../utils/data_generator/types.ts             |  10 +
 .../detections_response/utils/index.ts        |   3 +
 .../risk_engine/configs/ess.config.ts         |  21 +
 .../risk_engine/configs/serverless.config.ts  |  15 +
 .../default_license/risk_engine/index.ts      |  19 +
 .../risk_engine/init_and_status_apis.ts       |   8 +-
 .../risk_engine/risk_score_calculation.ts     |  17 +-
 .../risk_engine/risk_score_preview.ts         |  20 +-
 .../ftr_provider_context_with_spaces.d.ts     |  16 +
 .../risk_scoring_task/task_execution.ts}      |  93 +--
 .../task_execution_nondefault_spaces.ts       | 133 ++++
 .../risk_engine/telemetry_usage.ts            |  17 +-
 .../utils/get_risk_engine_stats.ts            |  73 +++
 .../entity_analytics/utils/index.ts           |   8 +
 .../entity_analytics/utils/risk_engine.ts}    |  24 +-
 .../tsconfig.json                             |   1 +
 33 files changed, 1335 insertions(+), 172 deletions(-)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/README.md
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/data_generator_factory.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_document.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_documents.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/generate_documents.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_kql_query_from_documents_list.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_timestamp.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index_documents.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/types.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/index.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10 => security_solution_api_integration/test_suites/entity_analytics/default_license}/risk_engine/init_and_status_apis.ts (98%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10 => security_solution_api_integration/test_suites/entity_analytics/default_license}/risk_engine/risk_score_calculation.ts (95%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10 => security_solution_api_integration/test_suites/entity_analytics/default_license}/risk_engine/risk_score_preview.ts (97%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/ftr_provider_context_with_spaces.d.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts => security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts} (71%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution_nondefault_spaces.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10 => security_solution_api_integration/test_suites/entity_analytics/default_license}/risk_engine/telemetry_usage.ts (88%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/get_risk_engine_stats.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts => security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts} (93%)

diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml
index c5028cd30ea29..c6817a53b08a8 100644
--- a/.buildkite/ftr_configs.yml
+++ b/.buildkite/ftr_configs.yml
@@ -462,6 +462,9 @@ enabled:
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/configs/ess.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/configs/serverless.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/configs/ess.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
+
  
 
 
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 0291dc3de2be4..c51318721ba81 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1438,7 +1438,7 @@ x-pack/plugins/security_solution/public/overview/pages/entity_analytics.tsx @ela
 x-pack/plugins/security_solution/public/overview/components/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/detection_engine_api_integration/security_and_spaces/group10/risk_engine @elastic/security-entity-analytics
+x-pack/test/security_solution_api_integration/test_suites/entity_analytics @elastic/security-entity-analytics
 
 # Security Defend Workflows - OSQuery Ownership
 /x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts
index 350ac868ac90e..ae0bfaa8940e8 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/index.ts
@@ -30,10 +30,5 @@ export default ({ loadTestFile }: FtrProviderContext): void => {
     loadTestFile(require.resolve('./runtime'));
     loadTestFile(require.resolve('./throttle'));
     loadTestFile(require.resolve('./ignore_fields'));
-    loadTestFile(require.resolve('./risk_engine/init_and_status_apis'));
-    loadTestFile(require.resolve('./risk_engine/risk_score_preview'));
-    loadTestFile(require.resolve('./risk_engine/risk_score_calculation'));
-    loadTestFile(require.resolve('./risk_engine/risk_scoring_task_execution'));
-    loadTestFile(require.resolve('./risk_engine/telemetry_usage'));
   });
 };
diff --git a/x-pack/test/security_solution_api_integration/README.md b/x-pack/test/security_solution_api_integration/README.md
index ebdf649e1e2bb..c0162a0abb041 100644
--- a/x-pack/test/security_solution_api_integration/README.md
+++ b/x-pack/test/security_solution_api_integration/README.md
@@ -28,7 +28,7 @@ ex:
 
  ```
 
-## Adding new security area's tests
+# Adding new security area's tests
 
 1. Within the `test_suites` directory, create a new area folder.
 2. Introduce `ess.config` and `serverless.config` files to reference the new test files and incorporate any additional custom properties defined in the `CreateTestConfigOptions` interface.
@@ -36,7 +36,7 @@ ex:
 4. Append a new entry in the `ftr_configs.yml` file to enable the execution of the newly added tests within the CI pipeline.
 
 
-## Testing locally 
+# Testing locally 
 
 In the `package.json` file, you'll find commands to configure the server for each environment and to run tests against that specific environment. These commands adhere to the Mocha tagging system, allowing for the inclusion and exclusion of tags, mirroring the setup of the CI pipeline.
 
@@ -44,49 +44,55 @@ In the `package.json` file, you'll find commands to configure the server for eac
 
 In this project, you can run various commands to execute tests and workflows, each of which can be customized by specifying different parameters. Below, how to define the commands based on the parameters and their order.
 
-### Command Structure
-
-The command structure follows this pattern:
-
-- `<command-name>`: The name of the specific command or test case.
-- `<folder>`: The test folder or workflow you want to run.
-- `<type>`: The type of operation, either "server" or "runner."
-- `<environment>`: The testing environment, such as "serverlessEnv," "essEnv," or "qaEnv."
-- `<licenseFolder>`: The license folder the test is defined under such as "default_license", by default the value is "default_license"
-- `<area>`: The area the test is defined under, such as "detection_engine", by default the value is "detection_engine"
-
-### Serverless and Ess Configuration
-
-- When using "serverless" or "ess" in the script, it specifies the correct configuration file for the tests.
-- "Serverless" and "ess" help determine the configuration specific to the chosen test.
-
-### serverlessEnv, essEnv, qaEnv Grep Command
-
-- When using "serverlessEnv,.." in the script, it appends the correct grep command for filtering tests in the serverless testing environment.
-- "serverlessEnv,..." is used to customize the test execution based on the serverless environment.
-
-
-### Command Examples
-
-Here are some command examples using the provided parameters:
-
-1. **Run the server for "exception_workflows" in the "serverlessEnv" environment:**
-   ```shell
-   npm run initialize-server exceptions/workflows serverless
-   ```
-2. **To run tests for the "exception_workflows" using the serverless runner in the "serverlessEnv" environment, you can use the following command:**
-    ```shell
-    npm run run-tests exceptions/workflows serverless serverlessEnv
-    ```
-3. **Run tests for "exception_workflows" using the serverless runner in the "qaEnv" environment:**
-    ```shell
-    npm run run-tests exceptions/workflows serverless qaEnv
-    ```
-4. **Run the server for "exception_workflows" in the "essEnv" environment:**
-   ```shell
-    npm run initialize-server exceptions/workflows ess
-   ```
-5. **Run tests for "exception_workflows" using the ess runner in the "essEnv" environment:**   
-   ```shell
-   npm run run-tests exceptions/workflows ess essEnv
-   ```
\ No newline at end of file
+1.  Server Initialization and running tests for ex: (Detections Response - Default License):
+  
+    The command structure follows this pattern
+    - `<type>` can be either "server" or "runner," allowing you to either set up the server or execute the tests against the designated server.
+    - `<area>`: The area the test is defined under, such as "detection_engine, entity_analytics,.."
+    - `<licenseFolder>`: The license folder the test is defined under such as "default_license, basic_license,..."
+
+      #### `initialize-server:dr:default`
+
+      - Command: `node ./scripts/index.js server detections_response default_license`
+      - Description: Initiates the server for the Detections Response area with the default license.
+      #### `run-tests:dr:default`
+
+      - Command: `node ./scripts/index.js runner detections_response default_license`
+      - Description: Runs the tests for the Detections Response area with the default license.
+
+
+
+ 2. Executes particular sets of test suites linked to the designated environment and license:
+
+     The command structure follows this pattern:
+
+      - `<folder>`: The test folder or workflow you want to run.
+      - `<projectType>`: The type of project to pick the relevant configurations, either "serverless" or "ess."
+        - "serverless" and "ess" help determine the configuration specific to the chosen test.
+      - `<environment>`: The testing environment, such as "serverlessEnv," "essEnv," or "qaEnv."
+        - When using "serverlessEnv,.." in the script, it appends the correct grep command for filtering tests in the serverless  testing environment.
+        - "serverlessEnv,..." is used to customize the test execution based on the serverless environment.
+
+      
+      Here are some command examples for "exceptions" which defined under the "detection_engine" area using the default license:
+
+      1. **Run the server for "exception_workflows" in the "serverlessEnv" environment:**
+         ```shell
+         npm run initialize-server:dr:default exceptions/workflows serverless
+         ```
+      2. **To run tests for the "exception_workflows" using the serverless runner in the "serverlessEnv" environment, you can use the following command:**
+         ```shell
+         npm run run-tests:dr:default exceptions/workflows serverless serverlessEnv
+         ```
+      3. **Run tests for "exception_workflows" using the serverless runner in the "qaEnv" environment:**
+         ```shell
+         npm run run-tests:dr:default exceptions/workflows serverless qaEnv
+         ```
+      4. **Run the server for "exception_workflows" in the "essEnv" environment:**
+         ```shell
+         npm run initialize-server:dr:default exceptions/workflows ess   
+         ```
+      5. **Run tests for "exception_workflows" using the ess runner in the "essEnv" environment:**   
+         ```shell
+         npm run run-tests:dr:default exceptions/workflows ess essEnv
+      ```
\ No newline at end of file
diff --git a/x-pack/test/security_solution_api_integration/ftr_provider_context.d.ts b/x-pack/test/security_solution_api_integration/ftr_provider_context.d.ts
index ae275fcecf99d..3a44ea9db01fe 100644
--- a/x-pack/test/security_solution_api_integration/ftr_provider_context.d.ts
+++ b/x-pack/test/security_solution_api_integration/ftr_provider_context.d.ts
@@ -4,7 +4,8 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+import { GenericFtrProviderContext } from '@kbn/test';
 
-import type { FtrProviderContext } from '../../test_serverless/api_integration/ftr_provider_context';
+import { services } from '../../test_serverless/api_integration/services';
 
-export type { FtrProviderContext };
+export type FtrProviderContext = GenericFtrProviderContext<typeof services, {}>;
diff --git a/x-pack/test/security_solution_api_integration/package.json b/x-pack/test/security_solution_api_integration/package.json
index 24696f0c00bf0..a2bbd939fade2 100644
--- a/x-pack/test/security_solution_api_integration/package.json
+++ b/x-pack/test/security_solution_api_integration/package.json
@@ -7,6 +7,8 @@
   "scripts": {
     "initialize-server:dr:default": "node ./scripts/index.js server detections_response default_license",
     "run-tests:dr:default": "node ./scripts/index.js runner detections_response default_license",
+    "initialize-server:ea:default": "node ./scripts/index.js server entity_analytics default_license",
+    "run-tests:ea:default": "node ./scripts/index.js runner entity_analytics default_license",
     "exception_workflows:server:serverless": "npm run initialize-server:dr:default exceptions/workflows serverless",
     "exception_workflows:runner:serverless": "npm run run-tests:dr:default exceptions/workflows serverless serverlessEnv",
     "exception_workflows:qa:serverless": "npm run run-tests:dr:default exceptions/workflows serverless qaEnv",
@@ -41,6 +43,11 @@
     "alerts:runner:serverless": "npm run run-tests:dr:default alerts serverless serverlessEnv",
     "alerts:qa:serverless": "npm run run-tests:dr:default alerts serverless qaEnv",
     "alerts:server:ess": "npm run initialize-server:dr:default alerts ess",
-    "alerts:runner:ess": "npm run run-tests:dr:default alerts ess essEnv"
+    "alerts:runner:ess": "npm run run-tests:dr:default alerts ess essEnv",
+    "entity_analytics:server:serverless": "npm run initialize-server:ea:default risk_engine serverless",
+    "entity_analytics:runner:serverless": "npm run run-tests:ea:default risk_engine serverless serverlessEnv",
+    "entity_analytics:qa:serverless": "npm run run-tests:ea:default risk_engine serverless qaEnv",
+    "entity_analytics:server:ess": "npm run initialize-server:ea:default risk_engine ess",
+    "entity_analytics:runner:ess": "npm run run-tests:ea:default risk_engine ess essEnv"
   }
 }
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts_by_ids.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts_by_ids.ts
index ce2b7ed1a4cf4..1cfc922d76677 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts_by_ids.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts_by_ids.ts
@@ -14,6 +14,7 @@ import type { RiskEnrichmentFields } from '@kbn/security-solution-plugin/server/
 import { DETECTION_ENGINE_QUERY_SIGNALS_URL as DETECTION_ENGINE_QUERY_ALERTS_URL } from '@kbn/security-solution-plugin/common/constants';
 import { countDownTest } from '../count_down_test';
 import { getQueryAlertsId } from './get_query_alerts_ids';
+import { routeWithNamespace } from '../route_with_namespace';
 
 /**
  * Given an array of rule ids this will return only alerts based on that rule id both
@@ -25,12 +26,14 @@ export const getAlertsByIds = async (
   supertest: SuperTest.SuperTest<SuperTest.Test>,
   log: ToolingLog,
   ids: string[],
-  size?: number
+  size?: number,
+  namespace?: string
 ): Promise<SearchResponse<DetectionAlert & RiskEnrichmentFields>> => {
   const alertsOpen = await countDownTest<SearchResponse<DetectionAlert & RiskEnrichmentFields>>(
     async () => {
+      const route = routeWithNamespace(DETECTION_ENGINE_QUERY_ALERTS_URL, namespace);
       const response = await supertest
-        .post(DETECTION_ENGINE_QUERY_ALERTS_URL)
+        .post(route)
         .set('kbn-xsrf', 'true')
         .send(getQueryAlertsId(ids, size));
       if (response.status !== 200) {
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alerts_to_be_present.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alerts_to_be_present.ts
index e638bacf738c2..f7e873f98d4c7 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alerts_to_be_present.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alerts_to_be_present.ts
@@ -21,11 +21,12 @@ export const waitForAlertsToBePresent = async (
   supertest: SuperTest.SuperTest<SuperTest.Test>,
   log: ToolingLog,
   numberOfAlerts = 1,
-  alertIds: string[]
+  alertIds: string[],
+  namespace?: string
 ): Promise<void> => {
   await waitFor(
     async () => {
-      const alertsOpen = await getAlertsByIds(supertest, log, alertIds, numberOfAlerts);
+      const alertsOpen = await getAlertsByIds(supertest, log, alertIds, numberOfAlerts, namespace);
       return alertsOpen.hits.hits.length >= numberOfAlerts;
     },
     'waitForAlertsToBePresent',
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/README.md b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/README.md
new file mode 100644
index 0000000000000..e737e7b133929
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/README.md
@@ -0,0 +1,606 @@
+# Data Generator for functional tests
+
+Helper to generate and index documents for using in Kibana functional tests
+
+- [Data Generator for functional tests](#data-generator-for-functional-tests)
+  - [DataGenerator](#datagenerator)
+    - [Initialization](#initialization)
+      - [Prerequisites](#prerequisites)
+      - [dataGeneratorFactory](#datageneratorfactory)
+    - [methods](#methods)
+      - [**indexListOfDocuments**](#indexlistofdocuments)
+      - [**indexGeneratedDocuments**](#indexgenerateddocuments)
+      - [**indexEnhancedDocuments**](#indexenhanceddocuments)
+  - [Utils](#utils)
+    - [**generateDocuments**](#generatedocuments)
+    - [**enhanceDocument**](#enhancedocument)
+    - [**enhanceDocuments**](#enhancedocuments)
+  - [Usage](#usage)
+    - [create test query rule that queries indexed documents within a test](#create-test-query-rule-that-queries-indexed-documents-within-a-test)
+
+## DataGenerator
+
+### Initialization
+
+
+#### Prerequisites
+1. Create index mappings in `x-pack/test/functional/es_archives/security_solution`
+    - create folder for index `foo_bar`
+    - add mappings file `mappings.json` in it
+
+        <details>
+        <summary>x-pack/test/functional/es_archives/security_solution/foo_bar/mappings.json</summary>
+
+        ```JSON
+            {
+                "type": "index",
+                "value": {
+                    "index": "foo_bar",
+                    "mappings": {
+                        "properties": {
+                            "id": {
+                                "type": "keyword"
+                            },
+                            "@timestamp": {
+                                "type": "date"
+                            },
+                            "foo": {
+                                "type": "keyword"
+                            },
+                        }
+                    },
+                    "settings": {
+                        "index": {
+                            "number_of_replicas": "1",
+                            "number_of_shards": "1"
+                        }
+                    }
+                }
+            }
+        ```
+        </details>
+2. Add in `before` of the test file index initialization
+
+    ```ts
+        const esArchiver = getService('esArchiver');
+
+        before(async () => {
+            await esArchiver.load(
+                'x-pack/test/functional/es_archives/security_solution/foo_bar'
+            );
+        });
+
+    ```
+
+3. Add in `after` of the test file index removal
+
+    ```ts
+        const esArchiver = getService('esArchiver');
+        
+        before(async () => {
+            await esArchiver.unload(
+                'x-pack/test/functional/es_archives/security_solution/foo_bar'
+            );
+        });
+
+    ```
+
+#### dataGeneratorFactory
+
+`DataGeneratorParams`
+
+| Property        | Description                                            | Type   |
+| --------------- | ------------------------------------------------------ | ------ |
+| es       | ES client                      | `ESClient` |
+| index       | index where document will be added           | `string` |
+| log       | log client      | `LogClient`|
+
+1. import and initialize factory
+
+    ```ts
+        import { dataGeneratorFactory } from '../../utils/data_generator';
+
+        const es = getService('es');
+        const log = getService('log');
+
+        const { indexListOfDocuments, indexGeneratedDocuments } = dataGeneratorFactory({
+            es,
+            index: 'foo_bar',
+            log,
+        });
+
+    ```
+2. Factory will return 2 methods which can be used to index documents into `foo_bar`
+
+where `getService` is method from `FtrProviderContext`
+
+### methods
+
+#### **indexListOfDocuments**
+
+| Property        | Description                                            | Type   |
+| --------------- | ------------------------------------------------------ | ------ |
+| documents       | list of documents to index                     | `Record<string, unknown>` |
+
+Will index list of documents to `foo_bar` index as defined in `dataGeneratorFactory` params
+
+```ts
+    await indexListOfDocuments([{ foo: "bar" }, { id: "test-1" }])
+
+```
+
+#### **indexGeneratedDocuments**
+
+Will generate 10 documents in defined interval and index them in `foo_bar` index as defined in `dataGeneratorFactory` params
+Method receives same parameters as [generateDocuments](#generateDocuments) util.
+
+```ts
+    await indexGeneratedDocuments({
+        docsCount: 10,
+        interval: ['2020-10-28T07:30:00.000Z', '2020-10-30T07:30:00.000Z'],
+        seed: (i, id, timestamp) => ({ id, '@timestamp': timestamp, seq: i })
+    })
+
+```
+
+#### **indexEnhancedDocuments**
+
+Will index list of enhanced documents to `foo_bar` index as defined in `dataGeneratorFactory` params
+Method receives same parameters as [enhanceDocuments](#enhanceDocuments) util.
+
+```ts
+    await indexEnhancedDocuments({
+        interval: ['1996-02-15T13:02:37.531Z', '2000-02-15T13:02:37.531Z'],
+        documents: [{ foo: 'bar' }, { foo: 'bar-1' }, { foo: 'bar-2' }]
+    })
+
+```
+
+## Utils
+
+### **generateDocuments**
+
+Util `generateDocuments` can generate list of documents based on basic seed function
+
+ Seed callback will receive sequential number of document of document, generated id, timestamp.
+ Can be used to generate custom document with large set of options depends on needs. See examples below.
+
+ | Property        | Description                                            | Type   |
+ | --------------- | ------------------------------------------------------ | ------ |
+ | docsCount       | number of documents to generate                        | `number` |
+ | seed       | function that receives sequential number of document, generated id, timestamp as arguments and can used it create a document                    | `(index: number, id: string, timestamp: string) => Document` |
+ | interval        | interval in which generate documents, defined by '@timestamp' field | `[string \| Date string \| Date]` _(optional)_ |
+
+Examples:
+
+ 1. Generate 10 documents with random id, timestamp in interval between '2020-10-28T07:30:00.000Z', '2020-10-30T07:30:00.000Z', and field `seq` that represents sequential number of document
+
+ ```ts
+
+    const documents = generateDocuments({
+        docsCount: 10,
+        interval: ['2020-10-28T07:30:00.000Z', '2020-10-30T07:30:00.000Z'],
+        seed: (i, id, timestamp) => ({ id, '@timestamp': timestamp, seq: i })
+    })
+ ```
+
+<details>
+<summary>Generated docs</summary>
+
+    ```JSON
+        [
+            {
+                "id": "87d3d231-13c8-4d03-9ae4-d40781b3b2d1",
+                "@timestamp": "2020-10-30T04:00:55.790Z",
+                "seq": 0
+            },
+            {
+                "id": "90b99797-d0da-460d-86fd-eca40bedff39",
+                "@timestamp": "2020-10-28T08:43:01.117Z",
+                "seq": 1
+            },
+            {
+                "id": "809c05be-f401-4e31-86e1-55be8af4fac4",
+                "@timestamp": "2020-10-29T15:06:23.054Z",
+                "seq": 2
+            },
+            {
+                "id": "a2720f82-5401-4eab-b2eb-444a8425c937",
+                "@timestamp": "2020-10-29T23:19:47.790Z",
+                "seq": 3
+            },
+            {
+                "id": "e36e4418-4e89-4388-97df-97085b3fca92",
+                "@timestamp": "2020-10-29T09:14:00.966Z",
+                "seq": 4
+            },
+            {
+                "id": "4747adb3-0603-4651-8c0f-0c7df037f779",
+                "@timestamp": "2020-10-28T14:23:50.500Z",
+                "seq": 5
+            },
+            {
+                "id": "1fbfd873-b0ca-4cda-9c96-9a044622e712",
+                "@timestamp": "2020-10-28T10:00:20.995Z",
+                "seq": 6
+            },
+            {
+                "id": "9173cf93-1f9f-4f91-be5e-1e6888cb3aae",
+                "@timestamp": "2020-10-28T08:52:27.830Z",
+                "seq": 7
+            },
+            {
+                "id": "53245337-e383-4b28-9975-acbd79901b7c",
+                "@timestamp": "2020-10-29T08:58:02.385Z",
+                "seq": 8
+            },
+            {
+                "id": "0c700d33-df10-426e-8f71-677f437923ec",
+                "@timestamp": "2020-10-29T16:33:10.240Z",
+                "seq": 9
+            }
+        ]
+    ```
+
+</details>
+
+ 2. Generate 3 identical documents `{foo: bar}`
+
+ ```ts
+
+    const documents = generateDocuments({
+        docsCount: 3,
+        seed: () => ({ foo: 'bar' })
+    })
+ ```
+
+<details>
+<summary>Generated docs</summary>
+
+    ```JSON
+        [
+            {
+                "foo": "bar"
+            },
+            {
+                "foo": "bar"
+            },
+            {
+                "foo": "bar"
+            }
+        ]
+    ```
+
+</details>
+ 
+ 3. Generate 5 documents with custom ingested timestamp, with no interval. If interval not defined, timestamp will be current time
+
+ ```ts
+
+    const documents = generateDocuments({
+        docsCount: 5,
+        seed: (i, id, timestamp) => ({ foo: 'bar', event: { ingested: timestamp } })
+    })
+ ```
+
+<details>
+<summary>Generated docs</summary>
+
+    ```JSON
+    [
+        {
+            "foo": "bar",
+            "event": {
+            "ingested": "2023-02-15T13:02:37.531Z"
+            }
+        },
+        {
+            "foo": "bar",
+            "event": {
+            "ingested": "2023-02-15T13:02:37.531Z"
+            }
+        },
+        {
+            "foo": "bar",
+            "event": {
+            "ingested": "2023-02-15T13:02:37.531Z"
+            }
+        },
+        {
+            "foo": "bar",
+            "event": {
+            "ingested": "2023-02-15T13:02:37.531Z"
+            }
+        },
+        {
+            "foo": "bar",
+            "event": {
+            "ingested": "2023-02-15T13:02:37.531Z"
+            }
+        }
+    ]
+    ```
+
+</details>
+
+  4. Generate 4 documents with custom if based on sequential number id
+
+ ```ts
+
+    const documents = generateDocuments({
+        docsCount: 4,
+        seed: (i) => ({ foo: 'bar', id: `id-${i}`})
+    })
+ ```
+
+<details>
+<summary>Generated docs</summary>
+
+    ```JSON
+        [
+            {
+                "foo": "bar",
+                "id": "id-0"
+            },
+            {
+                "foo": "bar",
+                "id": "id-1"
+            },
+            {
+                "foo": "bar",
+                "id": "id-2"
+            },
+            {
+                "foo": "bar",
+                "id": "id-3"
+            }
+        ]
+    ```
+
+</details>
+
+
+### **enhanceDocument**
+
+Adds generated `uuidv4` id and current time as `@timestamp` to document if `id`, `timestamp` params are not specified
+
+
+`EnhanceDocumentOptions`
+
+| Property        | Description                                            | Type   |
+| --------------- | ------------------------------------------------------ | ------ |
+| id       | id for document                      | `string` _(optional)_ |
+| timestamp       | timestamp for document                   | `string` _(optional)_ |
+| document        | document to enhance | `Record<string, unknown>` |
+
+Examples:
+
+1. Enhance document with generated `uuidv4` id and current time as `@timestamp`
+
+    ```ts
+        const document = enhanceDocument({
+            document: { foo: 'bar' },
+        });
+    ```
+    <details>
+    <summary>document</summary>
+
+    ```JSON
+        {
+            "foo": "bar",
+            "id": "b501a64f-0dd4-4275-a38c-889be6a15a4d",
+            "@timestamp": "2023-02-15T17:21:21.429Z"
+        }
+    ```
+
+    </details>
+
+2. Enhance document with generated `uuidv4` id and predefined timestamp
+
+
+    ```ts
+        const document = enhanceDocument({
+            timestamp: '1996-02-15T13:02:37.531Z',
+            document: { foo: 'bar' },
+        });
+    ```
+    <details>
+    <summary>document</summary>
+
+    ```JSON
+        {
+            "foo": "bar",
+            "id": "7b7460bf-e173-4744-af15-2c01ac52963b",
+            "@timestamp": "1996-02-15T13:02:37.531Z"
+        }
+    ```
+
+    </details>
+    
+3. Enhance document with predefined id and and current time as `@timestamp` 
+
+
+    ```ts
+        const document = enhanceDocument({
+            id: 'test-id',
+            document: { foo: 'bar' },
+        });   
+    ```
+    <details>
+    <summary>document</summary>
+
+    ```JSON
+        {
+            "foo": "bar",
+            "id": "test-id",
+            "@timestamp": "2023-02-15T17:21:21.429Z"
+        }
+    ```
+    </details>
+
+### **enhanceDocuments**
+
+
+
+Adds generated `uuidv4` `id` property to list of documents if `id` parameter is not specified.
+Adds `@timestamp` in defined interval to list of documents. If it's not specified,  `@timestamp`  will be added as current time
+
+| Property        | Description                                            | Type   |
+| --------------- | ------------------------------------------------------ | ------ |
+| documents        | documents to enhance | `Record<string, unknown>[]` |
+| id       | id for documents                      | `string` _(optional)_ |
+| interval        | interval in which generate documents, defined by '@timestamp' field | `[string \| Date string \| Date]` _(optional)_ |
+
+Examples:
+
+1. Enhance documents with generated `uuidv4` id and current time as `@timestamp`
+
+    ```ts
+        const documents = enhanceDocuments({
+            documents: [{ foo: 'bar' }, { foo: 'bar-1' }, { foo: 'bar-2' }]
+        });
+    ```
+    <details>
+    <summary>documents</summary>
+
+    ```JSON
+        [
+            {
+                "foo": "bar",
+                "id": "c55ddd6b-3cf2-4ebf-94d6-4eeeb4e5b655",
+                "@timestamp": "2023-02-16T16:43:13.573Z"
+            },
+            {
+                "foo": "bar-1",
+                "id": "61b157b9-5f1f-4d99-a5bf-072069f5139d",
+                "@timestamp": "2023-02-16T16:43:13.573Z"
+            },
+            {
+                "foo": "bar-2",
+                "id": "04929927-6d9e-4ccc-b083-250e3fe2d7a7",
+                "@timestamp": "2023-02-16T16:43:13.573Z"
+            }
+        ]
+    ```
+
+    </details>
+
+2. Enhance document with generated `uuidv4` id and timestamp in predefined interval
+
+    ```ts
+        const documents = enhanceDocuments({
+            interval: ['1996-02-15T13:02:37.531Z', '2000-02-15T13:02:37.531Z'],
+            documents: [{ foo: 'bar' }, { foo: 'bar-1' }, { foo: 'bar-2' }]
+        });
+    ```
+    <details>
+    <summary>documents</summary>
+
+    ```JSON
+        [
+            {
+                "foo": "bar",
+                "id": "883a67cb-0a57-4711-bdf9-e8a394a52460",
+                "@timestamp": "1998-07-04T15:16:46.587Z"
+            },
+            {
+                "foo": "bar-1",
+                "id": "70691d9e-1030-412f-8ae1-c6db50e90e91",
+                "@timestamp": "1998-05-15T07:00:52.339Z"
+            },
+            {
+                "foo": "bar-2",
+                "id": "b2140328-5cc4-4532-947e-30b8fd830ed7",
+                "@timestamp": "1999-09-01T21:50:38.957Z"
+            }
+        ]
+    ```
+
+    </details>
+    
+3. Enhance documents with predefined id and and current time as `@timestamp` 
+
+    ```ts
+        const documents = enhanceDocuments({
+            id: 'test-id',
+            documents: [{ foo: 'bar' }, { foo: 'bar-1' }, { foo: 'bar-2' }]
+        });   
+    ```
+    <details>
+    <summary>documents</summary>
+
+    ```JSON
+        [
+            {
+                "foo": "bar",
+                "id": "test-id",
+                "@timestamp": "2023-02-16T16:43:13.574Z"
+            },
+            {
+                "foo": "bar-1",
+                "id": "test-id",
+                "@timestamp": "2023-02-16T16:43:13.574Z"
+            },
+            {
+                "foo": "bar-2",
+                "id": "test-id",
+                "@timestamp": "2023-02-16T16:43:13.574Z"
+            }
+        ]
+
+    ```
+    </details>
+
+## Usage
+
+### create test query rule that queries indexed documents within a test
+
+When documents generated and indexed, there might be a need to create a test rule that targets only these documents. So, documents generated in the test, will be used only in context of this test.
+
+There are few possible ways to do this
+
+1. Create new index every time for a new test. Thus, newly indexed documents, will be the only documents present in test index. It might be costly operation, as it will require to create new index for each test, that re-initialize dataGeneratorFactory, or delete index after rule's run
+
+2. Use the same id or specific field in documents.
+   For example:
+
+    ```ts
+
+          const id = uuidv4();
+          const firstTimestamp = new Date().toISOString();
+          const firstDocument = {
+            id,
+            '@timestamp': firstTimestamp,
+            agent: {
+              name: 'agent-1',
+            },
+          };
+          await indexListOfDocuments([firstDocument, firstDocument]);
+
+          const rule: QueryRuleCreateProps = {
+            ...getRuleForSignalTesting(['ecs_compliant']),
+            query: `id:${id}`,
+          };
+
+
+    ```
+
+    All documents will have the same `id` and can be queried by following `id:${id}` 
+
+3. Use utility method `getKQLQueryFromDocumentList` that will create query from all ids in generated documents
+
+    ```ts
+        const { documents } = await indexGeneratedDocuments({
+            docsCount: 4,
+            document: { foo: 'bar' },
+            enhance: true,
+        });
+
+        const query = getKQLQueryFromDocumentList(documents);
+        const rule = {
+            ...getRuleForSignalTesting(['ecs_non_compliant']),
+            query,
+        };
+    ```
+
+    util will generate the following query: `(id: "f6ca3ee1-407c-4685-a94b-11ef4ed5136b" or id: "2a7358b2-8cad-47ce-83b7-e4418c266f3e" or id: "9daec569-0ba1-4c46-a0c6-e340cee1c5fb" or id: "b03c2fdf-0ca1-447c-b8c6-2cc5a663ffe2")`, that will include all generated documents
\ No newline at end of file
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/data_generator_factory.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/data_generator_factory.ts
new file mode 100644
index 0000000000000..7842d105e40b0
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/data_generator_factory.ts
@@ -0,0 +1,75 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { Client } from '@elastic/elasticsearch';
+import { ToolingLog } from '@kbn/tooling-log';
+import type { BulkResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { indexDocuments } from './index_documents';
+import { generateDocuments } from './generate_documents';
+import { enhanceDocuments, EnhanceDocumentsOptions } from './enhance_documents';
+import type { GenerateDocumentsParams } from './generate_documents';
+import type { Document } from './types';
+
+interface DataGeneratorParams {
+  es: Client;
+  documents: Array<Record<string, unknown>>;
+  index: string;
+  log: ToolingLog;
+}
+
+interface DataGeneratorResponse {
+  response: BulkResponse;
+  documents: Document[];
+}
+
+interface DataGenerator {
+  indexListOfDocuments: (docs: Document[]) => Promise<DataGeneratorResponse>;
+  indexGeneratedDocuments: (params: GenerateDocumentsParams) => Promise<DataGeneratorResponse>;
+  indexEnhancedDocuments: (params: EnhanceDocumentsOptions) => Promise<DataGeneratorResponse>;
+}
+
+/**
+ * initialize {@link DataGenerator}
+ * @param param.es - ES client
+ * @param params.index - index where document will be added
+ * @param params.log - logClient
+ * @returns methods of {@link DataGenerator}
+ */
+export const dataGeneratorFactory = ({
+  es,
+  index,
+  log,
+}: Omit<DataGeneratorParams, 'documents'>): DataGenerator => {
+  return {
+    indexListOfDocuments: async (documents: DataGeneratorParams['documents']) => {
+      const response = await indexDocuments({ es, index, documents, log });
+
+      return {
+        documents,
+        response,
+      };
+    },
+    indexGeneratedDocuments: async (params: GenerateDocumentsParams) => {
+      const documents = generateDocuments(params);
+      const response = await indexDocuments({ es, index, documents, log });
+
+      return {
+        documents,
+        response,
+      };
+    },
+    indexEnhancedDocuments: async (params: EnhanceDocumentsOptions) => {
+      const documents = enhanceDocuments(params);
+      const response = await indexDocuments({ es, index, documents, log });
+
+      return {
+        documents,
+        response,
+      };
+    },
+  };
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_document.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_document.ts
new file mode 100644
index 0000000000000..f2e244edb90b3
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_document.ts
@@ -0,0 +1,29 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { v4 as uuidv4 } from 'uuid';
+
+interface EnhanceDocumentOptions {
+  id?: string;
+  timestamp?: string;
+  document: Record<string, unknown>;
+}
+
+/**
+ * enhances document with generated id and timestamp
+ * @param {string} options.id - optional id, if not provided randomly generated
+ * @param {string} options.timestamp - optional timestamp of document, if not provided current time
+ * @param {Record<string, unknown>} options.document - document that will be enhanced
+ */
+export const enhanceDocument = (options: EnhanceDocumentOptions) => {
+  const id = options?.id ?? uuidv4();
+  const timestamp = options?.timestamp ?? new Date().toISOString();
+  return {
+    ...options.document,
+    id,
+    '@timestamp': timestamp,
+  };
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_documents.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_documents.ts
new file mode 100644
index 0000000000000..5d701afe166ed
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/enhance_documents.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { IndexingInterval, Document } from './types';
+import { getTimestamp } from './get_timestamp';
+import { enhanceDocument } from './enhance_document';
+
+export interface EnhanceDocumentsOptions {
+  interval?: IndexingInterval;
+  documents: Document[];
+  id?: string;
+}
+
+/**
+ * enhances documents with generated id and timestamp within interval
+ * @param {string} options.id - optional id, if not provided randomly generated
+ * @param {string} options.interval - optional interval of document, if not provided set as a current time
+ * @param {Record<string, unknown>[]} options.documents - documents that will be enhanced
+ */
+export const enhanceDocuments = ({ documents, interval, id }: EnhanceDocumentsOptions) => {
+  return documents.map((document) =>
+    enhanceDocument({
+      document,
+      id,
+      timestamp: getTimestamp(interval),
+    })
+  );
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/generate_documents.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/generate_documents.ts
new file mode 100644
index 0000000000000..c9ba960867a43
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/generate_documents.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { v4 as uuidv4 } from 'uuid';
+import { getTimestamp } from './get_timestamp';
+
+import type { Document, IndexingInterval } from './types';
+
+type DocumentSeedFunc = (index: number, id: string, timestamp: string) => Document;
+
+export interface GenerateDocumentsParams {
+  interval?: IndexingInterval;
+  docsCount: number;
+  seed: DocumentSeedFunc;
+}
+
+/**
+ *
+ * @param param.interval - interval in which generate documents, defined by '@timestamp' field
+ * @param param.docsCount - number of document to generate
+ * @param param.seed - seed function. Function that receives index of document, generated id, timestamp as arguments and can used it create a document
+ * @returns generated Documents
+ */
+export const generateDocuments = ({ docsCount, interval, seed }: GenerateDocumentsParams) => {
+  const documents = [];
+
+  for (let i = 0; i < docsCount; i++) {
+    const id = uuidv4();
+    const timestamp = getTimestamp(interval);
+
+    documents.push(seed(i, id, timestamp));
+  }
+
+  return documents;
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_kql_query_from_documents_list.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_kql_query_from_documents_list.ts
new file mode 100644
index 0000000000000..3347c2120d4a4
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_kql_query_from_documents_list.ts
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import type { Document } from './types';
+
+/**
+ * returns KQL query from a list documents that includes all documents by their ids.
+ * it can be used later to create test rules that will query only these documents
+ * ```ts
+ *   const documents = [
+        {
+          foo: 'bar',
+          id: 'f07df596-65ec-4ab1-b0b2-f3b69558ed26',
+          '@timestamp': '2020-10-29T07:10:51.989Z',
+        },
+        {
+          foo: 'bar',
+          id: 'e07614f9-1dc5-4849-90c4-31362bbdf8d0',
+          '@timestamp': '2020-10-30T00:32:48.987Z',
+        },
+        {
+          foo: 'test',
+          id: 'e03a5b12-77e6-4aa3-b0be-fbe5b0843f07',
+          '@timestamp': '2020-10-29T03:40:35.318Z',
+        },
+    ];
+
+    const query = getKQLQueryFromDocumentList(documents);
+
+    // query equals to 
+    // (id: "f07df596-65ec-4ab1-b0b2-f3b69558ed26" or id: "e07614f9-1dc5-4849-90c4-31362bbdf8d0" or id: "e03a5b12-77e6-4aa3-b0be-fbe5b0843f07")
+ * ```
+ */
+export const getKQLQueryFromDocumentList = (documents: Document[]) => {
+  const orClauses = documents.map(({ id }) => `id: "${id}"`).join(' or ');
+
+  return `(${orClauses})`;
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_timestamp.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_timestamp.ts
new file mode 100644
index 0000000000000..e828767a39650
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/get_timestamp.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import faker from 'faker';
+import type { IndexingInterval } from './types';
+
+export const getTimestamp = (interval?: IndexingInterval) => {
+  if (interval) {
+    return faker.date.between(...interval).toISOString();
+  }
+
+  return new Date().toISOString();
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index.ts
new file mode 100644
index 0000000000000..4cd56dd896554
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index.ts
@@ -0,0 +1,14 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export * from './data_generator_factory';
+export * from './enhance_document';
+export * from './enhance_documents';
+export * from './generate_documents';
+export * from './get_kql_query_from_documents_list';
+export * from './get_timestamp';
+export * from './index_documents';
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index_documents.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index_documents.ts
new file mode 100644
index 0000000000000..5408e11b25015
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/index_documents.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { Client } from '@elastic/elasticsearch';
+import type { BulkResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { ToolingLog } from '@kbn/tooling-log';
+
+interface IndexDocumentsParams {
+  es: Client;
+  documents: Array<Record<string, unknown>>;
+  index: string;
+  log: ToolingLog;
+}
+
+type IndexDocuments = (params: IndexDocumentsParams) => Promise<BulkResponse>;
+
+/**
+ * Indexes documents into provided index
+ */
+export const indexDocuments: IndexDocuments = async ({ es, documents, index, log }) => {
+  const operations = documents.flatMap((doc: object) => [{ index: { _index: index } }, doc]);
+
+  const response = await es.bulk({ refresh: true, operations });
+
+  // throw error if document wasn't indexed, so test will be terminated earlier and no false positives can happen
+  response.items.some(({ index: responseIndex } = {}) => {
+    if (responseIndex?.error) {
+      log.error(
+        `Failed to index document in non_ecs_fields test suits: "${responseIndex.error?.reason}"`
+      );
+      throw Error(responseIndex.error.message);
+    }
+  });
+  return response;
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/types.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/types.ts
new file mode 100644
index 0000000000000..bbf54be68cfee
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/data_generator/types.ts
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export type IndexingInterval = [string | Date, string | Date];
+
+export type Document = Record<string, unknown>;
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts
index 56d166c501b6b..9af5821d08ac3 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts
@@ -8,6 +8,8 @@ export * from './rules';
 export * from './exception_list_and_item';
 export * from './alerts';
 export * from './actions';
+export * from './data_generator';
+
 export * from './rules/get_rule_so_by_id';
 export * from './rules/create_rule_saved_object';
 export * from './rules/get_rule_with_legacy_investigation_fields';
@@ -18,4 +20,5 @@ export * from './count_down_es';
 export * from './update_username';
 export * from './refresh_index';
 export * from './wait_for';
+export * from './route_with_namespace';
 export * from './wait_for_index_to_populate';
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
new file mode 100644
index 0000000000000..bb4e078746d58
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
@@ -0,0 +1,21 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrConfigProviderContext } from '@kbn/test';
+export default async function ({ readConfigFile }: FtrConfigProviderContext) {
+  const functionalConfig = await readConfigFile(
+    require.resolve('../../../../../config/ess/config.base.trial')
+  );
+
+  return {
+    ...functionalConfig.getAll(),
+    testFiles: [require.resolve('..')],
+    junit: {
+      reportName: 'Entity Analytics API Integration Tests -  ESS - Risk Engine',
+    },
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
new file mode 100644
index 0000000000000..e28df5b9c3506
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { createTestConfig } from '../../../../../config/serverless/config.base';
+
+export default createTestConfig({
+  testFiles: [require.resolve('..')],
+  junit: {
+    reportName: 'Entity Analytics API Integration Tests -  Serverless - Risk Engine',
+  },
+});
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/index.ts
new file mode 100644
index 0000000000000..878725cd32f9a
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/index.ts
@@ -0,0 +1,19 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../../../../ftr_provider_context';
+
+export default function ({ loadTestFile }: FtrProviderContext) {
+  describe('Entity Analytics - Risk Engine', function () {
+    loadTestFile(require.resolve('./init_and_status_apis'));
+    loadTestFile(require.resolve('./risk_score_calculation'));
+    loadTestFile(require.resolve('./risk_score_preview'));
+    loadTestFile(require.resolve('./risk_scoring_task/task_execution'));
+    loadTestFile(require.resolve('./risk_scoring_task/task_execution_nondefault_spaces'));
+    loadTestFile(require.resolve('./telemetry_usage'));
+  });
+}
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/init_and_status_apis.ts
similarity index 98%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/init_and_status_apis.ts
index fd263716ca530..c88a30e8b42d8 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/init_and_status_apis.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/init_and_status_apis.ts
@@ -7,7 +7,7 @@
 
 import expect from '@kbn/expect';
 import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/entity_analytics/risk_engine/saved_object';
-import { FtrProviderContext } from '../../../common/ftr_provider_context';
+
 import {
   legacyTransformIds,
   createLegacyTransforms,
@@ -17,9 +17,9 @@ import {
   getLegacyRiskScoreDashboards,
   clearLegacyDashboards,
   cleanRiskEngine,
-} from './utils';
+} from '../../utils';
+import { FtrProviderContext } from '../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext) => {
   const es = getService('es');
   const supertest = getService('supertest');
@@ -27,7 +27,7 @@ export default ({ getService }: FtrProviderContext) => {
   const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest);
   const log = getService('log');
 
-  describe('Risk Engine', () => {
+  describe('@ess @serverless init_and_status_apis', () => {
     beforeEach(async () => {
       await cleanRiskEngine({ kibanaServer, es, log });
     });
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts
similarity index 95%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts
index f03214e301dd1..74e37b4737f71 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts
@@ -6,12 +6,16 @@
  */
 
 import expect from '@kbn/expect';
+import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common';
+
 import { RISK_SCORE_CALCULATION_URL } from '@kbn/security-solution-plugin/common/constants';
 import type { RiskScore } from '@kbn/security-solution-plugin/common/risk_engine';
 import { v4 as uuidv4 } from 'uuid';
-import { FtrProviderContext } from '../../../common/ftr_provider_context';
-import { deleteAllAlerts, deleteAllRules } from '../../../utils';
-import { dataGeneratorFactory } from '../../../utils/data_generator';
+import {
+  deleteAllAlerts,
+  deleteAllRules,
+  dataGeneratorFactory,
+} from '../../../detections_response/utils';
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
@@ -19,9 +23,9 @@ import {
   readRiskScores,
   normalizeScores,
   waitForRiskScoresToBePresent,
-} from './utils';
+} from '../../utils';
+import { FtrProviderContext } from '../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const supertest = getService('supertest');
   const esArchiver = getService('esArchiver');
@@ -39,6 +43,7 @@ export default ({ getService }: FtrProviderContext): void => {
       .post(RISK_SCORE_CALCULATION_URL)
       .set('kbn-xsrf', 'true')
       .set('elastic-api-version', '1')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send(body)
       .expect(200);
     return result;
@@ -63,7 +68,7 @@ export default ({ getService }: FtrProviderContext): void => {
     });
   };
 
-  describe('Risk Engine - Risk Scoring Calculation API', () => {
+  describe('@ess @serverless Risk Scoring Calculation API', () => {
     context('with auditbeat data', () => {
       const { indexListOfDocuments } = dataGeneratorFactory({
         es,
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_preview.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts
similarity index 97%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_preview.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts
index 31f8a86efc56e..ae1fdb82d0953 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_preview.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts
@@ -10,17 +10,22 @@ import { ALERT_RISK_SCORE } from '@kbn/rule-data-utils';
 import { RISK_SCORE_PREVIEW_URL } from '@kbn/security-solution-plugin/common/constants';
 import type { RiskScore } from '@kbn/security-solution-plugin/common/risk_engine';
 import { v4 as uuidv4 } from 'uuid';
-import { FtrProviderContext } from '../../../common/ftr_provider_context';
-import { createSignalsIndex, deleteAllAlerts, deleteAllRules } from '../../../utils';
-import { dataGeneratorFactory } from '../../../utils/data_generator';
+import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common';
+import {
+  createAlertsIndex,
+  deleteAllAlerts,
+  deleteAllRules,
+  dataGeneratorFactory,
+} from '../../../detections_response/utils';
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
   deleteAllRiskScores,
   sanitizeScores,
-} from './utils';
+} from '../../utils';
+
+import { FtrProviderContext } from '../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const supertest = getService('supertest');
   const esArchiver = getService('esArchiver');
@@ -37,6 +42,7 @@ export default ({ getService }: FtrProviderContext): void => {
     const { body: result } = await supertest
       .post(RISK_SCORE_PREVIEW_URL)
       .set('elastic-api-version', '1')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .set('kbn-xsrf', 'true')
       .send({ ...defaultBody, ...body })
       .expect(200);
@@ -56,7 +62,7 @@ export default ({ getService }: FtrProviderContext): void => {
     return await previewRiskScores({ body: {} });
   };
 
-  describe('Risk Engine - Risk Scoring Preview API', () => {
+  describe('@ess @serverless Risk Scoring Preview API', () => {
     context('with auditbeat data', () => {
       const { indexListOfDocuments } = dataGeneratorFactory({
         es,
@@ -78,7 +84,7 @@ export default ({ getService }: FtrProviderContext): void => {
         await deleteAllAlerts(supertest, log, es);
 
         await deleteAllRules(supertest, log);
-        await createSignalsIndex(supertest, log);
+        await createAlertsIndex(supertest, log);
       });
 
       afterEach(async () => {
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/ftr_provider_context_with_spaces.d.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/ftr_provider_context_with_spaces.d.ts
new file mode 100644
index 0000000000000..922a5d9d25b71
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/ftr_provider_context_with_spaces.d.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { GenericFtrProviderContext } from '@kbn/test';
+
+import { SpacesServiceProvider } from '../../../../../../common/services/spaces';
+import { services as serverlessServices } from '../../../../../../../test_serverless/api_integration/services';
+
+const services = {
+  ...serverlessServices,
+  spaces: SpacesServiceProvider,
+};
+export type FtrProviderContextWithSpaces = GenericFtrProviderContext<typeof services, {}>;
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts
similarity index 71%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts
index 4985bede5dd6f..53c70bc90efb9 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_scoring_task_execution.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts
@@ -7,9 +7,11 @@
 
 import expect from '@kbn/expect';
 import { v4 as uuidv4 } from 'uuid';
-import { FtrProviderContext } from '../../../common/ftr_provider_context';
-import { deleteAllAlerts, deleteAllRules } from '../../../utils';
-import { dataGeneratorFactory } from '../../../utils/data_generator';
+import {
+  deleteAllAlerts,
+  deleteAllRules,
+  dataGeneratorFactory,
+} from '../../../../detections_response/utils';
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
@@ -20,11 +22,10 @@ import {
   updateRiskEngineConfigSO,
   getRiskEngineTask,
   waitForRiskEngineTaskToBeGone,
-  deleteRiskScoreIndices,
   cleanRiskEngine,
-} from './utils';
+} from '../../../utils';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const supertest = getService('supertest');
   const esArchiver = getService('esArchiver');
@@ -35,7 +36,7 @@ export default ({ getService }: FtrProviderContext): void => {
   const createAndSyncRuleAndAlerts = createAndSyncRuleAndAlertsFactory({ supertest, log });
   const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest);
 
-  describe('Risk Engine - Risk Scoring Task', () => {
+  describe('@ess @serverless Risk Scoring Task Execution', () => {
     context('with auditbeat data', () => {
       const { indexListOfDocuments } = dataGeneratorFactory({
         es,
@@ -92,7 +93,7 @@ export default ({ getService }: FtrProviderContext): void => {
             await riskEngineRoutes.init();
           });
 
-          it('calculates and persists risk scores for alert documents', async () => {
+          it('@skipInQA calculates and persists risk scores for alert documents', async () => {
             await waitForRiskScoresToBePresent({ es, log, scoreCount: 10 });
 
             const scores = await readRiskScores(es);
@@ -103,7 +104,7 @@ export default ({ getService }: FtrProviderContext): void => {
             );
           });
 
-          it('starts the latest transform', async () => {
+          it('@skipInQA starts the latest transform', async () => {
             await waitForRiskScoresToBePresent({ es, log, scoreCount: 10 });
 
             const transformStats = await es.transform.getTransformStats({
@@ -113,7 +114,7 @@ export default ({ getService }: FtrProviderContext): void => {
             expect(transformStats.transforms[0].state).to.eql('started');
           });
 
-          describe('disabling and re-enabling the risk engine', () => {
+          describe('@skipInQA disabling and re-enabling the risk engine', () => {
             beforeEach(async () => {
               await waitForRiskScoresToBePresent({ es, log, scoreCount: 10 });
               await riskEngineRoutes.disable();
@@ -135,7 +136,7 @@ export default ({ getService }: FtrProviderContext): void => {
             });
           });
 
-          describe('disabling the risk engine', () => {
+          describe('@skipInQA disabling the risk engine', () => {
             beforeEach(async () => {
               await waitForRiskScoresToBePresent({ es, log, scoreCount: 10 });
             });
@@ -214,7 +215,7 @@ export default ({ getService }: FtrProviderContext): void => {
           await riskEngineRoutes.init();
         });
 
-        it('calculates and persists risk scores for both types of entities', async () => {
+        it('@skipInQA calculates and persists risk scores for both types of entities', async () => {
           await waitForRiskScoresToBePresent({ es, log, scoreCount: 20 });
           const riskScores = await readRiskScores(es);
 
@@ -226,74 +227,6 @@ export default ({ getService }: FtrProviderContext): void => {
           expect(scoredIdentifiers.includes('user.name')).to.be(true);
         });
       });
-
-      describe('with alerts in a non-default space', () => {
-        let namespace: string;
-        let index: string[];
-        let documentId: string;
-        let createAndSyncRuleAndAlertsForOtherSpace: ReturnType<
-          typeof createAndSyncRuleAndAlertsFactory
-        >;
-
-        beforeEach(async () => {
-          documentId = uuidv4();
-          namespace = uuidv4();
-          index = [`risk-score.risk-score-${namespace}`];
-
-          createAndSyncRuleAndAlertsForOtherSpace = createAndSyncRuleAndAlertsFactory({
-            supertest,
-            log,
-            namespace,
-          });
-          const riskEngineRoutesForNamespace = riskEngineRouteHelpersFactory(supertest, namespace);
-
-          const spaces = getService('spaces');
-          await spaces.create({
-            id: namespace,
-            name: namespace,
-            disabledFeatures: [],
-          });
-
-          const baseEvent = buildDocument({ host: { name: 'host-1' } }, documentId);
-          await indexListOfDocuments(
-            Array(10)
-              .fill(baseEvent)
-              .map((_baseEvent, _index) => ({
-                ..._baseEvent,
-                'host.name': `host-${_index}`,
-              }))
-          );
-
-          await createAndSyncRuleAndAlertsForOtherSpace({
-            query: `id: ${documentId}`,
-            alerts: 10,
-            riskScore: 40,
-          });
-
-          await riskEngineRoutesForNamespace.init();
-        });
-
-        afterEach(async () => {
-          await getService('spaces').delete(namespace);
-          await deleteRiskScoreIndices({ log, es, namespace });
-        });
-
-        it('calculates and persists risk scores for alert documents', async () => {
-          await waitForRiskScoresToBePresent({
-            es,
-            log,
-            scoreCount: 10,
-            index,
-          });
-
-          const scores = await readRiskScores(es, index);
-          expect(normalizeScores(scores).map(({ id_value: idValue }) => idValue)).to.eql(
-            Array(10)
-              .fill(0)
-              .map((_, _index) => `host-${_index}`)
-          );
-        });
-      });
     });
   });
 };
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution_nondefault_spaces.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution_nondefault_spaces.ts
new file mode 100644
index 0000000000000..cf9bf98f88d9d
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution_nondefault_spaces.ts
@@ -0,0 +1,133 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import expect from '@kbn/expect';
+import { v4 as uuidv4 } from 'uuid';
+import {
+  deleteAllAlerts,
+  deleteAllRules,
+  dataGeneratorFactory,
+} from '../../../../detections_response/utils';
+import {
+  buildDocument,
+  createAndSyncRuleAndAlertsFactory,
+  readRiskScores,
+  waitForRiskScoresToBePresent,
+  normalizeScores,
+  riskEngineRouteHelpersFactory,
+  cleanRiskEngine,
+  deleteRiskScoreIndices,
+} from '../../../utils';
+
+import { FtrProviderContextWithSpaces } from './ftr_provider_context_with_spaces';
+
+export default ({ getService }: FtrProviderContextWithSpaces): void => {
+  const supertest = getService('supertest');
+  const esArchiver = getService('esArchiver');
+  const es = getService('es');
+  const log = getService('log');
+  const kibanaServer = getService('kibanaServer');
+
+  describe('@ess Risk Scoring Task in non-default space', () => {
+    context('with auditbeat data', () => {
+      const { indexListOfDocuments } = dataGeneratorFactory({
+        es,
+        index: 'ecs_compliant',
+        log,
+      });
+
+      before(async () => {
+        await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ecs_compliant');
+      });
+
+      after(async () => {
+        await esArchiver.unload(
+          'x-pack/test/functional/es_archives/security_solution/ecs_compliant'
+        );
+      });
+
+      beforeEach(async () => {
+        await cleanRiskEngine({ kibanaServer, es, log });
+        await deleteAllAlerts(supertest, log, es);
+        await deleteAllRules(supertest, log);
+      });
+
+      afterEach(async () => {
+        await cleanRiskEngine({ kibanaServer, es, log });
+        await deleteAllAlerts(supertest, log, es);
+        await deleteAllRules(supertest, log);
+      });
+      describe('with alerts in a non-default space', () => {
+        let namespace: string;
+        let index: string[];
+        let documentId: string;
+        let createAndSyncRuleAndAlertsForOtherSpace: ReturnType<
+          typeof createAndSyncRuleAndAlertsFactory
+        >;
+
+        beforeEach(async () => {
+          documentId = uuidv4();
+          namespace = uuidv4();
+          index = [`risk-score.risk-score-${namespace}`];
+
+          createAndSyncRuleAndAlertsForOtherSpace = createAndSyncRuleAndAlertsFactory({
+            supertest,
+            log,
+            namespace,
+          });
+          const riskEngineRoutesForNamespace = riskEngineRouteHelpersFactory(supertest, namespace);
+
+          const spaces = getService('spaces');
+          await spaces.create({
+            id: namespace,
+            name: namespace,
+            disabledFeatures: [],
+          });
+
+          const baseEvent = buildDocument({ host: { name: 'host-1' } }, documentId);
+          await indexListOfDocuments(
+            Array(10)
+              .fill(baseEvent)
+              .map((_baseEvent, _index) => ({
+                ..._baseEvent,
+                'host.name': `host-${_index}`,
+              }))
+          );
+
+          await createAndSyncRuleAndAlertsForOtherSpace({
+            query: `id: ${documentId}`,
+            alerts: 10,
+            riskScore: 40,
+          });
+
+          await riskEngineRoutesForNamespace.init();
+        });
+
+        afterEach(async () => {
+          await getService('spaces').delete(namespace);
+          await deleteRiskScoreIndices({ log, es, namespace });
+        });
+
+        it('calculates and persists risk scores for alert documents', async () => {
+          await waitForRiskScoresToBePresent({
+            es,
+            log,
+            scoreCount: 10,
+            index,
+          });
+
+          const scores = await readRiskScores(es, index);
+          expect(normalizeScores(scores).map(({ id_value: idValue }) => idValue)).to.eql(
+            Array(10)
+              .fill(0)
+              .map((_, _index) => `host-${_index}`)
+          );
+        });
+      });
+    });
+  });
+};
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/telemetry_usage.ts
similarity index 88%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/telemetry_usage.ts
index 75e91eb1a6fc4..f68a8c1dd3e60 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/telemetry_usage.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/telemetry_usage.ts
@@ -7,18 +7,21 @@
 
 import expect from '@kbn/expect';
 import { v4 as uuidv4 } from 'uuid';
-import type { FtrProviderContext } from '../../../../common/ftr_provider_context';
-import { deleteAllRules, deleteAllAlerts, getRiskEngineStats } from '../../../utils';
+import {
+  deleteAllRules,
+  deleteAllAlerts,
+  dataGeneratorFactory,
+} from '../../../detections_response/utils';
 import {
   buildDocument,
   createAndSyncRuleAndAlertsFactory,
   waitForRiskScoresToBePresent,
   riskEngineRouteHelpersFactory,
   cleanRiskEngine,
-} from './utils';
-import { dataGeneratorFactory } from '../../../utils/data_generator';
+  getRiskEngineStats,
+} from '../../utils';
+import { FtrProviderContext } from '../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext) => {
   const supertest = getService('supertest');
   const esArchiver = getService('esArchiver');
@@ -29,7 +32,7 @@ export default ({ getService }: FtrProviderContext) => {
   const createAndSyncRuleAndAlerts = createAndSyncRuleAndAlertsFactory({ supertest, log });
   const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest);
 
-  describe('Risk engine telemetry', async () => {
+  describe('@ess @serverless telemetry', async () => {
     const { indexListOfDocuments } = dataGeneratorFactory({
       es,
       index: 'ecs_compliant',
@@ -122,8 +125,6 @@ export default ({ getService }: FtrProviderContext) => {
             all_host_risk_scores_total_day: 10,
           };
           expect(otherStats).to.eql(expected);
-          expect(allRiskScoreIndexSize).to.be.greaterThan(0);
-          expect(uniqueRiskScoreIndexSize).to.be.greaterThan(0);
         });
       });
     });
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/get_risk_engine_stats.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/get_risk_engine_stats.ts
new file mode 100644
index 0000000000000..c5343372ce99a
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/get_risk_engine_stats.ts
@@ -0,0 +1,73 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { ToolingLog } from '@kbn/tooling-log';
+import type SuperTest from 'supertest';
+import type { DetectionMetrics } from '@kbn/security-solution-plugin/server/usage/detections/types';
+import type { RiskEngineMetrics } from '@kbn/security-solution-plugin/server/usage/risk_engine/types';
+import {
+  ELASTIC_HTTP_VERSION_HEADER,
+  X_ELASTIC_INTERNAL_ORIGIN_REQUEST,
+} from '@kbn/core-http-common';
+
+import { getStatsUrl } from '../../../../detection_engine_api_integration/utils/get_stats_url';
+import {
+  getDetectionMetricsFromBody,
+  getRiskEngineMetricsFromBody,
+} from '../../../../detection_engine_api_integration/utils/get_detection_metrics_from_body';
+
+/**
+ * Gets the stats from the stats endpoint.
+ * @param supertest The supertest agent.
+ * @returns The detection metrics
+ */
+export const getStats = async (
+  supertest: SuperTest.SuperTest<SuperTest.Test>,
+  log: ToolingLog
+): Promise<DetectionMetrics> => {
+  const response = await supertest
+    .post(getStatsUrl())
+    .set('kbn-xsrf', 'true')
+    .set(ELASTIC_HTTP_VERSION_HEADER, '2')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
+    .send({ unencrypted: true, refreshCache: true });
+  if (response.status !== 200) {
+    log.error(
+      `Did not get an expected 200 "ok" when getting the stats for detections. CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify(
+        response.body
+      )}, status: ${JSON.stringify(response.status)}`
+    );
+  }
+
+  return getDetectionMetricsFromBody(response.body);
+};
+
+/**
+ * Gets the stats from the stats endpoint.
+ * @param supertest The supertest agent.
+ * @returns The detection metrics
+ */
+export const getRiskEngineStats = async (
+  supertest: SuperTest.SuperTest<SuperTest.Test>,
+  log: ToolingLog
+): Promise<RiskEngineMetrics> => {
+  const response = await supertest
+    .post(getStatsUrl())
+    .set('kbn-xsrf', 'true')
+    .set(ELASTIC_HTTP_VERSION_HEADER, '2')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
+    .send({ unencrypted: true, refreshCache: true });
+  if (response.status !== 200) {
+    log.error(
+      `Did not get an expected 200 "ok" when getting the stats for risk engine. CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify(
+        response.body
+      )}, status: ${JSON.stringify(response.status)}`
+    );
+  }
+
+  return getRiskEngineMetricsFromBody(response.body);
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts
new file mode 100644
index 0000000000000..00eb2adafd2e8
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts
@@ -0,0 +1,8 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+export * from './risk_engine';
+export * from './get_risk_engine_stats';
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts
similarity index 93%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
rename to x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts
index 8a36471b1a6a7..48c7763d7a9d6 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/utils.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts
@@ -5,7 +5,10 @@
  * 2.0.
  */
 
-import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
+import {
+  ELASTIC_HTTP_VERSION_HEADER,
+  X_ELASTIC_INTERNAL_ORIGIN_REQUEST,
+} from '@kbn/core-http-common';
 import { v4 as uuidv4 } from 'uuid';
 import SuperTest from 'supertest';
 import type { Client } from '@elastic/elasticsearch';
@@ -21,13 +24,13 @@ import {
 } from '@kbn/security-solution-plugin/common/constants';
 import {
   createRule,
-  waitForSignalsToBePresent,
+  waitForAlertsToBePresent,
   waitForRuleSuccess,
-  getRuleForSignalTesting,
+  getRuleForAlertTesting,
   countDownTest,
   waitFor,
   routeWithNamespace,
-} from '../../../utils';
+} from '../../detections_response/utils';
 
 const sanitizeScore = (score: Partial<RiskScore>): Partial<RiskScore> => {
   delete score['@timestamp'];
@@ -79,7 +82,7 @@ export const createAndSyncRuleAndAlertsFactory =
     query: string;
     riskScoreOverride?: string;
   }): Promise<void> => {
-    const rule = getRuleForSignalTesting(['ecs_compliant']);
+    const rule = getRuleForAlertTesting(['ecs_compliant']);
     const { id } = await createRule(
       supertest,
       log,
@@ -99,7 +102,7 @@ export const createAndSyncRuleAndAlertsFactory =
       namespace
     );
     await waitForRuleSuccess({ supertest, log, id, namespace });
-    await waitForSignalsToBePresent(supertest, log, alerts, [id], namespace);
+    await waitForAlertsToBePresent(supertest, log, alerts, [id], namespace);
   };
 
 export const deleteRiskScoreIndices = async ({
@@ -399,6 +402,7 @@ export const clearLegacyDashboards = async ({
         '/internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/hostRiskScoreDashboards'
       )
       .set('kbn-xsrf', 'true')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send()
       .expect(200);
 
@@ -407,6 +411,7 @@ export const clearLegacyDashboards = async ({
         '/internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/userRiskScoreDashboards'
       )
       .set('kbn-xsrf', 'true')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send()
       .expect(200);
   } catch (e) {
@@ -468,6 +473,7 @@ export const riskEngineRouteHelpersFactory = (
       .post(routeWithNamespace(RISK_ENGINE_INIT_URL, namespace))
       .set('kbn-xsrf', 'true')
       .set('elastic-api-version', '1')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send()
       .expect(200),
 
@@ -484,6 +490,7 @@ export const riskEngineRouteHelpersFactory = (
       .post(routeWithNamespace(RISK_ENGINE_ENABLE_URL, namespace))
       .set('kbn-xsrf', 'true')
       .set('elastic-api-version', '1')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send()
       .expect(200),
 
@@ -492,6 +499,7 @@ export const riskEngineRouteHelpersFactory = (
       .post(routeWithNamespace(RISK_ENGINE_DISABLE_URL, namespace))
       .set('kbn-xsrf', 'true')
       .set('elastic-api-version', '1')
+      .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
       .send()
       .expect(200),
 });
@@ -505,6 +513,7 @@ export const installLegacyRiskScore = async ({
     .post('/internal/risk_score')
     .set('kbn-xsrf', 'true')
     .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
     .send({ riskScoreEntity: 'host' })
     .expect(200);
 
@@ -512,6 +521,7 @@ export const installLegacyRiskScore = async ({
     .post('/internal/risk_score')
     .set('kbn-xsrf', 'true')
     .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
     .send({ riskScoreEntity: 'user' })
     .expect(200);
 
@@ -521,6 +531,7 @@ export const installLegacyRiskScore = async ({
     )
     .set('kbn-xsrf', 'true')
     .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
     .send()
     .expect(200);
 
@@ -530,6 +541,7 @@ export const installLegacyRiskScore = async ({
     )
     .set('kbn-xsrf', 'true')
     .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+    .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana')
     .send()
     .expect(200);
 };
diff --git a/x-pack/test/security_solution_api_integration/tsconfig.json b/x-pack/test/security_solution_api_integration/tsconfig.json
index b2e2715a52ccd..2c3b9082ac7cc 100644
--- a/x-pack/test/security_solution_api_integration/tsconfig.json
+++ b/x-pack/test/security_solution_api_integration/tsconfig.json
@@ -30,6 +30,7 @@
     "@kbn/core-saved-objects-server",
     "@kbn/core",
     "@kbn/alerting-plugin",
+    "@kbn/core-http-common",
     "@kbn/securitysolution-ecs"
   ]
 }

From 369a022ceb807747629640bbb29514fd8282f666 Mon Sep 17 00:00:00 2001
From: Shahzad <shahzad31comp@gmail.com>
Date: Thu, 9 Nov 2023 15:11:31 +0100
Subject: [PATCH 053/147] [Synthetics] Add space id to documents (#170871)

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../check_registered_types.test.ts            |   2 +-
 .../fleet/server/saved_objects/index.ts       |  10 ++
 .../migrations/synthetics/to_v8_12_0.test.ts  | 146 ++++++++++++++++++
 .../migrations/synthetics/to_v8_12_0.ts       |  54 +++++++
 .../monitor_management/monitor_types.ts       |  28 ++--
 .../format_synthetics_policy.ts               |   3 +-
 .../processors_formatter.ts                   |  42 ++---
 .../public_formatters/format_configs.test.ts  |  28 ++++
 .../public_formatters/format_configs.ts       |   6 +-
 .../synthetics_private_location.ts            |   1 +
 .../synthetics_monitor_client.test.ts         |   1 +
 .../synthetics_monitor_client.ts              |  13 +-
 .../synthetics_service/synthetics_service.ts  |   1 +
 .../add_monitor_private_location.ts           |   1 +
 .../apis/synthetics/inspect_monitor.ts        |   6 +-
 .../synthetics/sample_data/test_policy.ts     |   7 +
 .../test_project_monitor_policy.ts            |   2 +
 .../services/private_location_test_service.ts |   2 +-
 18 files changed, 307 insertions(+), 46 deletions(-)
 create mode 100644 x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.test.ts
 create mode 100644 x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.ts

diff --git a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
index 66fbd33d1568a..dd736740a9377 100644
--- a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
+++ b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts
@@ -107,7 +107,7 @@ describe('checking migration metadata changes on all registered SO types', () =>
         "ingest-agent-policies": "7633e578f60c074f8267bc50ec4763845e431437",
         "ingest-download-sources": "279a68147e62e4d8858c09ad1cf03bd5551ce58d",
         "ingest-outputs": "8546f1123ec30dcbd6f238f72729c5f1656a4d9b",
-        "ingest-package-policies": "a0c9fb48e04dcd638e593db55f1c6451523f90ea",
+        "ingest-package-policies": "f4c2767e852b700a8b82678925b86bac08958b43",
         "ingest_manager_settings": "64955ef1b7a9ffa894d4bb9cf863b5602bfa6885",
         "inventory-view": "b8683c8e352a286b4aca1ab21003115a4800af83",
         "kql-telemetry": "93c1d16c1a0dfca9c8842062cf5ef8f62ae401ad",
diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts
index 7c68ab9105e49..b87310e850c81 100644
--- a/x-pack/plugins/fleet/server/saved_objects/index.ts
+++ b/x-pack/plugins/fleet/server/saved_objects/index.ts
@@ -25,6 +25,8 @@ import {
   UNINSTALL_TOKENS_SAVED_OBJECT_TYPE,
 } from '../constants';
 
+import { migrateSyntheticsPackagePolicyToV8120 } from './migrations/synthetics/to_v8_12_0';
+
 import {
   migratePackagePolicyEvictionsFromV8110,
   migratePackagePolicyToV8110,
@@ -394,6 +396,14 @@ const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({
           },
         ],
       },
+      '5': {
+        changes: [
+          {
+            type: 'data_backfill',
+            backfillFn: migrateSyntheticsPackagePolicyToV8120,
+          },
+        ],
+      },
     },
     migrations: {
       '7.10.0': migratePackagePolicyToV7100,
diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.test.ts
new file mode 100644
index 0000000000000..755897c50ef96
--- /dev/null
+++ b/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.test.ts
@@ -0,0 +1,146 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { SavedObjectModelTransformationContext } from '@kbn/core-saved-objects-server';
+
+import type { PackagePolicy } from '../../../../common';
+
+import { getBrowserPolicy } from './fixtures/8.7.0';
+
+import { migrateSyntheticsPackagePolicyToV8120 as migration } from './to_v8_12_0';
+import { migrateSyntheticsPackagePolicyToV8100 as migration10 } from './to_v8_10_0';
+
+describe('8.12.0 Synthetics Package Policy migration', () => {
+  describe('processors migration', () => {
+    it('handles processors field for empty values', () => {
+      const doc = getBrowserPolicy('false');
+      const actual10 = migration10(doc, {} as SavedObjectModelTransformationContext);
+      doc.attributes = actual10.attributes as PackagePolicy;
+
+      const actual = migration(
+        { ...doc, namespace: 'default' },
+        {} as SavedObjectModelTransformationContext
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.vars?.processors?.value).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                meta: { space_id: 'default' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.compiled_stream?.processors).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                meta: { space_id: 'default' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+    });
+
+    it('handles processors field for project monitor', () => {
+      const doc = getBrowserPolicy('', 'test-project');
+      const actual10 = migration10(doc, {} as SavedObjectModelTransformationContext);
+      doc.attributes = actual10.attributes as PackagePolicy;
+      const actual = migration(
+        { ...doc, namespace: 'default' },
+        {} as SavedObjectModelTransformationContext
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.vars?.processors?.value).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                'monitor.project.name': 'test-project',
+                'monitor.project.id': 'test-project',
+                meta: { space_id: 'default' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.compiled_stream.processors).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                'monitor.project.name': 'test-project',
+                'monitor.project.id': 'test-project',
+                meta: { space_id: 'default' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+    });
+
+    it('handles processors field for test now fields', () => {
+      const doc = getBrowserPolicy('', 'test-project', 'test-run-id', true);
+      const actual10 = migration10(doc, {} as SavedObjectModelTransformationContext);
+      doc.attributes = actual10.attributes as PackagePolicy;
+      const actual = migration(
+        { ...doc, namespace: 'test' },
+        {} as SavedObjectModelTransformationContext
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.vars?.processors?.value).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                test_run_id: 'test-run-id',
+                run_once: true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                'monitor.project.name': 'test-project',
+                'monitor.project.id': 'test-project',
+                meta: { space_id: 'test' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+      expect(actual.attributes?.inputs?.[3]?.streams[0]?.compiled_stream.processors).toEqual(
+        JSON.stringify([
+          {
+            add_fields: {
+              fields: {
+                'monitor.fleet_managed': true,
+                test_run_id: 'test-run-id',
+                run_once: true,
+                config_id: '420754e9-40f2-486c-bc2e-265bafd735c5',
+                'monitor.project.name': 'test-project',
+                'monitor.project.id': 'test-project',
+                meta: { space_id: 'test' },
+              },
+              target: '',
+            },
+          },
+        ])
+      );
+    });
+  });
+});
diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.ts
new file mode 100644
index 0000000000000..c7acea2e5d4a9
--- /dev/null
+++ b/x-pack/plugins/fleet/server/saved_objects/migrations/synthetics/to_v8_12_0.ts
@@ -0,0 +1,54 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { SavedObjectModelDataBackfillFn } from '@kbn/core-saved-objects-server';
+
+import type { PackagePolicy } from '../../../../common';
+
+export const migrateSyntheticsPackagePolicyToV8120: SavedObjectModelDataBackfillFn<
+  PackagePolicy,
+  PackagePolicy
+> = (packagePolicyDoc) => {
+  if (
+    packagePolicyDoc.attributes.package?.name !== 'synthetics' ||
+    !packagePolicyDoc.attributes.is_managed
+  ) {
+    return packagePolicyDoc;
+  }
+  const updatedAttributes = packagePolicyDoc.attributes;
+  const namespace = packagePolicyDoc.namespace;
+
+  const enabledInput = updatedAttributes.inputs.find((input) => input.enabled === true);
+  const enabledStream = enabledInput?.streams.find((stream) => {
+    return ['browser', 'http', 'icmp', 'tcp'].includes(stream.data_stream.dataset);
+  });
+  if (!enabledStream) {
+    return {
+      attributes: updatedAttributes,
+    };
+  }
+
+  if (enabledStream.vars) {
+    const processors = processorsFormatter(enabledStream.vars.processors.value, namespace);
+    enabledStream.vars.processors = { value: processors, type: 'yaml' };
+    enabledStream.compiled_stream.processors = processors;
+  }
+
+  return {
+    attributes: updatedAttributes,
+  };
+};
+
+export const processorsFormatter = (processorsStr: string, namespace?: string) => {
+  try {
+    const processors = JSON.parse(processorsStr);
+    processors[0].add_fields.fields.meta = { space_id: namespace };
+    return JSON.stringify(processors);
+  } catch (e) {
+    return processorsStr;
+  }
+};
diff --git a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts
index e109396965e7f..27c55ade654c2 100644
--- a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts
+++ b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts
@@ -321,21 +321,26 @@ export const SyntheticsMonitorWithIdCodec = t.intersection([
   t.interface({ id: t.string }),
 ]);
 
+const HeartbeatFieldsCodec = t.intersection([
+  t.interface({
+    config_id: t.string,
+  }),
+  t.partial({
+    run_once: t.boolean,
+    test_run_id: t.string,
+    'monitor.project.name': t.string,
+    'monitor.id': t.string,
+    'monitor.project.id': t.string,
+    'monitor.fleet_managed': t.boolean,
+    meta: t.record(t.string, t.string),
+  }),
+]);
+
 export const HeartbeatConfigCodec = t.intersection([
   SyntheticsMonitorWithIdCodec,
   t.partial({
     fields_under_root: t.boolean,
-    fields: t.intersection([
-      t.interface({
-        config_id: t.string,
-      }),
-      t.partial({
-        run_once: t.boolean,
-        test_run_id: t.string,
-        'monitor.project.name': t.string,
-        'monitor.project.id': t.string,
-      }),
-    ]),
+    fields: HeartbeatFieldsCodec,
   }),
 ]);
 
@@ -400,6 +405,7 @@ export type BrowserFields = t.TypeOf<typeof BrowserFieldsCodec>;
 export type BrowserSimpleFields = t.TypeOf<typeof BrowserSimpleFieldsCodec>;
 export type BrowserAdvancedFields = t.TypeOf<typeof BrowserAdvancedFieldsCodec>;
 export type MonitorFields = t.TypeOf<typeof MonitorFieldsCodec>;
+export type HeartbeatFields = t.TypeOf<typeof HeartbeatFieldsCodec>;
 export type SyntheticsMonitor = t.TypeOf<typeof SyntheticsMonitorCodec>;
 export type SyntheticsMonitorWithId = t.TypeOf<typeof SyntheticsMonitorWithIdCodec>;
 export type EncryptedSyntheticsSavedMonitor = t.TypeOf<typeof EncryptedSyntheticsSavedMonitorCodec>;
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts
index 1b1d0838d73a9..f371747342281 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts
@@ -23,6 +23,7 @@ export interface ProcessorFields {
   'monitor.id': string;
   test_run_id: string;
   run_once: boolean;
+  space_id: string;
 }
 
 export const formatSyntheticsPolicy = (
@@ -70,7 +71,7 @@ export const formatSyntheticsPolicy = (
 
   const processorItem = dataStream?.vars?.processors;
   if (processorItem) {
-    processorItem.value = processorsFormatter(config);
+    processorItem.value = processorsFormatter(config as MonitorFields & ProcessorFields);
   }
 
   // TODO: remove this once we remove legacy support
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts
index 2705187acb557..3a3aabb4e92d4 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts
@@ -6,43 +6,31 @@
  */
 
 import { ProcessorFields } from './format_synthetics_policy';
-import { MonitorFields } from '../../../../common/runtime_types';
-
-type Fields = Record<string, string | boolean>;
+import { HeartbeatFields, MonitorFields } from '../../../../common/runtime_types';
 
 interface FieldProcessor {
   add_fields: {
     target: string;
-    fields: Fields;
+    fields: HeartbeatFields;
   };
 }
 
-export const processorsFormatter = (config: Partial<MonitorFields & ProcessorFields>) => {
-  const fields: Fields = {
-    'monitor.fleet_managed': true,
-  };
-  if (config.test_run_id) {
-    fields.test_run_id = config.test_run_id;
-  }
-  if (config.run_once) {
-    fields.run_once = config.run_once;
-  }
-  if (config.config_id) {
-    fields.config_id = config.config_id;
-  }
-  if (config['monitor.project.name']) {
-    fields['monitor.project.name'] = config['monitor.project.name'];
-  }
-  if (config['monitor.project.id']) {
-    fields['monitor.project.id'] = config['monitor.project.id'];
-  }
-  if (config['monitor.id']) {
-    fields['monitor.id'] = config['monitor.id'];
-  }
+export const processorsFormatter = (config: MonitorFields & ProcessorFields) => {
   const processors: FieldProcessor[] = [
     {
       add_fields: {
-        fields,
+        fields: {
+          'monitor.fleet_managed': true,
+          config_id: config.config_id,
+          test_run_id: config.test_run_id,
+          run_once: config.run_once,
+          'monitor.id': config['monitor.id'],
+          'monitor.project.name': config['monitor.project.name'],
+          'monitor.project.id': config['monitor.project.id'],
+          meta: {
+            space_id: config.space_id,
+          },
+        },
         target: '',
       },
     },
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts
index ecb3a8408b55d..78756c04174ba 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts
@@ -305,6 +305,7 @@ describe('formatHeartbeatRequest', () => {
         monitor: testBrowserConfig as SyntheticsMonitor,
         configId: monitorId,
         heartbeatId,
+        spaceId: 'test-space-id',
       },
       '{"a":"param"}'
     );
@@ -317,6 +318,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': testBrowserConfig.project_id,
         run_once: undefined,
         test_run_id: undefined,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
@@ -329,6 +333,7 @@ describe('formatHeartbeatRequest', () => {
         monitor: testBrowserConfig as SyntheticsMonitor,
         configId: monitorId,
         heartbeatId: monitorId,
+        spaceId: 'test-space-id',
       },
       JSON.stringify({ key: 'value' })
     );
@@ -341,6 +346,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': testBrowserConfig.project_id,
         run_once: undefined,
         test_run_id: undefined,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
       params: '{"key":"value"}',
@@ -354,6 +362,7 @@ describe('formatHeartbeatRequest', () => {
       monitor,
       configId: monitorId,
       heartbeatId: monitorId,
+      spaceId: 'test-space-id',
     });
 
     expect(actual).toEqual({
@@ -365,6 +374,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': undefined,
         run_once: undefined,
         test_run_id: undefined,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
@@ -377,6 +389,7 @@ describe('formatHeartbeatRequest', () => {
       monitor,
       configId: monitorId,
       heartbeatId: monitorId,
+      spaceId: 'test-space-id',
     });
 
     expect(actual).toEqual({
@@ -388,6 +401,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': undefined,
         run_once: undefined,
         test_run_id: undefined,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
@@ -400,6 +416,7 @@ describe('formatHeartbeatRequest', () => {
       configId: monitorId,
       runOnce: true,
       heartbeatId: monitorId,
+      spaceId: 'test-space-id',
     });
 
     expect(actual).toEqual({
@@ -411,6 +428,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': testBrowserConfig.project_id,
         run_once: true,
         test_run_id: undefined,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
@@ -424,6 +444,7 @@ describe('formatHeartbeatRequest', () => {
       configId: monitorId,
       testRunId,
       heartbeatId: monitorId,
+      spaceId: 'test-space-id',
     });
 
     expect(actual).toEqual({
@@ -435,6 +456,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': testBrowserConfig.project_id,
         run_once: undefined,
         test_run_id: testRunId,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
@@ -448,6 +472,7 @@ describe('formatHeartbeatRequest', () => {
       configId: monitorId,
       testRunId,
       heartbeatId: monitorId,
+      spaceId: 'test-space-id',
     });
 
     expect(actual).toEqual({
@@ -460,6 +485,9 @@ describe('formatHeartbeatRequest', () => {
         'monitor.project.id': testBrowserConfig.project_id,
         run_once: undefined,
         test_run_id: testRunId,
+        meta: {
+          space_id: 'test-space-id',
+        },
       },
       fields_under_root: true,
     });
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts b/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts
index 28149eac6ae52..e59a0b625337b 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts
@@ -85,10 +85,11 @@ export interface ConfigData {
   runOnce?: boolean;
   testRunId?: string;
   params: Record<string, string>;
+  spaceId: string;
 }
 
 export const formatHeartbeatRequest = (
-  { monitor, configId, heartbeatId, runOnce, testRunId }: Omit<ConfigData, 'params'>,
+  { monitor, configId, heartbeatId, runOnce, testRunId, spaceId }: Omit<ConfigData, 'params'>,
   params?: string
 ): HeartbeatConfig => {
   const projectId = (monitor as BrowserFields)[ConfigKey.PROJECT_ID];
@@ -106,6 +107,9 @@ export const formatHeartbeatRequest = (
       'monitor.project.id': projectId || undefined,
       run_once: runOnce,
       test_run_id: testRunId,
+      meta: {
+        space_id: spaceId,
+      },
     },
     fields_under_root: true,
     params: monitor.type === 'browser' ? paramsString : '',
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts
index 7aa1b2570c68c..418fbde0d31db 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts
@@ -105,6 +105,7 @@ export class SyntheticsPrivateLocation {
         config.type,
         {
           ...(config as Partial<MonitorFields>),
+          space_id: spaceId,
           config_id: config.fields?.config_id,
           location_name: stringifyString(privateLocation.label),
           location_id: privateLocation.id,
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts
index a586114f00a81..88884a65891f7 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts
@@ -206,6 +206,7 @@ describe('SyntheticsMonitorClient', () => {
         params: {
           username: 'elastic',
         },
+        spaceId: 'test-space',
       },
     ]);
     expect(syntheticsService.deleteConfigs).toHaveBeenCalledTimes(1);
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts
index 696746e28a0f6..da9be512cbcc8 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts
@@ -111,6 +111,7 @@ export class SyntheticsMonitorClient {
       );
 
       const configData = {
+        spaceId,
         params: paramsBySpace[spaceId],
         monitor: editedMonitor.monitor,
         configId: editedMonitor.id,
@@ -128,7 +129,11 @@ export class SyntheticsMonitorClient {
       );
 
       if (deletedPublicConfig) {
-        deletedPublicConfigs.push({ ...deletedPublicConfig, params: paramsBySpace[spaceId] });
+        deletedPublicConfigs.push({
+          ...deletedPublicConfig,
+          params: paramsBySpace[spaceId],
+          spaceId,
+        });
       }
 
       if (privateLocations.length > 0 || this.hasPrivateLocations(editedMonitor.previousMonitor)) {
@@ -165,7 +170,7 @@ export class SyntheticsMonitorClient {
     const privateDeletePromise = this.privateLocationAPI.deleteMonitors(monitors, spaceId);
 
     const publicDeletePromise = this.syntheticsService.deleteConfigs(
-      monitors.map((monitor) => ({ monitor, configId: monitor.config_id, params: {} }))
+      monitors.map((monitor) => ({ spaceId, monitor, configId: monitor.config_id, params: {} }))
     );
     const [pubicResponse] = await Promise.all([publicDeletePromise, privateDeletePromise]);
 
@@ -286,7 +291,7 @@ export class SyntheticsMonitorClient {
     for (const monitor of monitors) {
       const { publicLocations, privateLocations } = this.parseLocations(monitor);
       if (publicLocations.length > 0) {
-        publicConfigs.push({ monitor, configId: monitor.config_id, params: {} });
+        publicConfigs.push({ spaceId, monitor, configId: monitor.config_id, params: {} });
       }
 
       if (privateLocations.length > 0) {
@@ -370,6 +375,7 @@ export class SyntheticsMonitorClient {
       heartbeatConfigs.push(
         formatHeartbeatRequest(
           {
+            spaceId,
             monitor: normalizedMonitor,
             configId: monitor.id,
           },
@@ -388,6 +394,7 @@ export class SyntheticsMonitorClient {
   ) {
     const { monitor, id } = monitorObj;
     const config = {
+      spaceId,
       monitor,
       configId: id,
       params: paramsBySpace[spaceId],
diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
index 4f5739e933e0a..aabedbe96443b 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
@@ -640,6 +640,7 @@ export class SyntheticsService {
         monitor: normalizeSecrets(monitor).attributes,
         configId: monitor.id,
         heartbeatId: attributes[ConfigKey.MONITOR_QUERY_ID],
+        spaceId: monitorSpace,
       };
     });
 
diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts
index 2b22519f6894d..73314ba770384 100644
--- a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts
+++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts
@@ -398,6 +398,7 @@ export default function ({ getService }: FtrProviderContext) {
             id: monitorId,
             location: { id: testFleetPolicyID },
             namespace: formatKibanaNamespace(SPACE_ID),
+            spaceId: SPACE_ID,
           })
         );
         await supertestWithoutAuth
diff --git a/x-pack/test/api_integration/apis/synthetics/inspect_monitor.ts b/x-pack/test/api_integration/apis/synthetics/inspect_monitor.ts
index 947347fb2d4e4..6bf81370365d5 100644
--- a/x-pack/test/api_integration/apis/synthetics/inspect_monitor.ts
+++ b/x-pack/test/api_integration/apis/synthetics/inspect_monitor.ts
@@ -84,7 +84,9 @@ export default function ({ getService }: FtrProviderContext) {
                       'response.include_body_max_bytes': '1024',
                       ipv4: true,
                       ipv6: true,
-                      fields: {},
+                      fields: {
+                        meta: { space_id: 'default' },
+                      },
                       fields_under_root: true,
                     },
                   ],
@@ -147,6 +149,7 @@ export default function ({ getService }: FtrProviderContext) {
                       throttling: { download: 5, upload: 3, latency: 20 },
                       original_space: 'default',
                       fields: {
+                        meta: { space_id: 'default' },
                         'monitor.project.name': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01',
                         'monitor.project.id': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01',
                       },
@@ -223,6 +226,7 @@ export default function ({ getService }: FtrProviderContext) {
             add_fields: {
               target: '',
               fields: {
+                meta: { space_id: 'default' },
                 'monitor.fleet_managed': true,
               },
             },
diff --git a/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts b/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts
index efbeca6161d56..eec5ec78d87b3 100644
--- a/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts
+++ b/x-pack/test/api_integration/apis/synthetics/sample_data/test_policy.ts
@@ -22,6 +22,7 @@ interface PolicyProps {
   proxyUrl?: string;
   params?: Record<string, any>;
   isBrowser?: boolean;
+  spaceId?: string;
 }
 
 export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => {
@@ -130,6 +131,8 @@ export const getHttpInput = ({
   proxyUrl,
   isTLSEnabled,
   isBrowser,
+  spaceId,
+  namespace,
   name = 'check if title is present-Test private location 0',
 }: PolicyProps) => {
   const enabled = !isBrowser;
@@ -197,6 +200,7 @@ export const getHttpInput = ({
             fields: {
               'monitor.fleet_managed': true,
               config_id: id,
+              meta: { space_id: spaceId ?? 'default' },
               'monitor.project.name': projectId,
               'monitor.project.id': projectId,
             },
@@ -297,6 +301,9 @@ export const getHttpInput = ({
         add_fields: {
           fields: {
             config_id: id,
+            meta: {
+              space_id: spaceId ?? 'default',
+            },
             'monitor.fleet_managed': true,
             ...(projectId
               ? { 'monitor.project.id': projectId, 'monitor.project.name': projectId }
diff --git a/x-pack/test/api_integration/apis/synthetics/sample_data/test_project_monitor_policy.ts b/x-pack/test/api_integration/apis/synthetics/sample_data/test_project_monitor_policy.ts
index 73171abe24435..4b9b9b9747422 100644
--- a/x-pack/test/api_integration/apis/synthetics/sample_data/test_project_monitor_policy.ts
+++ b/x-pack/test/api_integration/apis/synthetics/sample_data/test_project_monitor_policy.ts
@@ -158,6 +158,7 @@ export const getTestProjectSyntheticsPolicyLightweight = (
                       config_id: configId,
                       'monitor.project.name': projectId,
                       'monitor.project.id': projectId,
+                      meta: { space_id: 'default' },
                     },
                     target: '',
                   },
@@ -282,6 +283,7 @@ export const getTestProjectSyntheticsPolicyLightweight = (
                     'monitor.fleet_managed': true,
                     'monitor.project.id': projectId,
                     'monitor.project.name': projectId,
+                    meta: { space_id: 'default' },
                   },
                   target: '',
                 },
diff --git a/x-pack/test/api_integration/apis/synthetics/services/private_location_test_service.ts b/x-pack/test/api_integration/apis/synthetics/services/private_location_test_service.ts
index 02f4612cdb13e..99ba316d3f850 100644
--- a/x-pack/test/api_integration/apis/synthetics/services/private_location_test_service.ts
+++ b/x-pack/test/api_integration/apis/synthetics/services/private_location_test_service.ts
@@ -11,7 +11,7 @@ import { SyntheticsPrivateLocations } from '@kbn/synthetics-plugin/common/runtim
 import { FtrProviderContext } from '../../../ftr_provider_context';
 import { KibanaSupertestProvider } from '../../../../../../test/api_integration/services/supertest';
 
-export const INSTALLED_VERSION = '1.1.0';
+export const INSTALLED_VERSION = '1.1.1';
 
 export class PrivateLocationTestService {
   private supertest: ReturnType<typeof KibanaSupertestProvider>;

From 8d191f1950070ee89f19f267db71283dd7caf364 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20S=C3=A1nchez?= <david.sanchezsoler@elastic.co>
Date: Thu, 9 Nov 2023 15:17:55 +0100
Subject: [PATCH 054/147] [Security Solution][Endpoint] Disable vagrantfile
 check update (#170897)

## Summary

Set `config.vm.box_check_update` vagrant option to `false` in order to
use cached images.
---
 .../scripts/endpoint/endpoint_agent_runner/Vagrantfile           | 1 +
 1 file changed, 1 insertion(+)

diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile
index 42080eab2984e..a6b93e8de47b5 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile
+++ b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile
@@ -5,6 +5,7 @@ cachedAgentFilename = ENV["CACHED_AGENT_FILENAME"] || ''
 Vagrant.configure("2") do |config|
   config.vm.hostname = hostname
   config.vm.box = 'ubuntu/jammy64'
+  config.vm.box_check_update = false
 
   config.vm.provider :virtualbox do |vb|
     vb.memory = 4096

From e42ee8a798202a550da098139a2f7dd86edb9f48 Mon Sep 17 00:00:00 2001
From: Jean-Louis Leysens <jeanlouis.leysens@elastic.co>
Date: Thu, 9 Nov 2023 15:20:57 +0100
Subject: [PATCH 055/147] [HTTP] Update doc comments on versioned router from
 `experimental` to `public` or `internal` (#170887)

## Summary

Per the title, this code should no longer be considered experimental.
---
 .../src/versioned_router/types.ts             | 10 ++---
 .../core-http-server/src/versioning/types.ts  | 38 +++++++++----------
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts
index 4004004036c53..b085593cb0a5e 100644
--- a/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts
+++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts
@@ -15,15 +15,15 @@ import type {
 
 export type Method = Exclude<RouteMethod, 'options'>;
 
-/** @experimental */
+/** @internal */
 export interface VersionedRouterRoute {
-  /** @experimental */
+  /** @internal */
   method: string;
-  /** @experimental */
+  /** @internal */
   path: string;
-  /** @experimental */
+  /** @internal */
   options: VersionedRouteConfig<RouteMethod>;
-  /** @experimental */
+  /** @internal */
   handlers: Array<{
     fn: RequestHandler;
     options: AddVersionOpts<unknown, unknown, unknown>;
diff --git a/packages/core/http/core-http-server/src/versioning/types.ts b/packages/core/http/core-http-server/src/versioning/types.ts
index 265a99eb33db7..f295fbaf0e534 100644
--- a/packages/core/http/core-http-server/src/versioning/types.ts
+++ b/packages/core/http/core-http-server/src/versioning/types.ts
@@ -26,7 +26,7 @@ export type { ApiVersion };
 
 /**
  * Configuration for a versioned route
- * @experimental
+ * @public
  */
 export type VersionedRouteConfig<Method extends RouteMethod> = Omit<
   RouteConfig<unknown, unknown, unknown, Method>,
@@ -49,7 +49,7 @@ export type VersionedRouteConfig<Method extends RouteMethod> = Omit<
    * @note When enabled `apiVersion` is a reserved query parameter and will not
    *       be passed to the route handler or handler validation.
    * @note `apiVersion` is a reserved query parameter, avoid using it
-   * @experimental
+   * @public
    * @default false
    */
   enableQueryVersion?: boolean;
@@ -60,7 +60,7 @@ export type VersionedRouteConfig<Method extends RouteMethod> = Omit<
  *
  * @param config - The route configuration
  * @returns A versioned route
- * @experimental
+ * @public
  */
 export type VersionedRouteRegistrar<Method extends RouteMethod, Ctx extends RqCtx = RqCtx> = (
   config: VersionedRouteConfig<Method>
@@ -155,40 +155,40 @@ export type VersionedRouteRegistrar<Method extends RouteMethod, Ctx extends RqCt
  *     }
  *   );
 
- * @experimental
+ * @public
  */
 export interface VersionedRouter<Ctx extends RqCtx = RqCtx> {
   /**
-   * @experimental
+   * @public
    * @track-adoption
    */
   get: VersionedRouteRegistrar<'get', Ctx>;
   /**
-   * @experimental
+   * @public
    * @track-adoption
    */
   put: VersionedRouteRegistrar<'put', Ctx>;
   /**
-   * @experimental
+   * @public
    * @track-adoption
    */
   post: VersionedRouteRegistrar<'post', Ctx>;
   /**
-   * @experimental
+   * @public
    * @track-adoption
    */
   patch: VersionedRouteRegistrar<'patch', Ctx>;
   /**
-   * @experimental
+   * @public
    * @track-adoption
    */
   delete: VersionedRouteRegistrar<'delete', Ctx>;
 }
 
-/** @experimental */
+/** @public */
 export type VersionedRouteRequestValidation<P, Q, B> = RouteValidatorFullConfig<P, Q, B>;
 
-/** @experimental */
+/** @public */
 export interface VersionedRouteResponseValidation {
   [statusCode: number]: { body: RouteValidationFunction<unknown> | Type<unknown> };
   unsafe?: { body?: boolean };
@@ -196,19 +196,19 @@ export interface VersionedRouteResponseValidation {
 
 /**
  * Versioned route validation
- * @experimental
+ * @public
  */
 export interface FullValidationConfig<P, Q, B> {
   /**
    * Validation to run against route inputs: params, query and body
-   * @experimental
+   * @public
    */
   request?: VersionedRouteRequestValidation<P, Q, B>;
   /**
    * Validation to run against route output
    * @note This validation is only intended to run in development. Do not use this
    *       for setting default values!
-   * @experimental
+   * @public
    */
   response?: VersionedRouteResponseValidation;
 }
@@ -216,24 +216,24 @@ export interface FullValidationConfig<P, Q, B> {
 /**
  * Options for a versioned route. Probably needs a lot more options like sunsetting
  * of an endpoint etc.
- * @experimental
+ * @public
  */
 export interface AddVersionOpts<P, Q, B> {
   /**
    * Version to assign to this route
-   * @experimental
+   * @public
    */
   version: ApiVersion;
   /**
    * Validation for this version of a route
-   * @experimental
+   * @public
    */
   validate: false | FullValidationConfig<P, Q, B>;
 }
 
 /**
  * A versioned route
- * @experimental
+ * @public
  */
 export interface VersionedRoute<
   Method extends RouteMethod = RouteMethod,
@@ -244,7 +244,7 @@ export interface VersionedRoute<
    * @param opts {@link AddVersionOpts | Options} for this version of a route
    * @param handler The request handler for this version of a route
    * @returns A versioned route, allows for fluent chaining of version declarations
-   * @experimental
+   * @public
    */
   addVersion<P = unknown, Q = unknown, B = unknown>(
     options: AddVersionOpts<P, Q, B>,

From 60c64906f1219b383c4bb673bce3fbf3d60c4b4a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerg=C5=91=20=C3=81brah=C3=A1m?= <gergo.abraham@elastic.co>
Date: Thu, 9 Nov 2023 15:32:10 +0100
Subject: [PATCH 056/147] [Defend Workflows] Enable FTR API tests for
 serverless using tags (#170418)

## Summary

With a similar solution as #169946, almost all of our FTR API tests
(`x-pack/test/security_solution_endpoint_api_int/`) can now run against
serverless, using `suiteTags` under the hood.

## Usage
```ts
describe('This is the suite.', function() {
    // a custom function wraps the `this.tags()` function to provide type safety
    targetTags(this, ['@ess', '@serverless', '@skipInServerless']);
})
```

> **Note**
> Only `describe()` blocks can be tagged.

## Changes:

- serverless config is added for endpoint FTR API tests:
`x-pack/test/security_solution_endpoint_api_int/serverless.config.ts`
- roles are created only when running against ESS. when running against
serverless, a subset of users/roles already exist (see [this
list](https://github.com/elastic/kibana/pull/170418/files#diff-5aaeaeaedad4321151d5388437084b27f271a6254e95f0352c9a10c3126eddc8R54))
- tests that use roles that doesn't exist on serverless
(`artifact_read_privileges`, `hunter`) are therefore skipped against
serverless
---
 .buildkite/ftr_configs.yml                    |  2 +
 .../endpoint/common/roles_users/index.ts      |  6 ++
 .../security_solution_endpoint/config.base.ts |  5 +-
 .../services/index.ts                         |  6 +-
 .../services/supertest_with_cert.ts           |  8 +++
 .../security_solution_endpoint/target_tags.ts | 49 +++++++++++++---
 .../apis/endpoint_artifacts/blocklists.ts     | 37 ++++++------
 .../apis/endpoint_artifacts/event_filters.ts  | 31 +++++-----
 .../host_isolation_exceptions.ts              | 33 ++++++-----
 .../apis/endpoint_artifacts/trusted_apps.ts   | 37 ++++++------
 .../apis/endpoint_authz.ts                    |  9 ++-
 .../apis/endpoint_response_actions/execute.ts | 19 ++++---
 .../apis/index.ts                             | 23 +++++---
 .../apis/metadata.ts                          |  9 ++-
 .../apis/package.ts                           |  5 +-
 .../apis/policy.ts                            |  5 +-
 .../apis/resolver/entity.ts                   | 28 +++++++---
 .../apis/resolver/entity_id.ts                | 23 +++++---
 .../apis/resolver/events.ts                   | 34 ++++++-----
 .../apis/resolver/tree.ts                     | 46 ++++++++-------
 .../config.base.ts                            | 56 +++++++++++++++++++
 .../config.ts                                 | 30 ++--------
 .../headers.ts                                | 11 ++++
 .../serverless.config.ts                      | 24 ++++++++
 .../services/index.ts                         | 11 ++++
 .../services/roles_users.ts                   | 48 +++-------------
 26 files changed, 374 insertions(+), 221 deletions(-)
 create mode 100644 x-pack/test/security_solution_endpoint_api_int/config.base.ts
 create mode 100644 x-pack/test/security_solution_endpoint_api_int/headers.ts
 create mode 100644 x-pack/test/security_solution_endpoint_api_int/serverless.config.ts

diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml
index c6817a53b08a8..c817c9f8442e5 100644
--- a/.buildkite/ftr_configs.yml
+++ b/.buildkite/ftr_configs.yml
@@ -16,6 +16,7 @@ disabled:
   - x-pack/test/security_solution_api_integration/config/ess/config.base.ts
   - x-pack/test/security_solution_api_integration/config/serverless/config.base.ts
   - x-pack/test/security_solution_endpoint/config.base.ts
+  - x-pack/test/security_solution_endpoint_api_int/config.base.ts
 
   # QA suites that are run out-of-band
   - x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js
@@ -385,6 +386,7 @@ enabled:
   - x-pack/test/security_functional/user_profiles.config.ts
   - x-pack/test/security_functional/expired_session.config.ts
   - x-pack/test/security_solution_endpoint_api_int/config.ts
+  - x-pack/test/security_solution_endpoint_api_int/serverless.config.ts
   - x-pack/test/security_solution_endpoint/endpoint.config.ts
   - x-pack/test/security_solution_endpoint/serverless.endpoint.config.ts
   - x-pack/test/security_solution_endpoint/integrations.config.ts
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts
index b035f55bf1589..7861ee4d6e0d5 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts
@@ -22,6 +22,7 @@ import {
 import { getDetectionsEngineer } from './detections_engineer';
 import { getWithResponseActionsRole } from './with_response_actions_role';
 import { getNoResponseActionsRole } from './without_response_actions_role';
+import { getWithArtifactReadPrivilegesRole } from './with_artifact_read_privileges_role';
 
 export * from './with_response_actions_role';
 export * from './without_response_actions_role';
@@ -74,6 +75,7 @@ export const ENDPOINT_SECURITY_ROLE_NAMES = Object.freeze({
   endpoint_response_actions_access: 'endpoint_response_actions_access',
   endpoint_response_actions_no_access: 'endpoint_response_actions_no_access',
   endpoint_security_policy_management_read: 'endpoint_security_policy_management_read',
+  artifact_read_privileges: 'artifact_read_privileges',
 });
 
 export const getAllEndpointSecurityRoles = (): EndpointSecurityRoleDefinitions => {
@@ -135,5 +137,9 @@ export const getAllEndpointSecurityRoles = (): EndpointSecurityRoleDefinitions =
       ...getEndpointSecurityPolicyManagementReadRole(),
       name: 'endpoint_security_policy_management_read',
     },
+    artifact_read_privileges: {
+      ...getWithArtifactReadPrivilegesRole(),
+      name: 'artifact_read_privileges',
+    },
   };
 };
diff --git a/x-pack/test/security_solution_endpoint/config.base.ts b/x-pack/test/security_solution_endpoint/config.base.ts
index ebfce1ab4db0c..d75458a4c581d 100644
--- a/x-pack/test/security_solution_endpoint/config.base.ts
+++ b/x-pack/test/security_solution_endpoint/config.base.ts
@@ -14,7 +14,10 @@ import {
 } from '../security_solution_endpoint_api_int/registry';
 import type { TargetTags } from './target_tags';
 
-const SUITE_TAGS: Record<string, { include: TargetTags[]; exclude: TargetTags[] }> = {
+export const SUITE_TAGS: Record<
+  'ess' | 'serverless',
+  { include: TargetTags[]; exclude: TargetTags[] }
+> = {
   ess: {
     include: ['@ess'],
     exclude: ['@skipInEss'],
diff --git a/x-pack/test/security_solution_endpoint/services/index.ts b/x-pack/test/security_solution_endpoint/services/index.ts
index b2c52ada028b0..5ba317dfaea3e 100644
--- a/x-pack/test/security_solution_endpoint/services/index.ts
+++ b/x-pack/test/security_solution_endpoint/services/index.ts
@@ -13,7 +13,10 @@ import { TimelineTestService } from '../../security_solution_ftr/services/timeli
 import { DetectionsTestService } from '../../security_solution_ftr/services/detections';
 import { EndpointPolicyTestResourcesProvider } from './endpoint_policy';
 import { EndpointArtifactsTestResources } from './endpoint_artifacts';
-import { KibanaSupertestWithCertProvider } from './supertest_with_cert';
+import {
+  KibanaSupertestWithCertProvider,
+  KibanaSupertestWithCertWithoutAuthProvider,
+} from './supertest_with_cert';
 
 export const services = {
   ...xPackFunctionalServices,
@@ -31,4 +34,5 @@ export const svlServices = {
   ...services,
 
   supertest: KibanaSupertestWithCertProvider,
+  supertestWithoutAuth: KibanaSupertestWithCertWithoutAuthProvider,
 };
diff --git a/x-pack/test/security_solution_endpoint/services/supertest_with_cert.ts b/x-pack/test/security_solution_endpoint/services/supertest_with_cert.ts
index e06e144a1667f..a23d850e3799b 100644
--- a/x-pack/test/security_solution_endpoint/services/supertest_with_cert.ts
+++ b/x-pack/test/security_solution_endpoint/services/supertest_with_cert.ts
@@ -15,3 +15,11 @@ export function KibanaSupertestWithCertProvider({ getService }: FtrProviderConte
 
   return supertest.agent(kibanaServerUrl, { ca });
 }
+
+export function KibanaSupertestWithCertWithoutAuthProvider({ getService }: FtrProviderContext) {
+  const config = getService('config');
+  const kibanaServerUrl = formatUrl({ ...config.get('servers.kibana'), auth: false });
+  const ca = config.get('servers.kibana').certificateAuthorities;
+
+  return supertest.agent(kibanaServerUrl, { ca });
+}
diff --git a/x-pack/test/security_solution_endpoint/target_tags.ts b/x-pack/test/security_solution_endpoint/target_tags.ts
index dd71736e95ee5..4fd76a0173e21 100644
--- a/x-pack/test/security_solution_endpoint/target_tags.ts
+++ b/x-pack/test/security_solution_endpoint/target_tags.ts
@@ -5,13 +5,44 @@
  * 2.0.
  */
 
-export type TargetTags =
-  | '@ess'
-  | '@skipInEss'
-  | '@serverless'
-  | '@skipInServerless'
-  | '@brokenInServerless';
-
-export const targetTags = (thisSuite: Mocha.Suite, tags: TargetTags[]) => {
+import expect from '@kbn/expect';
+
+const TARGET_TAGS = [
+  '@ess',
+  '@skipInEss',
+  '@serverless',
+  '@skipInServerless',
+  '@brokenInServerless',
+] as const;
+
+export type TargetTags = typeof TARGET_TAGS[number];
+
+export function targetTags(thisSuite: Mocha.Suite, tags: TargetTags[]) {
+  // @ts-ignore: _tags is not publicly visible
+  const existingTags = (thisSuite._tags as string[]) ?? [];
+  const existingTargetTags = existingTags.filter((tag) => TARGET_TAGS.includes(tag as TargetTags));
+
+  if (existingTargetTags.length > 0) {
+    return expect().fail(`
+    
+    ⚠️  ERROR in \`${targetTags.name}()\`: the passed suite already has target tags.
+
+       Suite name:         ${thisSuite.title}
+       Existing tags:      ${existingTargetTags.join(', ')}
+       New tags:           ${tags.join(', ')}
+
+    💡 This can happen if you call \`${targetTags.name}()\` twice in the same block, or
+        → from the inside of an arrow function
+        → which is passed to a \`describe()\` block
+        → which is somewhere inside \`${thisSuite.title}\`.
+
+    ☝️  Correct usage:
+          describe('must receive a regular function', function () {
+            ${targetTags.name}(this, ['@serverless']);
+          })
+    
+    `);
+  }
+
   thisSuite.tags(tags);
-};
+}
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/blocklists.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/blocklists.ts
index a5a5c109fe440..5351cc22f628a 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/blocklists.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/blocklists.ts
@@ -13,6 +13,7 @@ import {
   GLOBAL_ARTIFACT_TAG,
 } from '@kbn/security-solution-plugin/common/endpoint/service/artifacts';
 import { ExceptionsListItemGenerator } from '@kbn/security-solution-plugin/common/endpoint/data_generators/exceptions_list_item_generator';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { PolicyTestResourceInfo } from '../../../security_solution_endpoint/services/endpoint_policy';
 import { ArtifactTestData } from '../../../security_solution_endpoint/services/endpoint_artifacts';
@@ -24,7 +25,9 @@ export default function ({ getService }: FtrProviderContext) {
   const endpointPolicyTestResources = getService('endpointPolicyTestResources');
   const endpointArtifactTestResources = getService('endpointArtifactTestResources');
 
-  describe('Endpoint artifacts (via lists plugin): Blocklists', () => {
+  describe('Endpoint artifacts (via lists plugin): Blocklists', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let fleetEndpointPolicy: PolicyTestResourceInfo;
 
     before(async () => {
@@ -155,7 +158,7 @@ export default function ({ getService }: FtrProviderContext) {
 
             body.entries[0].field = 'some.invalid.field';
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -176,7 +179,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -197,7 +200,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -224,7 +227,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -258,7 +261,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -272,7 +275,7 @@ export default function ({ getService }: FtrProviderContext) {
             body.os_types = ['linux', 'windows'];
 
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -297,7 +300,7 @@ export default function ({ getService }: FtrProviderContext) {
         for (const blocklistApiCall of [...needsWritePrivilege, ...needsReadPrivilege]) {
           it(`should not error on [${blocklistApiCall.method}] - [${blocklistApiCall.info}]`, async () => {
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.analyst_hunter, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(blocklistApiCall.getBody())
               .expect(200);
@@ -305,24 +308,23 @@ export default function ({ getService }: FtrProviderContext) {
         }
       });
 
-      describe('and user has authorization to read blocklist', () => {
+      describe('and user has authorization to read blocklist', function () {
+        targetTags(this, ['@skipInServerless']); // no such role in serverless
+
         for (const blocklistApiCall of [...blocklistApiCalls, ...needsWritePrivilege]) {
           it(`should error on [${blocklistApiCall.method}] - [${blocklistApiCall.info}]`, async () => {
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.artifact_read_role, 'changeme')
+              .auth(ROLE.artifact_read_privileges, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(blocklistApiCall.getBody())
-              .expect(403, {
-                status_code: 403,
-                message: 'EndpointArtifactError: Endpoint authorization failure',
-              });
+              .expect(403);
           });
         }
 
         for (const blocklistApiCall of needsReadPrivilege) {
           it(`should not error on [${blocklistApiCall.method}] - [${blocklistApiCall.info}]`, async () => {
             await supertestWithoutAuth[blocklistApiCall.method](blocklistApiCall.path)
-              .auth(ROLE.artifact_read_role, 'changeme')
+              .auth(ROLE.artifact_read_privileges, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(blocklistApiCall.getBody())
               .expect(200);
@@ -341,10 +343,7 @@ export default function ({ getService }: FtrProviderContext) {
               .auth(ROLE.t1_analyst, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(blocklistApiCall.getBody())
-              .expect(403, {
-                status_code: 403,
-                message: 'EndpointArtifactError: Endpoint authorization failure',
-              });
+              .expect(403);
           });
         }
       });
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/event_filters.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/event_filters.ts
index 8a00471665e04..5f5c75caa68f9 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/event_filters.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/event_filters.ts
@@ -14,6 +14,7 @@ import {
   getImportExceptionsListSchemaMock,
   toNdJsonString,
 } from '@kbn/lists-plugin/common/schemas/request/import_exceptions_schema.mock';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { PolicyTestResourceInfo } from '../../../security_solution_endpoint/services/endpoint_policy';
 import { ArtifactTestData } from '../../../security_solution_endpoint/services/endpoint_artifacts';
@@ -25,7 +26,9 @@ export default function ({ getService }: FtrProviderContext) {
   const endpointPolicyTestResources = getService('endpointPolicyTestResources');
   const endpointArtifactTestResources = getService('endpointArtifactTestResources');
 
-  describe('Endpoint artifacts (via lists plugin): Event Filters', () => {
+  describe('Endpoint artifacts (via lists plugin): Event Filters', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let fleetEndpointPolicy: PolicyTestResourceInfo;
 
     before(async () => {
@@ -182,7 +185,7 @@ export default function ({ getService }: FtrProviderContext) {
           const body = eventFilterApiCall.getBody({ os_types: ['linux', 'windows'] });
 
           await supertestWithoutAuth[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -197,7 +200,7 @@ export default function ({ getService }: FtrProviderContext) {
 
           // Using superuser there as we need custom license for this action
           await supertest[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -210,7 +213,7 @@ export default function ({ getService }: FtrProviderContext) {
 
           // Using superuser here as we need custom license for this action
           await supertest[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(200);
@@ -222,7 +225,7 @@ export default function ({ getService }: FtrProviderContext) {
       for (const eventFilterApiCall of [...needsWritePrivilege, ...needsReadPrivilege]) {
         it(`should not error on [${eventFilterApiCall.method}] - [${eventFilterApiCall.info}]`, async () => {
           await supertestWithoutAuth[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(eventFilterApiCall.getBody())
             .expect(200);
@@ -230,24 +233,23 @@ export default function ({ getService }: FtrProviderContext) {
       }
     });
 
-    describe('and user has authorization to read event filters', () => {
+    describe('and user has authorization to read event filters', function () {
+      targetTags(this, ['@skipInServerless']); // no such role in serverless
+
       for (const eventFilterApiCall of [...eventFilterCalls, ...needsWritePrivilege]) {
         it(`should error on [${eventFilterApiCall.method}] - [${eventFilterApiCall.info}]`, async () => {
           await supertestWithoutAuth[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.artifact_read_role, 'changeme')
+            .auth(ROLE.hunter, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(eventFilterApiCall.getBody())
-            .expect(403, {
-              status_code: 403,
-              message: 'EndpointArtifactError: Endpoint authorization failure',
-            });
+            .expect(403);
         });
       }
 
       for (const eventFilterApiCall of needsReadPrivilege) {
         it(`should not error on [${eventFilterApiCall.method}] - [${eventFilterApiCall.info}]`, async () => {
           await supertestWithoutAuth[eventFilterApiCall.method](eventFilterApiCall.path)
-            .auth(ROLE.artifact_read_role, 'changeme')
+            .auth(ROLE.hunter, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(eventFilterApiCall.getBody())
             .expect(200);
@@ -266,10 +268,7 @@ export default function ({ getService }: FtrProviderContext) {
             .auth(ROLE.t1_analyst, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(eventFilterApiCall.getBody())
-            .expect(403, {
-              status_code: 403,
-              message: 'EndpointArtifactError: Endpoint authorization failure',
-            });
+            .expect(403);
         });
       }
     });
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/host_isolation_exceptions.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/host_isolation_exceptions.ts
index b22ff51ce8ed7..09616f57a68d0 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/host_isolation_exceptions.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/host_isolation_exceptions.ts
@@ -17,6 +17,7 @@ import {
   toNdJsonString,
 } from '@kbn/lists-plugin/common/schemas/request/import_exceptions_schema.mock';
 import { ExceptionsListItemGenerator } from '@kbn/security-solution-plugin/common/endpoint/data_generators/exceptions_list_item_generator';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { PolicyTestResourceInfo } from '../../../security_solution_endpoint/services/endpoint_policy';
 import { ArtifactTestData } from '../../../security_solution_endpoint/services/endpoint_artifacts';
@@ -28,7 +29,9 @@ export default function ({ getService }: FtrProviderContext) {
   const endpointPolicyTestResources = getService('endpointPolicyTestResources');
   const endpointArtifactTestResources = getService('endpointArtifactTestResources');
 
-  describe('Endpoint Host Isolation Exceptions artifacts (via lists plugin)', () => {
+  describe('Endpoint Host Isolation Exceptions artifacts (via lists plugin)', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let fleetEndpointPolicy: PolicyTestResourceInfo;
     let hostIsolationExceptionData: ArtifactTestData;
 
@@ -191,7 +194,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -207,7 +210,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -230,7 +233,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -246,7 +249,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(body)
             .expect(400)
@@ -273,7 +276,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+            .auth(ROLE.endpoint_policy_manager, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(hostIsolationExceptionApiCall.getBody())
             .expect(200);
@@ -281,7 +284,9 @@ export default function ({ getService }: FtrProviderContext) {
       }
     });
 
-    describe('and user has authorization to read host isolation exceptions', () => {
+    describe('and user has authorization to read host isolation exceptions', function () {
+      targetTags(this, ['@skipInServerless']); // no such role in serverless
+
       for (const hostIsolationExceptionApiCall of [
         ...hostIsolationExceptionCalls,
         ...needsWritePrivilege,
@@ -290,13 +295,10 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.artifact_read_role, 'changeme')
+            .auth(ROLE.hunter, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(hostIsolationExceptionApiCall.getBody())
-            .expect(403, {
-              status_code: 403,
-              message: 'EndpointArtifactError: Endpoint authorization failure',
-            });
+            .expect(403);
         });
       }
 
@@ -305,7 +307,7 @@ export default function ({ getService }: FtrProviderContext) {
           await supertestWithoutAuth[hostIsolationExceptionApiCall.method](
             hostIsolationExceptionApiCall.path
           )
-            .auth(ROLE.artifact_read_role, 'changeme')
+            .auth(ROLE.hunter, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(hostIsolationExceptionApiCall.getBody())
             .expect(200);
@@ -326,10 +328,7 @@ export default function ({ getService }: FtrProviderContext) {
             .auth(ROLE.t1_analyst, 'changeme')
             .set('kbn-xsrf', 'true')
             .send(hostIsolationExceptionApiCall.getBody())
-            .expect(403, {
-              status_code: 403,
-              message: 'EndpointArtifactError: Endpoint authorization failure',
-            });
+            .expect(403);
         });
       }
     });
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/trusted_apps.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/trusted_apps.ts
index 9841cf2adab9c..fb844f40a8fbf 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/trusted_apps.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_artifacts/trusted_apps.ts
@@ -13,6 +13,7 @@ import {
   GLOBAL_ARTIFACT_TAG,
 } from '@kbn/security-solution-plugin/common/endpoint/service/artifacts';
 import { ExceptionsListItemGenerator } from '@kbn/security-solution-plugin/common/endpoint/data_generators/exceptions_list_item_generator';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { PolicyTestResourceInfo } from '../../../security_solution_endpoint/services/endpoint_policy';
 import { ArtifactTestData } from '../../../security_solution_endpoint/services/endpoint_artifacts';
@@ -24,7 +25,9 @@ export default function ({ getService }: FtrProviderContext) {
   const endpointPolicyTestResources = getService('endpointPolicyTestResources');
   const endpointArtifactTestResources = getService('endpointArtifactTestResources');
 
-  describe('Endpoint artifacts (via lists plugin): Trusted Applications', () => {
+  describe('Endpoint artifacts (via lists plugin): Trusted Applications', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let fleetEndpointPolicy: PolicyTestResourceInfo;
 
     before(async () => {
@@ -155,7 +158,7 @@ export default function ({ getService }: FtrProviderContext) {
             body.entries[0].field = 'some.invalid.field';
 
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -169,7 +172,7 @@ export default function ({ getService }: FtrProviderContext) {
             body.entries.push({ ...body.entries[0] });
 
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -190,7 +193,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -224,7 +227,7 @@ export default function ({ getService }: FtrProviderContext) {
             ];
 
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -238,7 +241,7 @@ export default function ({ getService }: FtrProviderContext) {
             body.os_types = ['linux', 'windows'];
 
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -253,7 +256,7 @@ export default function ({ getService }: FtrProviderContext) {
 
             // Using superuser here as we need custom license for this action
             await supertest[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(body)
               .expect(400)
@@ -264,7 +267,7 @@ export default function ({ getService }: FtrProviderContext) {
         for (const trustedAppApiCall of [...needsWritePrivilege, ...needsReadPrivilege]) {
           it(`should not error on [${trustedAppApiCall.method}] - [${trustedAppApiCall.info}]`, async () => {
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.endpoint_security_policy_manager, 'changeme')
+              .auth(ROLE.endpoint_policy_manager, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(trustedAppApiCall.getBody())
               .expect(200);
@@ -272,24 +275,23 @@ export default function ({ getService }: FtrProviderContext) {
         }
       });
 
-      describe('and user has authorization to read trusted apps', () => {
+      describe('and user has authorization to read trusted apps', function () {
+        targetTags(this, ['@skipInServerless']); // no such role in serverless
+
         for (const trustedAppApiCall of [...trustedAppApiCalls, ...needsWritePrivilege]) {
           it(`should error on [${trustedAppApiCall.method}] - [${trustedAppApiCall.info}]`, async () => {
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.artifact_read_role, 'changeme')
+              .auth(ROLE.hunter, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(trustedAppApiCall.getBody())
-              .expect(403, {
-                status_code: 403,
-                message: 'EndpointArtifactError: Endpoint authorization failure',
-              });
+              .expect(403);
           });
         }
 
         for (const trustedAppApiCall of needsReadPrivilege) {
           it(`should not error on [${trustedAppApiCall.method}] - [${trustedAppApiCall.info}]`, async () => {
             await supertestWithoutAuth[trustedAppApiCall.method](trustedAppApiCall.path)
-              .auth(ROLE.artifact_read_role, 'changeme')
+              .auth(ROLE.hunter, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(trustedAppApiCall.getBody())
               .expect(200);
@@ -308,10 +310,7 @@ export default function ({ getService }: FtrProviderContext) {
               .auth(ROLE.t1_analyst, 'changeme')
               .set('kbn-xsrf', 'true')
               .send(trustedAppApiCall.getBody())
-              .expect(403, {
-                status_code: 403,
-                message: 'EndpointArtifactError: Endpoint authorization failure',
-              });
+              .expect(403);
           });
         }
       });
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts
index ef242d887496f..7434f46ca35be 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts
@@ -24,6 +24,7 @@ import {
   EXECUTE_ROUTE,
 } from '@kbn/security-solution-plugin/common/endpoint/constants';
 import { IndexedHostsAndAlertsResponse } from '@kbn/security-solution-plugin/common/endpoint/index_data';
+import { targetTags } from '../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../ftr_provider_context';
 import { ROLE } from '../services/roles_users';
 
@@ -39,7 +40,9 @@ export default function ({ getService }: FtrProviderContext) {
     body: Record<string, unknown> | undefined;
   }
 
-  describe('When attempting to call an endpoint api', () => {
+  describe('When attempting to call an endpoint api', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let indexedData: IndexedHostsAndAlertsResponse;
     let actionId = '';
     let agentId = '';
@@ -246,7 +249,7 @@ export default function ({ getService }: FtrProviderContext) {
           apiListItem.path
         }]`, async () => {
           await supertestWithoutAuth[apiListItem.method](replacePathIds(apiListItem.path))
-            .auth(ROLE.analyst_hunter, 'changeme')
+            .auth(ROLE.endpoint_operations_analyst, 'changeme')
             .set('kbn-xsrf', 'xxx')
             .send(apiListItem.body)
             .expect(403, {
@@ -268,7 +271,7 @@ export default function ({ getService }: FtrProviderContext) {
           apiListItem.path
         }]`, async () => {
           await supertestWithoutAuth[apiListItem.method](replacePathIds(apiListItem.path))
-            .auth(ROLE.analyst_hunter, 'changeme')
+            .auth(ROLE.endpoint_operations_analyst, 'changeme')
             .set('kbn-xsrf', 'xxx')
             .send(apiListItem.body)
             .expect(200);
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts
index 9efd670c55db8..f904539dae231 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts
@@ -8,6 +8,7 @@ import { wrapErrorAndRejectPromise } from '@kbn/security-solution-plugin/common/
 import expect from '@kbn/expect';
 import { EXECUTE_ROUTE } from '@kbn/security-solution-plugin/common/endpoint/constants';
 import { IndexedHostsAndAlertsResponse } from '@kbn/security-solution-plugin/common/endpoint/index_data';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { ROLE } from '../../services/roles_users';
 
@@ -15,7 +16,9 @@ export default function ({ getService }: FtrProviderContext) {
   const supertestWithoutAuth = getService('supertestWithoutAuth');
   const endpointTestResources = getService('endpointTestResources');
 
-  describe('Endpoint `execute` response action', () => {
+  describe('Endpoint `execute` response action', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let indexedData: IndexedHostsAndAlertsResponse;
     let agentId = '';
 
@@ -46,7 +49,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should error on invalid endpoint id', async () => {
       await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [' '], parameters: { command: 'ls -la' } })
@@ -60,7 +63,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should error on missing endpoint id', async () => {
       await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ parameters: { command: 'ls -la' } })
@@ -75,7 +78,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should error on invalid `command` parameter', async () => {
       await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [agentId], parameters: { command: ' ' } })
@@ -89,7 +92,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should error on missing `command` parameter', async () => {
       await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [agentId] })
@@ -104,7 +107,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should error on invalid `timeout` parameter', async () => {
       await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [agentId], parameters: { command: 'ls -la', timeout: 'too' } })
@@ -121,7 +124,7 @@ export default function ({ getService }: FtrProviderContext) {
         body: { data },
       } = await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [agentId], parameters: { command: 'ls -la' } })
@@ -137,7 +140,7 @@ export default function ({ getService }: FtrProviderContext) {
         body: { data },
       } = await supertestWithoutAuth
         .post(EXECUTE_ROUTE)
-        .auth(ROLE.response_actions_role, 'changeme')
+        .auth(ROLE.endpoint_operations_analyst, 'changeme')
         .set('kbn-xsrf', 'true')
         .set('Elastic-Api-Version', '2023-10-31')
         .send({ endpoint_ids: [agentId], parameters: { command: 'ls -la', timeout: 2000 } })
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/index.ts b/x-pack/test/security_solution_endpoint_api_int/apis/index.ts
index 06d54f0aaac45..c0668612907a7 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/index.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/index.ts
@@ -4,8 +4,8 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-
 import { getRegistryUrl as getRegistryUrlFromIngest } from '@kbn/fleet-plugin/server';
+import { isServerlessKibanaFlavor } from '@kbn/security-solution-plugin/scripts/endpoint/common/stack_services';
 import { FtrProviderContext } from '../ftr_provider_context';
 import { getRegistryUrlFromTestEnv, isRegistryEnabled } from '../registry';
 import { ROLE } from '../services/roles_users';
@@ -16,7 +16,7 @@ export default function endpointAPIIntegrationTests(providerContext: FtrProvider
   describe('Endpoint plugin', function () {
     const ingestManager = getService('ingestManager');
     const rolesUsersProvider = getService('rolesUsersProvider');
-
+    const kbnClient = getService('kibanaServer');
     const log = getService('log');
 
     if (!isRegistryEnabled()) {
@@ -34,16 +34,21 @@ export default function endpointAPIIntegrationTests(providerContext: FtrProvider
         log.warning(`Error setting up ingestManager: ${err}`);
       }
 
-      // create role/user
-      for (const role of roles) {
-        await rolesUsersProvider.createRole({ predefinedRole: role });
-        await rolesUsersProvider.createUser({ name: role, roles: [role] });
+      if (!(await isServerlessKibanaFlavor(kbnClient))) {
+        // create role/user
+        for (const role of roles) {
+          await rolesUsersProvider.createRole({ predefinedRole: role });
+          await rolesUsersProvider.createUser({ name: role, roles: [role] });
+        }
       }
     });
+
     after(async () => {
-      // delete role/user
-      await rolesUsersProvider.deleteUsers(roles);
-      await rolesUsersProvider.deleteRoles(roles);
+      if (!(await isServerlessKibanaFlavor(kbnClient))) {
+        // delete role/user
+        await rolesUsersProvider.deleteUsers(roles);
+        await rolesUsersProvider.deleteRoles(roles);
+      }
     });
 
     loadTestFile(require.resolve('./resolver'));
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts b/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts
index 17cc5906d7ba8..3ac6c83938c14 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/metadata.ts
@@ -29,6 +29,7 @@ import {
   EndpointSortableField,
   MetadataListResponse,
 } from '@kbn/security-solution-plugin/common/endpoint/types';
+import { targetTags } from '../../security_solution_endpoint/target_tags';
 import { generateAgentDocs, generateMetadataDocs } from './metadata.fixtures';
 import {
   bulkIndex,
@@ -47,7 +48,9 @@ export default function ({ getService }: FtrProviderContext) {
   const log = getService('log');
 
   // Failing: See https://github.com/elastic/kibana/issues/151854
-  describe.skip('test metadata apis', () => {
+  describe.skip('test metadata apis', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     describe('list endpoints GET route', () => {
       const numberOfHostsInFixture = 2;
       let agent1Timestamp: number;
@@ -415,10 +418,14 @@ export default function ({ getService }: FtrProviderContext) {
       });
 
       it('should respond forbidden if no fleet access', async () => {
+        const config = getService('config');
+        const ca = config.get('servers.kibana').certificateAuthorities;
+
         await getService('supertestWithoutAuth')
           .get(METADATA_TRANSFORMS_STATUS_ROUTE)
           .set('kbn-xsrf', 'xxx')
           .set('Elastic-Api-Version', '2023-10-31')
+          .ca(ca)
           .expect(401);
       });
 
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/package.ts b/x-pack/test/security_solution_endpoint_api_int/apis/package.ts
index 9df605fa32a04..4b6fb578bbef8 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/package.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/package.ts
@@ -15,6 +15,7 @@ import {
   EndpointDocGenerator,
   Event,
 } from '@kbn/security-solution-plugin/common/endpoint/generate_data';
+import { targetTags } from '../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../ftr_provider_context';
 import { InsertedEvents, processEventsIndex } from '../services/resolver';
 import { deleteEventsStream } from './data_stream_helper';
@@ -70,7 +71,9 @@ export default function ({ getService }: FtrProviderContext) {
   };
 
   // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/114885
-  describe.skip('Endpoint package', () => {
+  describe.skip('Endpoint package', function () {
+    targetTags(this, ['@ess']);
+
     describe('network processors', () => {
       let networkIndexData: InsertedEvents;
 
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/policy.ts b/x-pack/test/security_solution_endpoint_api_int/apis/policy.ts
index 8b72a6c21bfe5..1fe5fbda42f19 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/policy.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/policy.ts
@@ -6,13 +6,16 @@
  */
 
 import expect from '@kbn/expect';
+import { targetTags } from '../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../ftr_provider_context';
 import { deletePolicyStream } from './data_stream_helper';
 
 export default function ({ getService }: FtrProviderContext) {
   const esArchiver = getService('esArchiver');
   const supertest = getService('supertest');
-  describe('Endpoint policy api', () => {
+  describe('Endpoint policy api', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     describe('GET /api/endpoint/policy_response', () => {
       before(
         async () =>
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity.ts
index 268f67a30a918..2a85d95f24c65 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity.ts
@@ -8,13 +8,16 @@
 import expect from '@kbn/expect';
 import { eventsIndexPattern } from '@kbn/security-solution-plugin/common/endpoint/constants';
 import { ResolverEntityIndex } from '@kbn/security-solution-plugin/common/endpoint/types';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 
 export default function ({ getService }: FtrProviderContext) {
   const supertest = getService('supertest');
   const esArchiver = getService('esArchiver');
 
-  describe('Resolver tests for the entity route', () => {
+  describe('Resolver tests for the entity route', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     describe('winlogbeat tests', () => {
       before(async () => {
         await esArchiver.load('x-pack/test/functional/es_archives/endpoint/resolver/winlogbeat');
@@ -27,9 +30,12 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns a winlogbeat sysmon event when the event matches the schema correctly', async () => {
         // this id is from the es archive
         const _id = 'sysmon-event';
-        const { body }: { body: ResolverEntityIndex } = await supertest.get(
-          `/api/endpoint/resolver/entity?_id=${_id}&indices=${eventsIndexPattern}&indices=winlogbeat-7.11.0-default`
-        );
+        const { body }: { body: ResolverEntityIndex } = await supertest
+          .get(
+            `/api/endpoint/resolver/entity?_id=${_id}&indices=${eventsIndexPattern}&indices=winlogbeat-7.11.0-default`
+          )
+          .set('x-elastic-internal-origin', 'xxx');
+
         expect(body).eql([
           {
             name: 'winlogbeat',
@@ -47,14 +53,20 @@ export default function ({ getService }: FtrProviderContext) {
       it('does not return a powershell event that has event.module set to powershell', async () => {
         // this id is from the es archive
         const _id = 'powershell-event';
-        const { body }: { body: ResolverEntityIndex } = await supertest.get(
-          `/api/endpoint/resolver/entity?_id=${_id}&indices=${eventsIndexPattern}&indices=winlogbeat-7.11.0-default`
-        );
+        const { body }: { body: ResolverEntityIndex } = await supertest
+          .get(
+            `/api/endpoint/resolver/entity?_id=${_id}&indices=${eventsIndexPattern}&indices=winlogbeat-7.11.0-default`
+          )
+          .set('x-elastic-internal-origin', 'xxx');
+
         expect(body).to.be.empty();
       });
     });
 
-    describe('signals index mapping tests', () => {
+    describe('signals index mapping tests', function () {
+      // illegal_argument_exception: unknown setting [index.lifecycle.name] in before
+      targetTags(this, ['@brokenInServerless']);
+
       before(async () => {
         await esArchiver.load('x-pack/test/functional/es_archives/endpoint/resolver/signals');
       });
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity_id.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity_id.ts
index 6cf74092caf9e..bd5bd0aeca023 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity_id.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/entity_id.ts
@@ -19,9 +19,11 @@ import {
   EndpointDocGenerator,
   Event,
 } from '@kbn/security-solution-plugin/common/endpoint/generate_data';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { InsertedEvents, processEventsIndex } from '../../services/resolver';
 import { createAncestryArray, schemaWithAncestry } from './common';
+import { HEADERS } from '../../headers';
 
 export default function ({ getService }: FtrProviderContext) {
   const supertest = getService('supertest');
@@ -34,7 +36,9 @@ export default function ({ getService }: FtrProviderContext) {
     }
   };
 
-  describe('Resolver handling of entity ids', () => {
+  describe('Resolver handling of entity ids', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     describe('entity api', () => {
       let origin: Event;
       let genData: InsertedEvents;
@@ -52,11 +56,14 @@ export default function ({ getService }: FtrProviderContext) {
       });
 
       it('excludes events that have an empty entity_id field', async () => {
-        const { body }: { body: ResolverEntityIndex } = await supertest.get(
-          // using the same indices value here twice to force the query parameter to be an array
-          // for some reason using supertest's query() function doesn't construct a parsable array
-          `/api/endpoint/resolver/entity?_id=${genData.eventsInfo[0]._id}&indices=${eventsIndexPattern}&indices=${eventsIndexPattern}`
-        );
+        const { body }: { body: ResolverEntityIndex } = await supertest
+          .get(
+            // using the same indices value here twice to force the query parameter to be an array
+            // for some reason using supertest's query() function doesn't construct a parsable array
+            `/api/endpoint/resolver/entity?_id=${genData.eventsInfo[0]._id}&indices=${eventsIndexPattern}&indices=${eventsIndexPattern}`
+          )
+          .set(HEADERS);
+
         expect(body).to.be.empty();
       });
     });
@@ -100,7 +107,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('does not find children without a process entity_id', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             ancestors: 0,
@@ -172,7 +179,7 @@ export default function ({ getService }: FtrProviderContext) {
         };
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             ancestors: 10,
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/events.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/events.ts
index 10cac58533b24..2c1829d2d4501 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/events.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/events.ts
@@ -18,9 +18,11 @@ import {
   Tree,
   RelatedEventCategory,
 } from '@kbn/security-solution-plugin/common/endpoint/generate_data';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { Options, GeneratedTrees } from '../../services/resolver';
 import { compareArrays } from './common';
+import { HEADERS } from '../../headers';
 
 export default function ({ getService }: FtrProviderContext) {
   const supertest = getService('supertest');
@@ -48,7 +50,9 @@ export default function ({ getService }: FtrProviderContext) {
     ancestryArraySize: 2,
   };
 
-  describe('event route', () => {
+  describe('event route', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     let entityIDFilterArray: JsonObject[] | undefined;
     let entityIDFilter: string | undefined;
     before(async () => {
@@ -77,7 +81,7 @@ export default function ({ getService }: FtrProviderContext) {
       });
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter,
           indexPatterns: [eventsIndexPattern],
@@ -100,7 +104,7 @@ export default function ({ getService }: FtrProviderContext) {
       });
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter,
           indexPatterns: [eventsIndexPattern],
@@ -117,7 +121,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should return related events for the root node', async () => {
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -143,7 +147,7 @@ export default function ({ getService }: FtrProviderContext) {
       });
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter,
           indexPatterns: [eventsIndexPattern],
@@ -164,7 +168,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should return paginated results for the root node', async () => {
       let { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events?limit=2`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -180,7 +184,7 @@ export default function ({ getService }: FtrProviderContext) {
 
       ({ body } = await supertest
         .post(`/api/endpoint/resolver/events?limit=2&afterEvent=${body.nextEvent}`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -196,7 +200,7 @@ export default function ({ getService }: FtrProviderContext) {
 
       ({ body } = await supertest
         .post(`/api/endpoint/resolver/events?limit=2&afterEvent=${body.nextEvent}`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -213,7 +217,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should return the first page of information when the cursor is invalid', async () => {
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events?afterEvent=blah`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -231,7 +235,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should sort the events in descending order', async () => {
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -258,7 +262,7 @@ export default function ({ getService }: FtrProviderContext) {
       const to = from;
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: [eventsIndexPattern],
@@ -276,7 +280,7 @@ export default function ({ getService }: FtrProviderContext) {
     it('should not find events when using an incorrect index pattern', async () => {
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: entityIDFilter,
           indexPatterns: ['doesnotexist-*'],
@@ -295,7 +299,7 @@ export default function ({ getService }: FtrProviderContext) {
       expect(originParentID).to.not.be('');
       const { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: JSON.stringify({
             bool: {
@@ -323,7 +327,7 @@ export default function ({ getService }: FtrProviderContext) {
       let { body }: { body: ResolverPaginatedEvents } = await supertest
         .post(`/api/endpoint/resolver/events`)
         .query({ limit: 2 })
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: JSON.stringify({
             bool: {
@@ -346,7 +350,7 @@ export default function ({ getService }: FtrProviderContext) {
       ({ body } = await supertest
         .post(`/api/endpoint/resolver/events`)
         .query({ limit: 3, afterEvent: body.nextEvent })
-        .set('kbn-xsrf', 'xxx')
+        .set(HEADERS)
         .send({
           filter: JSON.stringify({
             bool: {
diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts
index e4838b49f7ca1..c9602243e70e3 100644
--- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts
@@ -16,9 +16,11 @@ import {
   Tree,
   RelatedEventCategory,
 } from '@kbn/security-solution-plugin/common/endpoint/generate_data';
+import { targetTags } from '../../../security_solution_endpoint/target_tags';
 import { FtrProviderContext } from '../../ftr_provider_context';
 import { Options, GeneratedTrees } from '../../services/resolver';
 import { schemaWithAncestry, schemaWithName, schemaWithoutAncestry, verifyTree } from './common';
+import { HEADERS } from '../../headers';
 
 export default function ({ getService }: FtrProviderContext) {
   const supertest = getService('supertest');
@@ -45,7 +47,9 @@ export default function ({ getService }: FtrProviderContext) {
     ancestryArraySize: 2,
   };
 
-  describe('Resolver tree', () => {
+  describe('Resolver tree', function () {
+    targetTags(this, ['@ess', '@serverless']);
+
     before(async () => {
       resolverTrees = await resolver.createTrees(treeOptions);
       // we only requested a single alert so there's only 1 tree
@@ -59,7 +63,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should return the correct ancestor nodes for the tree', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -84,7 +88,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should handle an invalid id', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -104,7 +108,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should return a subset of the ancestors', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -130,7 +134,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should return ancestors without the ancestry array', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -158,7 +162,7 @@ export default function ({ getService }: FtrProviderContext) {
         ).toISOString();
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -185,7 +189,7 @@ export default function ({ getService }: FtrProviderContext) {
         const bottomMostDescendant = Array.from(tree.childrenLevels[1].values())[0].id;
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -221,7 +225,7 @@ export default function ({ getService }: FtrProviderContext) {
         const rightNode = level0Nodes[2].id;
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -252,7 +256,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should not return any nodes when the search index does not have any data', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
@@ -274,7 +278,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns all descendants for the origin without using the ancestry field', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 2,
@@ -303,7 +307,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns all descendants for the origin using the ancestry field', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             // should be ignored when using the ancestry array
@@ -333,7 +337,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('should handle an invalid id', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 100,
@@ -356,7 +360,7 @@ export default function ({ getService }: FtrProviderContext) {
         const childID = Array.from(tree.childrenLevels[0].values())[0].id;
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 1,
@@ -389,7 +393,7 @@ export default function ({ getService }: FtrProviderContext) {
         const rightNodeID = level0Nodes[2].id;
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 6,
             descendantLevels: 0,
@@ -422,7 +426,7 @@ export default function ({ getService }: FtrProviderContext) {
         expect(originGrandparent).to.not.be('');
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 2,
             descendantLevels: 0,
@@ -459,7 +463,7 @@ export default function ({ getService }: FtrProviderContext) {
         expect(originGrandparent).to.not.be('');
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 6,
             descendantLevels: 1,
@@ -495,7 +499,7 @@ export default function ({ getService }: FtrProviderContext) {
         ).toISOString();
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 5,
@@ -524,7 +528,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns all descendants and ancestors without the ancestry field and they should have the name field', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 10,
@@ -562,7 +566,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns all descendants and ancestors without the ancestry field', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 10,
@@ -600,7 +604,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns all descendants and ancestors with the ancestry field', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 100,
             descendantLevels: 10,
@@ -638,7 +642,7 @@ export default function ({ getService }: FtrProviderContext) {
       it('returns an empty response when limits are zero', async () => {
         const { body }: { body: ResolverNode[] } = await supertest
           .post('/api/endpoint/resolver/tree')
-          .set('kbn-xsrf', 'xxx')
+          .set(HEADERS)
           .send({
             descendants: 0,
             descendantLevels: 0,
diff --git a/x-pack/test/security_solution_endpoint_api_int/config.base.ts b/x-pack/test/security_solution_endpoint_api_int/config.base.ts
new file mode 100644
index 0000000000000..039030e2a2230
--- /dev/null
+++ b/x-pack/test/security_solution_endpoint_api_int/config.base.ts
@@ -0,0 +1,56 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { Config } from '@kbn/test';
+import { getRegistryUrlAsArray, createEndpointDockerConfig } from './registry';
+import { SUITE_TAGS } from '../security_solution_endpoint/config.base';
+
+export const generateConfig = async ({
+  baseConfig,
+  junitReportName,
+  kbnServerArgs = [],
+  target,
+  services,
+}: {
+  baseConfig: Config;
+  junitReportName: string;
+  kbnServerArgs?: string[];
+  target: keyof typeof SUITE_TAGS;
+  services: any;
+}): Promise<Config> => {
+  return {
+    ...baseConfig.getAll(),
+    testFiles: [require.resolve('./apis')],
+    dockerServers: createEndpointDockerConfig(),
+    services,
+    junit: {
+      reportName: junitReportName,
+    },
+    suiteTags: {
+      ...baseConfig.get('suiteTags'),
+      include: [...baseConfig.get('suiteTags.include'), ...SUITE_TAGS[target].include],
+      exclude: [...baseConfig.get('suiteTags.exclude'), ...SUITE_TAGS[target].exclude],
+    },
+    kbnTestServer: {
+      ...baseConfig.get('kbnTestServer'),
+      serverArgs: [
+        ...baseConfig.get('kbnTestServer.serverArgs'),
+        // if you return an empty string here the kibana server will not start properly but an empty array works
+        ...getRegistryUrlAsArray(),
+        // always install Endpoint package by default when Fleet sets up
+        `--xpack.fleet.packages.0.name=endpoint`,
+        `--xpack.fleet.packages.0.version=latest`,
+        // this will be removed in 8.7 when the file upload feature is released
+        `--xpack.fleet.enableExperimental.0=diagnosticFileUploadEnabled`,
+        // set any experimental feature flags for testing
+        `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`,
+
+        ...kbnServerArgs,
+      ],
+    },
+  };
+};
diff --git a/x-pack/test/security_solution_endpoint_api_int/config.ts b/x-pack/test/security_solution_endpoint_api_int/config.ts
index 0f2f245378a3c..3789004aba497 100644
--- a/x-pack/test/security_solution_endpoint_api_int/config.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/config.ts
@@ -6,34 +6,16 @@
  */
 
 import { FtrConfigProviderContext } from '@kbn/test';
-import { createEndpointDockerConfig, getRegistryUrlAsArray } from './registry';
+import { generateConfig } from './config.base';
 import { services } from './services';
 
 export default async function ({ readConfigFile }: FtrConfigProviderContext) {
   const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts'));
 
-  return {
-    ...xPackAPITestsConfig.getAll(),
-    testFiles: [require.resolve('./apis')],
-    dockerServers: createEndpointDockerConfig(),
+  return generateConfig({
+    baseConfig: xPackAPITestsConfig,
+    junitReportName: 'X-Pack Endpoint API Integration Tests against ESS',
+    target: 'ess',
     services,
-    junit: {
-      reportName: 'X-Pack Endpoint API Integration Tests',
-    },
-    kbnTestServer: {
-      ...xPackAPITestsConfig.get('kbnTestServer'),
-      serverArgs: [
-        ...xPackAPITestsConfig.get('kbnTestServer.serverArgs'),
-        // if you return an empty string here the kibana server will not start properly but an empty array works
-        ...getRegistryUrlAsArray(),
-        // always install Endpoint package by default when Fleet sets up
-        `--xpack.fleet.packages.0.name=endpoint`,
-        `--xpack.fleet.packages.0.version=latest`,
-        // this will be removed in 8.7 when the file upload feature is released
-        `--xpack.fleet.enableExperimental.0=diagnosticFileUploadEnabled`,
-        // set any experimental feature flags for testing
-        `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`,
-      ],
-    },
-  };
+  });
 }
diff --git a/x-pack/test/security_solution_endpoint_api_int/headers.ts b/x-pack/test/security_solution_endpoint_api_int/headers.ts
new file mode 100644
index 0000000000000..e4ca6acfbbc65
--- /dev/null
+++ b/x-pack/test/security_solution_endpoint_api_int/headers.ts
@@ -0,0 +1,11 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export const HEADERS = Object.freeze({
+  'kbn-xsrf': 'security_solution',
+  'x-elastic-internal-origin': 'security_solution',
+});
diff --git a/x-pack/test/security_solution_endpoint_api_int/serverless.config.ts b/x-pack/test/security_solution_endpoint_api_int/serverless.config.ts
new file mode 100644
index 0000000000000..262bf4dafa2f7
--- /dev/null
+++ b/x-pack/test/security_solution_endpoint_api_int/serverless.config.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrConfigProviderContext } from '@kbn/test';
+import { generateConfig } from './config.base';
+import { svlServices } from './services';
+
+export default async function ({ readConfigFile }: FtrConfigProviderContext) {
+  const serverlessTestsConfig = await readConfigFile(
+    require.resolve('../../test_serverless/shared/config.base.ts')
+  );
+
+  return generateConfig({
+    baseConfig: serverlessTestsConfig,
+    junitReportName: 'X-Pack Endpoint API Integration Tests against Serverless',
+    target: 'serverless',
+    kbnServerArgs: ['--serverless=security'],
+    services: svlServices,
+  });
+}
diff --git a/x-pack/test/security_solution_endpoint_api_int/services/index.ts b/x-pack/test/security_solution_endpoint_api_int/services/index.ts
index e94e41f37b922..44a4354d928f5 100644
--- a/x-pack/test/security_solution_endpoint_api_int/services/index.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/services/index.ts
@@ -5,6 +5,10 @@
  * 2.0.
  */
 
+import {
+  KibanaSupertestWithCertProvider,
+  KibanaSupertestWithCertWithoutAuthProvider,
+} from '../../security_solution_endpoint/services/supertest_with_cert';
 import { services as xPackAPIServices } from '../../api_integration/services';
 import { ResolverGeneratorProvider } from './resolver';
 import { RolesUsersProvider } from './roles_users';
@@ -20,3 +24,10 @@ export const services = {
   endpointArtifactTestResources: EndpointArtifactsTestResources,
   rolesUsersProvider: RolesUsersProvider,
 };
+
+export const svlServices = {
+  ...services,
+
+  supertest: KibanaSupertestWithCertProvider,
+  supertestWithoutAuth: KibanaSupertestWithCertWithoutAuthProvider,
+};
diff --git a/x-pack/test/security_solution_endpoint_api_int/services/roles_users.ts b/x-pack/test/security_solution_endpoint_api_int/services/roles_users.ts
index baac39815b488..1d9c2a353a1f6 100644
--- a/x-pack/test/security_solution_endpoint_api_int/services/roles_users.ts
+++ b/x-pack/test/security_solution_endpoint_api_int/services/roles_users.ts
@@ -5,49 +5,17 @@
  * 2.0.
  */
 
-import type { Role } from '@kbn/security-plugin/common';
-
-import { getT1Analyst } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/t1_analyst';
-import { getT2Analyst } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/t2_analyst';
-import { getHunter } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/hunter';
-import { getThreatIntelligenceAnalyst } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/threat_intelligence_analyst';
-import { getDetectionsEngineer } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/detections_engineer';
-import { getSocManager } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/soc_manager';
-import { getPlatformEngineer } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/platform_engineer';
-import { getEndpointOperationsAnalyst } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/endpoint_operations_analyst';
-import { getEndpointSecurityPolicyManager } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/endpoint_security_policy_manager';
-import { getWithResponseActionsRole } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/with_response_actions_role';
-import { getWithArtifactReadPrivilegesRole } from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users/with_artifact_read_privileges_role';
+import {
+  EndpointSecurityRoleNames,
+  ENDPOINT_SECURITY_ROLE_NAMES,
+  getAllEndpointSecurityRoles,
+} from '@kbn/security-solution-plugin/scripts/endpoint/common/roles_users';
 
 import { FtrProviderContext } from '../ftr_provider_context';
 
-export enum ROLE {
-  t1_analyst = 't1Analyst',
-  t2_analyst = 't2Analyst',
-  analyst_hunter = 'hunter',
-  threat_intelligence_analyst = 'threatIntelligenceAnalyst',
-  detections_engineer = 'detectionsEngineer',
-  soc_manager = 'socManager',
-  platform_engineer = 'platformEngineer',
-  endpoint_operations_analyst = 'endpointOperationsAnalyst',
-  endpoint_security_policy_manager = 'endpointSecurityPolicyManager',
-  response_actions_role = 'executeResponseActions',
-  artifact_read_role = 'artifactReadRole',
-}
+export const ROLE = ENDPOINT_SECURITY_ROLE_NAMES;
 
-const rolesMapping: { [key in ROLE]: Omit<Role, 'name'> } = {
-  t1Analyst: getT1Analyst(),
-  t2Analyst: getT2Analyst(),
-  hunter: getHunter(),
-  threatIntelligenceAnalyst: getThreatIntelligenceAnalyst(),
-  detectionsEngineer: getDetectionsEngineer(),
-  socManager: getSocManager(),
-  platformEngineer: getPlatformEngineer(),
-  endpointOperationsAnalyst: getEndpointOperationsAnalyst(),
-  endpointSecurityPolicyManager: getEndpointSecurityPolicyManager(),
-  executeResponseActions: getWithResponseActionsRole(),
-  artifactReadRole: getWithArtifactReadPrivilegesRole(),
-};
+const rolesMapping = getAllEndpointSecurityRoles();
 
 export function RolesUsersProvider({ getService }: FtrProviderContext) {
   const security = getService('security');
@@ -76,7 +44,7 @@ export function RolesUsersProvider({ getService }: FtrProviderContext) {
      * @param options
      */
     async createRole(options: {
-      predefinedRole?: ROLE;
+      predefinedRole?: EndpointSecurityRoleNames;
       extraPrivileges?: string[];
       customRole?: { roleName: string; extraPrivileges: string[] };
     }): Promise<void> {

From e0da2ae3da8bb59b8889c35ecf40e30042768339 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Thu, 9 Nov 2023 09:47:59 -0500
Subject: [PATCH 057/147] skip failing test suite (#156941)

---
 x-pack/test/fleet_api_integration/apis/epm/install_endpoint.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_endpoint.ts b/x-pack/test/fleet_api_integration/apis/epm/install_endpoint.ts
index 2ba688dfb8bf5..892f89f7c2bb6 100644
--- a/x-pack/test/fleet_api_integration/apis/epm/install_endpoint.ts
+++ b/x-pack/test/fleet_api_integration/apis/epm/install_endpoint.ts
@@ -15,7 +15,8 @@ export default function (providerContext: FtrProviderContext) {
    * There are a few features that are only currently supported for the Endpoint
    * package due to security concerns.
    */
-  describe('Install endpoint package', () => {
+  // Failing: See https://github.com/elastic/kibana/issues/156941
+  describe.skip('Install endpoint package', () => {
     const { getService } = providerContext;
     skipIfNoDockerRegistry(providerContext);
     setupFleetAndAgents(providerContext);

From b9c08bac92f60495a87149f6a49624aef49ce137 Mon Sep 17 00:00:00 2001
From: Chris Cowan <chris@elastic.co>
Date: Thu, 9 Nov 2023 08:26:25 -0700
Subject: [PATCH 058/147] [SLO] Add support for document count to custom metric
 indicator (#170913)

## :cherries: Summary

This PR fixes #170905 by adding the aggregation menu to the Custom
Metric indicator to allow the user to pick either `doc_count` or `sum`
for the aggregation.

<img width="1152" alt="image"
src="https://github.com/elastic/kibana/assets/41702/35aea8bd-d21c-4780-bad6-1efe5fc8902b">
---
 .../kbn-slo-schema/src/schema/indicators.ts   |  39 +++---
 .../custom_metric/metric_indicator.tsx        | 121 +++++++++++++++---
 .../timeslice_metric/metric_input.tsx         |   2 +-
 .../slo_edit/helpers/aggregation_options.ts   |   4 +
 .../hooks/use_section_form_validation.ts      |  24 +++-
 ..._metric_indicator_aggregation.test.ts.snap |  12 +-
 ...get_custom_metric_indicator_aggregation.ts |  23 +++-
 .../__snapshots__/metric_custom.test.ts.snap  |  74 ++++++++---
 .../metric_custom.test.ts                     |  42 ++++++
 .../translations/translations/fr-FR.json      |   2 -
 .../translations/translations/ja-JP.json      |   2 -
 .../translations/translations/zh-CN.json      |   2 -
 12 files changed, 274 insertions(+), 73 deletions(-)

diff --git a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts b/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts
index f8d795275acc6..c6748eba37968 100644
--- a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts
+++ b/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts
@@ -136,22 +136,29 @@ const timesliceMetricIndicatorSchema = t.type({
   ]),
 });
 
-const metricCustomValidAggregations = t.keyof({
-  sum: true,
-});
+const metricCustomDocCountMetric = t.intersection([
+  t.type({
+    name: t.string,
+    aggregation: t.literal('doc_count'),
+  }),
+  t.partial({
+    filter: t.string,
+  }),
+]);
+
+const metricCustomBasicMetric = t.intersection([
+  t.type({
+    name: t.string,
+    aggregation: t.literal('sum'),
+    field: t.string,
+  }),
+  t.partial({
+    filter: t.string,
+  }),
+]);
+
 const metricCustomMetricDef = t.type({
-  metrics: t.array(
-    t.intersection([
-      t.type({
-        name: t.string,
-        aggregation: metricCustomValidAggregations,
-        field: t.string,
-      }),
-      t.partial({
-        filter: t.string,
-      }),
-    ])
-  ),
+  metrics: t.array(t.union([metricCustomBasicMetric, metricCustomDocCountMetric])),
   equation: t.string,
 });
 const metricCustomIndicatorTypeSchema = t.literal('sli.metric.custom');
@@ -267,6 +274,8 @@ export {
   kqlCustomIndicatorTypeSchema,
   metricCustomIndicatorSchema,
   metricCustomIndicatorTypeSchema,
+  metricCustomDocCountMetric,
+  metricCustomBasicMetric,
   timesliceMetricComparatorMapping,
   timesliceMetricIndicatorSchema,
   timesliceMetricIndicatorTypeSchema,
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx
index ec413f46df5dd..262e6e6d2249a 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx
@@ -22,6 +22,10 @@ import { first, range, xor } from 'lodash';
 import React, { useEffect, useState } from 'react';
 import { Controller, useFieldArray, useFormContext } from 'react-hook-form';
 import { Field } from '../../../../hooks/slo/use_fetch_index_pattern_fields';
+import {
+  aggValueToLabel,
+  CUSTOM_METRIC_AGGREGATION_OPTIONS,
+} from '../../helpers/aggregation_options';
 import { createOptionsFromFields, Option } from '../../helpers/create_options';
 import { CreateSLOForm } from '../../types';
 import { QueryBuilder } from '../common/query_builder';
@@ -62,7 +66,8 @@ const metricTooltip = (
     content={i18n.translate(
       'xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip',
       {
-        defaultMessage: 'This data from this field will be aggregated with the "sum" aggregation.',
+        defaultMessage:
+          'This data from this field will be aggregated with the "sum" aggregation or document count.',
       }
     )}
     position="top"
@@ -89,6 +94,7 @@ const equationTooltip = (
 export function MetricIndicator({ type, metricFields, isLoadingIndex }: MetricIndicatorProps) {
   const { control, watch, setValue, register, getFieldState } = useFormContext<CreateSLOForm>();
   const [options, setOptions] = useState<Option[]>(createOptionsFromFields(metricFields));
+  const [aggregationOptions, setAggregationOptions] = useState(CUSTOM_METRIC_AGGREGATION_OPTIONS);
 
   useEffect(() => {
     setOptions(createOptionsFromFields(metricFields));
@@ -131,20 +137,25 @@ export function MetricIndicator({ type, metricFields, isLoadingIndex }: MetricIn
         {fields?.map((metric, index) => (
           <EuiFlexGroup alignItems="center" gutterSize="xs" key={metric.id}>
             <input hidden {...register(`indicator.params.${type}.metrics.${index}.name`)} />
-            <input hidden {...register(`indicator.params.${type}.metrics.${index}.aggregation`)} />
             <EuiFlexItem>
               <EuiFormRow
                 fullWidth
-                isInvalid={getFieldState(`indicator.params.${type}.metrics.${index}.field`).invalid}
+                isInvalid={
+                  getFieldState(`indicator.params.${type}.metrics.${index}.aggregation`).invalid
+                }
                 label={
                   <span>
-                    {metricLabel} {metric.name} {metricTooltip}
+                    {i18n.translate(
+                      'xpack.observability.slo.sloEdit.customMetric.aggregationLabel',
+                      { defaultMessage: 'Aggregation' }
+                    )}{' '}
+                    {metric.name}
                   </span>
                 }
               >
                 <Controller
-                  name={`indicator.params.${type}.metrics.${index}.field`}
-                  defaultValue=""
+                  name={`indicator.params.${type}.metrics.${index}.aggregation`}
+                  defaultValue="sum"
                   rules={{ required: true }}
                   control={control}
                   render={({ field: { ref, ...field }, fieldState }) => (
@@ -153,17 +164,13 @@ export function MetricIndicator({ type, metricFields, isLoadingIndex }: MetricIn
                       async
                       fullWidth
                       singleSelection={{ asPlainText: true }}
-                      prepend={i18n.translate(
-                        'xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel',
-                        { defaultMessage: 'Sum of' }
-                      )}
                       placeholder={i18n.translate(
-                        'xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder',
-                        { defaultMessage: 'Select a metric field' }
+                        'xpack.observability.slo.sloEdit.sliType.customMetric.aggregation.placeholder',
+                        { defaultMessage: 'Select an aggregation' }
                       )}
                       aria-label={i18n.translate(
-                        'xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder',
-                        { defaultMessage: 'Select a metric field' }
+                        'xpack.observability.slo.sloEdit.sliType.customMetric.aggregation.placeholder',
+                        { defaultMessage: 'Select an aggregation' }
                       )}
                       isClearable
                       isInvalid={fieldState.invalid}
@@ -178,40 +185,112 @@ export function MetricIndicator({ type, metricFields, isLoadingIndex }: MetricIn
                       selectedOptions={
                         !!indexPattern &&
                         !!field.value &&
-                        metricFields.some((metricField) => metricField.name === field.value)
+                        CUSTOM_METRIC_AGGREGATION_OPTIONS.some((agg) => agg.value === field.value)
                           ? [
                               {
                                 value: field.value,
-                                label: field.value,
+                                label: aggValueToLabel(field.value),
                               },
                             ]
                           : []
                       }
                       onSearchChange={(searchValue: string) => {
-                        setOptions(
-                          createOptionsFromFields(metricFields, ({ value }) =>
+                        setAggregationOptions(
+                          CUSTOM_METRIC_AGGREGATION_OPTIONS.filter(({ value }) =>
                             value.includes(searchValue)
                           )
                         );
                       }}
-                      options={options}
+                      options={aggregationOptions}
                     />
                   )}
                 />
               </EuiFormRow>
             </EuiFlexItem>
+            {watch(`indicator.params.${type}.metrics.${index}.aggregation`) !== 'doc_count' && (
+              <EuiFlexItem>
+                <EuiFormRow
+                  fullWidth
+                  isInvalid={
+                    getFieldState(`indicator.params.${type}.metrics.${index}.field`).invalid
+                  }
+                  label={
+                    <span>
+                      {metricLabel} {metric.name} {metricTooltip}
+                    </span>
+                  }
+                >
+                  <Controller
+                    name={`indicator.params.${type}.metrics.${index}.field`}
+                    defaultValue=""
+                    rules={{ required: true }}
+                    shouldUnregister
+                    control={control}
+                    render={({ field: { ref, ...field }, fieldState }) => (
+                      <EuiComboBox
+                        {...field}
+                        async
+                        fullWidth
+                        singleSelection={{ asPlainText: true }}
+                        placeholder={i18n.translate(
+                          'xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder',
+                          { defaultMessage: 'Select a metric field' }
+                        )}
+                        aria-label={i18n.translate(
+                          'xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder',
+                          { defaultMessage: 'Select a metric field' }
+                        )}
+                        isClearable
+                        isInvalid={fieldState.invalid}
+                        isDisabled={isLoadingIndex || !indexPattern}
+                        isLoading={!!indexPattern && isLoadingIndex}
+                        onChange={(selected: EuiComboBoxOptionOption[]) => {
+                          if (selected.length) {
+                            return field.onChange(selected[0].value);
+                          }
+                          field.onChange('');
+                        }}
+                        selectedOptions={
+                          !!indexPattern &&
+                          !!field.value &&
+                          metricFields.some((metricField) => metricField.name === field.value)
+                            ? [
+                                {
+                                  value: field.value,
+                                  label: field.value,
+                                },
+                              ]
+                            : []
+                        }
+                        onSearchChange={(searchValue: string) => {
+                          setOptions(
+                            createOptionsFromFields(metricFields, ({ value }) =>
+                              value.includes(searchValue)
+                            )
+                          );
+                        }}
+                        options={options}
+                      />
+                    )}
+                  />
+                </EuiFormRow>
+              </EuiFlexItem>
+            )}
             <EuiFlexItem>
               <QueryBuilder
                 dataTestSubj="customKqlIndicatorFormGoodQueryInput"
                 indexPatternString={watch('indicator.params.index')}
                 label={`${filterLabel} ${metric.name}`}
                 name={`indicator.params.${type}.metrics.${index}.filter`}
-                placeholder=""
+                placeholder={i18n.translate(
+                  'xpack.observability.slo.sloEdit.sliType.customMetric.placeholder',
+                  { defaultMessage: 'KQL filter' }
+                )}
                 required={false}
                 tooltip={
                   <EuiIconTip
                     content={i18n.translate(
-                      'xpack.observability.slo.sloEdit.sliType.customMetric.goodQuery.tooltip',
+                      'xpack.observability.slo.sloEdit.sliType.customMetric.tooltip',
                       {
                         defaultMessage: 'This KQL query should return a subset of events.',
                       }
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/timeslice_metric/metric_input.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/timeslice_metric/metric_input.tsx
index fbb7884ee63ac..95cc277556020 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/components/timeslice_metric/metric_input.tsx
+++ b/x-pack/plugins/observability/public/pages/slo_edit/components/timeslice_metric/metric_input.tsx
@@ -132,7 +132,7 @@ export function MetricInput({
                 selectedOptions={
                   !!indexPattern &&
                   !!field.value &&
-                  AGGREGATION_OPTIONS.some((agg) => agg.value === agg.value)
+                  AGGREGATION_OPTIONS.some((agg) => agg.value === field.value)
                     ? [
                         {
                           value: field.value,
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/helpers/aggregation_options.ts b/x-pack/plugins/observability/public/pages/slo_edit/helpers/aggregation_options.ts
index 4a3a5fb9cf28a..ab27dcd68efe5 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/helpers/aggregation_options.ts
+++ b/x-pack/plugins/observability/public/pages/slo_edit/helpers/aggregation_options.ts
@@ -75,6 +75,10 @@ export const AGGREGATION_OPTIONS = [
   },
 ];
 
+export const CUSTOM_METRIC_AGGREGATION_OPTIONS = AGGREGATION_OPTIONS.filter((option) =>
+  ['doc_count', 'sum'].includes(option.value)
+);
+
 export function aggValueToLabel(value: string) {
   const aggregation = AGGREGATION_OPTIONS.find((agg) => agg.value === value);
   if (aggregation) {
diff --git a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts
index 6fede4552d6f8..e8cabe602e7cc 100644
--- a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts
+++ b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_section_form_validation.ts
@@ -6,6 +6,8 @@
  */
 
 import {
+  metricCustomBasicMetric,
+  metricCustomDocCountMetric,
   MetricCustomIndicator,
   timesliceMetricBasicMetricWithField,
   TimesliceMetricIndicator,
@@ -31,7 +33,16 @@ export function useSectionFormValidation({ getFieldState, getValues, formState,
         const data = getValues('indicator.params.good') as MetricCustomIndicator['params']['good'];
         const isEquationValid = !getFieldState('indicator.params.good.equation').invalid;
         const areMetricsValid =
-          isObject(data) && (data.metrics ?? []).every((metric) => Boolean(metric.field));
+          isObject(data) &&
+          (data.metrics ?? []).every((metric) => {
+            if (metricCustomDocCountMetric.is(metric)) {
+              return true;
+            }
+            if (metricCustomBasicMetric.is(metric) && metric.field != null) {
+              return true;
+            }
+            return false;
+          });
         return isEquationValid && areMetricsValid;
       };
 
@@ -41,7 +52,16 @@ export function useSectionFormValidation({ getFieldState, getValues, formState,
         ) as MetricCustomIndicator['params']['total'];
         const isEquationValid = !getFieldState('indicator.params.total.equation').invalid;
         const areMetricsValid =
-          isObject(data) && (data.metrics ?? []).every((metric) => Boolean(metric.field));
+          isObject(data) &&
+          (data.metrics ?? []).every((metric) => {
+            if (metricCustomDocCountMetric.is(metric)) {
+              return true;
+            }
+            if (metricCustomBasicMetric.is(metric) && metric.field != null) {
+              return true;
+            }
+            return false;
+          });
         return isEquationValid && areMetricsValid;
       };
 
diff --git a/x-pack/plugins/observability/server/services/slo/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap b/x-pack/plugins/observability/server/services/slo/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap
index f5558a33f1981..6bf8f0ad13e56 100644
--- a/x-pack/plugins/observability/server/services/slo/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap
+++ b/x-pack/plugins/observability/server/services/slo/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap
@@ -4,7 +4,7 @@ exports[`GetHistogramIndicatorAggregation should generate a aggregation for good
 Object {
   "_good_A": Object {
     "aggs": Object {
-      "sum": Object {
+      "metric": Object {
         "sum": Object {
           "field": "total",
         },
@@ -16,7 +16,7 @@ Object {
   },
   "_good_B": Object {
     "aggs": Object {
-      "sum": Object {
+      "metric": Object {
         "sum": Object {
           "field": "processed",
         },
@@ -29,8 +29,8 @@ Object {
   "goodEvents": Object {
     "bucket_script": Object {
       "buckets_path": Object {
-        "A": "_good_A>sum",
-        "B": "_good_B>sum",
+        "A": "_good_A>metric",
+        "B": "_good_B>metric",
       },
       "script": Object {
         "lang": "painless",
@@ -45,7 +45,7 @@ exports[`GetHistogramIndicatorAggregation should generate a aggregation for tota
 Object {
   "_total_A": Object {
     "aggs": Object {
-      "sum": Object {
+      "metric": Object {
         "sum": Object {
           "field": "total",
         },
@@ -58,7 +58,7 @@ Object {
   "totalEvents": Object {
     "bucket_script": Object {
       "buckets_path": Object {
-        "A": "_total_A>sum",
+        "A": "_total_A>metric",
       },
       "script": Object {
         "lang": "painless",
diff --git a/x-pack/plugins/observability/server/services/slo/aggregations/get_custom_metric_indicator_aggregation.ts b/x-pack/plugins/observability/server/services/slo/aggregations/get_custom_metric_indicator_aggregation.ts
index 73bbb91b1041f..6c3439eb9a146 100644
--- a/x-pack/plugins/observability/server/services/slo/aggregations/get_custom_metric_indicator_aggregation.ts
+++ b/x-pack/plugins/observability/server/services/slo/aggregations/get_custom_metric_indicator_aggregation.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { MetricCustomIndicator } from '@kbn/slo-schema';
+import { metricCustomDocCountMetric, MetricCustomIndicator } from '@kbn/slo-schema';
 import { getElastichsearchQueryOrThrow } from '../transform_generators';
 
 type MetricCustomMetricDef =
@@ -20,12 +20,22 @@ export class GetCustomMetricIndicatorAggregation {
       const filter = metric.filter
         ? getElastichsearchQueryOrThrow(metric.filter)
         : { match_all: {} };
+
+      if (metricCustomDocCountMetric.is(metric)) {
+        return {
+          ...acc,
+          [`_${type}_${metric.name}`]: {
+            filter,
+          },
+        };
+      }
+
       return {
         ...acc,
         [`_${type}_${metric.name}`]: {
           filter,
           aggs: {
-            sum: {
+            metric: {
               [metric.aggregation]: { field: metric.field },
             },
           },
@@ -42,10 +52,11 @@ export class GetCustomMetricIndicatorAggregation {
   }
 
   private buildMetricEquation(type: 'good' | 'total', metricDef: MetricCustomMetricDef) {
-    const bucketsPath = metricDef.metrics.reduce(
-      (acc, metric) => ({ ...acc, [metric.name]: `_${type}_${metric.name}>sum` }),
-      {}
-    );
+    const bucketsPath = metricDef.metrics.reduce((acc, metric) => {
+      const path = metricCustomDocCountMetric.is(metric) ? '_count' : 'metric';
+      return { ...acc, [metric.name]: `_${type}_${metric.name}>${path}` };
+    }, {});
+
     return {
       bucket_script: {
         buckets_path: bucketsPath,
diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap
index 7c1765953d154..55ed414bd2ec7 100644
--- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap
+++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap
@@ -1,10 +1,38 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`Metric Custom Transform Generator aggregates using doc_count for the denominator equation with filter 1`] = `
+Object {
+  "bucket_script": Object {
+    "buckets_path": Object {
+      "A": "_total_A>_count",
+    },
+    "script": Object {
+      "lang": "painless",
+      "source": "params.A / 100",
+    },
+  },
+}
+`;
+
+exports[`Metric Custom Transform Generator aggregates using doc_count the numerator equation with filter 1`] = `
+Object {
+  "bucket_script": Object {
+    "buckets_path": Object {
+      "A": "_good_A>_count",
+    },
+    "script": Object {
+      "lang": "painless",
+      "source": "params.A * 100",
+    },
+  },
+}
+`;
+
 exports[`Metric Custom Transform Generator aggregates using the denominator equation 1`] = `
 Object {
   "bucket_script": Object {
     "buckets_path": Object {
-      "A": "_total_A>sum",
+      "A": "_total_A>metric",
     },
     "script": Object {
       "lang": "painless",
@@ -18,7 +46,7 @@ exports[`Metric Custom Transform Generator aggregates using the denominator equa
 Object {
   "bucket_script": Object {
     "buckets_path": Object {
-      "A": "_total_A>sum",
+      "A": "_total_A>metric",
     },
     "script": Object {
       "lang": "painless",
@@ -32,7 +60,7 @@ exports[`Metric Custom Transform Generator aggregates using the numerator equati
 Object {
   "bucket_script": Object {
     "buckets_path": Object {
-      "A": "_good_A>sum",
+      "A": "_good_A>metric",
     },
     "script": Object {
       "lang": "painless",
@@ -46,7 +74,7 @@ exports[`Metric Custom Transform Generator aggregates using the numerator equati
 Object {
   "bucket_script": Object {
     "buckets_path": Object {
-      "A": "_good_A>sum",
+      "A": "_good_A>metric",
     },
     "script": Object {
       "lang": "painless",
@@ -101,7 +129,7 @@ Object {
     "aggregations": Object {
       "_good_A": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "total",
             },
@@ -113,7 +141,7 @@ Object {
       },
       "_good_B": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "processed",
             },
@@ -125,7 +153,7 @@ Object {
       },
       "_total_A": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "total",
             },
@@ -138,7 +166,7 @@ Object {
       "slo.denominator": Object {
         "bucket_script": Object {
           "buckets_path": Object {
-            "A": "_total_A>sum",
+            "A": "_total_A>metric",
           },
           "script": Object {
             "lang": "painless",
@@ -158,8 +186,8 @@ Object {
       "slo.numerator": Object {
         "bucket_script": Object {
           "buckets_path": Object {
-            "A": "_good_A>sum",
-            "B": "_good_B>sum",
+            "A": "_good_A>metric",
+            "B": "_good_B>metric",
           },
           "script": Object {
             "lang": "painless",
@@ -384,7 +412,7 @@ Object {
     "aggregations": Object {
       "_good_A": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "total",
             },
@@ -396,7 +424,7 @@ Object {
       },
       "_good_B": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "processed",
             },
@@ -408,7 +436,7 @@ Object {
       },
       "_total_A": Object {
         "aggs": Object {
-          "sum": Object {
+          "metric": Object {
             "sum": Object {
               "field": "total",
             },
@@ -421,7 +449,7 @@ Object {
       "slo.denominator": Object {
         "bucket_script": Object {
           "buckets_path": Object {
-            "A": "_total_A>sum",
+            "A": "_total_A>metric",
           },
           "script": Object {
             "lang": "painless",
@@ -432,8 +460,8 @@ Object {
       "slo.numerator": Object {
         "bucket_script": Object {
           "buckets_path": Object {
-            "A": "_good_A>sum",
-            "B": "_good_B>sum",
+            "A": "_good_A>metric",
+            "B": "_good_B>metric",
           },
           "script": Object {
             "lang": "painless",
@@ -629,3 +657,17 @@ Object {
   "transform_id": Any<String>,
 }
 `;
+
+exports[`Metric Custom Transform Generator support the same field used twice in the equation 1`] = `
+Object {
+  "bucket_script": Object {
+    "buckets_path": Object {
+      "A": "_good_A>metric",
+    },
+    "script": Object {
+      "lang": "painless",
+      "source": "params.A + params.A * 100",
+    },
+  },
+}
+`;
diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.test.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.test.ts
index beea8164b1c99..69685bad0c09e 100644
--- a/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.test.ts
+++ b/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.test.ts
@@ -142,6 +142,20 @@ describe('Metric Custom Transform Generator', () => {
     expect(transform.pivot!.aggregations!['slo.numerator']).toMatchSnapshot();
   });
 
+  it('support the same field used twice in the equation', async () => {
+    const anSLO = createSLO({
+      indicator: createMetricCustomIndicator({
+        good: {
+          metrics: [{ name: 'A', aggregation: 'sum', field: 'good' }],
+          equation: 'A + A * 100',
+        },
+      }),
+    });
+    const transform = generator.getTransformParams(anSLO);
+
+    expect(transform.pivot!.aggregations!['slo.numerator']).toMatchSnapshot();
+  });
+
   it('aggregates using the numerator equation with filter', async () => {
     const anSLO = createSLO({
       indicator: createMetricCustomIndicator({
@@ -158,6 +172,20 @@ describe('Metric Custom Transform Generator', () => {
     expect(transform.pivot!.aggregations!['slo.numerator']).toMatchSnapshot();
   });
 
+  it('aggregates using doc_count the numerator equation with filter', async () => {
+    const anSLO = createSLO({
+      indicator: createMetricCustomIndicator({
+        good: {
+          metrics: [{ name: 'A', aggregation: 'doc_count', filter: 'outcome: "success" ' }],
+          equation: 'A * 100',
+        },
+      }),
+    });
+    const transform = generator.getTransformParams(anSLO);
+
+    expect(transform.pivot!.aggregations!['slo.numerator']).toMatchSnapshot();
+  });
+
   it('aggregates using the denominator equation', async () => {
     const anSLO = createSLO({
       indicator: createMetricCustomIndicator({
@@ -185,4 +213,18 @@ describe('Metric Custom Transform Generator', () => {
 
     expect(transform.pivot!.aggregations!['slo.denominator']).toMatchSnapshot();
   });
+
+  it('aggregates using doc_count for the denominator equation with filter', async () => {
+    const anSLO = createSLO({
+      indicator: createMetricCustomIndicator({
+        total: {
+          metrics: [{ name: 'A', aggregation: 'doc_count', filter: 'outcome: *' }],
+          equation: 'A / 100',
+        },
+      }),
+    });
+    const transform = generator.getTransformParams(anSLO);
+
+    expect(transform.pivot!.aggregations!['slo.denominator']).toMatchSnapshot();
+  });
 });
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index d00b542c58131..6c64ec463940e 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -29682,12 +29682,10 @@
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "Accepte les équations mathématiques de base, les caractères valides sont : A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =",
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationLabel": "Équation",
     "xpack.observability.slo.sloEdit.sliType.customMetric.filterLabel": "Filtre",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.goodQuery.tooltip": "Cette requête KQL doit renvoyer un sous-ensemble d'événements.",
     "xpack.observability.slo.sloEdit.sliType.customMetric.goodTitle": "Bons événements",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "Sélectionner un champ d’indicateur",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricLabel": "Indicateur",
     "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "Filtre de requête",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "Somme de",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "Ceci est compatible avec des calculs de base (A + B / C) et la logique booléenne (A < B ? A : B).",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "Les données de ce champ seront agrégées avec l’agréation de \"somme\".",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalTitle": "Total des événements",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 1ce0c2df38db5..a24d4d8cc7c10 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -29681,12 +29681,10 @@
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "基本的な数式をサポートします。有効な文字:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=",
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationLabel": "式",
     "xpack.observability.slo.sloEdit.sliType.customMetric.filterLabel": "フィルター",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.goodQuery.tooltip": "このKQLクエリはイベントのサブセットを返します。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.goodTitle": "良好なイベント数",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "メトリックフィールドを選択",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricLabel": "メトリック",
     "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "クエリのフィルター",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "の合計",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "これは基本的な数学ロジック(A + B / C)とブールロジック(A < B ?A :B)をサポートします。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "このフィールドのデータは「sum」集計で集約されます。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalTitle": "合計イベント数",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 2fd8d38a579a5..d9aaa9c724465 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -29679,12 +29679,10 @@
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "支持基本数学方程,有效字符包括:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=",
     "xpack.observability.slo.sloEdit.sliType.customMetric.equationLabel": "方程",
     "xpack.observability.slo.sloEdit.sliType.customMetric.filterLabel": "筛选",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.goodQuery.tooltip": "此 KQL 查询应返回一个事件子集。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.goodTitle": "良好事件",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "选择指标字段",
     "xpack.observability.slo.sloEdit.sliType.customMetric.metricLabel": "指标",
     "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "查询筛选",
-    "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "求和",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "这支持基本数学 (A + B / C) 和布尔逻辑 (A < B ?A :B)。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "来自该字段的此类数据将使用“求和”聚合进行汇总。",
     "xpack.observability.slo.sloEdit.sliType.customMetric.totalTitle": "事件合计",

From 397061aebcca23b22d052cf240e566ca25dcc34d Mon Sep 17 00:00:00 2001
From: dkirchan <55240027+dkirchan@users.noreply.github.com>
Date: Thu, 9 Nov 2023 17:27:02 +0200
Subject: [PATCH 059/147] FTR Api Integration with the Second Security Quality
 Gate (#169422)

## Summary

FTR Api Integration tests for Security Solution are now integrated with
the Second Security Quality Gate. The tests are running in 5 scripts in
`x-pack/test/security_solution_api_integration/package.json`.
Each different script is creating its own task in buildkite so 5 scripts
could be running in parallel, depending on the agents availability,
however they all target the same environment for this first integration.

Future needs:
- The FTR runner serverless is needed to be introduced.


### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Jon <jon@elastic.co>
---
 .../security_solution/api_integration.yml     | 67 +++++++++++++++
 .../api-integration-tests.sh                  | 82 +++++++++++++++++++
 2 files changed, 149 insertions(+)
 create mode 100644 .buildkite/pipelines/security_solution/api_integration.yml
 create mode 100755 .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh

diff --git a/.buildkite/pipelines/security_solution/api_integration.yml b/.buildkite/pipelines/security_solution/api_integration.yml
new file mode 100644
index 0000000000000..b4c6cece31c4b
--- /dev/null
+++ b/.buildkite/pipelines/security_solution/api_integration.yml
@@ -0,0 +1,67 @@
+steps:
+  - label: Running exception_workflows:runner:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh exception_workflows:qa:serverless
+    key: exception_workflows:runner:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120
+    retry:
+      automatic:
+        - exit_status: '*'
+          limit: 2
+
+  - label: Running exception_operators_date_numeric_types:runner:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh exception_operators_date_numeric_types:qa:serverless
+    key: exception_operators_date_numeric_types:runner:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120  
+    retry:
+      automatic:
+        - exit_status: '*'
+          limit: 2
+
+  - label: Running exception_operators_keyword_text_long:runner:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh exception_operators_keyword_text_long:qa:serverless
+    key: exception_operators_keyword_text_long:runner:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120
+    retry:
+      automatic:
+        - exit_status: '*'
+          limit: 2
+
+  - label: Running exception_operators_ips_text_array:runner:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh exception_operators_ips_text_array:qa:serverless
+    key: exception_operators_ips_text_array:runner:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120
+    retry:
+      automatic:
+        - exit_status: '1'
+          limit: 2
+
+  - label: Running rule_creation:runner:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh rule_creation:qa:serverless
+    key: rule_creation:runner:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120
+    retry:
+      automatic:
+        - exit_status: '1'
+          limit: 2
+          
+  - label: Running actions:qa:serverless
+    command: .buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh actions:qa:serverless
+    key: actions:qa:serverless
+    agents:
+      queue: n2-4-spot
+    timeout_in_minutes: 120
+    retry:
+      automatic:
+        - exit_status: '1'
+          limit: 2
+  
diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh
new file mode 100755
index 0000000000000..ad7e488dfaea3
--- /dev/null
+++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/api-integration-tests.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+if [ -z "$1" ]
+  then
+    echo "No target script from the package.json file, is supplied"
+    exit 1
+fi
+
+source .buildkite/scripts/common/util.sh
+.buildkite/scripts/bootstrap.sh
+
+buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true"
+
+echo "--- Serverless Security Second Quality Gate"
+cd x-pack/test/security_solution_api_integration
+set +e
+
+QA_API_KEY=$(retry 5 5 vault read -field=qa_api_key secret/kibana-issues/dev/security-solution-qg-enc-key)
+
+# Generate a random 5-digit number
+random_number=$((10000 + $RANDOM % 90000))
+ENVIRONMENT_DETAILS=$(curl --location 'https://global.qa.cld.elstc.co/api/v1/serverless/projects/security' \
+    --header "Authorization: ApiKey $QA_API_KEY" \
+    --header 'Content-Type: application/json' \
+    --data '{
+        "name": "ftr-integration-tests-'$random_number'",
+        "region_id": "aws-eu-west-1"}' | jq '.')
+NAME=$(echo $ENVIRONMENT_DETAILS | jq -r '.name')
+ID=$(echo $ENVIRONMENT_DETAILS | jq -r '.id')
+ES_URL=$(echo $ENVIRONMENT_DETAILS | jq -r '.endpoints.elasticsearch')
+KB_URL=$(echo $ENVIRONMENT_DETAILS | jq -r '.endpoints.kibana')
+
+# Wait five seconds for the project to appear
+sleep 5
+
+# Resetting the credentials of the elastic user in the project
+CREDS_BODY=$(curl -s --location --request POST "https://global.qa.cld.elstc.co/api/v1/serverless/projects/security/$ID/_reset-credentials" \
+  --header "Authorization: ApiKey $QA_API_KEY" \
+  --header 'Content-Type: application/json' | jq '.')
+USERNAME=$(echo $CREDS_BODY | jq -r '.username')
+PASSWORD=$(echo $CREDS_BODY | jq -r '.password')
+AUTH=$(echo "$USERNAME:$PASSWORD")
+
+# Checking if Elasticsearch has status green
+while : ; do
+  STATUS=$(curl -u $AUTH --location "$ES_URL:443/_cluster/health?wait_for_status=green&timeout=50s" | jq -r '.status')
+  if [ "$STATUS" != "green" ]; then
+    echo "Sleeping for 40s to wait for ES status to be green..."
+    sleep 40
+  else
+    echo "Elasticsearch has status green." 
+    break
+  fi
+done
+
+# Checking if Kibana is available
+while : ; do
+  STATUS=$(curl -u $AUTH --location "$KB_URL:443/api/status" | jq -r '.status.overall.level')
+  if [ "$STATUS" != "available" ]; then
+    echo "Sleeping for 15s to wait for Kibana to be available..."
+    sleep 15
+  else
+    echo "Kibana is available." 
+    break
+  fi
+done
+
+# Removing the https:// part of the url provided in order to use it in the command below.
+FORMATTED_ES_URL="${ES_URL/https:\/\//}"    
+FORMATTED_KB_URL="${KB_URL/https:\/\//}"
+
+# Find a way to remove this in the future
+# This is used in order to wait for the environment to be ready. 
+sleep 150
+
+TEST_CLOUD=1 TEST_ES_URL="https://elastic:$PASSWORD@$FORMATTED_ES_URL:443" TEST_KIBANA_URL="https://elastic:$PASSWORD@$FORMATTED_KB_URL:443" yarn run $1
+cmd_status=$?
+echo "Exit code with status: $cmd_status"
+
+curl --location --request DELETE "https://global.qa.cld.elstc.co/api/v1/serverless/projects/security/$ID" \
+  --header "Authorization: ApiKey $QA_API_KEY"
+
+exit $cmd_status
\ No newline at end of file

From 91c50c2873829f3f9f1e4606ea46991df0edd7ec Mon Sep 17 00:00:00 2001
From: James Gowdy <jgowdy@elastic.co>
Date: Thu, 9 Nov 2023 16:14:54 +0000
Subject: [PATCH 060/147] [ML] Kibana context types clean up (#170868)

Corrects the types describing the services added to ML's kibana context.

Most of the churn here is me alphabetically sorting the lists of
dependencies.
Also Removes `appName` from the context as it was never actually set. In
the places where it was being used I've switched to our `PLUGIN_ID`
---
 .../aiops/change_point_detection.tsx          | 14 +--
 .../application/aiops/log_categorization.tsx  |  8 +-
 .../application/aiops/log_rate_analysis.tsx   |  8 +-
 x-pack/plugins/ml/public/application/app.tsx  | 38 ++++----
 .../contexts/kibana/kibana_context.ts         | 38 ++++----
 .../exploration_query_bar.tsx                 | 16 +---
 .../explorer_query_bar/explorer_query_bar.tsx |  4 +-
 x-pack/plugins/ml/public/plugin.ts            | 86 +++++++++----------
 8 files changed, 103 insertions(+), 109 deletions(-)

diff --git a/x-pack/plugins/ml/public/application/aiops/change_point_detection.tsx b/x-pack/plugins/ml/public/application/aiops/change_point_detection.tsx
index 551e19a264463..3919f9f9e5ccd 100644
--- a/x-pack/plugins/ml/public/application/aiops/change_point_detection.tsx
+++ b/x-pack/plugins/ml/public/application/aiops/change_point_detection.tsx
@@ -51,22 +51,22 @@ export const ChangePointDetectionPage: FC = () => {
           appDependencies={{
             ...pick(services, [
               'application',
+              'cases',
+              'charts',
               'data',
+              'embeddable',
               'executionContext',
-              'charts',
               'fieldFormats',
               'http',
+              'i18n',
+              'lens',
               'notifications',
+              'presentationUtil',
               'share',
               'storage',
+              'theme',
               'uiSettings',
               'unifiedSearch',
-              'theme',
-              'lens',
-              'presentationUtil',
-              'embeddable',
-              'cases',
-              'i18n',
               'usageCollection',
             ]),
             fieldStats: { useFieldStatsTrigger, FieldStatsFlyoutProvider },
diff --git a/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx b/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx
index 22fd99136d6ab..455ff9bfc1377 100644
--- a/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx
+++ b/x-pack/plugins/ml/public/application/aiops/log_categorization.tsx
@@ -45,19 +45,19 @@ export const LogCategorizationPage: FC = () => {
           showFrozenDataTierChoice={showNodeInfo}
           appDependencies={pick(services, [
             'application',
+            'charts',
             'data',
             'executionContext',
-            'charts',
             'fieldFormats',
             'http',
+            'i18n',
+            'lens',
             'notifications',
             'share',
             'storage',
+            'theme',
             'uiSettings',
             'unifiedSearch',
-            'theme',
-            'lens',
-            'i18n',
           ])}
         />
       )}
diff --git a/x-pack/plugins/ml/public/application/aiops/log_rate_analysis.tsx b/x-pack/plugins/ml/public/application/aiops/log_rate_analysis.tsx
index 6cc12921accad..c20264a129ea3 100644
--- a/x-pack/plugins/ml/public/application/aiops/log_rate_analysis.tsx
+++ b/x-pack/plugins/ml/public/application/aiops/log_rate_analysis.tsx
@@ -48,19 +48,19 @@ export const LogRateAnalysisPage: FC = () => {
           showFrozenDataTierChoice={showNodeInfo}
           appDependencies={pick(services, [
             'application',
+            'charts',
             'data',
             'executionContext',
-            'charts',
             'fieldFormats',
             'http',
+            'i18n',
+            'lens',
             'notifications',
             'share',
             'storage',
+            'theme',
             'uiSettings',
             'unifiedSearch',
-            'theme',
-            'lens',
-            'i18n',
           ])}
         />
       )}
diff --git a/x-pack/plugins/ml/public/application/app.tsx b/x-pack/plugins/ml/public/application/app.tsx
index 843f277c11eb5..449f03d81b9fd 100644
--- a/x-pack/plugins/ml/public/application/app.tsx
+++ b/x-pack/plugins/ml/public/application/app.tsx
@@ -32,10 +32,11 @@ import { mlApiServicesProvider } from './services/ml_api_service';
 import { HttpService } from './services/http_service';
 import type { PageDependencies } from './routing/router';
 import { EnabledFeaturesContextProvider } from './contexts/ml';
+import type { StartServices } from './contexts/kibana';
 
 export type MlDependencies = Omit<
   MlSetupDependencies,
-  'share' | 'fieldFormats' | 'maps' | 'cases' | 'licensing'
+  'share' | 'fieldFormats' | 'maps' | 'cases' | 'licensing' | 'uiActions'
 > &
   MlStartDependencies;
 
@@ -78,31 +79,32 @@ const App: FC<AppProps> = ({ coreStart, deps, appMountParams, isServerless, mlFe
     setBreadcrumbs: coreStart.chrome!.setBreadcrumbs,
   };
 
-  const services = useMemo(() => {
+  const services: StartServices = useMemo(() => {
     return {
-      kibanaVersion: deps.kibanaVersion,
-      share: deps.share,
+      cases: deps.cases,
+      charts: deps.charts,
+      contentManagement: deps.contentManagement,
+      dashboard: deps.dashboard,
       data: deps.data,
       dataViewEditor: deps.dataViewEditor,
-      security: deps.security,
-      licenseManagement: deps.licenseManagement,
-      storage: localStorage,
-      embeddable: deps.embeddable,
-      maps: deps.maps,
-      triggersActionsUi: deps.triggersActionsUi,
+      dataViews: deps.data.dataViews,
       dataVisualizer: deps.dataVisualizer,
-      usageCollection: deps.usageCollection,
+      embeddable: deps.embeddable,
       fieldFormats: deps.fieldFormats,
-      dashboard: deps.dashboard,
-      charts: deps.charts,
-      cases: deps.cases,
-      unifiedSearch: deps.unifiedSearch,
-      licensing: deps.licensing,
+      kibanaVersion: deps.kibanaVersion,
       lens: deps.lens,
+      licenseManagement: deps.licenseManagement,
+      maps: deps.maps,
+      presentationUtil: deps.presentationUtil,
       savedObjectsManagement: deps.savedObjectsManagement,
       savedSearch: deps.savedSearch,
-      contentManagement: deps.contentManagement,
-      presentationUtil: deps.presentationUtil,
+      security: deps.security,
+      share: deps.share,
+      storage: localStorage,
+      triggersActionsUi: deps.triggersActionsUi,
+      uiActions: deps.uiActions,
+      unifiedSearch: deps.unifiedSearch,
+      usageCollection: deps.usageCollection,
       ...coreStart,
       mlServices: getMlGlobalServices(coreStart.http, deps.usageCollection),
     };
diff --git a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
index 3e999cb1d8aa4..29fdc7dc2f5b3 100644
--- a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
+++ b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
@@ -10,7 +10,7 @@ import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
 import type { CoreStart } from '@kbn/core/public';
 import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
 import { useKibana, KibanaReactContextValue } from '@kbn/kibana-react-plugin/public';
-import type { SecurityPluginSetup } from '@kbn/security-plugin/public';
+import type { SecurityPluginStart } from '@kbn/security-plugin/public';
 import type { LicenseManagementUIPluginSetup } from '@kbn/license-management-plugin/public';
 import type { SharePluginStart } from '@kbn/share-plugin/public';
 import type { IStorageWrapper } from '@kbn/kibana-utils-plugin/public';
@@ -18,7 +18,6 @@ import type { EmbeddableStart } from '@kbn/embeddable-plugin/public';
 import type { MapsStartApi } from '@kbn/maps-plugin/public';
 import type { DataVisualizerPluginStart } from '@kbn/data-visualizer-plugin/public';
 import type { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui-plugin/public';
-import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common';
 import type { DashboardStart } from '@kbn/dashboard-plugin/public';
 import type { SpacesPluginStart } from '@kbn/spaces-plugin/public';
 import type { ChartsPluginStart } from '@kbn/charts-plugin/public';
@@ -30,33 +29,34 @@ import type { ContentManagementPublicStart } from '@kbn/content-management-plugi
 import type { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public';
 import type { PresentationUtilPluginStart } from '@kbn/presentation-util-plugin/public';
 import type { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public';
+import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
+import type { UiActionsStart } from '@kbn/ui-actions-plugin/public';
 import type { MlServicesContext } from '../../app';
 
 interface StartPlugins {
+  cases?: CasesUiStart;
+  charts: ChartsPluginStart;
+  contentManagement: ContentManagementPublicStart;
+  dashboard: DashboardStart;
   data: DataPublicPluginStart;
   dataViewEditor: DataViewEditorStart;
   dataViews: DataViewsPublicPluginStart;
-  security?: SecurityPluginSetup;
-  licenseManagement?: LicenseManagementUIPluginSetup;
-  share: SharePluginStart;
-  embeddable: EmbeddableStart;
-  maps?: MapsStartApi;
-  triggersActionsUi?: TriggersAndActionsUIPublicPluginStart;
   dataVisualizer?: DataVisualizerPluginStart;
-  usageCollection?: UsageCollectionSetup;
-  fieldFormats: FieldFormatsRegistry;
-  dashboard: DashboardStart;
-  spacesApi?: SpacesPluginStart;
-  charts: ChartsPluginStart;
-  cases?: CasesUiStart;
-  unifiedSearch: UnifiedSearchPublicPluginStart;
-  core: CoreStart;
-  appName: string;
+  embeddable: EmbeddableStart;
+  fieldFormats: FieldFormatsStart;
   lens: LensPublicStart;
+  licenseManagement?: LicenseManagementUIPluginSetup;
+  maps?: MapsStartApi;
+  presentationUtil: PresentationUtilPluginStart;
   savedObjectsManagement: SavedObjectsManagementPluginStart;
   savedSearch: SavedSearchPublicPluginStart;
-  contentManagement: ContentManagementPublicStart;
-  presentationUtil: PresentationUtilPluginStart;
+  security?: SecurityPluginStart;
+  share: SharePluginStart;
+  spacesApi?: SpacesPluginStart;
+  triggersActionsUi?: TriggersAndActionsUIPublicPluginStart;
+  uiActions: UiActionsStart;
+  unifiedSearch: UnifiedSearchPublicPluginStart;
+  usageCollection?: UsageCollectionSetup;
 }
 export type StartServices = CoreStart &
   StartPlugins & {
diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx
index 74ca6037f8a90..e2998651f2c21 100644
--- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx
+++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx
@@ -19,6 +19,7 @@ import { QueryStringInput } from '@kbn/unified-search-plugin/public';
 import { QueryErrorMessage } from '@kbn/ml-error-utils';
 
 import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '@kbn/ml-query-utils';
+import { PLUGIN_ID } from '../../../../../../../common/constants/app';
 import { Dictionary } from '../../../../../../../common/types/common';
 import { removeFilterFromQueryString } from '../../../../../explorer/explorer_utils';
 import { useMlKibana } from '../../../../../contexts/kibana';
@@ -53,17 +54,8 @@ export const ExplorationQueryBar: FC<ExplorationQueryBarProps> = ({
   );
 
   const { services } = useMlKibana();
-  const {
-    unifiedSearch,
-    data,
-    storage,
-    appName,
-    notifications,
-    http,
-    docLinks,
-    uiSettings,
-    dataViews,
-  } = services;
+  const { unifiedSearch, data, storage, notifications, http, docLinks, uiSettings, dataViews } =
+    services;
 
   const searchChangeHandler = (q: Query) => setSearchInput(q);
 
@@ -206,7 +198,7 @@ export const ExplorationQueryBar: FC<ExplorationQueryBarProps> = ({
               disableAutoFocus={true}
               dataTestSubj="mlDFAnalyticsQueryInput"
               languageSwitcherPopoverAnchorPosition="rightDown"
-              appName={appName}
+              appName={PLUGIN_ID}
               deps={{
                 unifiedSearch,
                 notifications,
diff --git a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx
index a98b4dc861a36..9e55ade9f6bd5 100644
--- a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx
+++ b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx
@@ -15,6 +15,7 @@ import type { DataView } from '@kbn/data-views-plugin/common';
 import type { QueryErrorMessage } from '@kbn/ml-error-utils';
 import type { InfluencersFilterQuery } from '@kbn/ml-anomaly-utils';
 import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils';
+import { PLUGIN_ID } from '../../../../../common/constants/app';
 import { useAnomalyExplorerContext } from '../../anomaly_explorer_context';
 import { useMlKibana } from '../../../contexts/kibana';
 
@@ -113,7 +114,6 @@ export const ExplorerQueryBar: FC<ExplorerQueryBarProps> = ({
     unifiedSearch,
     data,
     storage,
-    appName,
     notifications,
     http,
     docLinks,
@@ -176,7 +176,7 @@ export const ExplorerQueryBar: FC<ExplorerQueryBarProps> = ({
           disableAutoFocus
           dataTestSubj="explorerQueryInput"
           languageSwitcherPopoverAnchorPosition="rightDown"
-          appName={appName}
+          appName={PLUGIN_ID}
           deps={{
             unifiedSearch,
             notifications,
diff --git a/x-pack/plugins/ml/public/plugin.ts b/x-pack/plugins/ml/public/plugin.ts
index 9b9bf6eddada2..c0356b0f40192 100644
--- a/x-pack/plugins/ml/public/plugin.ts
+++ b/x-pack/plugins/ml/public/plugin.ts
@@ -70,45 +70,45 @@ import type { MlCapabilities } from './shared';
 import { ElasticModels } from './application/services/elastic_models_service';
 
 export interface MlStartDependencies {
-  dataViewEditor: DataViewEditorStart;
+  cases?: CasesUiStart;
+  charts: ChartsPluginStart;
+  contentManagement: ContentManagementPublicStart;
+  dashboard: DashboardStart;
   data: DataPublicPluginStart;
-  unifiedSearch: UnifiedSearchPublicPluginStart;
-  licensing: LicensingPluginStart;
-  share: SharePluginStart;
-  uiActions: UiActionsStart;
-  spaces?: SpacesPluginStart;
-  embeddable: EmbeddableStart;
-  maps?: MapsStartApi;
-  triggersActionsUi?: TriggersAndActionsUIPublicPluginStart;
+  dataViewEditor: DataViewEditorStart;
   dataVisualizer: DataVisualizerPluginStart;
+  embeddable: EmbeddableStart;
   fieldFormats: FieldFormatsStart;
-  dashboard: DashboardStart;
-  charts: ChartsPluginStart;
-  lens?: LensPublicStart;
-  cases?: CasesUiStart;
-  security: SecurityPluginStart;
+  lens: LensPublicStart;
+  licensing: LicensingPluginStart;
+  maps?: MapsStartApi;
+  presentationUtil: PresentationUtilPluginStart;
   savedObjectsManagement: SavedObjectsManagementPluginStart;
   savedSearch: SavedSearchPublicPluginStart;
-  contentManagement: ContentManagementPublicStart;
-  presentationUtil: PresentationUtilPluginStart;
+  security: SecurityPluginStart;
+  share: SharePluginStart;
+  spaces?: SpacesPluginStart;
+  triggersActionsUi?: TriggersAndActionsUIPublicPluginStart;
+  uiActions: UiActionsStart;
+  unifiedSearch: UnifiedSearchPublicPluginStart;
 }
 
 export interface MlSetupDependencies {
-  maps?: MapsSetupApi;
-  licensing: LicensingPluginSetup;
-  management?: ManagementSetup;
-  licenseManagement?: LicenseManagementUIPluginSetup;
-  home?: HomePublicPluginSetup;
+  alerting?: AlertingSetup;
+  cases?: CasesUiSetup;
+  dashboard: DashboardSetup;
   embeddable: EmbeddableSetup;
-  uiActions: UiActionsSetup;
+  fieldFormats: FieldFormatsSetup;
+  home?: HomePublicPluginSetup;
   kibanaVersion: string;
+  licenseManagement?: LicenseManagementUIPluginSetup;
+  licensing: LicensingPluginSetup;
+  management?: ManagementSetup;
+  maps?: MapsSetupApi;
   share: SharePluginSetup;
   triggersActionsUi?: TriggersAndActionsUIPublicPluginSetup;
-  alerting?: AlertingSetup;
+  uiActions: UiActionsSetup;
   usageCollection?: UsageCollectionSetup;
-  fieldFormats: FieldFormatsSetup;
-  dashboard: DashboardSetup;
-  cases?: CasesUiSetup;
 }
 
 export type MlCoreSetup = CoreSetup<MlStartDependencies, MlPluginStart>;
@@ -154,31 +154,31 @@ export class MlPlugin implements Plugin<MlPluginSetup, MlPluginStart> {
         return renderApp(
           coreStart,
           {
+            cases: pluginsStart.cases,
             charts: pluginsStart.charts,
+            contentManagement: pluginsStart.contentManagement,
+            dashboard: pluginsStart.dashboard,
             data: pluginsStart.data,
             dataViewEditor: pluginsStart.dataViewEditor,
-            unifiedSearch: pluginsStart.unifiedSearch,
-            dashboard: pluginsStart.dashboard,
-            share: pluginsStart.share,
-            security: pluginsStart.security,
-            licensing: pluginsStart.licensing,
-            management: pluginsSetup.management,
-            licenseManagement: pluginsSetup.licenseManagement,
-            home: pluginsSetup.home,
-            embeddable: { ...pluginsSetup.embeddable, ...pluginsStart.embeddable },
-            maps: pluginsStart.maps,
-            uiActions: pluginsStart.uiActions,
-            kibanaVersion: this.initializerContext.env.packageInfo.version,
-            triggersActionsUi: pluginsStart.triggersActionsUi,
             dataVisualizer: pluginsStart.dataVisualizer,
-            usageCollection: pluginsSetup.usageCollection,
+            embeddable: { ...pluginsSetup.embeddable, ...pluginsStart.embeddable },
             fieldFormats: pluginsStart.fieldFormats,
+            home: pluginsSetup.home,
+            kibanaVersion: this.initializerContext.env.packageInfo.version,
             lens: pluginsStart.lens,
-            cases: pluginsStart.cases,
+            licenseManagement: pluginsSetup.licenseManagement,
+            licensing: pluginsStart.licensing,
+            management: pluginsSetup.management,
+            maps: pluginsStart.maps,
+            presentationUtil: pluginsStart.presentationUtil,
             savedObjectsManagement: pluginsStart.savedObjectsManagement,
             savedSearch: pluginsStart.savedSearch,
-            contentManagement: pluginsStart.contentManagement,
-            presentationUtil: pluginsStart.presentationUtil,
+            security: pluginsStart.security,
+            share: pluginsStart.share,
+            triggersActionsUi: pluginsStart.triggersActionsUi,
+            uiActions: pluginsStart.uiActions,
+            unifiedSearch: pluginsStart.unifiedSearch,
+            usageCollection: pluginsSetup.usageCollection,
           },
           params,
           this.isServerless,

From ce33484da2fe40c116f181d39e70d2e5e81f3769 Mon Sep 17 00:00:00 2001
From: Jon <jon@elastic.co>
Date: Thu, 9 Nov 2023 10:18:58 -0600
Subject: [PATCH 061/147] [ci/cloud-deploy] Skip CDN assets build (#170959)

The cloud deploy image is created using a resume build, relying on an
existing kibana.tar.gz. The source files needed to build CDN assets are
not available and this step is not needed.
---
 .buildkite/scripts/steps/cloud/build_and_deploy.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.buildkite/scripts/steps/cloud/build_and_deploy.sh b/.buildkite/scripts/steps/cloud/build_and_deploy.sh
index 40c223265856e..9876ea52fdd3b 100755
--- a/.buildkite/scripts/steps/cloud/build_and_deploy.sh
+++ b/.buildkite/scripts/steps/cloud/build_and_deploy.sh
@@ -37,6 +37,7 @@ else
     --skip-generic-folders \
     --skip-platform-folders \
     --skip-archives \
+    --skip-cdn-assets \
     --docker-images \
     --docker-tag-qualifier="$GIT_COMMIT" \
     --docker-push \

From 8b4da3eee3ee989df72739f4e20faedd6b0f5867 Mon Sep 17 00:00:00 2001
From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com>
Date: Thu, 9 Nov 2023 18:11:41 +0100
Subject: [PATCH 062/147] [Fleet] changed log level to debug (#170967)

Resolves https://github.com/elastic/kibana/issues/170951

Changed `Running Fleet metrics task` info log to debug
---
 .../fleet/server/services/metrics/fleet_metrics_task.ts       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/fleet/server/services/metrics/fleet_metrics_task.ts b/x-pack/plugins/fleet/server/services/metrics/fleet_metrics_task.ts
index 03f44bf96ae96..bd72976fa603c 100644
--- a/x-pack/plugins/fleet/server/services/metrics/fleet_metrics_task.ts
+++ b/x-pack/plugins/fleet/server/services/metrics/fleet_metrics_task.ts
@@ -72,10 +72,10 @@ export class FleetMetricsTask {
       return;
     }
     if (!this.esClient) {
-      appContextService.getLogger().info('esClient not set, skipping Fleet metrics task');
+      appContextService.getLogger().debug('esClient not set, skipping Fleet metrics task');
       return;
     }
-    appContextService.getLogger().info('Running Fleet metrics task');
+    appContextService.getLogger().debug('Running Fleet metrics task');
 
     try {
       const agentMetrics = await fetchAgentMetrics();

From ebe0d1b0bfe22eddae16d67ab3bd9588b1415908 Mon Sep 17 00:00:00 2001
From: Gloria Hornero <gloria.hornero@elastic.co>
Date: Thu, 9 Nov 2023 18:33:47 +0100
Subject: [PATCH 063/147] [Security Solution] Removing `cy.session` from
 Cypress tests (#170969)

---
 .github/CODEOWNERS                                  |  1 +
 .../cypress/tasks/login.ts                          | 13 +++----------
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c51318721ba81..b60e8c5effe45 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1418,6 +1418,7 @@ x-pack/plugins/security_solution/server/lib/telemetry/ @elastic/security-data-an
 ## Security Solution sub teams - security-engineering-productivity
 /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/plugins/security_solution/scripts/run_cypress @MadameSheema @patrykkopycinski @oatkiller @maximpn @banderror
 
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/login.ts b/x-pack/test/security_solution_cypress/cypress/tasks/login.ts
index 26702a47c9427..07a91a903536b 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/login.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/login.ts
@@ -62,9 +62,7 @@ export interface User {
 }
 
 export const loginWithUser = (user: User): void => {
-  cy.session(user, () => {
-    loginWithUsernameAndPassword(user.username, user.password);
-  });
+  loginWithUsernameAndPassword(user.username, user.password);
 };
 
 /**
@@ -129,9 +127,7 @@ const loginWithRole = (role: SecurityRoleName): void => {
   const password = 'changeme';
 
   cy.log(`origin: ${Cypress.config().baseUrl}`);
-  cy.session(role, () => {
-    loginWithUsernameAndPassword(role, password);
-  });
+  loginWithUsernameAndPassword(role, password);
 };
 
 /**
@@ -154,10 +150,7 @@ const loginViaEnvironmentCredentials = (): void => {
 
   const username = Cypress.env(ELASTICSEARCH_USERNAME);
   const password = Cypress.env(ELASTICSEARCH_PASSWORD);
-
-  cy.session([username, password], () => {
-    loginWithUsernameAndPassword(username, password);
-  });
+  loginWithUsernameAndPassword(username, password);
 };
 
 /**

From 8e549a37b76414a6d22e6d00897e626b4413ae3e Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Thu, 9 Nov 2023 18:26:42 +0000
Subject: [PATCH 064/147] skip failing es promotion suites (#170980)

---
 .../apis/management/index_management/templates.js              | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/api_integration/apis/management/index_management/templates.js b/x-pack/test/api_integration/apis/management/index_management/templates.js
index 1cb58c0957e17..99b214f08332f 100644
--- a/x-pack/test/api_integration/apis/management/index_management/templates.js
+++ b/x-pack/test/api_integration/apis/management/index_management/templates.js
@@ -28,7 +28,8 @@ export default function ({ getService }) {
   describe('index templates', () => {
     after(() => Promise.all([cleanUpEsResources(), cleanUpTemplates()]));
 
-    describe('get all', () => {
+    // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/170980
+    describe.skip('get all', () => {
       const templateName = `template-${getRandomString()}`;
       const indexTemplate = getTemplatePayload(templateName, [getRandomString()]);
       const legacyTemplate = getTemplatePayload(templateName, [getRandomString()], true);

From 059aa93a30394709ad8bf42489befb6f4572eddd Mon Sep 17 00:00:00 2001
From: Nicolas Chaulet <nicolas.chaulet@elastic.co>
Date: Thu, 9 Nov 2023 13:32:27 -0500
Subject: [PATCH 065/147] [Fleet] Fix type error when creating custom
 integration (#170901)

---
 .../custom_integrations/utils.test.ts         | 22 +++++++++++++++++++
 .../epm/packages/custom_integrations/utils.ts |  1 +
 2 files changed, 23 insertions(+)
 create mode 100644 x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.test.ts

diff --git a/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.test.ts
new file mode 100644
index 0000000000000..1ba03cbd045a4
--- /dev/null
+++ b/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.test.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { convertStringToTitle } from './utils';
+
+describe('convertStringToTitle', () => {
+  it('works without underscore: test', () => {
+    expect(convertStringToTitle('test')).toBe('Test');
+  });
+
+  it('works with one underscore test_test', () => {
+    expect(convertStringToTitle('test_test')).toBe('Test Test');
+  });
+
+  it('works with double underscore: test__test', () => {
+    expect(convertStringToTitle('test__test')).toBe('Test Test');
+  });
+});
diff --git a/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.ts b/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.ts
index d90c12d231f74..4c18941f6638d 100644
--- a/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.ts
+++ b/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/utils.ts
@@ -8,6 +8,7 @@
 export const convertStringToTitle = (name: string) => {
   return name
     .split('_')
+    .filter((word) => word.length > 0)
     .map((word) => {
       return word[0].toUpperCase() + word.substring(1);
     })

From 0cb8a487c1e392cab9f995cc7672536529d84de8 Mon Sep 17 00:00:00 2001
From: Willie Hung <willie880201044@gmail.com>
Date: Thu, 9 Nov 2023 12:36:44 -0600
Subject: [PATCH 066/147] [uiSettings] Extend toast lifetime (#169899)

## Summary

- Extend toast lifetime to `15s`.
- Resolves #135950

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

Signed-off-by: Willie Hung <willie880201044@gmail.com>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../public/management_app/components/form/form.tsx               | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/plugins/advanced_settings/public/management_app/components/form/form.tsx b/src/plugins/advanced_settings/public/management_app/components/form/form.tsx
index e5af8e871cf52..e45af3c98cce6 100644
--- a/src/plugins/advanced_settings/public/management_app/components/form/form.tsx
+++ b/src/plugins/advanced_settings/public/management_app/components/form/form.tsx
@@ -191,6 +191,7 @@ export class Form extends PureComponent<FormProps> {
       title: i18n.translate('advancedSettings.form.requiresPageReloadToastDescription', {
         defaultMessage: 'One or more settings require you to reload the page to take effect.',
       }),
+      toastLifeTimeMs: 15000,
       text: toMountPoint(
         <KibanaThemeProvider theme$={this.props.theme}>
           <EuiFlexGroup justifyContent="flexEnd" gutterSize="s">

From ab1375cf62d380a1d104418d2e4b087f69534275 Mon Sep 17 00:00:00 2001
From: Nicolas Chaulet <nicolas.chaulet@elastic.co>
Date: Thu, 9 Nov 2023 14:33:26 -0500
Subject: [PATCH 067/147] [Fleet] Fix view agent activity for large action
 (#170971)

---
 .../components/agent_activity_flyout.tsx      | 32 +++++++++++++++++--
 .../scripts/create_agents/create_agents.ts    | 13 ++++++--
 2 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx
index 2c1def3461118..d23358726c11e 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx
@@ -26,6 +26,7 @@ import {
   EuiButtonEmpty,
   EuiFlyoutFooter,
   EuiSpacer,
+  EuiToolTip,
 } from '@elastic/eui';
 import styled from 'styled-components';
 
@@ -57,6 +58,8 @@ const FlyoutFooterWPadding = styled(EuiFlyoutFooter)`
   padding: 16px 24px !important;
 `;
 
+const MAX_VIEW_AGENTS_COUNT = 2000;
+
 export const AgentActivityFlyout: React.FunctionComponent<{
   onClose: () => void;
   onAbortSuccess: () => void;
@@ -702,17 +705,42 @@ const ViewAgentsButton: React.FunctionComponent<{
   action: ActionStatus;
   onClickViewAgents: (action: ActionStatus) => void;
 }> = ({ action, onClickViewAgents }) => {
-  return action.type !== 'UPDATE_TAGS' ? (
+  if (action.type === 'UPDATE_TAGS') {
+    return null;
+  }
+
+  const button = (
     <EuiButtonEmpty
       size="m"
       onClick={() => onClickViewAgents(action)}
       flush="left"
       data-test-subj="agentActivityFlyout.viewAgentsButton"
+      disabled={action.nbAgentsActionCreated > MAX_VIEW_AGENTS_COUNT}
     >
       <FormattedMessage
         id="xpack.fleet.agentActivityFlyout.viewAgentsButton"
         defaultMessage="View Agents"
       />
     </EuiButtonEmpty>
-  ) : null;
+  );
+
+  if (action.nbAgentsActionCreated <= MAX_VIEW_AGENTS_COUNT) {
+    return button;
+  }
+
+  return (
+    <EuiToolTip
+      content={
+        <FormattedMessage
+          id="xpack.fleet.agentActivityFlyout.viewAgentsButtonDisabledMaxTooltip"
+          defaultMessage="The view agents feature is only available for action impacting less then {agentCount} agents"
+          values={{
+            agentCount: MAX_VIEW_AGENTS_COUNT,
+          }}
+        />
+      }
+    >
+      {button}
+    </EuiToolTip>
+  );
 };
diff --git a/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts b/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts
index 52723d0450351..2c510a2ca3ffe 100644
--- a/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts
+++ b/x-pack/plugins/fleet/scripts/create_agents/create_agents.ts
@@ -43,7 +43,7 @@ const ES_PASSWORD = 'password';
 
 const DEFAULT_AGENT_COUNT = 50000;
 
-const INDEX_BULK_OP = '{ "index":{ } }\n';
+const INDEX_BULK_OP = '{ "index":{ "_id": "{{id}}" } }\n';
 
 const {
   delete: deleteAgentsFirst = false,
@@ -145,6 +145,10 @@ function createAgentWithStatus({
   hostname: string;
 }) {
   const baseAgent = {
+    agent: {
+      id: uuidv4(),
+      version,
+    },
     access_api_key_id: 'api-key-1',
     active: true,
     policy_id: policyId,
@@ -235,7 +239,12 @@ async function deleteAgents() {
 
 async function createAgentDocsBulk(agents: Agent[]) {
   const auth = 'Basic ' + Buffer.from(ES_SUPERUSER + ':' + ES_PASSWORD).toString('base64');
-  const body = agents.flatMap((agent) => [INDEX_BULK_OP, JSON.stringify(agent) + '\n']).join('');
+  const body = agents
+    .flatMap((agent) => [
+      INDEX_BULK_OP.replace(/{{id}}/, agent.agent?.id ?? ''),
+      JSON.stringify(agent) + '\n',
+    ])
+    .join('');
   const res = await fetch(`${ES_URL}/.fleet-agents/_bulk`, {
     method: 'post',
     body,

From 3db389c5eeb8909bab44bde1c818eab97df6bcad Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Thu, 9 Nov 2023 19:48:47 +0000
Subject: [PATCH 068/147] skip failing es promotion suites (#170980)

---
 .../apis/management/index_management/templates.js           | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/x-pack/test/api_integration/apis/management/index_management/templates.js b/x-pack/test/api_integration/apis/management/index_management/templates.js
index 99b214f08332f..2c7ba54bb9c98 100644
--- a/x-pack/test/api_integration/apis/management/index_management/templates.js
+++ b/x-pack/test/api_integration/apis/management/index_management/templates.js
@@ -25,11 +25,11 @@ export default function ({ getService }) {
     cleanUpTemplates,
   } = registerHelpers({ supertest });
 
-  describe('index templates', () => {
+  // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/170980
+  describe.skip('index templates', () => {
     after(() => Promise.all([cleanUpEsResources(), cleanUpTemplates()]));
 
-    // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/170980
-    describe.skip('get all', () => {
+    describe('get all', () => {
       const templateName = `template-${getRandomString()}`;
       const indexTemplate = getTemplatePayload(templateName, [getRandomString()]);
       const legacyTemplate = getTemplatePayload(templateName, [getRandomString()], true);

From 9822d4926327742acf7cd882d9852d1fdae60aa6 Mon Sep 17 00:00:00 2001
From: Ryland Herrick <ryalnd@gmail.com>
Date: Thu, 9 Nov 2023 13:56:26 -0600
Subject: [PATCH 069/147] [Security Solution][Entity Analytics] Move OpenAPI
 Risk Engine schemae to common/api folder (#169440)

# Summary
* Splits into one file per route
* Places reused components into a common.yml file


### Related Issues
This is a followup to [this
comment](https://github.com/elastic/kibana/pull/162400/files#r1282548131).
---
 .../risk_engine/calculation_route_schema.yml  |  91 ++++++++
 .../common/api/risk_engine/common.yml         | 199 ++++++++++++++++++
 .../engine_disable_route_schema.yml           |  37 ++++
 .../engine_enable_route_schema.yml            |  37 ++++
 .../risk_engine/engine_init_route_schema.yml  |  46 ++++
 .../engine_status_route_schema.yml            |  45 ++++
 .../api/risk_engine/preview_route_schema.yml  |  90 ++++++++
 7 files changed, 545 insertions(+)
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/calculation_route_schema.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/common.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/engine_disable_route_schema.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/engine_enable_route_schema.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/engine_init_route_schema.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/engine_status_route_schema.yml
 create mode 100644 x-pack/plugins/security_solution/common/api/risk_engine/preview_route_schema.yml

diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/calculation_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/calculation_route_schema.yml
new file mode 100644
index 0000000000000..c851509c4f64a
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/calculation_route_schema.yml
@@ -0,0 +1,91 @@
+openapi: 3.0.0
+
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /api/risk_scores/calculation:
+    post:
+      summary: Trigger calculation of Risk Scores
+      description: Calculates and persists a segment of Risk Scores, returning details about the calculation.
+      requestBody:
+        description: Details about the Risk Scores being calculated
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RiskScoresCalculationRequest'
+        required: true
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskScoresCalculationResponse'
+        '400':
+          description: Invalid request
+
+components:
+  schemas:
+    RiskScoresCalculationRequest:
+      type: object
+      required:
+        - data_view_id
+        - identifier_type
+        - range
+      properties:
+        after_keys:
+          description: Used to calculate a specific "page" of risk scores. If unspecified, the first "page" of scores is returned. See also the `after_keys` key in a risk scores response.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/AfterKeys'
+        data_view_id:
+          $ref: 'common.yml#/components/schemas/DataViewId'
+          description: The identifier of the Kibana data view to be used when generating risk scores. If a data view is not found, the provided ID will be used as the query's index pattern instead.
+        debug:
+          description: If set to `true`, the internal ES requests/responses will be logged in Kibana.
+          type: boolean
+        filter:
+          $ref: 'common.yml#/components/schemas/Filter'
+          description: An elasticsearch DSL filter object. Used to filter the data being scored, which implicitly filters the risk scores calculated.
+        page_size:
+          $ref: 'common.yml#/components/schemas/PageSize'
+        identifier_type:
+          description: Used to restrict the type of risk scores calculated.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/IdentifierType'
+        range:
+          $ref: 'common.yml#/components/schemas/DateRange'
+          description: Defines the time period over which scores will be evaluated. If unspecified, a range of `[now, now-30d]` will be used.
+        weights:
+          $ref: 'common.yml#/components/schemas/RiskScoreWeights'
+
+    RiskScoresCalculationResponse:
+      type: object
+      required:
+        - after_keys
+        - errors
+        - scores_written
+      properties:
+        after_keys:
+          description: Used to obtain the next "page" of risk scores. See also the `after_keys` key in a risk scores request. If this key is empty, the calculation is complete.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/AfterKeys'
+        errors:
+          type: array
+          description: A list of errors encountered during the calculation.
+          items:
+            type: string
+        scores_written:
+          type: number
+          format: integer
+          description: The number of risk scores persisted to elasticsearch.
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/common.yml b/x-pack/plugins/security_solution/common/api/risk_engine/common.yml
new file mode 100644
index 0000000000000..ea4bd4bd86321
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/common.yml
@@ -0,0 +1,199 @@
+openapi: 3.0.0
+
+components:
+  schemas:
+
+    AfterKeys:
+      type: object
+      properties:
+        host:
+          type: object
+          additionalProperties:
+            type: string
+        user:
+          type: object
+          additionalProperties:
+            type: string
+      example:
+        host:
+          'host.name': 'example.host'
+        user:
+          'user.name': 'example_user_name'
+
+    DataViewId:
+      description: The identifier of the Kibana data view to be used when generating risk scores.
+      example: security-solution-default
+      type: string
+
+    Filter:
+      description: An elasticsearch DSL filter object. Used to filter the risk inputs involved, which implicitly filters the risk scores themselves.
+      $ref: 'https://cloud.elastic.co/api/v1/api-docs/spec.json#/definitions/QueryContainer'
+
+    PageSize:
+      description: Specifies how many scores will be involved in a given calculation. Note that this value is per `identifier_type`, i.e. a value of 10 will calculate 10 host scores and 10 user scores, if available. To avoid missed data, keep this value consistent while paginating through scores.
+      default: 1000
+      type: number
+
+    DateRange:
+      description: Defines the time period on which risk inputs will be filtered.
+      type: object
+      required:
+        - start
+        - end
+      properties:
+        start:
+          $ref: '#/components/schemas/KibanaDate'
+        end:
+          $ref: '#/components/schemas/KibanaDate'
+
+    KibanaDate:
+      type: string
+      oneOf:
+        - format: date
+        - format: date-time
+        - format: datemath
+      example: '2017-07-21T17:32:28Z'
+
+    IdentifierType:
+      type: string
+      enum:
+        - host
+        - user
+
+    RiskScore:
+      type: object
+      required:
+        - '@timestamp'
+        - id_field
+        - id_value
+        - calculated_level
+        - calculated_score
+        - calculated_score_norm
+        - category_1_score
+        - category_1_count
+        - inputs
+      properties:
+        '@timestamp':
+          type: string
+          format: 'date-time'
+          example: '2017-07-21T17:32:28Z'
+          description: The time at which the risk score was calculated.
+        id_field:
+          type: string
+          example: 'host.name'
+          description: The identifier field defining this risk score. Coupled with `id_value`, uniquely identifies the entity being scored.
+        id_value:
+          type: string
+          example: 'example.host'
+          description: The identifier value defining this risk score. Coupled with `id_field`, uniquely identifies the entity being scored.
+        calculated_level:
+          type: string
+          example: 'Critical'
+          description: Lexical description of the entity's risk.
+        calculated_score:
+          type: number
+          format: double
+          description: The raw numeric value of the given entity's risk score.
+        calculated_score_norm:
+          type: number
+          format: double
+          minimum: 0
+          maximum: 100
+          description: The normalized numeric value of the given entity's risk score. Useful for comparing with other entities.
+        category_1_score:
+          type: number
+          format: double
+          description: The contribution of Category 1 to the overall risk score (`calculated_score`). Category 1 contains Detection Engine Alerts.
+        category_1_count:
+          type: number
+          format: integer
+          description: The number of risk input documents that contributed to the Category 1 score (`category_1_score`).
+        inputs:
+          type: array
+          description: A list of the highest-risk documents contributing to this risk score. Useful for investigative purposes.
+          items:
+            $ref: '#/components/schemas/RiskScoreInput'
+
+    RiskScoreInput:
+      description: A generic representation of a document contributing to a Risk Score.
+      type: object
+      properties:
+        id:
+          type: string
+          example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c
+          description: The unique identifier (`_id`) of the original source document
+        index:
+          type: string
+          example: .internal.alerts-security.alerts-default-000001
+          description: The unique index (`_index`) of the original source document
+        category:
+          type: string
+          example: category_1
+          description: The risk category of the risk input document.
+        description:
+          type: string
+          example: 'Generated from Detection Engine Rule: Malware Prevention Alert'
+          description: A human-readable description of the risk input document.
+        risk_score:
+          type: number
+          format: double
+          minimum: 0
+          maximum: 100
+          description: The weighted risk score of the risk input document.
+        timestamp:
+          type: string
+          example: '2017-07-21T17:32:28Z'
+          description: The @timestamp of the risk input document.
+
+    RiskScoreWeight:
+      description: "Configuration used to tune risk scoring. Weights can be used to change the score contribution of risk inputs for hosts and users at both a global level and also for Risk Input categories (e.g. 'category_1')."
+      type: object
+      required:
+        - type
+      properties:
+        type:
+          type: string
+        value:
+          type: string
+        host:
+          type: number
+          format: double
+          minimum: 0
+          maximum: 1
+        user:
+          type: number
+          format: double
+          minimum: 0
+          maximum: 1
+      example:
+        type: 'risk_category'
+        value: 'category_1'
+        host: 0.8
+        user: 0.4
+
+    RiskScoreWeights:
+      description: 'A list of weights to be applied to the scoring calculation.'
+      type: array
+      items:
+        $ref: '#/components/schemas/RiskScoreWeight'
+      example:
+        - type: 'risk_category'
+          value: 'category_1'
+          host: 0.8
+          user: 0.4
+        - type: 'global_identifier'
+          host: 0.5
+          user: 0.1
+
+    RiskEngineInitStep:
+      type: object
+      required:
+        - type
+        - success
+      properties:
+        type:
+          type: string
+        success:
+          type: boolean
+        error:
+          type: string
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/engine_disable_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/engine_disable_route_schema.yml
new file mode 100644
index 0000000000000..71d4c96681814
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/engine_disable_route_schema.yml
@@ -0,0 +1,37 @@
+openapi: 3.0.0
+
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /internal/risk_score/engine/disable:
+    post:
+      summary: Disable the Risk Engine
+      requestBody:
+        content:
+          application/json: {}
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskEngineDisableResponse'
+
+components:
+  schemas:
+    RiskEngineDisableResponse:
+      type: object
+      properties:
+        success:
+          type: boolean
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/engine_enable_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/engine_enable_route_schema.yml
new file mode 100644
index 0000000000000..42e4ec7af0a50
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/engine_enable_route_schema.yml
@@ -0,0 +1,37 @@
+openapi: 3.0.0
+
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /internal/risk_score/engine/enable:
+    post:
+      summary: Enable the Risk Engine
+      requestBody:
+        content:
+          application/json: {}
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskEngineEnableResponse'
+
+components:
+  schemas:
+    RiskEngineEnableResponse:
+      type: object
+      properties:
+        success:
+          type: boolean
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/engine_init_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/engine_init_route_schema.yml
new file mode 100644
index 0000000000000..daa6b3a33bb22
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/engine_init_route_schema.yml
@@ -0,0 +1,46 @@
+openapi: 3.0.0
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /internal/risk_score/engine/init:
+    post:
+      summary: Initialize the Risk Engine
+      description: Initializes the Risk Engine by creating the necessary indices and mappings, removing old transforms, and starting the new risk engine
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskEngineInitResponse'
+
+components:
+  schemas:
+    RiskEngineInitResponse:
+      type: object
+      properties:
+        result:
+          type: object
+          properties:
+            risk_engine_enabled:
+              type: boolean
+            risk_engine_resources_installed:
+              type: boolean
+            risk_engine_configuration_created:
+              type: boolean
+            legacy_risk_engine_disabled:
+              type: boolean
+            errors:
+              type: array
+              items:
+                type: string
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/engine_status_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/engine_status_route_schema.yml
new file mode 100644
index 0000000000000..4aed23d48a0d5
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/engine_status_route_schema.yml
@@ -0,0 +1,45 @@
+openapi: 3.0.0
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /engine/status:
+    get:
+      summary: Get the status of the Risk Engine
+      description: Returns the status of both the legacy transform-based risk engine, as well as the new risk engine
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskEngineStatusResponse'
+components:
+  schemas:
+
+    RiskEngineStatusResponse:
+      type: object
+      properties:
+        legacy_risk_engine_status:
+          $ref: '#/components/schemas/RiskEngineStatus'
+        risk_engine_status:
+          $ref: '#/components/schemas/RiskEngineStatus'
+        is_max_amount_of_risk_engines_reached:
+          description: Indicates whether the maximum amount of risk engines has been reached
+          type: boolean
+
+    RiskEngineStatus:
+      type: string
+      enum:
+        - 'NOT_INSTALLED'
+        - 'DISABLED'
+        - 'ENABLED'
diff --git a/x-pack/plugins/security_solution/common/api/risk_engine/preview_route_schema.yml b/x-pack/plugins/security_solution/common/api/risk_engine/preview_route_schema.yml
new file mode 100644
index 0000000000000..fc66d3ed882c9
--- /dev/null
+++ b/x-pack/plugins/security_solution/common/api/risk_engine/preview_route_schema.yml
@@ -0,0 +1,90 @@
+openapi: 3.0.0
+info:
+  version: 1.0.0
+  title: Risk Scoring API
+  description: These APIs allow the consumer to manage Entity Risk Scores within Entity Analytics.
+servers:
+  - url: 'http://{kibana_host}:{port}'
+    variables:
+      kibana_host:
+        default: localhost
+      port:
+        default: '5601'
+
+paths:
+  /internal/risk_score/preview:
+    post:
+      summary: Preview the calculation of Risk Scores
+      description: Calculates and returns a list of Risk Scores, sorted by identifier_type and risk score.
+      requestBody:
+        description: Details about the Risk Scores being requested
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RiskScoresPreviewRequest'
+        required: true
+      responses:
+        '200':
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RiskScoresPreviewResponse'
+        '400':
+          description: Invalid request
+
+components:
+  schemas:
+    RiskScoresPreviewRequest:
+      type: object
+      required:
+        - data_view_id
+      properties:
+        after_keys:
+          description: Used to retrieve a specific "page" of risk scores. If unspecified, the first "page" of scores is returned. See also the `after_keys` key in a risk scores response.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/AfterKeys'
+        data_view_id:
+          $ref: 'common.yml#/components/schemas/DataViewId'
+          description: The identifier of the Kibana data view to be used when generating risk scores. If a data view is not found, the provided ID will be used as the query's index pattern instead.
+        debug:
+          description: If set to `true`, a `debug` key is added to the response, containing both the internal request and response with elasticsearch.
+          type: boolean
+        filter:
+          $ref: 'common.yml#/components/schemas/Filter'
+          description: An elasticsearch DSL filter object. Used to filter the data being scored, which implicitly filters the risk scores returned.
+        page_size:
+          $ref: 'common.yml#/components/schemas/PageSize'
+        identifier_type:
+          description: Used to restrict the type of risk scores involved. If unspecified, both `host` and `user` scores will be returned.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/IdentifierType'
+        range:
+          $ref: 'common.yml#/components/schemas/DateRange'
+          description: Defines the time period over which scores will be evaluated. If unspecified, a range of `[now, now-30d]` will be used.
+        weights:
+          $ref: 'common.yml#/components/schemas/RiskScoreWeights'
+
+    RiskScoresPreviewResponse:
+      type: object
+      required:
+        - after_keys
+        - scores
+      properties:
+        after_keys:
+          description: Used to obtain the next "page" of risk scores. See also the `after_keys` key in a risk scores request. If this key is empty, the calculation is complete.
+          allOf:
+            - $ref: 'common.yml#/components/schemas/AfterKeys'
+        debug:
+          description: Object containing debug information, particularly the internal request and response from elasticsearch
+          type: object
+          properties:
+            request:
+              type: string
+            response:
+              type: string
+        scores:
+          type: array
+          description: A list of risk scores
+          items:
+            $ref: 'common.yml#/components/schemas/RiskScore'

From 3fae0b9d73e2b5cc1dcf95006aa15ddf2387ad54 Mon Sep 17 00:00:00 2001
From: Jorge Sanz <jorge.sanz@elastic.co>
Date: Thu, 9 Nov 2023 21:37:00 +0100
Subject: [PATCH 070/147] [EMS] Update to ems-client@8.5.1 (#170966)

## Summary

Related to https://github.com/elastic/ems-client/pull/208

Update to a version of `ems-client` that supports Node 20.

I'm creating new PRs for:

* `@elastic/ems-client@8.4.1` in Kibana `8.11` branch
* `@elastic/ems-client@7.17.1` for Kibana `7.17` branch

Sorry for the small overhead on reviewing; this way, it seems faster to
get CI running in parallel for the three releases and unblock the
operations team on this issue.
---
 package.json                      | 2 +-
 src/dev/license_checker/config.ts | 2 +-
 yarn.lock                         | 8 ++++----
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/package.json b/package.json
index 4e4c2441fe9fc..3a2052836d5de 100644
--- a/package.json
+++ b/package.json
@@ -101,7 +101,7 @@
     "@elastic/charts": "60.0.0",
     "@elastic/datemath": "5.0.3",
     "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1",
-    "@elastic/ems-client": "8.5.0",
+    "@elastic/ems-client": "8.5.1",
     "@elastic/eui": "90.0.0",
     "@elastic/filesaver": "1.1.2",
     "@elastic/node-crypto": "1.2.1",
diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts
index 3646fe3ab65de..1680edb446e36 100644
--- a/src/dev/license_checker/config.ts
+++ b/src/dev/license_checker/config.ts
@@ -84,7 +84,7 @@ export const PER_PACKAGE_ALLOWED_LICENSES = {
 export const LICENSE_OVERRIDES = {
   'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts
   '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint
-  '@elastic/ems-client@8.5.0': ['Elastic License 2.0'],
+  '@elastic/ems-client@8.5.1': ['Elastic License 2.0'],
   '@elastic/eui@90.0.0': ['SSPL-1.0 OR Elastic License 2.0'],
   'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry
   'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary
diff --git a/yarn.lock b/yarn.lock
index 68faac71450cc..a2d0d454a4d34 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1574,10 +1574,10 @@
     "@elastic/transport" "^8.3.3"
     tslib "^2.4.0"
 
-"@elastic/ems-client@8.5.0":
-  version "8.5.0"
-  resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-8.5.0.tgz#5e3988ab01dee54bace9f8c2f9e71470b26a1bfa"
-  integrity sha512-uEI8teyS3gWErlEL4mEYh0MDHms9Rp3eEHKnMMSdMtAkaa3xs60SOm3Vd0ld9sIPsyarQHrAybAw30GXVXXRjw==
+"@elastic/ems-client@8.5.1":
+  version "8.5.1"
+  resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-8.5.1.tgz#60c179e53ad81f5e26680e7e1c6cbffe4fb64aed"
+  integrity sha512-lc65i/cW6fGuRMt3pUte35sL8HxXM7TbYJwx1bHWcWn4aN3zv8i5RhPKFz+Wr/1ubfFOTrIoFYCP4h1uq2O/dQ==
   dependencies:
     "@types/geojson" "^7946.0.10"
     "@types/lru-cache" "^5.1.0"

From f92dbb76c7cec85f5bd5f71cc3a25a130139a981 Mon Sep 17 00:00:00 2001
From: Jon <jon@elastic.co>
Date: Thu, 9 Nov 2023 15:16:35 -0600
Subject: [PATCH 071/147] [ci/artifacts] Fix docker context args (#170944)

I incorrectly removed this previously, not finding any arguments
missing. There was one - the `--release` flag, used to remove snapshot
from the filename.

https://buildkite.com/elastic/kibana-artifacts-snapshot/builds/3472
~https://buildkite.com/elastic/kibana-artifacts-staging/builds/2337~
I'll verify on the backport, the failure here is expected.
---
 .buildkite/scripts/steps/artifacts/docker_context.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.buildkite/scripts/steps/artifacts/docker_context.sh b/.buildkite/scripts/steps/artifacts/docker_context.sh
index 26501fd5555d0..b6fe4834465fc 100755
--- a/.buildkite/scripts/steps/artifacts/docker_context.sh
+++ b/.buildkite/scripts/steps/artifacts/docker_context.sh
@@ -11,7 +11,7 @@ KIBANA_DOCKER_CONTEXT="${KIBANA_DOCKER_CONTEXT:="default"}"
 
 echo "--- Create contexts"
 mkdir -p target
-node scripts/build --skip-initialize --skip-generic-folders --skip-platform-folders --skip-archives --skip-cdn-assets --docker-context-use-local-artifact
+node scripts/build --skip-initialize --skip-generic-folders --skip-platform-folders --skip-archives --skip-cdn-assets --docker-context-use-local-artifact "${BUILD_ARGS[@]}"
 
 echo "--- Setup context"
 DOCKER_BUILD_FOLDER=$(mktemp -d)

From 85d45226d7fa66349906119e20eeaf33b302a0be Mon Sep 17 00:00:00 2001
From: Brad White <Ikuni17@users.noreply.github.com>
Date: Thu, 9 Nov 2023 15:09:51 -0700
Subject: [PATCH 072/147] Remove invalid license options from kbn/es (#170978)

## Summary

- Removes invalid license options from docs.
- Removes invalid `oss` license from cli
---
 packages/kbn-es/README.mdx                    |  2 +-
 packages/kbn-es/src/artifact.test.js          | 31 ++++-------
 packages/kbn-es/src/artifact.ts               |  4 +-
 .../src/cli_commands/build_snapshots.ts       | 52 +++++++++----------
 packages/kbn-es/src/cli_commands/snapshot.ts  |  2 +-
 packages/kbn-es/src/cli_commands/source.ts    |  2 +-
 packages/kbn-es/src/custom_snapshots.ts       |  2 +-
 .../kbn-es/src/install/install_archive.ts     | 18 +++----
 packages/kbn-es/src/utils/build_snapshot.ts   | 11 ++--
 9 files changed, 51 insertions(+), 73 deletions(-)

diff --git a/packages/kbn-es/README.mdx b/packages/kbn-es/README.mdx
index 5927670030cdf..eaacebdad54b5 100644
--- a/packages/kbn-es/README.mdx
+++ b/packages/kbn-es/README.mdx
@@ -68,7 +68,7 @@ es.run({
 
 Type: `String`
 
-License type, one of: trial, basic, gold, platinum
+License type, one of: basic, trial
 
 ##### options.version
 
diff --git a/packages/kbn-es/src/artifact.test.js b/packages/kbn-es/src/artifact.test.js
index b16cb3ab54548..221248caefae8 100644
--- a/packages/kbn-es/src/artifact.test.js
+++ b/packages/kbn-es/src/artifact.test.js
@@ -67,24 +67,18 @@ beforeEach(() => {
 
   MOCKS = {
     valid: {
-      archives: [createArchive({ license: 'oss' }), createArchive({ license: 'default' })],
+      archives: [createArchive({ license: 'default' })],
     },
     invalidArch: {
-      archives: [
-        createArchive({ license: 'oss', architecture: 'invalid_arch' }),
-        createArchive({ license: 'default', architecture: 'invalid_arch' }),
-      ],
+      archives: [createArchive({ license: 'default', architecture: 'invalid_arch' })],
     },
     differentVersion: {
-      archives: [
-        createArchive({ license: 'oss', version: 'another-version' }),
-        createArchive({ license: 'default', version: 'another-version' }),
-      ],
+      archives: [createArchive({ license: 'default', version: 'another-version' })],
     },
     multipleArch: {
       archives: [
-        createArchive({ architecture: 'fake_arch', license: 'oss' }),
-        createArchive({ architecture: ARCHITECTURE, license: 'oss' }),
+        createArchive({ architecture: 'fake_arch', license: 'default' }),
+        createArchive({ architecture: ARCHITECTURE, license: 'default' }),
       ],
     },
   };
@@ -116,8 +110,6 @@ describe('Artifact', () => {
         mockFetch(MOCKS.valid);
       });
 
-      it('should return artifact metadata for a daily oss artifact', artifactTest('oss', 'oss'));
-
       it(
         'should return artifact metadata for a daily default artifact',
         artifactTest('default', 'default')
@@ -147,11 +139,6 @@ describe('Artifact', () => {
         mockFetch(MOCKS.valid);
       });
 
-      it(
-        'should return artifact metadata for a permanent oss artifact',
-        artifactTest('oss', 'oss', 2)
-      );
-
       it(
         'should return artifact metadata for a permanent default artifact',
         artifactTest('default', 'default', 2)
@@ -181,8 +168,8 @@ describe('Artifact', () => {
       });
 
       it('should return artifact metadata for the correct architecture', async () => {
-        const artifact = await Artifact.getSnapshot('oss', MOCK_VERSION, log);
-        expect(artifact.spec.filename).toEqual(MOCK_FILENAME + `-${ARCHITECTURE}.oss`);
+        const artifact = await Artifact.getSnapshot('default', MOCK_VERSION, log);
+        expect(artifact.spec.filename).toEqual(MOCK_FILENAME + `-${ARCHITECTURE}.default`);
       });
     });
 
@@ -195,7 +182,7 @@ describe('Artifact', () => {
       });
 
       it('should use the custom URL when looking for a snapshot', async () => {
-        await Artifact.getSnapshot('oss', MOCK_VERSION, log);
+        await Artifact.getSnapshot('default', MOCK_VERSION, log);
         expect(fetch.mock.calls[0][0]).toEqual(CUSTOM_URL);
       });
 
@@ -211,7 +198,7 @@ describe('Artifact', () => {
       });
 
       it('should use the daily unverified URL when looking for a snapshot', async () => {
-        await Artifact.getSnapshot('oss', MOCK_VERSION, log);
+        await Artifact.getSnapshot('default', MOCK_VERSION, log);
         expect(fetch.mock.calls[0][0]).toEqual(
           `${DAILY_SNAPSHOT_BASE_URL}/${MOCK_VERSION}/manifest-latest.json`
         );
diff --git a/packages/kbn-es/src/artifact.ts b/packages/kbn-es/src/artifact.ts
index 57a0e6fd5db06..3b11b6deac9cf 100644
--- a/packages/kbn-es/src/artifact.ts
+++ b/packages/kbn-es/src/artifact.ts
@@ -27,7 +27,7 @@ const PERMANENT_SNAPSHOTS_BASE_URL =
   'https://storage.googleapis.com/kibana-ci-es-snapshots-permanent';
 
 type ChecksumType = 'sha512';
-export type ArtifactLicense = 'oss' | 'basic' | 'trial';
+export type ArtifactLicense = 'basic' | 'trial';
 
 interface ArtifactManifest {
   id: string;
@@ -122,7 +122,7 @@ async function getArtifactSpecForSnapshot(
   log: ToolingLog
 ): Promise<ArtifactSpec> {
   const desiredVersion = urlVersion.replace('-SNAPSHOT', '');
-  const desiredLicense = license === 'oss' ? 'oss' : 'default';
+  const desiredLicense = 'default';
 
   const customManifestUrl = process.env.ES_SNAPSHOT_MANIFEST;
   const primaryManifestUrl = `${DAILY_SNAPSHOTS_BASE_URL}/${desiredVersion}/manifest-latest${
diff --git a/packages/kbn-es/src/cli_commands/build_snapshots.ts b/packages/kbn-es/src/cli_commands/build_snapshots.ts
index cc730418af338..458f515bb398a 100644
--- a/packages/kbn-es/src/cli_commands/build_snapshots.ts
+++ b/packages/kbn-es/src/cli_commands/build_snapshots.ts
@@ -49,35 +49,33 @@ export const buildSnapshots: Command = {
     del.sync(outputDir);
     Fs.mkdirSync(outputDir, { recursive: true });
 
-    for (const license of ['oss', 'trial']) {
-      for (const platform of ['darwin', 'win32', 'linux']) {
-        log.info('Building', platform, license === 'trial' ? 'default' : 'oss', 'snapshot');
-        await log.indent(4, async () => {
-          const snapshotPath = await buildSnapshot({
-            license,
-            sourcePath: options.sourcePath,
-            log,
-            platform,
-          });
+    for (const platform of ['darwin', 'win32', 'linux']) {
+      log.info('Building', platform, 'default snapshot');
+      await log.indent(4, async () => {
+        const snapshotPath = await buildSnapshot({
+          license: 'trial',
+          sourcePath: options.sourcePath,
+          log,
+          platform,
+        });
 
-          const filename = basename(snapshotPath);
-          const outputPath = resolve(outputDir, filename);
-          const hash = createHash('sha512');
-          await pipelineAsync(
-            Fs.createReadStream(snapshotPath),
-            new Transform({
-              transform(chunk, _, cb) {
-                hash.update(chunk);
-                cb(undefined, chunk);
-              },
-            }),
-            Fs.createWriteStream(outputPath)
-          );
+        const filename = basename(snapshotPath);
+        const outputPath = resolve(outputDir, filename);
+        const hash = createHash('sha512');
+        await pipelineAsync(
+          Fs.createReadStream(snapshotPath),
+          new Transform({
+            transform(chunk, _, cb) {
+              hash.update(chunk);
+              cb(undefined, chunk);
+            },
+          }),
+          Fs.createWriteStream(outputPath)
+        );
 
-          Fs.writeFileSync(`${outputPath}.sha512`, `${hash.digest('hex')}  ${filename}`);
-          log.success('snapshot and shasum written to', outputPath);
-        });
-      }
+        Fs.writeFileSync(`${outputPath}.sha512`, `${hash.digest('hex')}  ${filename}`);
+        log.success('snapshot and shasum written to', outputPath);
+      });
     }
   },
 };
diff --git a/packages/kbn-es/src/cli_commands/snapshot.ts b/packages/kbn-es/src/cli_commands/snapshot.ts
index cf8a5149bc892..2395e480ee221 100644
--- a/packages/kbn-es/src/cli_commands/snapshot.ts
+++ b/packages/kbn-es/src/cli_commands/snapshot.ts
@@ -23,7 +23,7 @@ export const snapshot: Command = {
     return dedent`
     Options:
 
-      --license         Run with a 'oss', 'basic', or 'trial' license [default: ${license}]
+      --license         Run with a 'basic' or 'trial' license [default: ${license}]
       --version         Version of ES to download [default: ${defaults.version}]
       --base-path       Path containing cache/installations [default: ${basePath}]
       --install-path    Installation path, defaults to 'source' within base-path
diff --git a/packages/kbn-es/src/cli_commands/source.ts b/packages/kbn-es/src/cli_commands/source.ts
index 6916c082676c0..3c50d50c50158 100644
--- a/packages/kbn-es/src/cli_commands/source.ts
+++ b/packages/kbn-es/src/cli_commands/source.ts
@@ -20,7 +20,7 @@ export const source: Command = {
     return dedent`
       Options:
 
-        --license         Run with a 'oss', 'basic', or 'trial' license [default: ${license}]
+        --license         Run with a 'basic' or 'trial' license [default: ${license}]
         --source-path     Path to ES source [default: ${defaults['source-path']}]
         --base-path       Path containing cache/installations [default: ${basePath}]
         --install-path    Installation path, defaults to 'source' within base-path
diff --git a/packages/kbn-es/src/custom_snapshots.ts b/packages/kbn-es/src/custom_snapshots.ts
index f3e6d3ecaf857..dcd6f5b2c8406 100644
--- a/packages/kbn-es/src/custom_snapshots.ts
+++ b/packages/kbn-es/src/custom_snapshots.ts
@@ -42,7 +42,7 @@ export function resolveCustomSnapshotUrl(
 
   const ext = process.platform === 'win32' ? 'zip' : 'tar.gz';
   const os = process.platform === 'win32' ? 'windows' : process.platform;
-  const name = license === 'oss' ? 'elasticsearch-oss' : 'elasticsearch';
+  const name = 'elasticsearch';
   const overrideUrl = customSnapshotUrl
     .replace('{name}', name)
     .replace('{ext}', ext)
diff --git a/packages/kbn-es/src/install/install_archive.ts b/packages/kbn-es/src/install/install_archive.ts
index 352b0fe6007db..78e200d4d47fb 100644
--- a/packages/kbn-es/src/install/install_archive.ts
+++ b/packages/kbn-es/src/install/install_archive.ts
@@ -66,17 +66,15 @@ export async function installArchive(archive: string, options?: InstallArchiveOp
   fs.mkdirSync(tmpdir, { recursive: true });
   log.info('created %s', chalk.bold(tmpdir));
 
-  if (license !== 'oss') {
-    // starting in 6.3, security is disabled by default. Since we bootstrap
-    // the keystore, we can enable security ourselves.
-    await appendToConfig(installPath, 'xpack.security.enabled', 'true');
+  // starting in 6.3, security is disabled by default. Since we bootstrap
+  // the keystore, we can enable security ourselves.
+  await appendToConfig(installPath, 'xpack.security.enabled', 'true');
 
-    await appendToConfig(installPath, 'xpack.license.self_generated.type', license);
-    await configureKeystore(installPath, log, [
-      ['bootstrap.password', password],
-      ...parseSettings(esArgs, { filter: SettingsFilter.SecureOnly }),
-    ]);
-  }
+  await appendToConfig(installPath, 'xpack.license.self_generated.type', license);
+  await configureKeystore(installPath, log, [
+    ['bootstrap.password', password],
+    ...parseSettings(esArgs, { filter: SettingsFilter.SecureOnly }),
+  ]);
 
   return { installPath };
 }
diff --git a/packages/kbn-es/src/utils/build_snapshot.ts b/packages/kbn-es/src/utils/build_snapshot.ts
index 46d14910a27c2..ec20fc64d8f4b 100644
--- a/packages/kbn-es/src/utils/build_snapshot.ts
+++ b/packages/kbn-es/src/utils/build_snapshot.ts
@@ -31,9 +31,6 @@ interface BuildSnapshotOptions {
  *   :distribution:archives:darwin-tar:assemble
  *   :distribution:archives:linux-tar:assemble
  *   :distribution:archives:windows-zip:assemble
- *   :distribution:archives:oss-darwin-tar:assemble
- *   :distribution:archives:oss-linux-tar:assemble
- *   :distribution:archives:oss-windows-zip:assemble
  */
 export async function buildSnapshot({
   license,
@@ -67,15 +64,13 @@ export async function buildSnapshot({
 }
 
 export function archiveForPlatform(platform: NodeJS.Platform, license: string) {
-  const taskPrefix = license === 'oss' ? 'oss-' : '';
-
   switch (platform) {
     case 'darwin':
-      return { format: 'tar', ext: 'tar.gz', task: `${taskPrefix}darwin-tar`, platform: 'darwin' };
+      return { format: 'tar', ext: 'tar.gz', task: 'darwin-tar', platform: 'darwin' };
     case 'win32':
-      return { format: 'zip', ext: 'zip', task: `${taskPrefix}windows-zip`, platform: 'windows' };
+      return { format: 'zip', ext: 'zip', task: 'windows-zip', platform: 'windows' };
     case 'linux':
-      return { format: 'tar', ext: 'tar.gz', task: `${taskPrefix}linux-tar`, platform: 'linux' };
+      return { format: 'tar', ext: 'tar.gz', task: 'linux-tar', platform: 'linux' };
     default:
       throw new Error(`unsupported platform: ${platform}`);
   }

From 5900dff07d3be859e67189c24ae3853e0287e9ac Mon Sep 17 00:00:00 2001
From: Philippe Oberti <philippe.oberti@elastic.co>
Date: Thu, 9 Nov 2023 16:26:19 -0600
Subject: [PATCH 073/147] [Security Solution] unskip serverless for expandable
 flyout right panel (#170189)

---
 .../alert_details_right_panel.cy.ts           | 174 ++++++++----------
 .../screens/expandable_flyout/common.ts       |   9 +-
 .../alert_details_right_panel.ts              |  29 ++-
 .../cypress/tasks/expandable_flyout/common.ts |  32 ----
 4 files changed, 98 insertions(+), 146 deletions(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel.cy.ts
index 950d804ae352c..ed4476bcfe450 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel.cy.ts
@@ -8,20 +8,11 @@
 import { upperFirst } from 'lodash';
 
 import {
-  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON,
-  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT,
-  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT,
   EXISTING_CASE_SELECT_BUTTON,
   VIEW_CASE_TOASTER_LINK,
 } from '../../../../screens/expandable_flyout/common';
-import {
-  createNewCaseFromCases,
-  expandFirstAlertExpandableFlyout,
-  navigateToAlertsPage,
-  navigateToCasesPage,
-} from '../../../../tasks/expandable_flyout/common';
-import { ALERT_CHECKBOX } from '../../../../screens/alerts';
-import { CASE_DETAILS_PAGE_TITLE } from '../../../../screens/case_details';
+import { expandFirstAlertExpandableFlyout } from '../../../../tasks/expandable_flyout/common';
+import { ALERT_CHECKBOX, EMPTY_ALERT_TABLE } from '../../../../screens/alerts';
 import {
   DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON,
@@ -51,6 +42,7 @@ import {
 import {
   collapseDocumentDetailsExpandableFlyoutLeftSection,
   expandDocumentDetailsExpandableFlyoutLeftSection,
+  fillOutFormToCreateNewCase,
   openJsonTab,
   openTableTab,
   openTakeActionButton,
@@ -65,8 +57,7 @@ import { getNewRule } from '../../../../objects/rule';
 import { ALERTS_URL } from '../../../../urls/navigation';
 import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
 
-// FLAKY: https://github.com/elastic/kibana/issues/168317
-describe.skip('Alert details expandable flyout right panel', () => {
+describe('Alert details expandable flyout right panel', { tags: ['@ess', '@serverless'] }, () => {
   const rule = getNewRule();
 
   beforeEach(() => {
@@ -77,14 +68,14 @@ describe.skip('Alert details expandable flyout right panel', () => {
     waitForAlertsToPopulate();
   });
 
-  it('should display header and footer basics', { tags: ['@ess', '@serverless'] }, () => {
+  it('should display header and footer basics', () => {
     expandFirstAlertExpandableFlyout();
 
-    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_TITLE).should('be.visible').and('have.text', rule.name);
+    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_TITLE).should('have.text', rule.name);
 
-    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_STATUS).should('be.visible');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_STATUS).should('have.text', 'open');
 
-    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_RISK_SCORE).should('be.visible');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_RISK_SCORE).should('have.text', 'Risk score:');
     cy.get(DOCUMENT_DETAILS_FLYOUT_HEADER_RISK_SCORE_VALUE)
       .should('be.visible')
       .and('have.text', rule.risk_score);
@@ -95,72 +86,65 @@ describe.skip('Alert details expandable flyout right panel', () => {
 
     cy.log('Verify all 3 tabs are visible');
 
-    cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB).should('be.visible').and('have.text', 'Overview');
-    cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB).should('be.visible').and('have.text', 'Table');
-    cy.get(DOCUMENT_DETAILS_FLYOUT_JSON_TAB).should('be.visible').and('have.text', 'JSON');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB)
+      .should('have.text', 'Overview')
+      .and('have.class', 'euiTab-isSelected');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB)
+      .should('have.text', 'Table')
+      .and('not.have.class', 'euiTab-isSelected');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_JSON_TAB)
+      .should('have.text', 'JSON')
+      .and('not.have.class', 'euiTab-isSelected');
 
     cy.log('Verify the expand/collapse button is visible and functionality works');
 
     expandDocumentDetailsExpandableFlyoutLeftSection();
-    cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON)
-      .should('be.visible')
-      .and('have.text', 'Collapse details');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).should('have.text', 'Collapse details');
 
     collapseDocumentDetailsExpandableFlyoutLeftSection();
-    cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON)
-      .should('be.visible')
-      .and('have.text', 'Expand details');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON).should('have.text', 'Expand details');
 
     cy.log('Verify the take action button is visible on all tabs');
 
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).scrollIntoView();
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).should('be.visible');
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON).should('be.visible');
 
     openTableTab();
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).scrollIntoView();
+    cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB).should('have.class', 'euiTab-isSelected');
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).should('be.visible');
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON).should('be.visible');
 
     openJsonTab();
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).scrollIntoView();
+    cy.get(DOCUMENT_DETAILS_FLYOUT_JSON_TAB).should('have.class', 'euiTab-isSelected');
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).should('be.visible');
     cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON).should('be.visible');
   });
 
   // TODO this will change when add to existing case is improved
   //  https://github.com/elastic/security-team/issues/6298
-  it('should add to existing case', { tags: ['@ess', '@serverless'] }, () => {
-    navigateToCasesPage();
-    createNewCaseFromCases();
-
-    cy.get(CASE_DETAILS_PAGE_TITLE).should('be.visible').and('have.text', 'case');
-    navigateToAlertsPage();
+  it('should add to existing case', () => {
     expandFirstAlertExpandableFlyout();
+    openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE);
+    fillOutFormToCreateNewCase();
     openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_EXISTING_CASE);
 
     cy.get(EXISTING_CASE_SELECT_BUTTON).should('be.visible').contains('Select').click();
+
     cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible').and('contain.text', 'View case');
   });
 
   // TODO this will change when add to new case is improved
   //  https://github.com/elastic/security-team/issues/6298
-  it('should add to new case', { tags: ['@ess', '@serverless'] }, () => {
+  it('should add to new case', () => {
     expandFirstAlertExpandableFlyout();
     openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE);
-
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT).type('case');
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT).type(
-      'case description'
-    );
-    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON).click();
+    fillOutFormToCreateNewCase();
 
     cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible').and('contain.text', 'View case');
   });
 
-  // Issue reported int: https://github.com/elastic/kibana/issues/167809
-  it('should mark as acknowledged', { tags: ['@ess', '@brokenInServerless'] }, () => {
-    cy.get(ALERT_CHECKBOX).should('have.length', 2);
+  it('should mark as acknowledged', () => {
+    cy.get(ALERT_CHECKBOX).should('have.length', 1);
 
     expandFirstAlertExpandableFlyout();
     openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_MARK_AS_ACKNOWLEDGED);
@@ -169,68 +153,62 @@ describe.skip('Alert details expandable flyout right panel', () => {
     // cy.get(KIBANA_TOAST)
     //   .should('be.visible')
     //   .and('have.text', 'Successfully marked 1 alert as acknowledged.');
-    cy.get(ALERT_CHECKBOX).should('have.length', 1);
+    cy.get(EMPTY_ALERT_TABLE).should('exist');
   });
 
-  // Issue reported int: https://github.com/elastic/kibana/issues/167809
-  it('should mark as closed', { tags: ['@ess', '@brokenInServerless'] }, () => {
-    cy.get(ALERT_CHECKBOX).should('have.length', 2);
+  it('should mark as closed', () => {
+    cy.get(ALERT_CHECKBOX).should('have.length', 1);
 
     expandFirstAlertExpandableFlyout();
     openTakeActionButtonAndSelectItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_MARK_AS_CLOSED);
 
     // TODO figure out how to verify the toasts pops up
     // cy.get(KIBANA_TOAST).should('be.visible').and('have.text', 'Successfully closed 1 alert.');
-    cy.get(ALERT_CHECKBOX).should('have.length', 1);
+    cy.get(EMPTY_ALERT_TABLE).should('exist');
   });
 
   // these actions are now grouped together as we're not really testing their functionality but just the existence of the option in the dropdown
-  // Issue reported int: https://github.com/elastic/kibana/issues/167809
-  it(
-    'should test other action within take action dropdown',
-    { tags: ['@ess', '@brokenInServerless'] },
-    () => {
-      expandFirstAlertExpandableFlyout();
-
-      cy.log('should add endpoint exception');
-
-      // TODO figure out why this option is disabled in Cypress but not running the app locally
-      //  https://github.com/elastic/security-team/issues/6300
-      openTakeActionButton();
-      cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_ENDPOINT_EXCEPTION).should('be.disabled');
-
-      cy.log('should add rule exception');
-
-      // TODO this isn't fully testing the add rule exception yet
-      //  https://github.com/elastic/security-team/issues/6301
-      selectTakeActionItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION);
-      cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION_FLYOUT_HEADER).should('be.visible');
-      cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION_FLYOUT_CANCEL_BUTTON)
-        .should('be.visible')
-        .click();
-
-      // cy.log('should isolate host');
-
-      // TODO figure out why isolate host isn't showing up in the dropdown
-      //  https://github.com/elastic/security-team/issues/6302
-      // openTakeActionButton();
-      // cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ISOLATE_HOST).should('be.visible');
-
-      cy.log('should respond');
-
-      // TODO this will change when respond is improved
-      //  https://github.com/elastic/security-team/issues/6303
-      openTakeActionButton();
-      cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_RESPOND).should('be.disabled');
-
-      cy.log('should investigate in timeline');
-
-      selectTakeActionItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE);
-      cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE_SECTION)
-        .first()
-        .within(() =>
-          cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE_ENTRY).should('be.visible')
-        );
-    }
-  );
+  it('should test other action within take action dropdown', () => {
+    expandFirstAlertExpandableFlyout();
+
+    cy.log('should add endpoint exception');
+
+    // TODO figure out why this option is disabled in Cypress but not running the app locally
+    //  https://github.com/elastic/security-team/issues/6300
+    openTakeActionButton();
+    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_ENDPOINT_EXCEPTION).should('be.disabled');
+
+    cy.log('should add rule exception');
+
+    // TODO this isn't fully testing the add rule exception yet
+    //  https://github.com/elastic/security-team/issues/6301
+    selectTakeActionItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION);
+    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION_FLYOUT_HEADER).should('exist');
+    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_RULE_EXCEPTION_FLYOUT_CANCEL_BUTTON)
+      .should('be.visible')
+      .click();
+
+    // cy.log('should isolate host');
+
+    // TODO figure out why isolate host isn't showing up in the dropdown
+    //  https://github.com/elastic/security-team/issues/6302
+    // openTakeActionButton();
+    // cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ISOLATE_HOST).should('be.visible');
+
+    cy.log('should respond');
+
+    // TODO this will change when respond is improved
+    //  https://github.com/elastic/security-team/issues/6303
+    openTakeActionButton();
+    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_RESPOND).should('be.disabled');
+
+    cy.log('should investigate in timeline');
+
+    selectTakeActionItem(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE);
+    cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE_SECTION)
+      .first()
+      .within(() =>
+        cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_INVESTIGATE_IN_TIMELINE_ENTRY).should('exist')
+      );
+  });
 });
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
index bc0119464374c..f3c0df5cf8f31 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
@@ -10,18 +10,13 @@ import {
   getDataTestSubjectSelectorStartWith,
 } from '../../helpers/common';
 
-export const KIBANA_NAVBAR_ALERTS_PAGE = getDataTestSubjectSelector(
-  'solutionSideNavItemLink-alerts'
-);
-export const KIBANA_NAVBAR_CASES_PAGE = getDataTestSubjectSelector('solutionSideNavItemLink-cases');
 export const VIEW_CASE_TOASTER_LINK = getDataTestSubjectSelector('toaster-content-case-view-link');
-export const CREATE_CASE_BUTTON = `[data-test-subj="createNewCaseBtn"]`;
 export const NEW_CASE_NAME_INPUT = `[data-test-subj="input"][aria-describedby="caseTitle"]`;
 export const NEW_CASE_DESCRIPTION_INPUT = getDataTestSubjectSelector('euiMarkdownEditorTextArea');
-export const NEW_CASE_CREATE_BUTTON = getDataTestSubjectSelector('create-case-submit');
 export const EXISTING_CASE_SELECT_BUTTON =
   getDataTestSubjectSelectorStartWith('cases-table-row-select-');
 export const DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT = NEW_CASE_NAME_INPUT;
 export const DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT =
   NEW_CASE_DESCRIPTION_INPUT;
-export const DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON = NEW_CASE_CREATE_BUTTON;
+export const DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON =
+  getDataTestSubjectSelector('create-case-submit');
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts
index 350c069639870..11e1b6a0b0ef9 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts
@@ -13,9 +13,15 @@ import {
   DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON_DROPDOWN,
   DOCUMENT_DETAILS_FLYOUT_JSON_TAB,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB,
   DOCUMENT_DETAILS_FLYOUT_TABLE_TAB,
 } from '../../screens/expandable_flyout/alert_details_right_panel';
+import {
+  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON,
+  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT,
+  DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT,
+  VIEW_CASE_TOASTER_LINK,
+} from '../../screens/expandable_flyout/common';
+import { TOASTER_CLOSE_ICON } from '../../screens/alerts_detection_rules';
 
 /* Header */
 
@@ -35,14 +41,6 @@ export const collapseDocumentDetailsExpandableFlyoutLeftSection = () => {
   cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).click();
 };
 
-/**
- * Open the Overview tab in the document details expandable flyout right section
- */
-export const openOverviewTab = () => {
-  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB).scrollIntoView();
-  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB).click();
-};
-
 /**
  * Open the Table tab in the document details expandable flyout right section
  */
@@ -95,3 +93,16 @@ export const selectTakeActionItem = (option: string) => {
     .should('be.visible')
     .within(() => cy.get(option).should('be.visible').click());
 };
+
+/**
+ * Create new case from the expandable flyout take action button
+ */
+export const fillOutFormToCreateNewCase = () => {
+  cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT).type('case');
+  cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT).type('case description');
+
+  cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON).click();
+
+  cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible');
+  cy.get(TOASTER_CLOSE_ICON).should('be.visible').click();
+};
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
index 424d723e732b5..bc1d8e1cd8171 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
@@ -8,33 +8,13 @@
 import { EXPAND_ALERT_BTN } from '../../screens/alerts';
 import { DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE } from '../../screens/expandable_flyout/alert_details_right_panel';
 import {
-  CREATE_CASE_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT,
-  KIBANA_NAVBAR_ALERTS_PAGE,
-  KIBANA_NAVBAR_CASES_PAGE,
-  NEW_CASE_CREATE_BUTTON,
-  NEW_CASE_DESCRIPTION_INPUT,
-  NEW_CASE_NAME_INPUT,
   VIEW_CASE_TOASTER_LINK,
 } from '../../screens/expandable_flyout/common';
 import { openTakeActionButtonAndSelectItem } from './alert_details_right_panel';
 
-/**
- * Navigates to the alerts page by clicking on the Kibana sidenav entry
- */
-export const navigateToAlertsPage = () => {
-  cy.get(KIBANA_NAVBAR_ALERTS_PAGE).should('be.visible').click();
-};
-
-/**
- * Navigates to the cases page by clicking on the Kibana sidenav entry
- */
-export const navigateToCasesPage = () => {
-  cy.get(KIBANA_NAVBAR_CASES_PAGE).click();
-};
-
 /**
  * Find the first alert row in the alerts table then click on the expand icon button to open the flyout
  */
@@ -42,18 +22,6 @@ export const expandFirstAlertExpandableFlyout = () => {
   cy.get(EXPAND_ALERT_BTN).first().click();
 };
 
-/**
- * Create a new case from the cases page
- */
-export const createNewCaseFromCases = () => {
-  cy.get(CREATE_CASE_BUTTON).should('be.visible').click();
-  cy.get(NEW_CASE_NAME_INPUT).should('be.visible').click();
-  cy.get(NEW_CASE_NAME_INPUT).type('case');
-  cy.get(NEW_CASE_DESCRIPTION_INPUT).should('be.visible').click();
-  cy.get(NEW_CASE_DESCRIPTION_INPUT).type('case description');
-  cy.get(NEW_CASE_CREATE_BUTTON).should('be.visible').click();
-};
-
 /**
  * create a new case from the expanded expandable flyout
  */

From afd020c63da1aff540b778e2e4303723ee15e00d Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Fri, 10 Nov 2023 00:16:29 +0000
Subject: [PATCH 074/147] chore(NA): exports target branch when using a merge
 queue system at buildkite env script (#170918)

This PR adds the ability for us to have an env var on buildkite to allow
us to understand what is the final end target when running inside a
merge queue environment. It will be useful to redirect a couple of
dependent scripts that will start running inside the merge queue
environment once we activate it again

---------

Co-authored-by: Jon <jon@budzenski.me>
---
 .buildkite/scripts/common/env.sh | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/.buildkite/scripts/common/env.sh b/.buildkite/scripts/common/env.sh
index ccaeb7b0dc5d9..3e086cb4505ec 100755
--- a/.buildkite/scripts/common/env.sh
+++ b/.buildkite/scripts/common/env.sh
@@ -28,6 +28,24 @@ export KIBANA_BASE_BRANCH="$KIBANA_PKG_BRANCH"
 KIBANA_PKG_VERSION="$(jq -r .version "$KIBANA_DIR/package.json")"
 export KIBANA_PKG_VERSION
 
+# Detects and exports the final target branch when using a merge queue
+if [[ "$BUILDKITE_BRANCH" == "gh-readonly-queue"* ]]; then
+  # removes gh-readonly-queue/
+  BKBRANCH_WITHOUT_GH_MQ_PREFIX="${BUILDKITE_BRANCH#gh-readonly-queue/}"
+
+  # extracts target mqueue branch
+  MERGE_QUEUE_TARGET_BRANCH=${BKBRANCH_WITHOUT_GH_MQ_PREFIX%/*}
+else
+  MERGE_QUEUE_TARGET_BRANCH=""
+fi
+export MERGE_QUEUE_TARGET_BRANCH
+
+# Exports BUILDKITE_BRANCH_MERGE_QUEUE which will use the value from MERGE_QUEUE_TARGET_BRANCH if defined otherwise
+# will fallback to BUILDKITE_BRANCH.
+BUILDKITE_BRANCH_MERGE_QUEUE="${MERGE_QUEUE_TARGET_BRANCH:-$BUILDKITE_BRANCH}"
+export BUILDKITE_BRANCH_MERGE_QUEUE
+
+
 BUILDKITE_AGENT_GCP_REGION=""
 if [[ "$(curl -is metadata.google.internal || true)" ]]; then
   # projects/1003139005402/zones/us-central1-a -> us-central1-a -> us-central1

From f933647be8206a8487f1ad42b499a146ba2e6360 Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Fri, 10 Nov 2023 03:33:17 +0000
Subject: [PATCH 075/147] skip failing es promotion suites (#170999)

---
 .../apis/management/index_management/component_templates.ts    | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/api_integration/apis/management/index_management/component_templates.ts b/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
index 0065057d762f4..6e2b7ba71e86b 100644
--- a/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
+++ b/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
@@ -26,7 +26,8 @@ export default function ({ getService }: FtrProviderContext) {
     createDatastream,
   } = initElasticsearchHelpers(getService);
 
-  describe('Component templates', function () {
+  // FLAKY: https://github.com/elastic/kibana/issues/170999
+  describe.skip('Component templates', function () {
     after(async () => {
       await cleanUpIndexTemplates();
       await cleanUpComponentTemplates();

From 69b2cb39736fe9501e007c21b29b431c8027857e Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Fri, 10 Nov 2023 00:55:38 -0500
Subject: [PATCH 076/147] [api-docs] 2023-11-10 Daily api_docs build (#171000)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/517
---
 api_docs/actions.mdx                          |   2 +-
 api_docs/advanced_settings.mdx                |   2 +-
 api_docs/aiops.mdx                            |   2 +-
 api_docs/alerting.mdx                         |   2 +-
 api_docs/apm.mdx                              |   2 +-
 api_docs/apm_data_access.mdx                  |   2 +-
 api_docs/asset_manager.mdx                    |   2 +-
 api_docs/banners.mdx                          |   2 +-
 api_docs/bfetch.mdx                           |   2 +-
 api_docs/canvas.mdx                           |   2 +-
 api_docs/cases.mdx                            |   2 +-
 api_docs/charts.mdx                           |   2 +-
 api_docs/cloud.mdx                            |   2 +-
 api_docs/cloud_data_migration.mdx             |   2 +-
 api_docs/cloud_defend.mdx                     |   2 +-
 api_docs/cloud_experiments.mdx                |   2 +-
 api_docs/cloud_security_posture.mdx           |   2 +-
 api_docs/console.mdx                          |   2 +-
 api_docs/content_management.mdx               |   2 +-
 api_docs/controls.mdx                         |   2 +-
 api_docs/custom_integrations.mdx              |   2 +-
 api_docs/dashboard.mdx                        |   2 +-
 api_docs/dashboard_enhanced.mdx               |   2 +-
 api_docs/data.mdx                             |   2 +-
 api_docs/data_query.mdx                       |   2 +-
 api_docs/data_search.mdx                      |   2 +-
 api_docs/data_view_editor.mdx                 |   2 +-
 api_docs/data_view_field_editor.mdx           |   2 +-
 api_docs/data_view_management.mdx             |   2 +-
 api_docs/data_views.mdx                       |   2 +-
 api_docs/data_visualizer.mdx                  |   2 +-
 api_docs/deprecations_by_api.mdx              |   2 +-
 api_docs/deprecations_by_plugin.mdx           |   2 +-
 api_docs/deprecations_by_team.mdx             |   2 +-
 api_docs/dev_tools.mdx                        |   2 +-
 api_docs/discover.mdx                         |   2 +-
 api_docs/discover_enhanced.mdx                |   2 +-
 api_docs/ecs_data_quality_dashboard.mdx       |   2 +-
 api_docs/elastic_assistant.mdx                |   2 +-
 api_docs/embeddable.mdx                       |   2 +-
 api_docs/embeddable_enhanced.mdx              |   2 +-
 api_docs/encrypted_saved_objects.mdx          |   2 +-
 api_docs/enterprise_search.mdx                |   2 +-
 api_docs/es_ui_shared.mdx                     |   2 +-
 api_docs/event_annotation.mdx                 |   2 +-
 api_docs/event_annotation_listing.mdx         |   2 +-
 api_docs/event_log.mdx                        |   2 +-
 api_docs/exploratory_view.mdx                 |   2 +-
 api_docs/expression_error.mdx                 |   2 +-
 api_docs/expression_gauge.mdx                 |   2 +-
 api_docs/expression_heatmap.mdx               |   2 +-
 api_docs/expression_image.mdx                 |   2 +-
 api_docs/expression_legacy_metric_vis.mdx     |   2 +-
 api_docs/expression_metric.mdx                |   2 +-
 api_docs/expression_metric_vis.mdx            |   2 +-
 api_docs/expression_partition_vis.mdx         |   2 +-
 api_docs/expression_repeat_image.mdx          |   2 +-
 api_docs/expression_reveal_image.mdx          |   2 +-
 api_docs/expression_shape.mdx                 |   2 +-
 api_docs/expression_tagcloud.mdx              |   2 +-
 api_docs/expression_x_y.mdx                   |   2 +-
 api_docs/expressions.mdx                      |   2 +-
 api_docs/features.mdx                         |   2 +-
 api_docs/field_formats.mdx                    |   2 +-
 api_docs/file_upload.mdx                      |   2 +-
 api_docs/files.mdx                            |   2 +-
 api_docs/files_management.mdx                 |   2 +-
 api_docs/fleet.mdx                            |   2 +-
 api_docs/global_search.mdx                    |   2 +-
 api_docs/guided_onboarding.mdx                |   2 +-
 api_docs/home.mdx                             |   2 +-
 api_docs/image_embeddable.mdx                 |   2 +-
 api_docs/index_lifecycle_management.mdx       |   2 +-
 api_docs/index_management.mdx                 |   2 +-
 api_docs/infra.mdx                            |   2 +-
 api_docs/inspector.mdx                        |   2 +-
 api_docs/interactive_setup.mdx                |   2 +-
 api_docs/kbn_ace.mdx                          |   2 +-
 api_docs/kbn_aiops_components.mdx             |   2 +-
 api_docs/kbn_aiops_utils.mdx                  |   2 +-
 .../kbn_alerting_api_integration_helpers.mdx  |   2 +-
 api_docs/kbn_alerting_state_types.mdx         |   2 +-
 api_docs/kbn_alerts_as_data_utils.mdx         |   2 +-
 api_docs/kbn_alerts_ui_shared.mdx             |   2 +-
 api_docs/kbn_analytics.mdx                    |   2 +-
 api_docs/kbn_analytics_client.devdocs.json    |  14 +-
 api_docs/kbn_analytics_client.mdx             |   2 +-
 ..._analytics_shippers_elastic_v3_browser.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_common.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_server.mdx |   2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx |   2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx |   2 +-
 api_docs/kbn_apm_config_loader.mdx            |   2 +-
 api_docs/kbn_apm_synthtrace.mdx               |   2 +-
 api_docs/kbn_apm_synthtrace_client.mdx        |   2 +-
 api_docs/kbn_apm_utils.mdx                    |   2 +-
 api_docs/kbn_axe_config.mdx                   |   2 +-
 api_docs/kbn_cases_components.mdx             |   2 +-
 api_docs/kbn_cell_actions.mdx                 |   2 +-
 api_docs/kbn_chart_expressions_common.mdx     |   2 +-
 api_docs/kbn_chart_icons.mdx                  |   2 +-
 api_docs/kbn_ci_stats_core.mdx                |   2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx |   2 +-
 api_docs/kbn_ci_stats_reporter.mdx            |   2 +-
 api_docs/kbn_cli_dev_mode.mdx                 |   2 +-
 api_docs/kbn_code_editor.mdx                  |   2 +-
 api_docs/kbn_coloring.mdx                     |   2 +-
 api_docs/kbn_config.mdx                       |   2 +-
 api_docs/kbn_config_mocks.mdx                 |   2 +-
 api_docs/kbn_config_schema.mdx                |   2 +-
 .../kbn_content_management_content_editor.mdx |   2 +-
 ...tent_management_tabbed_table_list_view.mdx |   2 +-
 ...kbn_content_management_table_list_view.mdx |   2 +-
 ...ntent_management_table_list_view_table.mdx |   2 +-
 api_docs/kbn_content_management_utils.mdx     |   2 +-
 api_docs/kbn_core_analytics_browser.mdx       |   2 +-
 .../kbn_core_analytics_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_analytics_server.mdx        |   2 +-
 .../kbn_core_analytics_server_internal.mdx    |   2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_application_browser.mdx     |   2 +-
 .../kbn_core_application_browser_internal.mdx |   2 +-
 .../kbn_core_application_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_application_common.mdx      |   2 +-
 api_docs/kbn_core_apps_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_apps_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_base_common.mdx             |   2 +-
 api_docs/kbn_core_base_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_server_mocks.mdx       |   2 +-
 .../kbn_core_capabilities_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_capabilities_common.mdx     |   2 +-
 .../kbn_core_capabilities_server.devdocs.json | 101 ++-
 api_docs/kbn_core_capabilities_server.mdx     |   4 +-
 .../kbn_core_capabilities_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_chrome_browser.mdx          |   2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_config_server_internal.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_browser.mdx |   2 +-
 ..._core_custom_branding_browser_internal.mdx |   2 +-
 ...kbn_core_custom_branding_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_custom_branding_common.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_server.mdx  |   2 +-
 ...n_core_custom_branding_server_internal.mdx |   2 +-
 .../kbn_core_custom_branding_server_mocks.mdx |   2 +-
 api_docs/kbn_core_deprecations_browser.mdx    |   2 +-
 ...kbn_core_deprecations_browser_internal.mdx |   2 +-
 .../kbn_core_deprecations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_deprecations_common.mdx     |   2 +-
 api_docs/kbn_core_deprecations_server.mdx     |   2 +-
 .../kbn_core_deprecations_server_internal.mdx |   2 +-
 .../kbn_core_deprecations_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_doc_links_browser.mdx       |   2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_doc_links_server.mdx        |   2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx  |   2 +-
 ...e_elasticsearch_client_server_internal.mdx |   2 +-
 ...core_elasticsearch_client_server_mocks.mdx |   2 +-
 api_docs/kbn_core_elasticsearch_server.mdx    |   2 +-
 ...kbn_core_elasticsearch_server_internal.mdx |   2 +-
 .../kbn_core_elasticsearch_server_mocks.mdx   |   2 +-
 .../kbn_core_environment_server_internal.mdx  |   2 +-
 .../kbn_core_environment_server_mocks.mdx     |   2 +-
 .../kbn_core_execution_context_browser.mdx    |   2 +-
 ...ore_execution_context_browser_internal.mdx |   2 +-
 ...n_core_execution_context_browser_mocks.mdx |   2 +-
 .../kbn_core_execution_context_common.mdx     |   2 +-
 .../kbn_core_execution_context_server.mdx     |   2 +-
 ...core_execution_context_server_internal.mdx |   2 +-
 ...bn_core_execution_context_server_mocks.mdx |   2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx    |   2 +-
 .../kbn_core_fatal_errors_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_http_browser.mdx            |   2 +-
 api_docs/kbn_core_http_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_http_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_http_common.mdx             |   2 +-
 .../kbn_core_http_context_server_mocks.mdx    |   2 +-
 ...re_http_request_handler_context_server.mdx |   2 +-
 api_docs/kbn_core_http_resources_server.mdx   |   2 +-
 ...bn_core_http_resources_server_internal.mdx |   2 +-
 .../kbn_core_http_resources_server_mocks.mdx  |   2 +-
 .../kbn_core_http_router_server_internal.mdx  |   2 +-
 .../kbn_core_http_router_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_http_server.devdocs.json    |  68 +-
 api_docs/kbn_core_http_server.mdx             |   2 +-
 api_docs/kbn_core_http_server_internal.mdx    |   2 +-
 api_docs/kbn_core_http_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_i18n_browser.mdx            |   2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_i18n_server.mdx             |   2 +-
 api_docs/kbn_core_i18n_server_internal.mdx    |   2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx       |   2 +-
 ...n_core_injected_metadata_browser_mocks.mdx |   2 +-
 ...kbn_core_integrations_browser_internal.mdx |   2 +-
 .../kbn_core_integrations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_lifecycle_browser.mdx       |   2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_lifecycle_server.mdx        |   2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_logging_common_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server.mdx          |   2 +-
 api_docs/kbn_core_logging_server_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server_mocks.mdx    |   2 +-
 ...ore_metrics_collectors_server_internal.mdx |   2 +-
 ...n_core_metrics_collectors_server_mocks.mdx |   2 +-
 api_docs/kbn_core_metrics_server.mdx          |   2 +-
 api_docs/kbn_core_metrics_server_internal.mdx |   2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_mount_utils_browser.mdx     |   2 +-
 api_docs/kbn_core_node_server.mdx             |   2 +-
 api_docs/kbn_core_node_server_internal.mdx    |   2 +-
 api_docs/kbn_core_node_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_notifications_browser.mdx   |   2 +-
 ...bn_core_notifications_browser_internal.mdx |   2 +-
 .../kbn_core_notifications_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_overlays_browser.mdx        |   2 +-
 .../kbn_core_overlays_browser_internal.mdx    |   2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_plugins_browser.mdx         |   2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx   |   2 +-
 .../kbn_core_plugins_contracts_browser.mdx    |   2 +-
 .../kbn_core_plugins_contracts_server.mdx     |   2 +-
 api_docs/kbn_core_plugins_server.mdx          |   2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_preboot_server.mdx          |   2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx |   2 +-
 .../kbn_core_rendering_server_internal.mdx    |   2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_root_server_internal.mdx    |   2 +-
 .../kbn_core_saved_objects_api_browser.mdx    |   2 +-
 .../kbn_core_saved_objects_api_server.mdx     |   2 +-
 ...bn_core_saved_objects_api_server_mocks.mdx |   2 +-
 ...ore_saved_objects_base_server_internal.mdx |   2 +-
 ...n_core_saved_objects_base_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_browser.mdx   |   2 +-
 ...bn_core_saved_objects_browser_internal.mdx |   2 +-
 .../kbn_core_saved_objects_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_saved_objects_common.mdx    |   2 +-
 ..._objects_import_export_server_internal.mdx |   2 +-
 ...ved_objects_import_export_server_mocks.mdx |   2 +-
 ...aved_objects_migration_server_internal.mdx |   2 +-
 ...e_saved_objects_migration_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_server.mdx    |   2 +-
 ...kbn_core_saved_objects_server_internal.mdx |   2 +-
 .../kbn_core_saved_objects_server_mocks.mdx   |   2 +-
 .../kbn_core_saved_objects_utils_server.mdx   |   2 +-
 api_docs/kbn_core_status_common.mdx           |   2 +-
 api_docs/kbn_core_status_common_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server.mdx           |   2 +-
 api_docs/kbn_core_status_server_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server_mocks.mdx     |   2 +-
 ...core_test_helpers_deprecations_getters.mdx |   2 +-
 ...n_core_test_helpers_http_setup_browser.mdx |   2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx |   2 +-
 .../kbn_core_test_helpers_model_versions.mdx  |   2 +-
 ...n_core_test_helpers_so_type_serializer.mdx |   2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx |   2 +-
 api_docs/kbn_core_theme_browser.mdx           |   2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx     |   2 +-
 api_docs/kbn_core_ui_settings_browser.mdx     |   2 +-
 .../kbn_core_ui_settings_browser_internal.mdx |   2 +-
 .../kbn_core_ui_settings_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_ui_settings_common.mdx      |   2 +-
 api_docs/kbn_core_ui_settings_server.mdx      |   2 +-
 .../kbn_core_ui_settings_server_internal.mdx  |   2 +-
 .../kbn_core_ui_settings_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_usage_data_server.mdx       |   2 +-
 .../kbn_core_usage_data_server_internal.mdx   |   2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx |   2 +-
 api_docs/kbn_core_user_settings_server.mdx    |   2 +-
 ...kbn_core_user_settings_server_internal.mdx |   2 +-
 .../kbn_core_user_settings_server_mocks.mdx   |   2 +-
 api_docs/kbn_crypto.mdx                       |   2 +-
 api_docs/kbn_crypto_browser.mdx               |   2 +-
 api_docs/kbn_custom_integrations.mdx          |   2 +-
 api_docs/kbn_cypress_config.mdx               |   2 +-
 api_docs/kbn_data_service.mdx                 |   2 +-
 api_docs/kbn_datemath.mdx                     |   2 +-
 api_docs/kbn_deeplinks_analytics.mdx          |   2 +-
 api_docs/kbn_deeplinks_devtools.mdx           |   2 +-
 api_docs/kbn_deeplinks_management.mdx         |   2 +-
 api_docs/kbn_deeplinks_ml.mdx                 |   2 +-
 api_docs/kbn_deeplinks_observability.mdx      |   2 +-
 api_docs/kbn_deeplinks_search.mdx             |   2 +-
 api_docs/kbn_default_nav_analytics.mdx        |   2 +-
 api_docs/kbn_default_nav_devtools.mdx         |   2 +-
 api_docs/kbn_default_nav_management.mdx       |   2 +-
 api_docs/kbn_default_nav_ml.mdx               |   2 +-
 api_docs/kbn_dev_cli_errors.mdx               |   2 +-
 api_docs/kbn_dev_cli_runner.mdx               |   2 +-
 api_docs/kbn_dev_proc_runner.mdx              |   2 +-
 api_docs/kbn_dev_utils.mdx                    |   2 +-
 api_docs/kbn_discover_utils.mdx               |   2 +-
 api_docs/kbn_doc_links.mdx                    |   2 +-
 api_docs/kbn_docs_utils.mdx                   |   2 +-
 api_docs/kbn_dom_drag_drop.mdx                |   2 +-
 api_docs/kbn_ebt_tools.mdx                    |   2 +-
 api_docs/kbn_ecs.mdx                          |   2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx   |   2 +-
 api_docs/kbn_elastic_assistant.mdx            |   2 +-
 api_docs/kbn_es.devdocs.json                  |   2 +-
 api_docs/kbn_es.mdx                           |   2 +-
 api_docs/kbn_es_archiver.mdx                  |   2 +-
 api_docs/kbn_es_errors.mdx                    |   2 +-
 api_docs/kbn_es_query.mdx                     |   2 +-
 api_docs/kbn_es_types.mdx                     |   2 +-
 api_docs/kbn_eslint_plugin_imports.mdx        |   2 +-
 api_docs/kbn_event_annotation_common.mdx      |   2 +-
 api_docs/kbn_event_annotation_components.mdx  |   2 +-
 api_docs/kbn_expandable_flyout.mdx            |   2 +-
 api_docs/kbn_field_types.mdx                  |   2 +-
 api_docs/kbn_field_utils.mdx                  |   2 +-
 api_docs/kbn_find_used_node_modules.mdx       |   2 +-
 .../kbn_ftr_common_functional_services.mdx    |   2 +-
 api_docs/kbn_generate.mdx                     |   2 +-
 api_docs/kbn_generate_console_definitions.mdx |   2 +-
 api_docs/kbn_generate_csv.mdx                 |   2 +-
 api_docs/kbn_generate_csv_types.mdx           |   2 +-
 api_docs/kbn_guided_onboarding.mdx            |   2 +-
 api_docs/kbn_handlebars.mdx                   |   2 +-
 api_docs/kbn_hapi_mocks.mdx                   |   2 +-
 api_docs/kbn_health_gateway_server.mdx        |   2 +-
 api_docs/kbn_home_sample_data_card.mdx        |   2 +-
 api_docs/kbn_home_sample_data_tab.mdx         |   2 +-
 api_docs/kbn_i18n.mdx                         |   2 +-
 api_docs/kbn_i18n_react.mdx                   |   2 +-
 api_docs/kbn_import_resolver.mdx              |   2 +-
 api_docs/kbn_infra_forge.mdx                  |   2 +-
 api_docs/kbn_interpreter.mdx                  |   2 +-
 api_docs/kbn_io_ts_utils.mdx                  |   2 +-
 api_docs/kbn_jest_serializers.mdx             |   2 +-
 api_docs/kbn_journeys.mdx                     |   2 +-
 api_docs/kbn_json_ast.mdx                     |   2 +-
 api_docs/kbn_kibana_manifest_schema.mdx       |   2 +-
 .../kbn_language_documentation_popover.mdx    |   2 +-
 api_docs/kbn_lens_embeddable_utils.mdx        |   2 +-
 api_docs/kbn_logging.mdx                      |   2 +-
 api_docs/kbn_logging_mocks.mdx                |   2 +-
 api_docs/kbn_managed_vscode_config.mdx        |   2 +-
 api_docs/kbn_management_cards_navigation.mdx  |   2 +-
 .../kbn_management_settings_application.mdx   |   2 +-
 ...ent_settings_components_field_category.mdx |   2 +-
 ...gement_settings_components_field_input.mdx |   2 +-
 ...nagement_settings_components_field_row.mdx |   2 +-
 ...bn_management_settings_components_form.mdx |   2 +-
 ...n_management_settings_field_definition.mdx |   2 +-
 api_docs/kbn_management_settings_ids.mdx      |   2 +-
 ...n_management_settings_section_registry.mdx |   2 +-
 api_docs/kbn_management_settings_types.mdx    |   2 +-
 .../kbn_management_settings_utilities.mdx     |   2 +-
 api_docs/kbn_management_storybook_config.mdx  |   2 +-
 api_docs/kbn_mapbox_gl.mdx                    |   2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx       |   2 +-
 api_docs/kbn_ml_agg_utils.mdx                 |   2 +-
 api_docs/kbn_ml_anomaly_utils.mdx             |   2 +-
 api_docs/kbn_ml_category_validator.mdx        |   2 +-
 api_docs/kbn_ml_chi2test.mdx                  |   2 +-
 .../kbn_ml_data_frame_analytics_utils.mdx     |   2 +-
 api_docs/kbn_ml_data_grid.mdx                 |   2 +-
 api_docs/kbn_ml_date_picker.mdx               |   2 +-
 api_docs/kbn_ml_date_utils.mdx                |   2 +-
 api_docs/kbn_ml_error_utils.mdx               |   2 +-
 api_docs/kbn_ml_in_memory_table.mdx           |   2 +-
 api_docs/kbn_ml_is_defined.mdx                |   2 +-
 api_docs/kbn_ml_is_populated_object.mdx       |   2 +-
 api_docs/kbn_ml_kibana_theme.mdx              |   2 +-
 api_docs/kbn_ml_local_storage.mdx             |   2 +-
 api_docs/kbn_ml_nested_property.mdx           |   2 +-
 api_docs/kbn_ml_number_utils.mdx              |   2 +-
 api_docs/kbn_ml_query_utils.mdx               |   2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx      |   2 +-
 api_docs/kbn_ml_route_utils.mdx               |   2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx       |   2 +-
 api_docs/kbn_ml_string_hash.mdx               |   2 +-
 api_docs/kbn_ml_trained_models_utils.mdx      |   2 +-
 api_docs/kbn_ml_url_state.mdx                 |   2 +-
 api_docs/kbn_monaco.mdx                       |   2 +-
 api_docs/kbn_object_versioning.mdx            |   2 +-
 api_docs/kbn_observability_alert_details.mdx  |   2 +-
 .../kbn_observability_alerting_test_data.mdx  |   2 +-
 api_docs/kbn_openapi_generator.mdx            |   2 +-
 api_docs/kbn_optimizer.mdx                    |   2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx    |   2 +-
 api_docs/kbn_osquery_io_ts_types.mdx          |   2 +-
 ..._performance_testing_dataset_extractor.mdx |   2 +-
 api_docs/kbn_plugin_generator.mdx             |   2 +-
 api_docs/kbn_plugin_helpers.mdx               |   2 +-
 api_docs/kbn_profiling_utils.mdx              |   2 +-
 api_docs/kbn_random_sampling.mdx              |   2 +-
 api_docs/kbn_react_field.mdx                  |   2 +-
 api_docs/kbn_react_kibana_context_common.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_render.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_root.mdx    |   2 +-
 api_docs/kbn_react_kibana_context_styled.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_theme.mdx   |   2 +-
 api_docs/kbn_react_kibana_mount.mdx           |   2 +-
 api_docs/kbn_repo_file_maps.mdx               |   2 +-
 api_docs/kbn_repo_linter.mdx                  |   2 +-
 api_docs/kbn_repo_path.mdx                    |   2 +-
 api_docs/kbn_repo_source_classifier.mdx       |   2 +-
 api_docs/kbn_reporting_common.mdx             |   2 +-
 api_docs/kbn_resizable_layout.mdx             |   2 +-
 api_docs/kbn_rison.mdx                        |   2 +-
 api_docs/kbn_rrule.mdx                        |   2 +-
 api_docs/kbn_rule_data_utils.devdocs.json     |  15 +
 api_docs/kbn_rule_data_utils.mdx              |   4 +-
 api_docs/kbn_saved_objects_settings.mdx       |   2 +-
 api_docs/kbn_search_api_panels.mdx            |   2 +-
 api_docs/kbn_search_connectors.mdx            |   2 +-
 api_docs/kbn_search_response_warnings.mdx     |   2 +-
 api_docs/kbn_security_solution_features.mdx   |   2 +-
 api_docs/kbn_security_solution_navigation.mdx |   2 +-
 api_docs/kbn_security_solution_side_nav.mdx   |   2 +-
 ...kbn_security_solution_storybook_config.mdx |   2 +-
 .../kbn_securitysolution_autocomplete.mdx     |   2 +-
 api_docs/kbn_securitysolution_data_table.mdx  |   2 +-
 api_docs/kbn_securitysolution_ecs.mdx         |   2 +-
 api_docs/kbn_securitysolution_es_utils.mdx    |   2 +-
 ...ritysolution_exception_list_components.mdx |   2 +-
 api_docs/kbn_securitysolution_grouping.mdx    |   2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx  |   2 +-
 ..._securitysolution_io_ts_alerting_types.mdx |   2 +-
 .../kbn_securitysolution_io_ts_list_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx |   2 +-
 api_docs/kbn_securitysolution_list_api.mdx    |   2 +-
 .../kbn_securitysolution_list_constants.mdx   |   2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx  |   2 +-
 api_docs/kbn_securitysolution_list_utils.mdx  |   2 +-
 api_docs/kbn_securitysolution_rules.mdx       |   2 +-
 api_docs/kbn_securitysolution_t_grid.mdx      |   2 +-
 api_docs/kbn_securitysolution_utils.mdx       |   2 +-
 api_docs/kbn_server_http_tools.mdx            |   2 +-
 api_docs/kbn_server_route_repository.mdx      |   2 +-
 api_docs/kbn_serverless_common_settings.mdx   |   2 +-
 .../kbn_serverless_observability_settings.mdx |   2 +-
 api_docs/kbn_serverless_project_switcher.mdx  |   2 +-
 api_docs/kbn_serverless_search_settings.mdx   |   2 +-
 api_docs/kbn_serverless_security_settings.mdx |   2 +-
 api_docs/kbn_serverless_storybook_config.mdx  |   2 +-
 api_docs/kbn_shared_svg.mdx                   |   2 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx    |   2 +-
 .../kbn_shared_ux_button_exit_full_screen.mdx |   2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx     |   2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx       |   2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx  |   2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx     |   2 +-
 api_docs/kbn_shared_ux_file_context.mdx       |   2 +-
 api_docs/kbn_shared_ux_file_image.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx   |   2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_picker.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_types.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_upload.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_util.mdx          |   2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx  |   2 +-
 .../kbn_shared_ux_link_redirect_app_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_markdown.mdx           |   2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx     |   2 +-
 .../kbn_shared_ux_page_analytics_no_data.mdx  |   2 +-
 ...shared_ux_page_analytics_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_no_data.mdx     |   2 +-
 ...bn_shared_ux_page_kibana_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_template.mdx    |   2 +-
 ...n_shared_ux_page_kibana_template_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx       |   2 +-
 .../kbn_shared_ux_page_no_data_config.mdx     |   2 +-
 ...bn_shared_ux_page_no_data_config_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx  |   2 +-
 .../kbn_shared_ux_prompt_no_data_views.mdx    |   2 +-
 ...n_shared_ux_prompt_no_data_views_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx   |   2 +-
 api_docs/kbn_shared_ux_router.mdx             |   2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx       |   2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx   |   2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx     |   2 +-
 api_docs/kbn_shared_ux_utility.mdx            |   2 +-
 api_docs/kbn_slo_schema.devdocs.json          | 600 +++++++++++++++---
 api_docs/kbn_slo_schema.mdx                   |   4 +-
 api_docs/kbn_some_dev_log.mdx                 |   2 +-
 api_docs/kbn_std.mdx                          |   2 +-
 api_docs/kbn_stdio_dev_helpers.mdx            |   2 +-
 api_docs/kbn_storybook.mdx                    |   2 +-
 api_docs/kbn_subscription_tracking.mdx        |   2 +-
 api_docs/kbn_telemetry_tools.mdx              |   2 +-
 api_docs/kbn_test.mdx                         |   2 +-
 api_docs/kbn_test_jest_helpers.mdx            |   2 +-
 api_docs/kbn_test_subj_selector.mdx           |   2 +-
 api_docs/kbn_text_based_editor.mdx            |   2 +-
 api_docs/kbn_tooling_log.mdx                  |   2 +-
 api_docs/kbn_ts_projects.mdx                  |   2 +-
 api_docs/kbn_typed_react_router_config.mdx    |   2 +-
 api_docs/kbn_ui_actions_browser.mdx           |   2 +-
 api_docs/kbn_ui_shared_deps_src.mdx           |   2 +-
 api_docs/kbn_ui_theme.mdx                     |   2 +-
 api_docs/kbn_unified_data_table.mdx           |   2 +-
 api_docs/kbn_unified_doc_viewer.mdx           |   2 +-
 api_docs/kbn_unified_field_list.mdx           |   2 +-
 api_docs/kbn_url_state.mdx                    |   2 +-
 api_docs/kbn_use_tracked_promise.mdx          |   2 +-
 api_docs/kbn_user_profile_components.mdx      |   2 +-
 api_docs/kbn_utility_types.mdx                |   2 +-
 api_docs/kbn_utility_types_jest.mdx           |   2 +-
 api_docs/kbn_utils.mdx                        |   2 +-
 api_docs/kbn_visualization_ui_components.mdx  |   2 +-
 api_docs/kbn_xstate_utils.mdx                 |   2 +-
 api_docs/kbn_yarn_lock_validator.mdx          |   2 +-
 api_docs/kbn_zod_helpers.mdx                  |   2 +-
 api_docs/kibana_overview.mdx                  |   2 +-
 api_docs/kibana_react.mdx                     |   2 +-
 api_docs/kibana_utils.mdx                     |   2 +-
 api_docs/kubernetes_security.mdx              |   2 +-
 api_docs/lens.mdx                             |   2 +-
 api_docs/license_api_guard.mdx                |   2 +-
 api_docs/license_management.mdx               |   2 +-
 api_docs/licensing.mdx                        |   2 +-
 api_docs/links.mdx                            |   2 +-
 api_docs/lists.mdx                            |   2 +-
 api_docs/log_explorer.mdx                     |   2 +-
 api_docs/logs_shared.mdx                      |   2 +-
 api_docs/management.mdx                       |   2 +-
 api_docs/maps.mdx                             |   2 +-
 api_docs/maps_ems.mdx                         |   2 +-
 api_docs/metrics_data_access.mdx              |   2 +-
 api_docs/ml.mdx                               |   2 +-
 api_docs/monitoring.mdx                       |   2 +-
 api_docs/monitoring_collection.mdx            |   2 +-
 api_docs/navigation.mdx                       |   2 +-
 api_docs/newsfeed.mdx                         |   2 +-
 api_docs/no_data_page.mdx                     |   2 +-
 api_docs/notifications.mdx                    |   2 +-
 api_docs/observability.devdocs.json           | 268 ++++++--
 api_docs/observability.mdx                    |   2 +-
 api_docs/observability_a_i_assistant.mdx      |   2 +-
 api_docs/observability_log_explorer.mdx       |   2 +-
 api_docs/observability_onboarding.mdx         |   2 +-
 api_docs/observability_shared.mdx             |   2 +-
 api_docs/osquery.mdx                          |   2 +-
 api_docs/painless_lab.mdx                     |   2 +-
 api_docs/plugin_directory.mdx                 |  10 +-
 api_docs/presentation_util.mdx                |   2 +-
 api_docs/profiling.mdx                        |   2 +-
 api_docs/profiling_data_access.mdx            |   2 +-
 api_docs/remote_clusters.mdx                  |   2 +-
 api_docs/reporting.mdx                        |   2 +-
 api_docs/rollup.mdx                           |   2 +-
 api_docs/rule_registry.mdx                    |   2 +-
 api_docs/runtime_fields.mdx                   |   2 +-
 api_docs/saved_objects.mdx                    |   2 +-
 api_docs/saved_objects_finder.mdx             |   2 +-
 api_docs/saved_objects_management.mdx         |   2 +-
 api_docs/saved_objects_tagging.mdx            |   2 +-
 api_docs/saved_objects_tagging_oss.mdx        |   2 +-
 api_docs/saved_search.mdx                     |   2 +-
 api_docs/screenshot_mode.mdx                  |   2 +-
 api_docs/screenshotting.mdx                   |   2 +-
 api_docs/security.mdx                         |   2 +-
 api_docs/security_solution.mdx                |   2 +-
 api_docs/security_solution_ess.mdx            |   2 +-
 api_docs/security_solution_serverless.mdx     |   2 +-
 api_docs/serverless.mdx                       |   2 +-
 api_docs/serverless_observability.mdx         |   2 +-
 api_docs/serverless_search.mdx                |   2 +-
 api_docs/session_view.mdx                     |   2 +-
 api_docs/share.mdx                            |   2 +-
 api_docs/snapshot_restore.mdx                 |   2 +-
 api_docs/spaces.mdx                           |   2 +-
 api_docs/stack_alerts.mdx                     |   2 +-
 api_docs/stack_connectors.mdx                 |   2 +-
 api_docs/task_manager.mdx                     |   2 +-
 api_docs/telemetry.mdx                        |   2 +-
 api_docs/telemetry_collection_manager.mdx     |   2 +-
 api_docs/telemetry_collection_xpack.mdx       |   2 +-
 api_docs/telemetry_management_section.mdx     |   2 +-
 api_docs/text_based_languages.mdx             |   2 +-
 api_docs/threat_intelligence.mdx              |   2 +-
 api_docs/timelines.mdx                        |   2 +-
 api_docs/transform.mdx                        |   2 +-
 api_docs/triggers_actions_ui.mdx              |   2 +-
 api_docs/ui_actions.mdx                       |   2 +-
 api_docs/ui_actions_enhanced.mdx              |   2 +-
 api_docs/unified_doc_viewer.mdx               |   2 +-
 api_docs/unified_histogram.mdx                |   2 +-
 api_docs/unified_search.mdx                   |   2 +-
 api_docs/unified_search_autocomplete.mdx      |   2 +-
 api_docs/uptime.mdx                           |   2 +-
 api_docs/url_forwarding.mdx                   |   2 +-
 api_docs/usage_collection.mdx                 |   2 +-
 api_docs/ux.mdx                               |   2 +-
 api_docs/vis_default_editor.mdx               |   2 +-
 api_docs/vis_type_gauge.mdx                   |   2 +-
 api_docs/vis_type_heatmap.mdx                 |   2 +-
 api_docs/vis_type_pie.mdx                     |   2 +-
 api_docs/vis_type_table.mdx                   |   2 +-
 api_docs/vis_type_timelion.mdx                |   2 +-
 api_docs/vis_type_timeseries.mdx              |   2 +-
 api_docs/vis_type_vega.mdx                    |   2 +-
 api_docs/vis_type_vislib.mdx                  |   2 +-
 api_docs/vis_type_xy.mdx                      |   2 +-
 api_docs/visualizations.mdx                   |   2 +-
 606 files changed, 1466 insertions(+), 814 deletions(-)

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index 344807ea5132d..cfe971c8e01be 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index a2a6b40a9ccdd..7c724461a9e3e 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index b46a05e2363df..354011bbf232e 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index 49ca7191cd276..46fcda0e2c7ce 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 36f382bc36132..35ca4197656a2 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 43d328df9039b..2b0e99da57c3f 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index 4e295dca50997..df03fe9929c53 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index ec9c5e5473002..8ad89dcc15273 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index 89cf976b4622f..8d55782e5e45d 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index 060faaa44edc3..7de5bd76bdd44 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index fb10c175a2302..8efe25d7afca9 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index 629ce39be1ef5..cc578932d279f 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index cb2127c8505ea..ba8c180b3c6ec 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index f8abeae02963f..1b8c2248a5190 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 09026ff0f4476..6a65f733471f3 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index 81474e3ab7ca8..df453622062a9 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index fe937c723cc0a..198f9b4c75c7a 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index f0d0e702a2b4d..de571179a25c4 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index db12cae107313..bd57fd4ca7cd2 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index 7572819ba54e9..3de4ebbf9f68f 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index 8d6cfaa78fa05..e9d35f1e18a95 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index 6536f0bb6f0e0..94b24cd8ddbe0 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 4d436399dd6ff..669ff705a81de 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index 16b5857c07cf0..67837e8e89bef 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index be2d9d8750f93..6d3f601824fae 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index df638dcf093d7..44d105910a231 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index 3d2e9d06d22b2..ad68e4efd36b6 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index 8a627881d8e25..78443ee9661b8 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index 86532f795550d..ef6968f88252e 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index 6a72170ca2eb8..b7ab9bebaefdc 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index d11bb66eedd7c..a99330414e810 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 995d749149255..540826fdd6105 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index f528f151cc6b3..040f6fbead292 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index 9a9ef2e3a32af..763c598f167b7 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 8d49eb79c439b..fcd8246f50352 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 618da8875e9b3..7399ac8d10609 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index eee34b2859336..2560ceff5721a 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index be96ff59a2a9a..4406ce8e35431 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index 15322b822d1b7..389118ca73ba8 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 67453a2a6274a..69ff45a1b76f4 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 79ecd24c1f144..3814474a19718 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index 2a8eb0f2160f0..683f865c62335 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index a4eb4e7f8058c..d4ead5258f45c 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index 9979fcc1f61f3..b778008638278 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 0be3ead51ad11..cb2c5f6afd86b 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 77cb65e69eb63..67a44e81e21a6 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index e298adbb072d3..215034cef5227 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index 3975741a49658..275cde683ddb8 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index a53b896de90c4..4826fc43a0cb1 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index e10c8812bc694..73f21468f7967 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index 4f529919ee788..fbe776832cee1 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index 21ede27908cd7..7df7e492abf66 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index d718a25a26886..d65cad5852ba5 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index ca69ef9c730d7..eb996bf5f6dbb 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index 4ad0d0a4b033e..b20e31573ce0f 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index 1819769eca519..6a35064c2b9e0 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index 3b7997d5148be..b3bd8d94787b2 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 80b6090ec9bf5..bb7d4e54b665a 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index 7c9035dc1a25c..ce33700ad9eae 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 23217edcda655..2abc263bab12a 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index f2936e776b367..3bfc54bff9421 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index 70bcc3329a001..c098590e8f3aa 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index 8ea88f0467676..940bf4813eb0f 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index 014df4a3c1505..1acfc95029346 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index 5ba13004e76a8..bf46c5e775d3b 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index 7c95c19951cd1..cc2a4f021dc33 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index 805bdaedf80fa..e5e76deedd669 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index 2f28930fda786..76ace056690af 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 4e352ea4f03fa..8b01ecbd24e89 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index dfb72c9c2c124..8a8529e5ac1d2 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index b2f93eb65a44a..92a80f07a1cbf 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 3a530c412f322..2b3334256a6a6 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index 85294a9426301..bcf41cc278360 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index 876f2111604fd..663fa0cd35267 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 957dc08aa1338..8a9e88cf2db65 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index b019ca0c0d407..0b1e5ae24f771 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index a48ffe71377ff..4c43e51e2d2ce 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index a2c63e47c48bc..8febe841d8e0c 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index 15311fe69a911..94e5c48c4496c 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index c5dd7d818cbfa..5349f3af5fc60 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index ce2735b7c321f..39ef4801b139c 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index e4298d6fbd707..decbf54016491 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index 7ce321468cc4c..a5d117d572322 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index 8daefe2429c8a..ebbdbca8a9aaa 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index a033763e6e021..0b7dd80b3b3a9 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.devdocs.json b/api_docs/kbn_analytics_client.devdocs.json
index b6c69aec07ca3..49f322df02d0f 100644
--- a/api_docs/kbn_analytics_client.devdocs.json
+++ b/api_docs/kbn_analytics_client.devdocs.json
@@ -796,15 +796,15 @@
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.ts"
               },
               {
                 "plugin": "securitySolution",
@@ -872,19 +872,19 @@
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/tasks/risk_scoring_task.test.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/tasks/risk_scoring_task.test.ts"
               },
               {
                 "plugin": "@kbn/core-analytics-browser-mocks",
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index c5c36dbcbe364..7683e2bcb0267 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index b2a3e70841ff3..09c2b17d706d9 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index 5d8d8c8b4dd2c..b4541ac4a4ad9 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index 5115b70e1e2da..a40c3f4219596 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index 05425f0e2d101..ca5f113a75fab 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index 0437ad348e7cf..2df958d49823a 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index 625ef98fdb119..de4b1ddda4dd5 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index 1b2fb81f2a42f..b589198be82c3 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index 4d61c4f6fab18..0b9ee3691bb01 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index b832156bd1b61..774ed2b89f517 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index 27dbdcf751ae2..db125a6ec32dd 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 8701661ecf467..265aef6cd1063 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index 37f2a6d0685e0..f7bff70376d92 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 53739bec858cc..9b3ade541eba7 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 4d85786eb2778..eb5afd131b328 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index 66699c022bf2e..da16197e01961 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 72d6458a84cbb..683d382f170e7 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index 88cd260cdba64..7e4341104281c 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index 25001d7c88932..99384e0790712 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 06e29d0b56bdc..35ad1eedf78c0 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index 4c6dfc56b99a1..9e51888259b4f 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index 94475d709e84f..4f8985db93a7f 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index 64c3cc5137f45..eff87cb5f2844 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index beaa056668544..cbd8024253a41 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index 3e3e8f72664ae..1a35d390f9a61 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index 5c86d95ce6cd5..e6c1a5458e2b5 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index e4232cd65aea9..ec4e5269bcf64 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index 09291f5c2e352..b10cae22d456a 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 4697952a480bb..1469e133d487b 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index f03f1cba601c7..f712106cf8f09 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index 4585636c2c211..6d359fc8194b8 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index 0a3597f9d0a24..d3d0d35c6e692 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index f4b16d2ddc9d8..d35a823e2c64e 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 2d8b9ea7d93e1..9512f6077cc79 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 309cf898aa2e4..f968a4405c741 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index b228a4e9f74a4..cbcf773c9d7bb 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 8edef60f40ef1..20baf5fda9507 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index c2124609bfbab..9e7dcdcc5b9db 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index 3d2224725e3ca..b74d90504b20c 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index 2113da00397ae..8b2967a3980ff 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index 207fd4ce683fb..738471d252a26 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index ed4d7be1c47a7..1c90a4d719469 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index 8c3b2296b760d..c65cf3f6c3ace 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index 3258c12ad837e..91d45dcd403bd 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index 226b664174e92..aad01347e34dd 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index 251378b2b4e09..346f7ae0cdf13 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index dde66329fb6b1..4b66e271eb6e9 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index 3a8dbb54075e8..8c67aaf07c0c2 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.devdocs.json b/api_docs/kbn_core_capabilities_server.devdocs.json
index 062051be28223..6c1f0a54810de 100644
--- a/api_docs/kbn_core_capabilities_server.devdocs.json
+++ b/api_docs/kbn_core_capabilities_server.devdocs.json
@@ -99,6 +99,14 @@
                 "section": "def-common.CapabilitiesSwitcher",
                 "text": "CapabilitiesSwitcher"
               },
+              ", options: ",
+              {
+                "pluginId": "@kbn/core-capabilities-server",
+                "scope": "common",
+                "docId": "kibKbnCoreCapabilitiesServerPluginApi",
+                "section": "def-common.CapabilitiesSwitcherOptions",
+                "text": "CapabilitiesSwitcherOptions"
+              },
               ") => void"
             ],
             "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
@@ -125,6 +133,27 @@
                 "deprecated": false,
                 "trackAdoption": false,
                 "isRequired": true
+              },
+              {
+                "parentPluginId": "@kbn/core-capabilities-server",
+                "id": "def-common.CapabilitiesSetup.registerSwitcher.$2",
+                "type": "Object",
+                "tags": [],
+                "label": "options",
+                "description": [],
+                "signature": [
+                  {
+                    "pluginId": "@kbn/core-capabilities-server",
+                    "scope": "common",
+                    "docId": "kibKbnCoreCapabilitiesServerPluginApi",
+                    "section": "def-common.CapabilitiesSwitcherOptions",
+                    "text": "CapabilitiesSwitcherOptions"
+                  }
+                ],
+                "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
+                "deprecated": false,
+                "trackAdoption": false,
+                "isRequired": true
               }
             ],
             "returnComment": []
@@ -152,7 +181,7 @@
             "tags": [],
             "label": "resolveCapabilities",
             "description": [
-              "\nResolve the {@link Capabilities} to be used for given request"
+              "\nResolve the {@link Capabilities} to be used for given request\n"
             ],
             "signature": [
               "(request: ",
@@ -163,7 +192,7 @@
                 "section": "def-common.KibanaRequest",
                 "text": "KibanaRequest"
               },
-              "<unknown, unknown, unknown, any>, options?: ",
+              "<unknown, unknown, unknown, any>, options: ",
               {
                 "pluginId": "@kbn/core-capabilities-server",
                 "scope": "common",
@@ -171,7 +200,7 @@
                 "section": "def-common.ResolveCapabilitiesOptions",
                 "text": "ResolveCapabilitiesOptions"
               },
-              " | undefined) => Promise<",
+              ") => Promise<",
               {
                 "pluginId": "@kbn/core-capabilities-common",
                 "scope": "common",
@@ -191,7 +220,9 @@
                 "type": "Object",
                 "tags": [],
                 "label": "request",
-                "description": [],
+                "description": [
+                  "The request to resolve capabilities for"
+                ],
                 "signature": [
                   {
                     "pluginId": "@kbn/core-http-server",
@@ -221,13 +252,12 @@
                     "docId": "kibKbnCoreCapabilitiesServerPluginApi",
                     "section": "def-common.ResolveCapabilitiesOptions",
                     "text": "ResolveCapabilitiesOptions"
-                  },
-                  " | undefined"
+                  }
                 ],
                 "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
                 "deprecated": false,
                 "trackAdoption": false,
-                "isRequired": false
+                "isRequired": true
               }
             ],
             "returnComment": []
@@ -235,6 +265,38 @@
         ],
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/core-capabilities-server",
+        "id": "def-common.CapabilitiesSwitcherOptions",
+        "type": "Interface",
+        "tags": [],
+        "label": "CapabilitiesSwitcherOptions",
+        "description": [
+          "\nOptions for the {@link CapabilitiesSetup.registerSwitcher} API.\n"
+        ],
+        "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/core-capabilities-server",
+            "id": "def-common.CapabilitiesSwitcherOptions.capabilityPath",
+            "type": "CompoundType",
+            "tags": [],
+            "label": "capabilityPath",
+            "description": [
+              "\nThe path(s) of capabilities the switcher may alter. The '*' wildcard is supported as a suffix only.\n\nE.g. capabilityPath: \"myPlugin.*\" or capabilityPath: \"myPlugin.myKey\""
+            ],
+            "signature": [
+              "string | string[]"
+            ],
+            "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/core-capabilities-server",
         "id": "def-common.ResolveCapabilitiesOptions",
@@ -242,20 +304,39 @@
         "tags": [],
         "label": "ResolveCapabilitiesOptions",
         "description": [
-          "\nDefines a set of additional options for the `resolveCapabilities` method of {@link CapabilitiesStart}.\n"
+          "\nOptions for {@link CapabilitiesStart.resolveCapabilities}.\n"
         ],
         "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
         "deprecated": false,
         "trackAdoption": false,
         "children": [
+          {
+            "parentPluginId": "@kbn/core-capabilities-server",
+            "id": "def-common.ResolveCapabilitiesOptions.capabilityPath",
+            "type": "CompoundType",
+            "tags": [],
+            "label": "capabilityPath",
+            "description": [
+              "\nThe path(s) of capabilities that the API consumer is interested in. The '*' wildcard is supported as a suffix only.\n\nE.g. capabilityPath: \"*\" or capabilityPath: \"myPlugin.*\" or capabilityPath: \"myPlugin.myKey\"\n"
+            ],
+            "signature": [
+              "string | string[]"
+            ],
+            "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
           {
             "parentPluginId": "@kbn/core-capabilities-server",
             "id": "def-common.ResolveCapabilitiesOptions.useDefaultCapabilities",
-            "type": "boolean",
+            "type": "CompoundType",
             "tags": [],
             "label": "useDefaultCapabilities",
             "description": [
-              "\nIndicates if capability switchers are supposed to return a default set of capabilities."
+              "\nIndicates if capability switchers are supposed to return a default set of capabilities.\n\nDefaults to `false`"
+            ],
+            "signature": [
+              "boolean | undefined"
             ],
             "path": "packages/core/capabilities/core-capabilities-server/src/contracts.ts",
             "deprecated": false,
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index e749a37ace742..0cc75d1b69d90 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 16 | 0 | 7 | 0 |
+| 20 | 0 | 7 | 0 |
 
 ## Common
 
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index 190228528e7e9..820464c9b28aa 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index c5954ad61a0ec..89a72cbb0cfa8 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index 11cbf264304a2..0fa1b61f658da 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index 429593f78c724..aaab43682fe35 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 5aaf838342d34..68a60606dcd27 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 25d3faad0703d..44cc5278fd53b 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index 5bd0dbea761bd..3608be1d96e46 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index 080a8fdce04f0..9997ac0c27a7c 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index e93316cc35426..394ac4e44941d 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index 46b6f7575f58a..30ee602f5fd7b 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 37ec8ad4f5499..2202c66110f4c 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index 61f0b0dc8e2c0..e6b20f63b2074 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index 2fc417d17b8be..78ad726dad015 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index 07c42501f61cd..2af0d1fde963c 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index 44bd5f23b2bb7..bf788ba7abf12 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index 93633492d4228..464fb71e20fe8 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index 692a0e89b64df..3f7a9d7414ed7 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index 42794fb65bbde..b045cd749cabb 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index 6ad48246e6314..0be92f2766113 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 635ad66568bdb..f4774a5a75447 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index 92987ba43d591..3d93b32ce0017 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index edfe0586a4ace..d0c3624f10f6a 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 91236179b066a..9d7fb20dc9e27 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index df2e2045c3235..ca3a588fff62a 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index cf4e0a5bc2f0a..0315f579853c6 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index e268cce98dab0..2c48581f0b683 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 2b8f0360f08f6..109b228419c35 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index c31fe4d79fc8d..f46045bcdf1aa 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 35437dde95171..ed746cb511d11 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index eea3f43d0a6fa..a280d52377d60 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index 405e300256fb4..1e527a1aa7a94 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index ad6333fe15333..0d3e541882929 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index ae89b5cf1f34e..6b74411a76b27 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 467dd5ecf0ddf..47ab866be2215 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index 1f5b0c1ff55fe..2cafb5f2afa49 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index 89815876f5e6d..92637b63638df 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index 80e7d4a98e8a8..636d191bd921d 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index e72d91c4c4c5f..4abfa985ba28e 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index 29a11eb7c331b..958c1086e2672 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index 18c7fa52fe179..fd5258e49d831 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index 9fd700842c09b..788743a3aedd4 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index 26a2d106a963c..2bfde8199d4af 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index 8e5d98c54213f..14e0ba6c45aae 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index 91eff09d50d38..67cf62397ce85 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index 74c361a888122..4d5ad2996daf2 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index 48615d2a8dfab..753a7d5f550df 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index 8aed458d214d9..8ccbc2e1c91f7 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 385daee249506..c9d6ae227fb9c 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index b2a59e0bcb5e0..c5166c225b4b0 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json
index be2c3b3b165c9..7798bb1d4ebed 100644
--- a/api_docs/kbn_core_http_server.devdocs.json
+++ b/api_docs/kbn_core_http_server.devdocs.json
@@ -105,9 +105,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.AddVersionOpts",
         "type": "Interface",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "AddVersionOpts",
         "description": [
           "\nOptions for a versioned route. Probably needs a lot more options like sunsetting\nof an endpoint etc."
@@ -130,9 +128,7 @@
             "parentPluginId": "@kbn/core-http-server",
             "id": "def-common.AddVersionOpts.version",
             "type": "string",
-            "tags": [
-              "experimental"
-            ],
+            "tags": [],
             "label": "version",
             "description": [
               "\nVersion to assign to this route"
@@ -145,9 +141,7 @@
             "parentPluginId": "@kbn/core-http-server",
             "id": "def-common.AddVersionOpts.validate",
             "type": "CompoundType",
-            "tags": [
-              "experimental"
-            ],
+            "tags": [],
             "label": "validate",
             "description": [
               "\nValidation for this version of a route"
@@ -1003,9 +997,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.FullValidationConfig",
         "type": "Interface",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "FullValidationConfig",
         "description": [
           "\nVersioned route validation"
@@ -1028,9 +1020,7 @@
             "parentPluginId": "@kbn/core-http-server",
             "id": "def-common.FullValidationConfig.request",
             "type": "CompoundType",
-            "tags": [
-              "experimental"
-            ],
+            "tags": [],
             "label": "request",
             "description": [
               "\nValidation to run against route inputs: params, query and body"
@@ -1054,8 +1044,7 @@
             "id": "def-common.FullValidationConfig.response",
             "type": "Object",
             "tags": [
-              "note",
-              "experimental"
+              "note"
             ],
             "label": "response",
             "description": [
@@ -12689,9 +12678,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRoute",
         "type": "Interface",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRoute",
         "description": [
           "\nA versioned route"
@@ -12714,9 +12701,7 @@
             "parentPluginId": "@kbn/core-http-server",
             "id": "def-common.VersionedRoute.addVersion",
             "type": "Function",
-            "tags": [
-              "experimental"
-            ],
+            "tags": [],
             "label": "addVersion",
             "description": [
               "\nAdd a new version of this route"
@@ -12859,9 +12844,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRouter",
         "type": "Interface",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRouter",
         "description": [
           "\nA router, very similar to {@link IRouter} that will return an {@link VersionedRoute}\ninstead.\n"
@@ -12885,7 +12868,6 @@
             "id": "def-common.VersionedRouter.get",
             "type": "Function",
             "tags": [
-              "experimental",
               "track-adoption"
             ],
             "label": "get",
@@ -13559,7 +13541,7 @@
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_status_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_status_route.ts"
               },
               {
                 "plugin": "securitySolution",
@@ -13837,7 +13819,6 @@
             "id": "def-common.VersionedRouter.put",
             "type": "Function",
             "tags": [
-              "experimental",
               "track-adoption"
             ],
             "label": "put",
@@ -14109,7 +14090,6 @@
             "id": "def-common.VersionedRouter.post",
             "type": "Function",
             "tags": [
-              "experimental",
               "track-adoption"
             ],
             "label": "post",
@@ -14819,23 +14799,23 @@
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_preview_route.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_init_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_init_route.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_enable_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_enable_route.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_engine_disable_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_disable_route.ts"
               },
               {
                 "plugin": "securitySolution",
-                "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts"
+                "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_score_calculation_route.ts"
               },
               {
                 "plugin": "securitySolution",
@@ -15025,7 +15005,6 @@
             "id": "def-common.VersionedRouter.patch",
             "type": "Function",
             "tags": [
-              "experimental",
               "track-adoption"
             ],
             "label": "patch",
@@ -15153,7 +15132,6 @@
             "id": "def-common.VersionedRouter.delete",
             "type": "Function",
             "tags": [
-              "experimental",
               "track-adoption"
             ],
             "label": "delete",
@@ -15399,9 +15377,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRouteResponseValidation",
         "type": "Interface",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRouteResponseValidation",
         "description": [],
         "path": "packages/core/http/core-http-server/src/versioning/types.ts",
@@ -17844,9 +17820,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRouteConfig",
         "type": "Type",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRouteConfig",
         "description": [
           "\nConfiguration for a versioned route"
@@ -17879,9 +17853,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRouteRegistrar",
         "type": "Type",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRouteRegistrar",
         "description": [
           "\nCreate an {@link VersionedRoute | versioned route}.\n"
@@ -17951,9 +17923,7 @@
         "parentPluginId": "@kbn/core-http-server",
         "id": "def-common.VersionedRouteRequestValidation",
         "type": "Type",
-        "tags": [
-          "experimental"
-        ],
+        "tags": [],
         "label": "VersionedRouteRequestValidation",
         "description": [],
         "signature": [
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index b5a6ed17e9528..a2c5bb67042a2 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index 1a321803586a3..dd9452034c3bb 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index 592a487137d7c..a8db8d4b21063 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index 4fd9d08f9048e..4e787a04108be 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 6c59ee7599e21..467a4d2d7775b 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index a58614974cf24..f1956673ae7dd 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index 5d0a734d1b2c3..fb3584a8f3fd3 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 24b0478a8aa73..1bffca1a004ab 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index ffada5d962a97..2b66e8eea0274 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index c09b4ee600d1f..f5623c603bd32 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index b5e6516038802..502f2a91308d0 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index 11d14be91b38d..2b71abfc1ea8a 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 23308f7893c9a..9ca5ba14fbd83 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index 88f1f242d9b8d..e1df7f4daea4b 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index 3cdf970e13a61..b82e8a97c2d3a 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index 1435a3b8801a7..df33f5414b56c 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index d70a9d0840daf..2719840e0362d 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index c95657c8f9cb9..65c9b911db15a 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index 99d1cc738688f..2e1b08ebff16d 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index 480dda23e0e6e..9381b0609991f 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index d7beed8118214..0ed40f70fa83d 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index d8e4327951340..f2b43f07cf11a 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index 79fedf5392ea3..c184d56ab961f 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index 692fcb3d4a911..e690a1a81c64e 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index 2a600df292c2d..57cfb003b4051 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index b69b9f631f062..037f00fc1f2d4 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index b1ca302842941..e95d84d0fd7b1 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index 02b282f2f033b..b59392aaeab6d 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index 781da4845e02f..356d844323c81 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index d6337b83c13dc..6ee83a5d07fc1 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index 800a3fb3d73bc..b9eda3aeff037 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index 25e8a18ef474d..304696001866f 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 78b799734d2f3..085e40c56353a 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 8d4e9411e5381..3dd4adf128eb0 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index 859828d6f64a3..8208fd34bcb45 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index cdfe21e88848e..1602a02dcea98 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index 79f333e28c616..46a90d1cfcb72 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index b10478d876d27..a967dab339293 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index 9014806598a62..90d1e2f22fe49 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index 87a01f07b32da..dd5d2d6b365bc 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index 7f85d09a9395d..f0978ccf5b1ea 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index d0a262e2a55df..afdb69e301635 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 762b4d0d17ca7..06b9e164301cb 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index ac60d73d17db0..588f6037cd1c6 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 07219474b2b0a..77eea817ce0c5 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 63ee8075087d6..8513fdbbcad6e 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index 0bb5e523a3f7a..e2bedb048a9f8 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index 6fbc4a9898fd3..181855a71a163 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index 981d23a6e54fc..bb591388bd00b 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index cf3aa89e27729..8c8a4b5806f76 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 41242f7e42e6f..32ed91ad28a58 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index a31114b190341..658783e787c8f 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index 33ecafd8a2f88..c4ea045c5d3ee 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 2c58d47cd0780..42c46012ed39d 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index e99b3eda698e4..a9c52995de521 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index c47cfaa541254..8c2d3b9195109 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index da54e0839ac0a..c37f9837a5166 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index 75e2c7938710e..5d8322dd56ccc 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index 874ef35853c40..3ffd7a95e8d43 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 7c1f0a84a4b82..912efca92b422 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index 18f9948a40385..d6ac3fd90180a 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index ae89cf3a98457..1d08581d41ead 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index 19cf620c10cdd..c56345a83ea35 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index 7f8baf121215f..48b5572776339 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index bd2c8161f22fa..abe953e28d4a0 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index f65f5b44702b3..23392fefa6849 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index b6fe72d41cbe9..74130005e0b64 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 1c89712b97770..2405cae42ef0c 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 2f91a6bbd321a..9a830bc84f884 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index 324036600778a..c44712e5ae99a 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index c5ac2de0d44c9..d57a951dc1236 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 71aa4202e64e4..370cc73d276c0 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index b364600190736..e6b5c40790fcb 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index 41a80549ed4a7..cb5f59e90c280 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index b474db754102a..e818714e9c4f0 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index 7e0524e0b4e24..cb33695a1bf1b 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index e36fe42be9c8f..3eb2726ff8dff 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 1b7eb9df4f5ae..0f9136192ab62 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index 052412b877fd3..ff557a6ee5c84 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index 4974df0266f2f..2437e23b3b063 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index df5a9e4609162..589502a6c70fb 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index d2090ee39a84b..695476f91b912 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index 5429bc8d8d372..b4c5a99ac8c7c 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index db298418a1472..81e05e971d7b9 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index c69c42d7f1d64..0aaf205f33fbd 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index 0cb78a8d62341..f325a7cd1500f 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index 9dd0a5ac598ed..65f3204acdfcb 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index c022b8fcb4da2..036325e5cc1fe 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index 63256de70c435..c5c0450197241 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 72f0067780b71..8c6fa7792422a 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 9c7a65a3f50fa..3557220b3b2a6 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index 86512f12aa6db..6790f3501e4ad 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 2a7d7cfc9a2f3..14801203ee2e8 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 2a89e71bd1453..806ddd39465f0 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index a27761f9af1d3..7cf005cbc2809 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index 6c718af09f897..563687e0ec1ed 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index ffeb2daeeb780..45c0fa05d081c 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index 9f6281b9f1e79..f804a844ff8e1 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 54fa9230107c0..4f92dbe05e00b 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 64cde7b8b9f64..7c1d93f0b18f8 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index 7ed0fb4cdd708..b942771d9a391 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index bfc0a00c94a8c..968890a199026 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index 3564a72b28b3b..bf90f6f8018c1 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index baef54341310e..55cdf9fb776c7 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index 57a8cdcf25502..05484e1161112 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index 43604425a269a..a45fdbc62116c 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index 0772384e49b5f..c70a020354634 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index 78bfb054d9de1..6516a520cf45b 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index c1e919c94c392..422ea43ace47c 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index af90c9cbb0e69..8a1e67a87ccd6 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index 9e7882dc21ea6..9f15d474a0cb7 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index 9e4ac47a3d42a..d132a523f673e 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index 79135a09c4981..1435adc05aa9a 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index 7147130f2c737..cf006d20f611a 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 5cd81716d3510..1dd79a773c680 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index 023dec8e101c5..ac42a93c6248f 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 9aff00c50b610..655633477010a 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 8f9ad3312abef..8c64e7d276b93 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.devdocs.json b/api_docs/kbn_es.devdocs.json
index bd54f768077c2..00729743dcb2e 100644
--- a/api_docs/kbn_es.devdocs.json
+++ b/api_docs/kbn_es.devdocs.json
@@ -797,7 +797,7 @@
         "label": "ArtifactLicense",
         "description": [],
         "signature": [
-          "\"basic\" | \"trial\" | \"oss\""
+          "\"basic\" | \"trial\""
         ],
         "path": "packages/kbn-es/src/artifact.ts",
         "deprecated": false,
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index c15a006b986f3..9b6899d046e79 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index acafd621938b4..cfde8f5132094 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index 7e93f07ecf8e4..ee15d944ea53f 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index 21fbf44d6fd8b..a54cfc339e5e1 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index 71d80dbbaeab2..2b438ddf0fc73 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 7f965e23722ec..7ac64671251ed 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index 797b7eaa04704..98447ee7d00e8 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index 61cb22977f866..d9d7f28c77183 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 498826cd816a6..282dcd8a40ce0 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 4fdfeedcedbd7..444f905a6ad60 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index b4476fbe97ac3..4af2dd125e418 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index e1cf8f12472d8..677aeb3cda9a9 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index c1df79c08b05d..938d20fe119a1 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 369182b8e471c..5802e421aab20 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index 85cfae687c98a..cc00c519f6843 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 24f3f32e470ae..1f6af6e0ce386 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index dc47b2c7bf6d5..a4127854b3fc9 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 043110457fcd8..7ca43517a7058 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index b95afc2f00419..4d30fb27efc6f 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index 09f62942cb7c5..c274bb3eb113a 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index bcdeeeb934193..ff88c770f0a92 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index a308cec0df168..73fec5b9715f9 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index f21779633d2f1..74724f71aac4a 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index 2adf6f95a4ce9..316a26ab2987b 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index 0bf27604f0f52..152f7990d01f5 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index fb00b83b24036..c8d453d363af0 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index ec28ed86bc40e..c80ba436eedca 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index 0c0ca1f109dc7..f7678f9890fc6 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index c1aad9862892c..010c1ade34cb4 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index e1cdc50df24a7..6f153c672e7eb 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index d4a3d6a00e037..21be3675a11aa 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index 196a10ce672bf..ef11a7da0bf96 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index e6b680f0c091d..5de6d034f507d 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 3424b3a134228..45dac88195793 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index ae6fc24cf04e2..2f58d6fea986c 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index ae9fc1be9b75b..d4d5fbe85d793 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index af35dffb4465d..59f4fb2b93434 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 5fffd9dbcd279..64dd616d28ddc 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index c8017ae261963..f6a0840ccf9bf 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index e5e1801782e8d..68b3e804e6e35 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index c536c9bd8e5cb..1e8fb3e17c2b9 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index 3c50689b4a31c..f7f0e50d49260 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index 0c51b436c9783..634dc16c0ca57 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index 97453d0a366a9..f2c8b1117eb52 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index ecddc06a4a595..bbaf9cfa3fd3d 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 42a30037b9320..4362d975e2b02 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index 0b326ed7a74ce..e3c5f1d14528f 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index d51f4f7b070d4..32919445c9ada 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index cb635bd73b33f..18f31e9ba6584 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index 860646468f35e..be0b3dc7d5831 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index 41004ca090223..dc43329b36e4d 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index ca80e400ea05a..2393fa9c52e42 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index 95659db6c6412..bd992efab920d 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index b2e0c3fae7de3..55f2e0a8ec191 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index e81b3714f2a4e..a8d1ad72fc615 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index 35b68daf75f80..a44266c0f9a62 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index f393988640f3a..1b24bb55f21a1 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index 12114392bbd54..676f7d5cf674e 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index c88adac289e1d..a335e71c63b84 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index 9a31262324cf5..3aaa696572ec0 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index 775b02f93dbbd..c591337628e1e 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index cebadc630cc61..541335f302c89 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index 3584886326327..d52bbbf3cfc6d 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index b37ba6c830c89..3a2a11db262c2 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index ff83a10ec6746..70ebaf2191303 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index 4f7cc343cc372..16b14fc2224ec 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index 1c067471841a1..a7229680877ce 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index 569c9d6e3075c..bac5531a272e4 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index 851e1d6531088..023a1b30198f1 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index fc7d88ce69d78..2d5dac3d22477 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index 2eda7fdcea06a..ab284617e9736 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index 67b2b74ab291d..ca8be667ad077 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index 5b3723deab5da..e9aa70d134298 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index c17bc909615a7..dcc416aefcd29 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index caa68e2868c33..d9326f42d3ab3 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index ae1eb3b17ade9..50bb7fd91029f 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index c330d60337324..adff97b496ef4 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index 7de49dba3bbb3..8be4d3ec13e90 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 2b516711627c0..4f4dcef65b1b0 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index f60244fdeaf78..1fb54e33a0544 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index eb9b6bbb50c6e..fb50d3d530346 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index c40d043aebd25..2de86998a5a02 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index 48339da270407..be21d9b580363 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 6f54e9722e0bd..31b082132154b 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index 5a0d5740a19ce..a0adee613bde5 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index e3052a337b23c..3e310269ff7a5 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 08b72c563bc34..7909bb48bfb9c 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index 1d5572853c156..13b5ef7fe02b3 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index a48119d797489..f3a6766d9463c 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 81efb4c6a95d2..37a673eae009e 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index f2298c403a79b..8ad0ff5e2160d 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index 1fda93bf012e7..f10e288cb222d 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 70a092abe7311..73705ad455a5c 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index bc274810cd408..5a1e5cf59dfb8 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index b970d2578b763..6672d274d7393 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index 416ffd7b763a9..0d340875a75f8 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index b38795b5653d5..8856e45524404 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index 81a98f5955e24..67879dd6e0765 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index 272dd4c4e3737..ce39596ea601c 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index 8f95c65a46a7d..b5c319501040a 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index 850de40565d32..ce646a218bec6 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 8dfb0d4b9e96b..6675f7b7a2676 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index ab217896fcc0f..abc9f781b2569 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.devdocs.json b/api_docs/kbn_rule_data_utils.devdocs.json
index 20def9bb105f6..f721e756a60e2 100644
--- a/api_docs/kbn_rule_data_utils.devdocs.json
+++ b/api_docs/kbn_rule_data_utils.devdocs.json
@@ -1586,6 +1586,21 @@
         "trackAdoption": false,
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/rule-data-utils",
+        "id": "def-common.METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID",
+        "type": "string",
+        "tags": [],
+        "label": "METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID",
+        "description": [],
+        "signature": [
+          "\"metrics.alert.inventory.threshold\""
+        ],
+        "path": "packages/kbn-rule-data-utils/src/rule_types/o11y_rules.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/rule-data-utils",
         "id": "def-common.OBSERVABILITY_THRESHOLD_RULE_TYPE_ID",
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index e429a9e4fa4da..57322a84712a5 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/security-detections-response](https://github.com/orgs/elastic/
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 115 | 0 | 112 | 0 |
+| 116 | 0 | 113 | 0 |
 
 ## Common
 
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index 5ea6e6109dcfd..f8812a5f99a07 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index db2e8743e143a..4d5bb7c6ee285 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index 486d13deb0eee..b54f6751fc94f 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index 58302b3b1dab7..717727a6f8aba 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 108c56eab0389..40f2ec9326b91 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index b502143cbcac9..f1ea786251d02 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index 12b83d62f51e2..f6a85eb1b22b0 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index 614f57ad2a42d..c2a939ccbcad7 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index a3fe74b32ba53..ffdcdf056987a 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index 37a20446489b6..1190ca7644821 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index 7dff81a34f9a7..0cbeffbcdff27 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index 7b72047d8282c..323c13e48fb53 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 9ac5ac2967f28..1c7d1357c0449 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index 8ef35b4f9bffb..35b71a8f9af68 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index dc92634e276aa..77957415ef3ed 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index bdda07d0d50db..3f48ae66fbb0e 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index a3286883b72ef..918cb773c4e87 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 0fd917a5ae11e..6e30d2c48b41e 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 8e18001fdee75..246a043063f7f 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index eba1068653b56..4e488db5b3290 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index fc2bbbc628a44..84080bd421236 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index be1e14a30b908..31d83b7b41778 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 971006815395b..512c6a09d094b 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 1988226db6a9c..719cba8a9b6d0 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index 9fec5f7b068d7..4e03cdf5b73c0 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index 2eef3c7f77e89..c8457990219b9 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index fcb6c1b95d840..e9b483fb89180 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index 2d8491f1a9db9..e3b44fd839da4 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index f100f3549a49d..db838d30b6ba3 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index de992b35b41bd..819abbf3430c1 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 67a32fe45fe0c..25ade2bc4c5ff 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index 69de44d8b9cc8..1f12da911ce27 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index cf1574a8bb80f..a55c03c341224 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index c43f03aff7b2f..d0a65c9583006 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index 83394a64ab98b..7e629bb13419c 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 186e686dee278..8a53913f9f7e7 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index 566f5d536fd02..d085adbf782b6 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 60a220b649057..4160c23c49864 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index 74a0ca81726a0..2abf35b050f9d 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index 8e1771c21abbf..358782c8b7005 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 614fdd5fd3510..f9ecbe1644a96 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 9c6709b1bc192..8e4e4c25d8f09 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index 2cf8f5ff61597..3c539c58424ff 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index 540e82ad00fc4..b132bde96a8e3 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index 587abaad862f9..f87049da34650 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index cec7fa8b80fd8..80ab3fa803ebe 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index 2c157dabb2e34..0133656dffbad 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 1db76063af305..f05164714efb5 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index 8cfba30237699..df743198d5eeb 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index ae2c444598010..2dc3ad597bde2 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index 2c5c99c7f42ec..533dda0f6af2d 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index 4b50ad5292780..482c09f26df62 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 0abcbcc8a2336..13549825dc01f 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index cadc78dd3a2ef..6a4b750516e03 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index 57c4187f3c736..4100d9f348c0f 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index 3468f5455e114..bceeca64e0636 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index 4426f9b62e59b..c492e180e625e 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index ea4964774591d..aebc621b8120b 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index c8f111729c83b..0afac69e5cc6a 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index 875dbe31dce9a..cdcdf4ec9c98c 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index 8f2ac04d85ad5..0b02f9e7ba2ee 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 303b1347b41ea..052729a9704f6 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index 60c1e4628f4d1..d534d9cbce8b6 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index a6e7e60d6b2cc..2fc85cb04f0e4 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index cd8d9d9795acf..2865602f3f3cf 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index b5ac636bc8456..f9b1d12110871 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index 2e6214f4582a7..05246fe66de3a 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 9b31fa1e2b0d4..634779f091cb0 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index 56ee6c64a7ba4..15cac9a77a8a0 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index 119adaf54c563..68e84be049f44 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 595c91e63e455..48a8e9b21915a 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index b762ba946e38f..59e3d93307721 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index ac66676fb7fe1..cc9ffc9b40385 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json
index dd2e3dbef0a5a..c782633b8fb9b 100644
--- a/api_docs/kbn_slo_schema.devdocs.json
+++ b/api_docs/kbn_slo_schema.devdocs.json
@@ -482,7 +482,7 @@
         "label": "CreateSLOInput",
         "description": [],
         "signature": [
-          "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }"
+          "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -497,7 +497,7 @@
         "label": "CreateSLOParams",
         "description": [],
         "signature": [
-          "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
+          "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
@@ -631,7 +631,7 @@
           "\nThe response type for /internal/observability/slo/_definitions\n"
         ],
         "signature": [
-          "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]"
+          "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -661,7 +661,7 @@
         "label": "FindSLOResponse",
         "description": [],
         "signature": [
-          "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }"
+          "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -676,7 +676,7 @@
         "label": "GetPreviewDataParams",
         "description": [],
         "signature": [
-          "{ indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }"
+          "{ indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -751,7 +751,7 @@
         "label": "GetSLOResponse",
         "description": [],
         "signature": [
-          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }"
+          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -796,7 +796,7 @@
         "label": "Indicator",
         "description": [],
         "signature": [
-          "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }"
+          "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -856,7 +856,7 @@
         "label": "MetricCustomIndicator",
         "description": [],
         "signature": [
-          "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; }"
+          "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -871,7 +871,7 @@
         "label": "SLOResponse",
         "description": [],
         "signature": [
-          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }"
+          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -886,7 +886,7 @@
         "label": "SLOWithSummaryResponse",
         "description": [],
         "signature": [
-          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }"
+          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -976,7 +976,7 @@
         "label": "UpdateSLOInput",
         "description": [],
         "signature": [
-          "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }"
+          "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -991,7 +991,7 @@
         "label": "UpdateSLOParams",
         "description": [],
         "signature": [
-          "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
+          "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
@@ -1046,7 +1046,7 @@
         "label": "UpdateSLOResponse",
         "description": [],
         "signature": [
-          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }"
+          "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }"
         ],
         "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts",
         "deprecated": false,
@@ -1409,40 +1409,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -2075,40 +2103,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -2557,40 +2613,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -3007,40 +3091,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -3501,40 +3613,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -4123,40 +4263,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -4431,6 +4599,60 @@
         "trackAdoption": false,
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/slo-schema",
+        "id": "def-common.metricCustomBasicMetric",
+        "type": "Object",
+        "tags": [],
+        "label": "metricCustomBasicMetric",
+        "description": [],
+        "signature": [
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
+          "StringC",
+          "; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>"
+        ],
+        "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/slo-schema",
+        "id": "def-common.metricCustomDocCountMetric",
+        "type": "Object",
+        "tags": [],
+        "label": "metricCustomDocCountMetric",
+        "description": [],
+        "signature": [
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>"
+        ],
+        "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/slo-schema",
         "id": "def-common.metricCustomIndicatorSchema",
@@ -4453,40 +4675,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -4850,40 +5100,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -5278,40 +5556,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -5702,40 +6008,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -6158,40 +6492,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -7086,40 +7448,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -7500,40 +7890,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index d24724b3e7859..de3cbf08d0c98 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 129 | 0 | 126 | 0 |
+| 131 | 0 | 128 | 0 |
 
 ## Common
 
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index 4d0e133285caf..d847191cad35b 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index b62b9e3e164e4..6ccf9c1225983 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index 1aaacdaffd811..dad5ae36ef322 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index 45dc120a15bb4..d26aa25b18068 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index 531fbc6f5653d..aec338d9e3243 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index 73cc2b44e84a5..f135c68fd82e8 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index b6b3866a7b711..f4c516a7b72c1 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index 6fa4571742c68..e8192760ab8c4 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index f9eb7fbe61b99..75a62bafb9c3c 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index 681b1c3751c70..14dc22301d438 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index c0c610ab4af84..bce266d5e3d05 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index bff45de4cf6b2..9adb1fd506d4c 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index a1d61e47a4706..920bdacfc5822 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index 55fcf8055bae5..ae156a3f67df1 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 6b762d38358be..3aed0337f2875 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index 27d57ca5190d2..33e8784499ade 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 78471dc41276f..02e6afdcfb395 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index cf4ce3779c9a0..f5e9c9d1f06bd 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index adbc9f4911b7f..ab60706a182c7 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index 01c08c77b269c..c8b7c990839ed 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 081e72351b312..45233fbc1cedb 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index 81e8636adbdfe..22ca484767fad 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index a92d2b393861e..58719f00482f7 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index 48e1fa438c454..6646d78632b75 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index d70fb4d6e7ad7..f0758e421a49a 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 269b5630aa125..2ea082493eb7b 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index 86603c8ce76d7..b3047a5ff7a35 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index 90ea9da16ea1b..b5c7c8d40499e 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 5418192352c30..3f2411d31c72f 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index acda13eec48f9..2cee78c2e41e9 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index 148e2fd1ff899..22882b08c02f8 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index 5b2c927e52ab3..505cd1eb8ac16 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index 7398253f9ec4b..810752c805ff3 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index 4c425c02c4b0f..c2f0248c6aa2f 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index 2389f1fc1ab89..b1ccd2542831f 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 30828241be287..4c76a1a3e2ee4 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index f0b23f27f3769..7521a9dc4ac28 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index f40501769034f..ac1a861627109 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 675946f917b11..c19ec2587da2e 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index 21bba29b8d30c..f8dc452b80c8f 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index 07c5395ae596c..1bcc3fe34feec 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index 7070c3891da91..aa783f0036d36 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index 94e4f40853f92..f5d502d0bf5a5 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index 0d88f2fddfbb9..f007519399b52 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index def0fc90c6bf2..7852488e4c394 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index fafff77be6326..4777f154c8204 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index 0d90802e1d002..74f95298cc6d2 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 40177041b010c..d96d48b661d55 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index 57cbeac274314..238e7abab807a 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index 0cbffc666898a..c09b5ff9ce8ba 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index c3ab370fade51..d324fbaf4638f 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 78e6044611743..9be02bb30098e 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json
index 06942864aef60..0610ed9ace5c9 100644
--- a/api_docs/observability.devdocs.json
+++ b/api_docs/observability.devdocs.json
@@ -8297,40 +8297,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -8492,7 +8520,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ",
+          " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -8703,40 +8731,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -8986,7 +9042,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
+          " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
@@ -9026,7 +9082,7 @@
             "section": "def-common.Duration",
             "text": "Duration"
           },
-          " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ",
+          " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -9060,7 +9116,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ",
+          " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -9102,7 +9158,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ",
+          " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -9124,7 +9180,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ",
+          " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -9383,40 +9439,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -9670,7 +9754,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
+          " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
@@ -9917,40 +10001,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -10112,7 +10224,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ",
+          " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -10323,40 +10435,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -10606,7 +10746,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
+          " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
@@ -10646,7 +10786,7 @@
             "section": "def-common.Duration",
             "text": "Duration"
           },
-          " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ",
+          " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -10680,7 +10820,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ",
+          " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -10722,7 +10862,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ",
+          " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -10744,7 +10884,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ",
+          " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ",
           {
             "pluginId": "observability",
             "scope": "server",
@@ -11003,40 +11143,68 @@
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; total: ",
           "TypeC",
           "<{ metrics: ",
           "ArrayC",
           "<",
+          "UnionC",
+          "<[",
           "IntersectionC",
           "<[",
           "TypeC",
           "<{ name: ",
           "StringC",
           "; aggregation: ",
-          "KeyofC",
-          "<{ sum: boolean; }>; field: ",
+          "LiteralC",
+          "<\"sum\">; field: ",
           "StringC",
           "; }>, ",
           "PartialC",
           "<{ filter: ",
           "StringC",
-          "; }>]>>; equation: ",
+          "; }>]>, ",
+          "IntersectionC",
+          "<[",
+          "TypeC",
+          "<{ name: ",
+          "StringC",
+          "; aggregation: ",
+          "LiteralC",
+          "<\"doc_count\">; }>, ",
+          "PartialC",
+          "<{ filter: ",
+          "StringC",
+          "; }>]>]>>; equation: ",
           "StringC",
           "; }>; timestampField: ",
           "StringC",
@@ -11290,7 +11458,7 @@
             "section": "def-server.ObservabilityRouteHandlerResources",
             "text": "ObservabilityRouteHandlerResources"
           },
-          " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
+          " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ",
           {
             "pluginId": "@kbn/slo-schema",
             "scope": "common",
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 2045af15dd41b..3628c75b6ceed 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index cab458c4a6bd2..3af073c1f66f0 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index 28bf25c745233..156ff2060adf6 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index 93737144855d0..395daffaed93d 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index 15f0bd436fa67..49b4b7060b8f7 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index 60b55c41fab64..48b66b1e51692 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index e23405ae26578..57e905be4b5af 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index e282bac34027d..898241c4b1413 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | API Count | Any Count | Missing comments | Missing exports |
 |--------------|----------|-----------------|--------|
-| 76082 | 233 | 65046 | 1597 |
+| 76089 | 233 | 65049 | 1597 |
 
 ## Plugin Directory
 
@@ -273,7 +273,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnCoreBaseServerMocksPluginApi" text="@kbn/core-base-server-mocks"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 3 | 0 | 3 | 0 |
 | <DocLink id="kibKbnCoreCapabilitiesBrowserMocksPluginApi" text="@kbn/core-capabilities-browser-mocks"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 3 | 0 | 3 | 0 |
 | <DocLink id="kibKbnCoreCapabilitiesCommonPluginApi" text="@kbn/core-capabilities-common"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 5 | 0 | 0 | 0 |
-| <DocLink id="kibKbnCoreCapabilitiesServerPluginApi" text="@kbn/core-capabilities-server"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 16 | 0 | 7 | 0 |
+| <DocLink id="kibKbnCoreCapabilitiesServerPluginApi" text="@kbn/core-capabilities-server"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 20 | 0 | 7 | 0 |
 | <DocLink id="kibKbnCoreCapabilitiesServerMocksPluginApi" text="@kbn/core-capabilities-server-mocks"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 |
 | <DocLink id="kibKbnCoreChromeBrowserPluginApi" text="@kbn/core-chrome-browser"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 165 | 0 | 70 | 0 |
 | <DocLink id="kibKbnCoreChromeBrowserMocksPluginApi" text="@kbn/core-chrome-browser-mocks"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 |
@@ -544,7 +544,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnResizableLayoutPluginApi" text="@kbn/resizable-layout"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A component for creating resizable layouts containing a fixed width panel and a flexible panel, with support for horizontal and vertical layouts. | 18 | 0 | 5 | 0 |
 | <DocLink id="kibKbnRisonPluginApi" text="@kbn/rison"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 2 | 8 | 0 |
 | <DocLink id="kibKbnRrulePluginApi" text="@kbn/rrule"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 16 | 1 |
-| <DocLink id="kibKbnRuleDataUtilsPluginApi" text="@kbn/rule-data-utils"/> | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 115 | 0 | 112 | 0 |
+| <DocLink id="kibKbnRuleDataUtilsPluginApi" text="@kbn/rule-data-utils"/> | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 116 | 0 | 113 | 0 |
 | <DocLink id="kibKbnSavedObjectsSettingsPluginApi" text="@kbn/saved-objects-settings"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 |
 | <DocLink id="kibKbnSearchApiPanelsPluginApi" text="@kbn/search-api-panels"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 68 | 0 | 68 | 0 |
 | <DocLink id="kibKbnSearchConnectorsPluginApi" text="@kbn/search-connectors"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2211 | 0 | 2211 | 0 |
@@ -618,7 +618,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnSharedUxStorybookConfigPluginApi" text="@kbn/shared-ux-storybook-config"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 |
 | <DocLink id="kibKbnSharedUxStorybookMockPluginApi" text="@kbn/shared-ux-storybook-mock"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 |
 | <DocLink id="kibKbnSharedUxUtilityPluginApi" text="@kbn/shared-ux-utility"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 3 | 0 |
-| <DocLink id="kibKbnSloSchemaPluginApi" text="@kbn/slo-schema"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 129 | 0 | 126 | 0 |
+| <DocLink id="kibKbnSloSchemaPluginApi" text="@kbn/slo-schema"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 131 | 0 | 128 | 0 |
 | <DocLink id="kibKbnSomeDevLogPluginApi" text="@kbn/some-dev-log"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 |
 | <DocLink id="kibKbnStdPluginApi" text="@kbn/std"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 102 | 2 | 65 | 1 |
 | <DocLink id="kibKbnStdioDevHelpersPluginApi" text="@kbn/stdio-dev-helpers"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 |
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index 6fafaebb019af..f58a021c502b5 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index c8aa1e8ba86f9..cd7539fc60ab3 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index 7339d402d4812..9e484291281bf 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index e3a2975e71a79..122eb47b5f108 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index 3ea1700a77434..7218c2d384f9a 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index 6a64d6ac1575e..80f6f81edc01a 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index 6056b7f00fd5c..2484623c379ea 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index 96f5504d74d7c..73f40c7ef02bb 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index efe2afd257e77..787d563cf833f 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index 08722ac7171b6..fe075a2d14aef 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index d025a862f60cd..f9535fb570137 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index f47c7dd2b25a7..b176edd0697b3 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index a499008d9a782..dfed121fe9d03 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index 28bc3a72a472d..498512acef634 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 7f7102506320a..04d8a5f1f47be 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 81374d6c55653..2f152b467d568 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index 672ca2128baa4..bc227e0d57c92 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 699574fab35e2..56233e694a44a 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index e347cd66d4b40..d27a0e8a6a917 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index 37414db4c395e..74f1db94af42b 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index 51d33d2367c61..3da87901fd716 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 7391544ff8663..77380a3af0bb0 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index dc8fbfe48556e..c31e05f44e48a 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index d331e1c9e78c7..124a0266a746d 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index db9678e4f9498..e8f6e5bcc84b7 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index b64a746e6b2d4..659e64e03c94c 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 9aec3b6727545..65f8b144fd5bd 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index b1baae66b6c3c..afb734134ec30 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index 71302d492d6b2..72008768874e1 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 87e0b6ebda619..57e274d294d3c 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index 131742d7aa7a9..80b7e4ae53110 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 07198ec59ae8c..1fcb29570c40b 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index 3610ff9250a8b..cd97d832161f5 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 55119da9d38db..7a5a7677b71c4 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 1ab1aec171c8d..34df0015bac47 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 8a72db2d58893..98999fd7710b6 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index cfa2b74f8abcf..819609450dcd6 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index 584484ffd70e1..89c3394ff9228 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 4670b9bcfd53c..8c73bb0d5aa73 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index dbb5318f9ea6e..09ea8571e5e37 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index 1ad622851630a..ab66378e46af6 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index febe3a84e4a06..97b7dd9ecef17 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index c9d326d7babb2..e387084a28c5a 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index 693a43ffa73e7..a5485bf130a5d 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 7e5808a1a4083..ce1b8e55bbcab 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index 536073b7a449d..a2218269f4ce5 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index fca96973e7d69..b1a9193a7fae2 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index 6d61d40f1b1b1..17cb54fde2442 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index 2f02e1cf2d3d9..adc6a59bc27d4 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index bad86282b61d9..5d83a164601eb 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 16d0a8b7b848c..0c10deb217431 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index 681470f8991ac..c532426fb7916 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 164bb2345ebd5..a8635835c673a 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index 0acaca2ab1f5f..65cc4d4adacb9 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index d142d0ae25da8..4855114b873fe 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index 9538ee36852c6..d32b566d45383 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 8d984e502640c..6ccc3abe170cf 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index 80799364b2c58..00f2ea78e7d66 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 0bc6246152ee6..7df847499812f 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index 58cdbe5bced47..3d9c01a701c3a 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-09
+date: 2023-11-10
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From 7c327573357064618865183e18f6b43a82b68f74 Mon Sep 17 00:00:00 2001
From: Kyle Pollich <kyle.pollich@elastic.co>
Date: Fri, 10 Nov 2023 03:29:09 -0500
Subject: [PATCH 077/147] Exclude DGA integration from serverless projects
 (#170982)

## Summary

Excludes the DGA integration from serverless projects, as it can cause
issues due to the size of its trained ML model assets.
---
 config/serverless.oblt.yml     | 5 +++++
 config/serverless.security.yml | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml
index 885bdcb9962b1..68f340fb64c05 100644
--- a/config/serverless.oblt.yml
+++ b/config/serverless.oblt.yml
@@ -47,14 +47,19 @@ xpack.fleet.internal.registry.excludePackages: [
     'endpoint',
     'beaconing',
     'osquery_manager',
+
     # synthetics is not enabled yet
     'synthetics',
     'synthetics_dashboards',
+
     # Removed in 8.11 integrations
     'cisco',
     'microsoft',
     'symantec',
     'cyberark',
+
+    # ML integrations
+    'dga',
   ]
 
 ## Required for force installation of APM Package
diff --git a/config/serverless.security.yml b/config/serverless.security.yml
index 0e59a104317c5..7f749afc7626d 100644
--- a/config/serverless.security.yml
+++ b/config/serverless.security.yml
@@ -48,11 +48,15 @@ xpack.fleet.internal.registry.excludePackages: [
     'apm',
     'synthetics',
     'synthetics_dashboards',
+
     # Removed in 8.11 integrations
     'cisco',
     'microsoft',
     'symantec',
     'cyberark',
+
+    # ML integrations
+    'dga',
   ]
 # fleet_server package installed to publish agent metrics
 xpack.fleet.packages:

From 4b28ec439763188b4a037c2ade90202c2b4888de Mon Sep 17 00:00:00 2001
From: Juan Pablo Djeredjian <jpdjeredjian@gmail.com>
Date: Fri, 10 Nov 2023 09:42:18 +0100
Subject: [PATCH 078/147] [Security Solution] Migrate Prebuilt rules API
 integration tests to `security_solution_api_integration` folder (#169951)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Addresses partially: https://github.com/elastic/kibana/issues/151902

## Summary

- Migrates Prebuilt rules-related API integration tests to
`security_solution_api_integration` folder.
- Moves tests from
`x-pack/test/detection_engine_api_integration/security_and_spaces` into
`x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license`.
    - PR moves following folders:
        - `/prebuilt_rules`
        - `/bundled_prebuilt_rules_package`
        - `/large_prebuilt_rules_package`
        - `/update_prebuilt_rules_package`
-  Duplicates or completely moves needed utils into:
-
`x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules`,
depending if they are no longer used in the original folder or they
still are in the remaining test (should be moved shortly as well)
- All tests run on both **ESS** and **Serverless**

## Flaky test runner

- [ ]
[`/prebuilt_rules`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3888)
🟢
- [ ]
[`/bundled_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3916)🟢
- [ ]
[`/large_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3917)🟢
- [ ]
[`/update_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3920)🟢

[Link to all for
PR](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds?branch=refs%2Fpull%2F169951%2Fhead)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .buildkite/ftr_configs.yml                    |  17 ++++----
 .github/CODEOWNERS                            |   1 +
 .../utils/index.ts                            |   6 ---
 ...get_prebuilt_rules_and_timelines_status.ts |  31 --------------
 .../config/serverless/config.base.ts          |  12 +++++-
 .../package.json                              |  22 +++++++++-
 .../configs/ess.config.ts}                    |  16 ++++----
 .../configs/serverless.config.ts              |  29 +++++++++++++
 .../security_detection_engine-99.0.0.zip      | Bin
 ...ecurity_detection_engine-99.0.1-beta.1.zip | Bin
 .../bundled_prebuilt_rules_package/index.ts   |  15 +++++++
 .../install_latest_bundled_prebuilt_rules.ts  |  16 ++++----
 .../prerelease_packages.ts                    |  38 +++++++++++++-----
 .../configs/ess.config.ts}                    |  16 +++++---
 .../configs/serverless.config.ts              |  37 +++++++++++++++++
 .../security_detection_engine-100.0.0.zip     | Bin
 .../large_prebuilt_rules_package/index.ts     |  14 +++++++
 .../install_large_prebuilt_rules_package.ts   |  14 ++++---
 .../management/configs/ess.config.ts}         |  10 +++--
 .../management/configs/serverless.config.ts   |  15 +++++++
 .../management}/fleet_integration.ts          |  17 ++++----
 .../management}/get_prebuilt_rules_status.ts  |  27 ++++++-------
 .../get_prebuilt_timelines_status.ts          |   7 ++--
 .../prebuilt_rules/management}/index.ts       |   5 +--
 .../install_and_upgrade_prebuilt_rules.ts     |  28 ++++++-------
 .../configs/ess.config.ts}                    |  10 +++--
 .../configs/serverless.config.ts              |  16 ++++++++
 .../update_prebuilt_rules_package/index.ts    |  14 +++++++
 .../update_prebuilt_rules_package.ts          |  16 ++++----
 .../delete_all_prebuilt_rule_assets.ts        |  23 +++++++++++
 .../prebuilt_rules/delete_all_timelines.ts    |  23 +++++++++++
 .../delete_prebuilt_rules_fleet_package.ts    |   7 ++--
 .../prebuilt_rules/get_installed_rules.ts     |   0
 .../get_prebuilt_rules_fleet_package.ts       |  23 +++++++++++
 .../get_prebuilt_rules_status.ts              |   1 +
 .../utils/rules/prebuilt_rules/index.ts       |  12 ++++++
 .../install_fleet_package_by_url.ts           |   5 ++-
 .../prebuilt_rules/install_prebuilt_rules.ts  |   1 +
 .../install_prebuilt_rules_fleet_package.ts   |   0
 .../review_install_prebuilt_rules.ts          |   1 +
 .../review_upgrade_prebuilt_rules.ts          |   1 +
 .../prebuilt_rules/upgrade_prebuilt_rules.ts  |   1 +
 .../tsconfig.json                             |   4 +-
 43 files changed, 401 insertions(+), 150 deletions(-)
 delete mode 100644 x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_and_timelines_status.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts} (78%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.0.zip (100%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.1-beta.1.zip (100%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/index.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts (86%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/bundled_prebuilt_rules_package/prerelease_packages.ts (70%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts} (80%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/large_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-100.0.0.zip (100%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/index.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts (78%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts} (61%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management}/fleet_integration.ts (79%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management}/get_prebuilt_rules_status.ts (96%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management}/get_prebuilt_timelines_status.ts (88%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management}/index.ts (73%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management}/install_and_upgrade_prebuilt_rules.ts (95%)
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts} (60%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/index.ts
 rename x-pack/test/{detection_engine_api_integration/security_and_spaces => security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules}/update_prebuilt_rules_package/update_prebuilt_rules_package.ts (93%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_timelines.ts
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts (84%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/get_installed_rules.ts (100%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_fleet_package.ts
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/get_prebuilt_rules_status.ts (95%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/install_fleet_package_by_url.ts (93%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/install_prebuilt_rules.ts (98%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/install_prebuilt_rules_fleet_package.ts (100%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/review_install_prebuilt_rules.ts (95%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/review_upgrade_prebuilt_rules.ts (94%)
 rename x-pack/test/{detection_engine_api_integration/utils => security_solution_api_integration/test_suites/detections_response/utils/rules}/prebuilt_rules/upgrade_prebuilt_rules.ts (98%)

diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml
index c817c9f8442e5..95588c63f7489 100644
--- a/.buildkite/ftr_configs.yml
+++ b/.buildkite/ftr_configs.yml
@@ -228,10 +228,6 @@ enabled:
   - x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts
   - x-pack/test/detection_engine_api_integration/security_and_spaces/group10/config.ts
   - x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/config.ts
-  - x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts
-  - x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts
-  - x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts
-  - x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts
   - x-pack/test/disable_ems/config.ts
   - x-pack/test/encrypted_saved_objects_api_integration/config.ts
   - x-pack/test/examples/config.ts
@@ -467,8 +463,11 @@ enabled:
   - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
 
- 
-
-
-
-
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts
+  - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index b60e8c5effe45..19b62559fa3c0 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1299,6 +1299,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib
 /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_details @elastic/security-detection-rule-management
 /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/default_license/prebuilt_rules @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
diff --git a/x-pack/test/detection_engine_api_integration/utils/index.ts b/x-pack/test/detection_engine_api_integration/utils/index.ts
index 432923baefb1d..1c62f3dc2c123 100644
--- a/x-pack/test/detection_engine_api_integration/utils/index.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/index.ts
@@ -93,12 +93,6 @@ export * from './wait_for_rule_status';
 export * from './wait_for_signals_to_be_present';
 export * from './prebuilt_rules/create_prebuilt_rule_saved_objects';
 export * from './prebuilt_rules/delete_all_prebuilt_rule_assets';
-export * from './prebuilt_rules/delete_prebuilt_rules_fleet_package';
-export * from './prebuilt_rules/get_prebuilt_rules_status';
-export * from './prebuilt_rules/get_prebuilt_rules_and_timelines_status';
-export * from './prebuilt_rules/install_prebuilt_rules_fleet_package';
-export * from './prebuilt_rules/install_prebuilt_rules';
-export * from './prebuilt_rules/upgrade_prebuilt_rules';
 export * from './prebuilt_rules/install_mock_prebuilt_rules';
 export * from './prebuilt_rules/install_prebuilt_rules_and_timelines';
 export * from './get_legacy_action_so';
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_and_timelines_status.ts b/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_and_timelines_status.ts
deleted file mode 100644
index 2d03e597dc5af..0000000000000
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_and_timelines_status.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import {
-  GetPrebuiltRulesAndTimelinesStatusResponse,
-  PREBUILT_RULES_STATUS_URL,
-} from '@kbn/security-solution-plugin/common/api/detection_engine/prebuilt_rules';
-import type SuperTest from 'supertest';
-
-/**
- * (LEGACY)
- * Helper to retrieve the prebuilt rules status
- *
- * @param supertest The supertest deps
- */
-export const getPrebuiltRulesAndTimelinesStatus = async (
-  supertest: SuperTest.SuperTest<SuperTest.Test>
-): Promise<GetPrebuiltRulesAndTimelinesStatusResponse> => {
-  const response = await supertest
-    .get(PREBUILT_RULES_STATUS_URL)
-    .set('kbn-xsrf', 'true')
-    .set('elastic-api-version', '2023-10-31')
-    .send()
-    .expect(200);
-
-  return response.body;
-};
diff --git a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts
index 6790c39c85115..6238282722cfc 100644
--- a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts
+++ b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts
@@ -8,6 +8,8 @@ import { FtrConfigProviderContext } from '@kbn/test';
 export interface CreateTestConfigOptions {
   testFiles: string[];
   junit: { reportName: string };
+  kbnTestServerArgs?: string[];
+  kbnTestServerEnv?: Record<string, string>;
 }
 
 export function createTestConfig(options: CreateTestConfigOptions) {
@@ -20,7 +22,15 @@ export function createTestConfig(options: CreateTestConfigOptions) {
       ...svlSharedConfig.getAll(),
       kbnTestServer: {
         ...svlSharedConfig.get('kbnTestServer'),
-        serverArgs: [...svlSharedConfig.get('kbnTestServer.serverArgs'), '--serverless=security'],
+        serverArgs: [
+          ...svlSharedConfig.get('kbnTestServer.serverArgs'),
+          '--serverless=security',
+          ...(options.kbnTestServerArgs || []),
+        ],
+        env: {
+          ...svlSharedConfig.get('kbnTestServer.env'),
+          ...options.kbnTestServerEnv,
+        },
       },
       testFiles: options.testFiles,
       junit: options.junit,
diff --git a/x-pack/test/security_solution_api_integration/package.json b/x-pack/test/security_solution_api_integration/package.json
index a2bbd939fade2..89f6e0f164f8e 100644
--- a/x-pack/test/security_solution_api_integration/package.json
+++ b/x-pack/test/security_solution_api_integration/package.json
@@ -48,6 +48,26 @@
     "entity_analytics:runner:serverless": "npm run run-tests:ea:default risk_engine serverless serverlessEnv",
     "entity_analytics:qa:serverless": "npm run run-tests:ea:default risk_engine serverless qaEnv",
     "entity_analytics:server:ess": "npm run initialize-server:ea:default risk_engine ess",
-    "entity_analytics:runner:ess": "npm run run-tests:ea:default risk_engine ess essEnv"
+    "entity_analytics:runner:ess": "npm run run-tests:ea:default risk_engine ess essEnv",
+    "prebuilt_rules_management:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/management serverless",
+    "prebuilt_rules_management:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/management serverless serverlessEnv",
+    "prebuilt_rules_management:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/management serverless qaEnv",
+    "prebuilt_rules_management:server:ess": "npm run initialize-server:dr:default prebuilt_rules/management ess",
+    "prebuilt_rules_management:runner:ess": "npm run run-tests:dr:default prebuilt_rules/management ess essEnv",
+    "prebuilt_rules_bundled_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless",
+    "prebuilt_rules_bundled_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless serverlessEnv",
+    "prebuilt_rules_bundled_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless qaEnv",
+    "prebuilt_rules_bundled_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/bundled_prebuilt_rules_package ess",
+    "prebuilt_rules_bundled_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package ess essEnv",
+    "prebuilt_rules_large_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/large_prebuilt_rules_package serverless",
+    "prebuilt_rules_large_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package serverless serverlessEnv",
+    "prebuilt_rules_large_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package serverless qaEnv",
+    "prebuilt_rules_large_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/large_prebuilt_rules_package ess",
+    "prebuilt_rules_large_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package ess essEnv",
+    "prebuilt_rules_update_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/update_prebuilt_rules_package serverless",
+    "prebuilt_rules_update_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package serverless serverlessEnv",
+    "prebuilt_rules_update_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package serverless qaEnv",
+    "prebuilt_rules_update_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/update_prebuilt_rules_package ess",
+    "prebuilt_rules_update_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package ess essEnvs"
   }
 }
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts
similarity index 78%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts
index 28f71daa1f0f4..87c0b1b3c43d8 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts
@@ -4,24 +4,26 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+
 import { FtrConfigProviderContext } from '@kbn/test';
 import path from 'path';
 
 export const BUNDLED_PACKAGE_DIR = path.join(
   path.dirname(__filename),
-  './fleet_bundled_packages/fixtures'
+  './../fleet_bundled_packages/fixtures'
 );
 
-// eslint-disable-next-line import/no-default-export
 export default async function ({ readConfigFile }: FtrConfigProviderContext) {
-  const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
+  const functionalConfig = await readConfigFile(
+    require.resolve('../../../../../../config/ess/config.base.trial')
+  );
 
   return {
     ...functionalConfig.getAll(),
-    testFiles: [
-      require.resolve('./prerelease_packages.ts'),
-      require.resolve('./install_latest_bundled_prebuilt_rules.ts'),
-    ],
+    testFiles: [require.resolve('..')],
+    junit: {
+      reportName: 'Detection Engine ESS / Bundled Prebuilt Rules Package API Integration Tests',
+    },
     kbnTestServer: {
       ...functionalConfig.get('kbnTestServer'),
       serverArgs: [
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
new file mode 100644
index 0000000000000..db6e8e11082e0
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
@@ -0,0 +1,29 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import path from 'path';
+import { createTestConfig } from '../../../../../../config/serverless/config.base';
+
+export const BUNDLED_PACKAGE_DIR = path.join(
+  path.dirname(__filename),
+  './../fleet_bundled_packages/fixtures'
+);
+export default createTestConfig({
+  testFiles: [require.resolve('..')],
+  junit: {
+    reportName:
+      'Detection Engine Serverless / Bundled Prebuilte Rules Package API Integration Tests',
+  },
+  kbnTestServerArgs: [
+    /*  Tests in this directory simulate an air-gapped environment in which the instance doesn't have access to EPR.
+     *  To do that, we point the Fleet url to an invalid URL, and instruct Fleet to fetch bundled packages at the
+     *  location defined in BUNDLED_PACKAGE_DIR.
+     */
+    `--xpack.fleet.registryUrl=http://invalidURL:8080`,
+    `--xpack.fleet.developer.bundledPackageLocation=${BUNDLED_PACKAGE_DIR}`,
+  ],
+});
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.0.zip b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.0.zip
similarity index 100%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.0.zip
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.0.zip
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.1-beta.1.zip b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.1-beta.1.zip
similarity index 100%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.1-beta.1.zip
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-99.0.1-beta.1.zip
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/index.ts
new file mode 100644
index 0000000000000..6d1e677426b32
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/index.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+
+export default ({ loadTestFile }: FtrProviderContext): void => {
+  describe('Detection Engine API - Bundled Prebuilt Rules Package', function () {
+    loadTestFile(require.resolve('./install_latest_bundled_prebuilt_rules'));
+    loadTestFile(require.resolve('./prerelease_packages'));
+  });
+};
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts
similarity index 86%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts
index d9f710ba6afcf..bd306b0d65654 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/install_latest_bundled_prebuilt_rules.ts
@@ -6,18 +6,18 @@
  */
 import fs from 'fs/promises';
 import path from 'path';
-// @ts-expect-error we have to check types with "allowJs: false" for now, causing this import to fail
 import { REPO_ROOT } from '@kbn/repo-info';
 import JSON5 from 'json5';
 import expect from 'expect';
 import { PackageSpecManifest } from '@kbn/fleet-plugin/common';
 import { ALL_SAVED_OBJECT_INDICES } from '@kbn/core-saved-objects-server';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
-import { deleteAllPrebuiltRuleAssets, deleteAllRules } from '../../utils';
-import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
-import { installPrebuiltRulesPackageByVersion } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
-
-// eslint-disable-next-line import/no-default-export
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+import {
+  deleteAllRules,
+  deleteAllPrebuiltRuleAssets,
+  getPrebuiltRulesStatus,
+  installPrebuiltRulesPackageByVersion,
+} from '../../../utils';
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
@@ -28,7 +28,7 @@ export default ({ getService }: FtrProviderContext): void => {
   /* attempt to install it from the local file system. The API response from EPM provides
   /* us with the information of whether the package was installed from the registry or
   /* from a package that was bundled with Kibana */
-  describe('install_bundled_prebuilt_rules', () => {
+  describe('@ess @serverless @skipInQA install_bundled_prebuilt_rules', () => {
     beforeEach(async () => {
       await deleteAllRules(supertest, log);
       await deleteAllPrebuiltRuleAssets(es);
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/prerelease_packages.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/prerelease_packages.ts
similarity index 70%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/prerelease_packages.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/prerelease_packages.ts
index 7348b596d1404..448e325892a5f 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/prerelease_packages.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/prerelease_packages.ts
@@ -5,14 +5,19 @@
  * 2.0.
  */
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
-import { deleteAllPrebuiltRuleAssets, deleteAllRules } from '../../utils';
-import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
-import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
-import { installPrebuiltRulesPackageViaFleetAPI } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
-import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
 
-// eslint-disable-next-line import/no-default-export
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+import {
+  deleteAllPrebuiltRuleAssets,
+  deleteAllRules,
+  deletePrebuiltRulesFleetPackage,
+  getInstalledRules,
+  getPrebuiltRulesFleetPackage,
+  getPrebuiltRulesStatus,
+  installPrebuiltRules,
+  installPrebuiltRulesPackageViaFleetAPI,
+} from '../../../utils';
+
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
@@ -25,10 +30,11 @@ export default ({ getService }: FtrProviderContext): void => {
   /* (We use high mock version numbers to prevent clashes with real packages downloaded in other tests.)
   /* To do assertions on which packages have been installed, 99.0.0 has a single rule to install,
   /* while 99.0.1-beta.1 has 2 rules to install. Also, both packages have the version as part of the rule names. */
-  describe('prerelease_packages', () => {
+  describe('@ess @serverless @skipInQA prerelease_packages', () => {
     beforeEach(async () => {
       await deleteAllRules(supertest, log);
       await deleteAllPrebuiltRuleAssets(es);
+      await deletePrebuiltRulesFleetPackage(supertest);
     });
 
     it('should install latest stable version and ignore prerelease packages', async () => {
@@ -38,13 +44,27 @@ export default ({ getService }: FtrProviderContext): void => {
       expect(statusBeforePackageInstallation.stats.num_prebuilt_rules_to_install).toBe(0);
       expect(statusBeforePackageInstallation.stats.num_prebuilt_rules_to_upgrade).toBe(0);
 
-      await installPrebuiltRulesPackageViaFleetAPI(es, supertest);
+      // Install package without specifying version to check if latest stable version is installed
+      const fleetPackageInstallationResponse = await installPrebuiltRulesPackageViaFleetAPI(
+        es,
+        supertest
+      );
+
+      expect(fleetPackageInstallationResponse.items.length).toBe(1);
+      expect(fleetPackageInstallationResponse.items[0].id).toBe('rule_99.0.0'); // Name of the rule in package 99.0.0
+
+      // Get the installed package and check if the version is 99.0.0
+      const prebuiltRulesFleetPackage = await getPrebuiltRulesFleetPackage(supertest);
+      expect(prebuiltRulesFleetPackage.body.item.version).toBe('99.0.0');
+      expect(prebuiltRulesFleetPackage.status).toBe(200);
 
+      // Get status of our prebuilt rules (nothing should be instaled yet)
       const statusAfterPackageInstallation = await getPrebuiltRulesStatus(supertest);
       expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_installed).toBe(0);
       expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_to_install).toBe(1); // 1 rule in package 99.0.0
       expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_to_upgrade).toBe(0);
 
+      // Install prebuilt rules
       await installPrebuiltRules(es, supertest);
 
       // Verify that status is updated after package installation
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts
similarity index 80%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts
index cba7488572593..9b056de5b8252 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts
@@ -4,21 +4,27 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+
 import { FtrConfigProviderContext } from '@kbn/test';
 import path from 'path';
 
 export const BUNDLED_PACKAGE_DIR = path.join(
   path.dirname(__filename),
-  './fleet_bundled_packages/fixtures'
+  './../fleet_bundled_packages/fixtures'
 );
 
-// eslint-disable-next-line import/no-default-export
 export default async function ({ readConfigFile }: FtrConfigProviderContext) {
-  const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
+  const functionalConfig = await readConfigFile(
+    require.resolve('../../../../../../config/ess/config.base.trial')
+  );
 
   return {
     ...functionalConfig.getAll(),
-    testFiles: [require.resolve('./install_large_prebuilt_rules_package.ts')],
+    testFiles: [require.resolve('..')],
+    junit: {
+      reportName:
+        'Detection Engine ESS / Large Prebuilt Rules Package Installation API Integration Tests',
+    },
     kbnTestServer: {
       ...functionalConfig.get('kbnTestServer'),
       serverArgs: [
@@ -36,7 +42,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
         /*  Limit the heap memory to the lowest amount with which Kibana doesn't crash with an out of memory error
          *  when installing the large package.
          */
-        NODE_OPTIONS: '--max-old-space-size=700',
+        NODE_OPTIONS: '--max-old-space-size=800',
       },
     },
   };
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts
new file mode 100644
index 0000000000000..29b6ec1c4cc6c
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts
@@ -0,0 +1,37 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import path from 'path';
+import { createTestConfig } from '../../../../../../config/serverless/config.base';
+
+export const BUNDLED_PACKAGE_DIR = path.join(
+  path.dirname(__filename),
+  './../fleet_bundled_packages/fixtures'
+);
+export default createTestConfig({
+  testFiles: [require.resolve('..')],
+  junit: {
+    reportName:
+      'Detection Engine Serverless / Large Prebuilt Rules Package Installation API Integration Tests',
+  },
+  kbnTestServerArgs: [
+    /*  Tests in this directory simulate an air-gapped environment in which the instance doesn't have access to EPR.
+     *  To do that, we point the Fleet url to an invalid URL, and instruct Fleet to fetch bundled packages at the
+     *  location defined in BUNDLED_PACKAGE_DIR.
+     *  Since we want to test the installation of a large package, we created a specific package `security_detection_engine-100.0.0`
+     *  which contains 15000 rules assets and 750 unique rules, and attempt to install it.
+     */
+    `--xpack.fleet.registryUrl=http://invalidURL:8080`,
+    `--xpack.fleet.developer.bundledPackageLocation=${BUNDLED_PACKAGE_DIR}`,
+  ],
+  kbnTestServerEnv: {
+    /*  Limit the heap memory to the lowest amount with which Kibana doesn't crash with an out of memory error
+     *  when installing the large package.
+     */
+    NODE_OPTIONS: '--max-old-space-size=800',
+  },
+});
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-100.0.0.zip b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-100.0.0.zip
similarity index 100%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-100.0.0.zip
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/fleet_bundled_packages/fixtures/security_detection_engine-100.0.0.zip
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/index.ts
new file mode 100644
index 0000000000000..74959124978ae
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/index.ts
@@ -0,0 +1,14 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+
+export default ({ loadTestFile }: FtrProviderContext): void => {
+  describe('Detection Engine API - Large Prebuilt Rules Package', function () {
+    loadTestFile(require.resolve('./install_large_prebuilt_rules_package'));
+  });
+};
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts
similarity index 78%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts
index c047413bdb90a..e059cab5ae64b 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/install_large_prebuilt_rules_package.ts
@@ -5,18 +5,20 @@
  * 2.0.
  */
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
-import { deleteAllRules, getPrebuiltRulesAndTimelinesStatus } from '../../utils';
-import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
-import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+import {
+  deleteAllPrebuiltRuleAssets,
+  deleteAllRules,
+  getPrebuiltRulesAndTimelinesStatus,
+  installPrebuiltRulesAndTimelines,
+} from '../../../utils';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
   const log = getService('log');
 
-  describe('install_large_prebuilt_rules_package', () => {
+  describe('@ess @serverless @skipInQA install_large_prebuilt_rules_package', () => {
     beforeEach(async () => {
       await deleteAllRules(supertest, log);
       await deleteAllPrebuiltRuleAssets(es);
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
similarity index 61%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
index 63e43d962a52e..7fec27a5d9276 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
@@ -7,12 +7,16 @@
 
 import { FtrConfigProviderContext } from '@kbn/test';
 
-// eslint-disable-next-line import/no-default-export
 export default async function ({ readConfigFile }: FtrConfigProviderContext) {
-  const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
+  const functionalConfig = await readConfigFile(
+    require.resolve('../../../../../../config/ess/config.base.trial')
+  );
 
   return {
     ...functionalConfig.getAll(),
-    testFiles: [require.resolve('./update_prebuilt_rules_package.ts')],
+    testFiles: [require.resolve('..')],
+    junit: {
+      reportName: 'Detection Engine ESS / Prebuilt Rules Management API Integration Tests',
+    },
   };
 }
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
new file mode 100644
index 0000000000000..89916d26e7a73
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { createTestConfig } from '../../../../../../config/serverless/config.base';
+
+export default createTestConfig({
+  testFiles: [require.resolve('..')],
+  junit: {
+    reportName: 'Detection Engine Serverless / Prebuilt Rules Management API Integration Tests',
+  },
+});
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/fleet_integration.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/fleet_integration.ts
similarity index 79%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/fleet_integration.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/fleet_integration.ts
index 1433cb7cac2ff..0eff0a25c2cb8 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/fleet_integration.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/fleet_integration.ts
@@ -5,24 +5,23 @@
  * 2.0.
  */
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 import {
   deleteAllRules,
-  deleteAllTimelines,
   getPrebuiltRulesAndTimelinesStatus,
-} from '../../utils';
-import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
-import { installPrebuiltRulesFleetPackage } from '../../utils/prebuilt_rules/install_prebuilt_rules_fleet_package';
-import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
-import { deletePrebuiltRulesFleetPackage } from '../../utils/prebuilt_rules/delete_prebuilt_rules_fleet_package';
+  installPrebuiltRulesAndTimelines,
+} from '../../../utils';
+import { deleteAllPrebuiltRuleAssets } from '../../../utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets';
+import { deleteAllTimelines } from '../../../utils/rules/prebuilt_rules/delete_all_timelines';
+import { deletePrebuiltRulesFleetPackage } from '../../../utils/rules/prebuilt_rules/delete_prebuilt_rules_fleet_package';
+import { installPrebuiltRulesFleetPackage } from '../../../utils/rules/prebuilt_rules/install_prebuilt_rules_fleet_package';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
   const log = getService('log');
 
-  describe('install_prebuilt_rules_from_real_package', () => {
+  describe('@ess @serverless @skipInQA install_prebuilt_rules_from_real_package', () => {
     beforeEach(async () => {
       await deletePrebuiltRulesFleetPackage(supertest);
       await deleteAllRules(supertest, log);
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_rules_status.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_rules_status.ts
similarity index 96%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_rules_status.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_rules_status.ts
index ae43e3bdd5098..16dba27616947 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_rules_status.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_rules_status.ts
@@ -6,32 +6,29 @@
  */
 
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 import {
-  createRule,
+  deleteAllPrebuiltRuleAssets,
   deleteAllRules,
+  getPrebuiltRulesStatus,
+  createRule,
+  getSimpleRule,
+  createRuleAssetSavedObject,
+  createPrebuiltRuleAssetSavedObjects,
+  installPrebuiltRules,
   deleteRule,
+  upgradePrebuiltRules,
+  createHistoricalPrebuiltRuleAssetSavedObjects,
   getPrebuiltRulesAndTimelinesStatus,
-  getSimpleRule,
   installPrebuiltRulesAndTimelines,
-} from '../../utils';
-import {
-  createHistoricalPrebuiltRuleAssetSavedObjects,
-  createPrebuiltRuleAssetSavedObjects,
-  createRuleAssetSavedObject,
-} from '../../utils/prebuilt_rules/create_prebuilt_rule_saved_objects';
-import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
-import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
-import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
-import { upgradePrebuiltRules } from '../../utils/prebuilt_rules/upgrade_prebuilt_rules';
+} from '../../../utils';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const supertest = getService('supertest');
   const es = getService('es');
   const log = getService('log');
 
-  describe('Prebuilt Rules status', () => {
+  describe('@ess @serverless @skipInQA Prebuilt Rules status', () => {
     describe('get_prebuilt_rules_status', () => {
       beforeEach(async () => {
         await deleteAllPrebuiltRuleAssets(es);
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_timelines_status.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_timelines_status.ts
similarity index 88%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_timelines_status.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_timelines_status.ts
index 05b34ffa98ed7..9acef16bfbeb1 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/get_prebuilt_timelines_status.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/get_prebuilt_timelines_status.ts
@@ -6,19 +6,18 @@
  */
 
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 import {
   deleteAllTimelines,
   getPrebuiltRulesAndTimelinesStatus,
   installPrebuiltRulesAndTimelines,
-} from '../../utils';
+} from '../../../utils';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const supertest = getService('supertest');
   const es = getService('es');
 
-  describe('get_prebuilt_timelines_status', () => {
+  describe('@ess @serverless @skipInQA get_prebuilt_timelines_status', () => {
     beforeEach(async () => {
       await deleteAllTimelines(es);
     });
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/index.ts
similarity index 73%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/index.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/index.ts
index 67ae12c357351..52a745e0e7975 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/index.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/index.ts
@@ -5,11 +5,10 @@
  * 2.0.
  */
 
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ loadTestFile }: FtrProviderContext): void => {
-  describe('detection engine api security and spaces enabled - Prebuilt Rules', function () {
+  describe('Detection Engine API - Prebuilt Rules Management', function () {
     loadTestFile(require.resolve('./get_prebuilt_rules_status'));
     loadTestFile(require.resolve('./get_prebuilt_timelines_status'));
     loadTestFile(require.resolve('./install_and_upgrade_prebuilt_rules'));
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/install_and_upgrade_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/install_and_upgrade_prebuilt_rules.ts
similarity index 95%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/install_and_upgrade_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/install_and_upgrade_prebuilt_rules.ts
index 85af64415c95e..a75c8f87bd783 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/install_and_upgrade_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/install_and_upgrade_prebuilt_rules.ts
@@ -4,34 +4,30 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-
 import expect from 'expect';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 import {
   deleteAllRules,
   deleteAllTimelines,
+  deleteAllPrebuiltRuleAssets,
+  createRuleAssetSavedObject,
+  createPrebuiltRuleAssetSavedObjects,
+  installPrebuiltRulesAndTimelines,
   deleteRule,
   getPrebuiltRulesAndTimelinesStatus,
-} from '../../utils';
-import {
   createHistoricalPrebuiltRuleAssetSavedObjects,
-  createPrebuiltRuleAssetSavedObjects,
-  createRuleAssetSavedObject,
-} from '../../utils/prebuilt_rules/create_prebuilt_rule_saved_objects';
-import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
-import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
-import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
-import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
-import { upgradePrebuiltRules } from '../../utils/prebuilt_rules/upgrade_prebuilt_rules';
-import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
-
-// eslint-disable-next-line import/no-default-export
+  getPrebuiltRulesStatus,
+  installPrebuiltRules,
+  getInstalledRules,
+  upgradePrebuiltRules,
+} from '../../../utils';
+
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
   const log = getService('log');
 
-  describe('install and upgrade prebuilt rules with mock rule assets', () => {
+  describe('@ess @serverless @skipInQA install and upgrade prebuilt rules with mock rule assets', () => {
     beforeEach(async () => {
       await deleteAllRules(supertest, log);
       await deleteAllTimelines(es);
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts
similarity index 60%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts
index 2430b8f2148d9..0def0b0f17a5f 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts
@@ -7,12 +7,16 @@
 
 import { FtrConfigProviderContext } from '@kbn/test';
 
-// eslint-disable-next-line import/no-default-export
 export default async function ({ readConfigFile }: FtrConfigProviderContext) {
-  const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
+  const functionalConfig = await readConfigFile(
+    require.resolve('../../../../../../config/ess/config.base.trial')
+  );
 
   return {
     ...functionalConfig.getAll(),
-    testFiles: [require.resolve('.')],
+    testFiles: [require.resolve('..')],
+    junit: {
+      reportName: 'Detection Engine ESS / Update Prebuilt Rules Package - API Integration Tests',
+    },
   };
 }
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts
new file mode 100644
index 0000000000000..5f6716342c924
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { createTestConfig } from '../../../../../../config/serverless/config.base';
+
+export default createTestConfig({
+  testFiles: [require.resolve('..')],
+  junit: {
+    reportName:
+      'Detection Engine Serverless / Update Prebuilt Rules Package - API Integration Tests',
+  },
+});
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/index.ts
new file mode 100644
index 0000000000000..48d0fb1f1fd99
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/index.ts
@@ -0,0 +1,14 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
+
+export default ({ loadTestFile }: FtrProviderContext): void => {
+  describe('Detection Engine API - Update Prebuilt Rules Package', function () {
+    loadTestFile(require.resolve('./update_prebuilt_rules_package'));
+  });
+};
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/update_prebuilt_rules_package.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/update_prebuilt_rules_package.ts
similarity index 93%
rename from x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/update_prebuilt_rules_package.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/update_prebuilt_rules_package.ts
index 1d7939e83f9ab..981bfd7126780 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/update_prebuilt_rules_package.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/update_prebuilt_rules_package.ts
@@ -8,25 +8,23 @@ import fs from 'fs/promises';
 import path from 'path';
 import getMajorVersion from 'semver/functions/major';
 import getMinorVersion from 'semver/functions/minor';
-// @ts-expect-error we have to check types with "allowJs: false" for now, causing this import to fail
 import { REPO_ROOT } from '@kbn/repo-info';
 import JSON5 from 'json5';
 import expect from 'expect';
 import { PackageSpecManifest } from '@kbn/fleet-plugin/common';
-import { FtrProviderContext } from '../../common/ftr_provider_context';
+import { FtrProviderContext } from '../../../../../ftr_provider_context';
 import {
   deleteAllPrebuiltRuleAssets,
   deleteAllRules,
+  getInstalledRules,
   getPrebuiltRulesStatus,
   installPrebuiltRules,
+  installPrebuiltRulesPackageByVersion,
   upgradePrebuiltRules,
-} from '../../utils';
-import { reviewPrebuiltRulesToInstall } from '../../utils/prebuilt_rules/review_install_prebuilt_rules';
-import { reviewPrebuiltRulesToUpgrade } from '../../utils/prebuilt_rules/review_upgrade_prebuilt_rules';
-import { installPrebuiltRulesPackageByVersion } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
-import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
+  reviewPrebuiltRulesToInstall,
+  reviewPrebuiltRulesToUpgrade,
+} from '../../../utils';
 
-// eslint-disable-next-line import/no-default-export
 export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
   const supertest = getService('supertest');
@@ -63,7 +61,7 @@ export default ({ getService }: FtrProviderContext): void => {
     return getPackageResponse.body.item.version ?? '';
   };
 
-  describe('update_prebuilt_rules_package', () => {
+  describe('@ess @serverless @skipInQA update_prebuilt_rules_package', () => {
     before(async () => {
       const configFilePath = path.resolve(REPO_ROOT, 'fleet_packages.json');
       const fleetPackages = await fs.readFile(configFilePath, 'utf8');
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets.ts
new file mode 100644
index 0000000000000..899d5ddd7f83f
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { Client } from '@elastic/elasticsearch';
+import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server';
+
+/**
+ * Remove all prebuilt rule assets from the security solution savedObjects index
+ * @param es The ElasticSearch handle
+ */
+export const deleteAllPrebuiltRuleAssets = async (es: Client): Promise<void> => {
+  await es.deleteByQuery({
+    index: SECURITY_SOLUTION_SAVED_OBJECT_INDEX,
+    q: 'type:security-rule',
+    wait_for_completion: true,
+    refresh: true,
+    body: {},
+  });
+};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_timelines.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_timelines.ts
new file mode 100644
index 0000000000000..291cd269580b0
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_all_timelines.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { Client } from '@elastic/elasticsearch';
+import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server';
+
+/**
+ * Remove all timelines from the security solution savedObjects index
+ * @param es The ElasticSearch handle
+ */
+export const deleteAllTimelines = async (es: Client): Promise<void> => {
+  await es.deleteByQuery({
+    index: SECURITY_SOLUTION_SAVED_OBJECT_INDEX,
+    q: 'type:siem-ui-timeline',
+    wait_for_completion: true,
+    refresh: true,
+    body: {},
+  });
+};
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts
similarity index 84%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts
index 1bb596e2baeb1..1647ff301a324 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/delete_prebuilt_rules_fleet_package.ts
@@ -18,10 +18,11 @@ export async function deletePrebuiltRulesFleetPackage(
 ) {
   const resp = await supertest
     .get(epmRouteService.getInfoPath('security_detection_engine'))
-    .send()
-    .expect(200);
+    .set('kbn-xsrf', 'true')
+    .set('elastic-api-version', '2023-10-31')
+    .send();
 
-  if (resp.body.response.status === 'installed') {
+  if (resp.status === 200 && resp.body.response.status === 'installed') {
     await supertest
       .delete(
         epmRouteService.getRemovePath('security_detection_engine', resp.body.response.version)
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_installed_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_installed_rules.ts
similarity index 100%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_installed_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_installed_rules.ts
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_fleet_package.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_fleet_package.ts
new file mode 100644
index 0000000000000..ec69b6cfb14c2
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_fleet_package.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { epmRouteService } from '@kbn/fleet-plugin/common';
+import type SuperTest from 'supertest';
+
+/**
+ * Gets the security_detection_engine package using fleet API.
+ *
+ * @param supertest Supertest instance
+ * @returns The API endpoint response. Will have status 200 if package installed or 404 if not
+ */
+export async function getPrebuiltRulesFleetPackage(supertest: SuperTest.SuperTest<SuperTest.Test>) {
+  return await supertest
+    .get(epmRouteService.getInfoPath('security_detection_engine'))
+    .set('kbn-xsrf', 'true')
+    .set('elastic-api-version', '2023-10-31')
+    .send();
+}
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_status.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_status.ts
similarity index 95%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_status.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_status.ts
index db7d8553ad946..0f785f8a77453 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/get_prebuilt_rules_status.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/get_prebuilt_rules_status.ts
@@ -23,6 +23,7 @@ export const getPrebuiltRulesStatus = async (
     .get(GET_PREBUILT_RULES_STATUS_URL)
     .set('kbn-xsrf', 'true')
     .set('elastic-api-version', '1')
+    .set('x-elastic-internal-origin', 'foo')
     .send()
     .expect(200);
 
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/index.ts
index 9970b6b13eeec..fbf9ab7b36384 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/index.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/index.ts
@@ -5,6 +5,18 @@
  * 2.0.
  */
 export * from './create_prebuilt_rule_saved_objects';
+export * from './delete_all_prebuilt_rule_assets';
+export * from './delete_all_timelines';
+export * from './delete_prebuilt_rules_fleet_package';
+export * from './get_installed_rules';
 export * from './get_prebuilt_rules_and_timelines_status';
+export * from './get_prebuilt_rules_status';
+export * from './get_prebuilt_rules_fleet_package';
+export * from './install_fleet_package_by_url';
 export * from './install_mock_prebuilt_rules';
 export * from './install_prebuilt_rules_and_timelines';
+export * from './install_prebuilt_rules_fleet_package';
+export * from './install_prebuilt_rules';
+export * from './review_install_prebuilt_rules';
+export * from './review_upgrade_prebuilt_rules';
+export * from './upgrade_prebuilt_rules';
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_fleet_package_by_url.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_fleet_package_by_url.ts
similarity index 93%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_fleet_package_by_url.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_fleet_package_by_url.ts
index bccdf28906e23..259369346cc8b 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_fleet_package_by_url.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_fleet_package_by_url.ts
@@ -8,6 +8,7 @@ import type { Client } from '@elastic/elasticsearch';
 import type SuperTest from 'supertest';
 import { ALL_SAVED_OBJECT_INDICES } from '@kbn/core-saved-objects-server';
 import { InstallPackageResponse } from '@kbn/fleet-plugin/common/types';
+import { epmRouteService } from '@kbn/fleet-plugin/common';
 
 /**
  * Installs latest available non-prerelease prebuilt rules package `security_detection_engine`.
@@ -25,6 +26,7 @@ export const installPrebuiltRulesPackageViaFleetAPI = async (
   const fleetResponse = await supertest
     .post(`/api/fleet/epm/packages/security_detection_engine`)
     .set('kbn-xsrf', 'xxxx')
+    .set('elastic-api-version', '2023-10-31')
     .type('application/json')
     .send({ force: true })
     .expect(200);
@@ -63,8 +65,9 @@ export const installPrebuiltRulesPackageByVersion = async (
   version: string
 ): Promise<InstallPackageResponse> => {
   const fleetResponse = await supertest
-    .post(`/api/fleet/epm/packages/security_detection_engine/${version}`)
+    .post(epmRouteService.getInstallPath('security_detection_engine', version))
     .set('kbn-xsrf', 'xxxx')
+    .set('elastic-api-version', '2023-10-31')
     .type('application/json')
     .send({ force: true })
     .expect(200);
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_prebuilt_rules.ts
similarity index 98%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_prebuilt_rules.ts
index 52e34d67a1936..308fef271e987 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_prebuilt_rules.ts
@@ -43,6 +43,7 @@ export const installPrebuiltRules = async (
     .post(PERFORM_RULE_INSTALLATION_URL)
     .set('kbn-xsrf', 'true')
     .set('elastic-api-version', '1')
+    .set('x-elastic-internal-origin', 'foo')
     .send(payload)
     .expect(200);
 
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_prebuilt_rules_fleet_package.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_prebuilt_rules_fleet_package.ts
similarity index 100%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/install_prebuilt_rules_fleet_package.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/install_prebuilt_rules_fleet_package.ts
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_install_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_install_prebuilt_rules.ts
similarity index 95%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_install_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_install_prebuilt_rules.ts
index ff7987d776213..573b481a3b30f 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_install_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_install_prebuilt_rules.ts
@@ -22,6 +22,7 @@ export const reviewPrebuiltRulesToInstall = async (
     .post(REVIEW_RULE_INSTALLATION_URL)
     .set('kbn-xsrf', 'true')
     .set('elastic-api-version', '1')
+    .set('x-elastic-internal-origin', 'securitySolution')
     .send()
     .expect(200);
 
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_upgrade_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_upgrade_prebuilt_rules.ts
similarity index 94%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_upgrade_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_upgrade_prebuilt_rules.ts
index fdcdab5dd9ed3..9bbf980dcccca 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/review_upgrade_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/review_upgrade_prebuilt_rules.ts
@@ -22,6 +22,7 @@ export const reviewPrebuiltRulesToUpgrade = async (
     .post(REVIEW_RULE_UPGRADE_URL)
     .set('kbn-xsrf', 'true')
     .set('elastic-api-version', '1')
+    .set('x-elastic-internal-origin', 'securitySolution')
     .send()
     .expect(200);
 
diff --git a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/upgrade_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/upgrade_prebuilt_rules.ts
similarity index 98%
rename from x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/upgrade_prebuilt_rules.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/upgrade_prebuilt_rules.ts
index 1fbbe46e1e7ff..caadba2619a74 100644
--- a/x-pack/test/detection_engine_api_integration/utils/prebuilt_rules/upgrade_prebuilt_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules/upgrade_prebuilt_rules.ts
@@ -39,6 +39,7 @@ export const upgradePrebuiltRules = async (
     .post(PERFORM_RULE_UPGRADE_URL)
     .set('kbn-xsrf', 'true')
     .set('elastic-api-version', '1')
+    .set('x-elastic-internal-origin', 'foo')
     .send(payload)
     .expect(200);
 
diff --git a/x-pack/test/security_solution_api_integration/tsconfig.json b/x-pack/test/security_solution_api_integration/tsconfig.json
index 2c3b9082ac7cc..4dfd3ef6ba30d 100644
--- a/x-pack/test/security_solution_api_integration/tsconfig.json
+++ b/x-pack/test/security_solution_api_integration/tsconfig.json
@@ -31,6 +31,8 @@
     "@kbn/core",
     "@kbn/alerting-plugin",
     "@kbn/core-http-common",
-    "@kbn/securitysolution-ecs"
+    "@kbn/securitysolution-ecs",
+    "@kbn/fleet-plugin",
+    "@kbn/repo-info",
   ]
 }

From 6c5ffd2efa4d0a4523e0934ca5505f5b4fa9be2b Mon Sep 17 00:00:00 2001
From: Gerard Soldevila <gerard.soldevila@elastic.co>
Date: Fri, 10 Nov 2023 10:23:30 +0100
Subject: [PATCH 079/147] Rework `application_leave_confirm` functional tests
 (#170449)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

## Summary

Reworks https://github.com/elastic/kibana/issues/166838 for better
readability and maintainability.
Refactors `waitForUrlToBe`, moving it as part of the `browser.ts` API.

Flaky test runer pipeline - 100x ⌛

https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3879
🔴 ➡️
https://github.com/elastic/kibana/pull/170449/commits/be19f7efe4bffe9c666e68e47109e935651d5bad

https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3884
🟢
---
 test/functional/page_objects/common_page.ts   |  13 +--
 test/functional/services/common/browser.ts    |  53 ++++++++-
 .../core_plugins/application_deep_links.ts    |  39 ++-----
 .../core_plugins/application_leave_confirm.ts | 106 +++---------------
 .../test_suites/core_plugins/applications.ts  |  67 +++--------
 5 files changed, 88 insertions(+), 190 deletions(-)

diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts
index 4c71693dd4125..2c5b8bff30d47 100644
--- a/test/functional/page_objects/common_page.ts
+++ b/test/functional/page_objects/common_page.ts
@@ -417,18 +417,9 @@ export class CommonPageObject extends FtrService {
    * Clicks cancel button on modal
    * @param overlayWillStay pass in true if your test will show multiple modals in succession
    */
-  async clickCancelOnModal(overlayWillStay = true, ignorePageLeaveWarning = false) {
+  async clickCancelOnModal(overlayWillStay = true) {
     this.log.debug('Clicking modal cancel');
-    await this.testSubjects.exists('confirmModalTitleText');
-
-    await this.retry.try(async () => {
-      const warning = await this.testSubjects.exists('confirmModalTitleText');
-      if (warning) {
-        await this.testSubjects.click(
-          ignorePageLeaveWarning ? 'confirmModalConfirmButton' : 'confirmModalCancelButton'
-        );
-      }
-    });
+    await this.testSubjects.click('confirmModalCancelButton');
     if (!overlayWillStay) {
       await this.ensureModalOverlayHidden();
     }
diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts
index 0a1798442f360..4172e7087ea36 100644
--- a/test/functional/services/common/browser.ts
+++ b/test/functional/services/common/browser.ts
@@ -6,18 +6,23 @@
  * Side Public License, v 1.
  */
 
+import Url from 'url';
 import { setTimeout as setTimeoutAsync } from 'timers/promises';
 import { cloneDeepWith, isString } from 'lodash';
-import { Key, Origin, WebDriver } from 'selenium-webdriver';
+import { Key, Origin, type WebDriver } from 'selenium-webdriver';
 import { Driver as ChromiumWebDriver } from 'selenium-webdriver/chrome';
 import { modifyUrl } from '@kbn/std';
 
 import sharp from 'sharp';
 import { NoSuchSessionError } from 'selenium-webdriver/lib/error';
 import { WebElementWrapper } from '../lib/web_element_wrapper';
-import { FtrProviderContext, FtrService } from '../../ftr_provider_context';
+import { type FtrProviderContext, FtrService } from '../../ftr_provider_context';
 import { Browsers } from '../remote/browsers';
-import { NetworkOptions, NetworkProfile, NETWORK_PROFILES } from '../remote/network_profiles';
+import {
+  type NetworkOptions,
+  type NetworkProfile,
+  NETWORK_PROFILES,
+} from '../remote/network_profiles';
 
 export type Browser = BrowserService;
 
@@ -164,17 +169,53 @@ class BrowserService extends FtrService {
   /**
    * Gets the URL that is loaded in the focused window/frame.
    * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#getCurrentUrl
-   *
+   * @param relativeUrl (optional) set to true to return the relative URL (without the hostname and protocol)
    * @return {Promise<string>}
    */
-  public async getCurrentUrl() {
+  public async getCurrentUrl(relativeUrl: boolean = false): Promise<string> {
     // strip _t=Date query param when url is read
     const current = await this.driver.getCurrentUrl();
     const currentWithoutTime = modifyUrl(current, (parsed) => {
       delete (parsed.query as any)._t;
       return void 0;
     });
-    return currentWithoutTime;
+
+    if (relativeUrl) {
+      const { path } = Url.parse(currentWithoutTime);
+      return path!; // this property includes query params and anchors
+    } else {
+      return currentWithoutTime;
+    }
+  }
+
+  /**
+   * Uses the 'retry' service and waits for the current browser URL to match the provided path.
+   * NB the provided path can contain query params as well as hash anchors.
+   * Using retry logic makes URL assertions less flaky
+   * @param expectedPath The relative path that we are expecting the browser to be on
+   * @returns a Promise that will reject if the browser URL does not match the expected one
+   */
+  public async waitForUrlToBe(expectedPath: string) {
+    const retry = await this.ctx.getService('retry');
+    const log = this.ctx.getService('log');
+
+    await retry.waitForWithTimeout(`URL to be ${expectedPath}`, 5000, async () => {
+      const currentPath = await this.getCurrentUrl(true);
+
+      if (currentPath !== expectedPath) {
+        log.debug(`Expected URL to be ${expectedPath}, got ${currentPath}`);
+      }
+      return currentPath === expectedPath;
+    });
+
+    // wait some time before checking the URL again
+    await new Promise((resolve) => setTimeout(resolve, 1000));
+
+    // ensure the URL stays the same and we did not go through any redirects
+    const currentPath = await this.getCurrentUrl(true);
+    if (currentPath !== expectedPath) {
+      throw new Error(`Expected URL to continue to be ${expectedPath}, got ${currentPath}`);
+    }
   }
 
   /**
diff --git a/test/plugin_functional/test_suites/core_plugins/application_deep_links.ts b/test/plugin_functional/test_suites/core_plugins/application_deep_links.ts
index e4973b05bd955..1d326bcdfef82 100644
--- a/test/plugin_functional/test_suites/core_plugins/application_deep_links.ts
+++ b/test/plugin_functional/test_suites/core_plugins/application_deep_links.ts
@@ -6,16 +6,14 @@
  * Side Public License, v 1.
  */
 
-import url from 'url';
 import expect from '@kbn/expect';
 import type { PluginFunctionalProviderContext } from '../../services';
 
-export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) {
-  const PageObjects = getPageObjects(['common']);
+export default function ({ getService, getPageObject }: PluginFunctionalProviderContext) {
+  const common = getPageObject('common');
   const browser = getService('browser');
   const appsMenu = getService('appsMenu');
   const testSubjects = getService('testSubjects');
-  const retry = getService('retry');
   const esArchiver = getService('esArchiver');
   const log = getService('log');
 
@@ -27,25 +25,6 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
     await testSubjects.click(appLink);
   };
 
-  const getKibanaUrl = (pathname?: string, search?: string) =>
-    url.format({
-      protocol: 'http:',
-      hostname: process.env.TEST_KIBANA_HOST || 'localhost',
-      port: process.env.TEST_KIBANA_PORT || '5620',
-      pathname,
-      search,
-    });
-
-  /** Use retry logic to make URL assertions less flaky */
-  const waitForUrlToBe = (pathname?: string, search?: string) => {
-    const expectedUrl = getKibanaUrl(pathname, search);
-    return retry.waitFor(`Url to be ${expectedUrl}`, async () => {
-      const currentUrl = await browser.getCurrentUrl();
-      log?.debug(`waiting for currentUrl ${currentUrl} to be expectedUrl ${expectedUrl}`);
-      return currentUrl === expectedUrl;
-    });
-  };
-
   const loadingScreenNotShown = async () =>
     expect(await testSubjects.exists('kbnLoadingMessage')).to.be(false);
 
@@ -57,7 +36,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
   describe('application deep links navigation', function describeDeepLinksTests() {
     before(async () => {
       await esArchiver.emptyKibanaIndex();
-      await PageObjects.common.navigateToApp('dl');
+      await common.navigateToApp('dl');
     });
 
     it('should start on home page', async () => {
@@ -66,42 +45,42 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
 
     it('should navigate to page A when navlink is clicked', async () => {
       await clickAppLink('PageA');
-      await waitForUrlToBe('/app/dl/page-a');
+      await browser.waitForUrlToBe('/app/dl/page-a');
       await loadingScreenNotShown();
       await checkAppVisible('PageA');
     });
 
     it('should be able to use the back button to navigate back to previous deep link', async () => {
       await browser.goBack();
-      await waitForUrlToBe('/app/dl/home');
+      await browser.waitForUrlToBe('/app/dl/home');
       await loadingScreenNotShown();
       await checkAppVisible('Home');
     });
 
     it('should navigate to nested page B when navlink is clicked', async () => {
       await clickAppLink('DeepPageB');
-      await waitForUrlToBe('/app/dl/page-b');
+      await browser.waitForUrlToBe('/app/dl/page-b');
       await loadingScreenNotShown();
       await checkAppVisible('PageB');
     });
 
     it('should navigate to Home when navlink is clicked inside the defined category group', async () => {
       await clickAppLink('Home');
-      await waitForUrlToBe('/app/dl/home');
+      await browser.waitForUrlToBe('/app/dl/home');
       await loadingScreenNotShown();
       await checkAppVisible('Home');
     });
 
     it('should navigate to nested page B using navigateToApp path', async () => {
       await clickAppLink('DeepPageB');
-      await waitForUrlToBe('/app/dl/page-b');
+      await browser.waitForUrlToBe('/app/dl/page-b');
       await loadingScreenNotShown();
       await checkAppVisible('PageB');
     });
 
     it('should navigate to nested page A using navigateToApp deepLinkId', async () => {
       await clickAppLink('DeepPageAById');
-      await waitForUrlToBe('/app/dl/page-a');
+      await browser.waitForUrlToBe('/app/dl/page-a');
       await loadingScreenNotShown();
       await checkAppVisible('PageA');
     });
diff --git a/test/plugin_functional/test_suites/core_plugins/application_leave_confirm.ts b/test/plugin_functional/test_suites/core_plugins/application_leave_confirm.ts
index 4d0f837108b73..5ec44365f7a64 100644
--- a/test/plugin_functional/test_suites/core_plugins/application_leave_confirm.ts
+++ b/test/plugin_functional/test_suites/core_plugins/application_leave_confirm.ts
@@ -6,110 +6,34 @@
  * Side Public License, v 1.
  */
 
-import expect from '@kbn/expect';
-import url from 'url';
-import { PluginFunctionalProviderContext } from '../../services';
+import type { PluginFunctionalProviderContext } from '../../services';
 
-const getKibanaUrl = (pathname?: string, search?: string) =>
-  url.format({
-    protocol: 'http:',
-    hostname: process.env.TEST_KIBANA_HOST || 'localhost',
-    port: process.env.TEST_KIBANA_PORT || '5620',
-    pathname,
-    search,
-  });
-
-export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) {
-  const PageObjects = getPageObjects(['common', 'header']);
+export default function ({ getService, getPageObject }: PluginFunctionalProviderContext) {
+  const common = getPageObject('common');
   const browser = getService('browser');
   const appsMenu = getService('appsMenu');
-  const log = getService('log');
-  const retry = getService('retry');
   const testSubjects = getService('testSubjects');
-  const config = getService('config');
-
-  const waitForUrlToBe = async (pathname?: string, search?: string) => {
-    const expectedUrl = getKibanaUrl(pathname, search);
-    return await retry.waitFor(`Url to be ${expectedUrl}`, async () => {
-      const currentUrl = await browser.getCurrentUrl();
-      log.debug(`waiting for currentUrl ${currentUrl} to be expectedUrl ${expectedUrl}`);
-      return currentUrl === expectedUrl;
-    });
-  };
-
-  const ensureModalOpen = async (
-    defaultTryTimeout: number,
-    attempts: number,
-    timeMultiplier: number,
-    action: 'cancel' | 'confirm',
-    linkText: string = 'home'
-  ): Promise<void> => {
-    let isConfirmCancelModalOpenState = false;
-
-    await retry.tryForTime(defaultTryTimeout * timeMultiplier, async () => {
-      await appsMenu.clickLink(linkText);
-      isConfirmCancelModalOpenState = await testSubjects.exists('confirmModalTitleText', {
-        allowHidden: true,
-        timeout: defaultTryTimeout * timeMultiplier,
-      });
-    });
-    if (isConfirmCancelModalOpenState) {
-      log.debug(`defaultTryTimeout * ${timeMultiplier} is long enough`);
-      return action === 'cancel'
-        ? await PageObjects.common.clickCancelOnModal(true, false)
-        : await PageObjects.common.clickConfirmOnModal();
-    } else {
-      log.debug(`defaultTryTimeout * ${timeMultiplier} is not long enough`);
-      return await ensureModalOpen(
-        defaultTryTimeout,
-        (attempts = attempts > 0 ? attempts - 1 : 0),
-        (timeMultiplier = timeMultiplier < 10 ? timeMultiplier + 1 : 10),
-        action,
-        linkText
-      );
-    }
-  };
 
   describe('application using leave confirmation', () => {
-    const defaultTryTimeout = config.get('timeouts.try');
-    const attempts = 5;
     describe('when navigating to another app', () => {
-      const timeMultiplier = 10;
-      beforeEach(async () => {
-        await PageObjects.common.navigateToApp('home');
-      });
       it('prevents navigation if user click cancel on the confirmation dialog', async () => {
-        await PageObjects.common.navigateToApp('appleave1');
-        await PageObjects.header.waitUntilLoadingHasFinished();
-        await waitForUrlToBe('/app/appleave1');
+        await common.navigateToApp('appleave1');
+        await browser.waitForUrlToBe('/app/appleave1');
 
-        await ensureModalOpen(defaultTryTimeout, attempts, timeMultiplier, 'cancel', 'AppLeave 2');
-        await PageObjects.header.waitUntilLoadingHasFinished();
-        await retry.waitFor('navigate to appleave1', async () => {
-          const currentUrl = await browser.getCurrentUrl();
-          log.debug(`currentUrl ${currentUrl}`);
-          return currentUrl.includes('appleave1');
-        });
-        const currentUrl = await browser.getCurrentUrl();
-        expect(currentUrl).to.contain('appleave1');
-        await PageObjects.common.navigateToApp('home');
+        await appsMenu.clickLink('AppLeave 2', { category: 'kibana' });
+        await testSubjects.existOrFail('appLeaveConfirmModal');
+        await common.clickCancelOnModal(false);
+        await browser.waitForUrlToBe('/app/appleave1');
       });
 
       it('allows navigation if user click confirm on the confirmation dialog', async () => {
-        await PageObjects.common.navigateToApp('appleave1');
-        await PageObjects.header.waitUntilLoadingHasFinished();
-        await waitForUrlToBe('/app/appleave1');
+        await common.navigateToApp('appleave1');
+        await browser.waitForUrlToBe('/app/appleave1');
 
-        await ensureModalOpen(defaultTryTimeout, attempts, timeMultiplier, 'confirm', 'AppLeave 2');
-        await PageObjects.header.waitUntilLoadingHasFinished();
-        await retry.waitFor('navigate to appleave1', async () => {
-          const currentUrl = await browser.getCurrentUrl();
-          log.debug(`currentUrl ${currentUrl}`);
-          return currentUrl.includes('appleave2');
-        });
-        const currentUrl = await browser.getCurrentUrl();
-        expect(currentUrl).to.contain('appleave2');
-        await PageObjects.common.navigateToApp('home');
+        await appsMenu.clickLink('AppLeave 2', { category: 'kibana' });
+        await testSubjects.existOrFail('appLeaveConfirmModal');
+        await common.clickConfirmOnModal();
+        await browser.waitForUrlToBe('/app/appleave2');
       });
     });
   });
diff --git a/test/plugin_functional/test_suites/core_plugins/applications.ts b/test/plugin_functional/test_suites/core_plugins/applications.ts
index b780ef125b71b..862cb6acfb6df 100644
--- a/test/plugin_functional/test_suites/core_plugins/applications.ts
+++ b/test/plugin_functional/test_suites/core_plugins/applications.ts
@@ -6,24 +6,17 @@
  * Side Public License, v 1.
  */
 
-import url from 'url';
 import expect from '@kbn/expect';
 import { PluginFunctionalProviderContext } from '../../services';
 
-export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) {
-  const PageObjects = getPageObjects(['common', 'header']);
+export default function ({ getService, getPageObject }: PluginFunctionalProviderContext) {
+  const common = getPageObject('common');
   const browser = getService('browser');
   const appsMenu = getService('appsMenu');
   const testSubjects = getService('testSubjects');
   const find = getService('find');
-  const retry = getService('retry');
   const deployment = getService('deployment');
   const esArchiver = getService('esArchiver');
-  const log = getService('log');
-
-  function waitUntilLoadingIsDone() {
-    return PageObjects.header.waitUntilLoadingHasFinished();
-  }
 
   const loadingScreenNotShown = async () =>
     expect(await testSubjects.exists('kbnLoadingMessage')).to.be(false);
@@ -33,33 +26,6 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
     return (await wrapper.getSize()).height;
   };
 
-  const getKibanaUrl = (pathname?: string, search?: string) =>
-    url.format({
-      protocol: 'http:',
-      hostname: process.env.TEST_KIBANA_HOST || 'localhost',
-      port: process.env.TEST_KIBANA_PORT || '5620',
-      pathname,
-      search,
-    });
-
-  async function navigateToAppFromAppsMenu(title: string) {
-    await retry.try(async () => {
-      await appsMenu.clickLink(title);
-      await waitUntilLoadingIsDone();
-    });
-  }
-
-  /** Use retry logic to make URL assertions less flaky */
-  const waitForUrlToBe = (pathname?: string, search?: string) => {
-    const expectedUrl = getKibanaUrl(pathname, search);
-    return retry.waitFor(`Url to be ${expectedUrl}`, async () => {
-      const currentUrl = await browser.getCurrentUrl();
-      if (currentUrl !== expectedUrl)
-        log.debug(`expected url to be ${expectedUrl}, got ${currentUrl}`);
-      return currentUrl === expectedUrl;
-    });
-  };
-
   const navigateTo = async (path: string) =>
     await browser.navigateTo(`${deployment.getHostPort()}${path}`);
 
@@ -67,8 +33,8 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
   describe.skip('ui applications', function describeIndexTests() {
     before(async () => {
       await esArchiver.emptyKibanaIndex();
-      await PageObjects.common.navigateToApp('foo');
-      await PageObjects.common.dismissBanner();
+      await common.navigateToApp('foo');
+      await common.dismissBanner();
     });
 
     it('starts on home page', async () => {
@@ -77,40 +43,37 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
 
     it('redirects and renders correctly regardless of trailing slash', async () => {
       await navigateTo(`/app/foo`);
-      await waitForUrlToBe('/app/foo/home');
+      await browser.waitForUrlToBe('/app/foo/home');
       await testSubjects.existOrFail('fooAppHome');
       await navigateTo(`/app/foo/`);
-      await waitForUrlToBe('/app/foo/home');
+      await browser.waitForUrlToBe('/app/foo/home');
       await testSubjects.existOrFail('fooAppHome');
     });
 
     it('navigates to its own pages', async () => {
       // Go to page A
       await testSubjects.click('fooNavPageA');
-      await waitForUrlToBe('/app/foo/page-a');
+      await browser.waitForUrlToBe('/app/foo/page-a');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('fooAppPageA');
 
       // Go to home page
       await testSubjects.click('fooNavHome');
-      await waitForUrlToBe('/app/foo/home');
+      await browser.waitForUrlToBe('/app/foo/home');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('fooAppHome');
     });
 
     it('can use the back button to navigate within an app', async () => {
       await browser.goBack();
-      await waitForUrlToBe('/app/foo/page-a');
+      await browser.waitForUrlToBe('/app/foo/page-a');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('fooAppPageA');
     });
 
     it('navigates to app root when navlink is clicked', async () => {
-      await testSubjects.click('fooNavHome');
-
-      navigateToAppFromAppsMenu('Foo');
-
-      await waitForUrlToBe('/app/foo/home');
+      await appsMenu.clickLink('Foo', { category: 'kibana' });
+      await browser.waitForUrlToBe('/app/foo/home');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('fooAppHome');
     });
@@ -119,7 +82,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
       await testSubjects.click('fooNavBarPageB');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('barAppPageB');
-      await waitForUrlToBe('/app/bar/page-b', 'query=here');
+      await browser.waitForUrlToBe('/app/bar/page-b?query=here');
     });
 
     it('preserves query parameters across apps', async () => {
@@ -129,7 +92,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
 
     it('can use the back button to navigate back to previous app', async () => {
       await browser.goBack();
-      await waitForUrlToBe('/app/foo/home');
+      await browser.waitForUrlToBe('/app/foo/home');
       await loadingScreenNotShown();
       await testSubjects.existOrFail('fooAppHome');
     });
@@ -139,7 +102,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
     });
 
     it('navigating to chromeless application hides chrome', async () => {
-      await PageObjects.common.navigateToApp('chromeless');
+      await common.navigateToApp('chromeless');
       await loadingScreenNotShown();
       expect(await testSubjects.exists('headerGlobalNav')).to.be(false);
 
@@ -149,7 +112,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide
     });
 
     it('navigating away from chromeless application shows chrome', async () => {
-      await PageObjects.common.navigateToApp('foo');
+      await common.navigateToApp('foo');
       await loadingScreenNotShown();
       expect(await testSubjects.exists('headerGlobalNav')).to.be(true);
 

From cc2f8866699592d6506ad192eab76fe21f021cf8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cau=C3=AA=20Marcondes?=
 <55978943+cauemarcondes@users.noreply.github.com>
Date: Fri, 10 Nov 2023 11:28:37 +0000
Subject: [PATCH 080/147] [Profiling] ES client (#170844)

We should use the Profiling ES credential when it's provided.

That should not be a problem for production clusters, as the settings
are never set.
---
 .../profiling_data_access/server/services/setup_state/index.ts  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x-pack/plugins/profiling_data_access/server/services/setup_state/index.ts b/x-pack/plugins/profiling_data_access/server/services/setup_state/index.ts
index d11668e1af6e9..6e1b62b28f85d 100644
--- a/x-pack/plugins/profiling_data_access/server/services/setup_state/index.ts
+++ b/x-pack/plugins/profiling_data_access/server/services/setup_state/index.ts
@@ -28,7 +28,7 @@ export async function getSetupState({
 }: RegisterServicesParams & SetupStateParams): Promise<CloudSetupStateType | SetupStateType> {
   const kibanaInternalProfilingESClient = createProfilingEsClient({
     esClient: esClient.asInternalUser,
-    useDefaultAuth: true,
+    useDefaultAuth: false,
   });
   const profilingESClient = createProfilingEsClient({
     esClient: esClient.asCurrentUser,

From 0ddbfc0bba8442faa4820f3fb5893fdf469dee09 Mon Sep 17 00:00:00 2001
From: Gloria Hornero <gloria.hornero@elastic.co>
Date: Fri, 10 Nov 2023 12:32:53 +0100
Subject: [PATCH 081/147] [Security Solution] Unskips and fixes
 `detection_response` tests (#170937)

---
 .../dasbhoards/detection_response.cy.ts       | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/dasbhoards/detection_response.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/dasbhoards/detection_response.cy.ts
index 694209bbc8b22..e19e4ca043b3c 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/dasbhoards/detection_response.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/dasbhoards/detection_response.cy.ts
@@ -31,6 +31,7 @@ import {
 import { QUERY_TAB_BUTTON, TIMELINE_DATA_PROVIDERS_CONTAINER } from '../../../screens/timeline';
 import { waitForAlerts } from '../../../tasks/alerts';
 import { createRule } from '../../../tasks/api_calls/rules';
+import { deleteAlertsAndRules } from '../../../tasks/common';
 import { investigateDashboardItemInTimeline } from '../../../tasks/dashboards/common';
 import { waitToNavigateAwayFrom } from '../../../tasks/kibana_navigation';
 import { login } from '../../../tasks/login';
@@ -42,10 +43,10 @@ import { ALERTS_URL, DASHBOARDS_URL, DETECTION_AND_RESPONSE_URL } from '../../..
 const TEST_USER_NAME = 'test';
 const SIEM_KIBANA_HOST_NAME = 'siem-kibana';
 
-// FLAKY: https://github.com/elastic/kibana/issues/168772
-// FLAKY: https://github.com/elastic/kibana/issues/168771
-describe.skip('Detection response view', { tags: ['@ess', '@serverless'] }, () => {
+describe('Detection response view', { tags: ['@ess', '@serverless'] }, () => {
   before(() => {
+    deleteAlertsAndRules();
+    cy.task('esArchiverLoad', { archiveName: 'auditbeat_multiple' });
     createRule(getNewRule());
   });
 
@@ -67,8 +68,8 @@ describe.skip('Detection response view', { tags: ['@ess', '@serverless'] }, () =
       kqlSearch(`host.name : ${SIEM_KIBANA_HOST_NAME}{enter}`);
 
       cy.get(HOST_TABLE_ROW_TOTAL_ALERTS).should('have.length', 1);
-      cy.get(RULE_TABLE_ROW_TOTAL_ALERTS).should('have.text', 2);
-      cy.get(ALERTS_DONUT_CHART).first().should('include.text', '2Open');
+      cy.get(RULE_TABLE_ROW_TOTAL_ALERTS).should('have.text', 1);
+      cy.get(ALERTS_DONUT_CHART).first().should('include.text', '1Open');
     });
 
     it(`filters out the users with KQL search bar query`, () => {
@@ -83,8 +84,8 @@ describe.skip('Detection response view', { tags: ['@ess', '@serverless'] }, () =
       kqlSearch(`user.name : ${TEST_USER_NAME}{enter}`);
 
       cy.get(USER_TABLE_ROW_TOTAL_ALERTS).should('have.length', 1);
-      cy.get(RULE_TABLE_ROW_TOTAL_ALERTS).should('have.text', 2);
-      cy.get(ALERTS_DONUT_CHART).first().should('include.text', '2Open');
+      cy.get(RULE_TABLE_ROW_TOTAL_ALERTS).should('have.text', 1);
+      cy.get(ALERTS_DONUT_CHART).first().should('include.text', '1Open');
     });
   });
 
@@ -229,7 +230,7 @@ describe.skip('Detection response view', { tags: ['@ess', '@serverless'] }, () =
                 expect(url.pathname.endsWith(ALERTS_URL)).eq(true);
               });
               waitForAlerts();
-              cy.get(ALERTS_COUNT).should('be.visible').should('have.text', `${alertCount} alerts`);
+              cy.get(ALERTS_COUNT).should('be.visible').should('have.text', `${alertCount} alert`);
               cy.get(CONTROL_FRAMES).should('have.length', 2);
               cy.get(OPTION_LIST_LABELS).eq(0).should('have.text', `Status`);
               cy.get(OPTION_LIST_VALUES(0)).should('have.text', 'open1');
@@ -254,7 +255,7 @@ describe.skip('Detection response view', { tags: ['@ess', '@serverless'] }, () =
               cy.get(USER_TABLE_ROW_SEV(severityVal)).click();
               waitToNavigateAwayFrom(DASHBOARDS_URL);
               waitForAlerts();
-              cy.get(ALERTS_COUNT).should('be.visible').should('have.text', `${alertCount} alerts`);
+              cy.get(ALERTS_COUNT).should('be.visible').should('have.text', `${alertCount} alert`);
               cy.get(CONTROL_FRAMES).should('have.length', 3);
               cy.get(OPTION_LIST_LABELS).eq(0).should('have.text', `Status`);
               cy.get(OPTION_LIST_VALUES(0)).should('have.text', 'open1');

From 7a6d009002a4c8e8284f4400fc3cde55eaf6a186 Mon Sep 17 00:00:00 2001
From: Ignacio Rivas <rivasign@gmail.com>
Date: Fri, 10 Nov 2023 12:52:53 +0100
Subject: [PATCH 082/147] [Index management] Unskip flaky enrich policies test
 (#171006)

---
 .../common/management/index_management/create_enrich_policy.ts  | 2 --
 1 file changed, 2 deletions(-)

diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
index b3e248ea82de4..f5b51c815e0fe 100644
--- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
+++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
@@ -20,8 +20,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
   const POLICY_NAME = `policy-${Math.random()}`;
 
   describe('Create enrich policy', function () {
-    // TimeoutError: Waiting for element to be located By(css selector, [data-test-subj="enrichPoliciesEmptyPromptCreateButton"])
-    this.tags(['failsOnMKI']);
     before(async () => {
       log.debug('Creating test index');
       try {

From 875268d55888b598bb765bd7d4adc3527d671de2 Mon Sep 17 00:00:00 2001
From: Dima Arnautov <dmitrii.arnautov@elastic.co>
Date: Fri, 10 Nov 2023 13:07:04 +0100
Subject: [PATCH 083/147] [ML] Show alerts data on the Anomaly timeline
 (#167998)

## Summary

With alerts-as-data integration added in
https://github.com/elastic/kibana/pull/166349, we're enabled to
incorporate alerts historical data into views in the ML UI to see how it
correlates with the anomaly results.

This PR add alerts data to the Anomaly Explorer page. If selected
anomaly detection jobs have associated alerting rules, we show a new
"Alerts" panel.
It contains:

<img width="1675" alt="image"
src="https://github.com/elastic/kibana/assets/5236598/1945d1f1-7f12-4a03-8ebd-e0b36c8fce68">

#### A line chart with alerts count over time using the Lens embeddable

It support sync cursor with the Anomaly swim lane making it easier to
align anomalous buckets with alerts spikes.

<img width="1189" alt="image"
src="https://github.com/elastic/kibana/assets/5236598/343b9bcf-bfa4-479d-bf8f-c1572402aa42">

#### Summary of the alerting rules
Shows an aggregated information for each alerting rule associated with
the current job selection:
  - An indicator if alerting rule is active
  - Total number of alerts
  - Duration of the latest alerts
  - Start time for active rules and Recovery time for recovered

Rules summary has a descending order based on the following criteria:

- Number of active alerts in rule
- Total number of alerts in rule
- Duration of the most recent alert in rule

<img width="1032" alt="image"
src="https://github.com/elastic/kibana/assets/5236598/899f37f3-dd8c-4cb6-b7f6-263ed86d20ee">

#### Alert details

It contains an alerts table provided by `triggersActionsUI` plugin. For
each alert the user can:
- Open alerts details page
- Attach an alert to a new case
- Attach n alert to an existing case

<img width="1177" alt="image"
src="https://github.com/elastic/kibana/assets/5236598/d3b7768a-bae2-404f-b364-ff7d7493cb9b">


#### Alert context menu

When an anomaly swim lane cells are selected, and there are alerts
within the chosen time range, a context menu displaying alert details is
shown.

<img width="1202" alt="image"
src="https://github.com/elastic/kibana/assets/5236598/2b684c51-db5a-4f8c-bda9-c3e9aabde0d4">


### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [x] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [x] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)
---
 .../src/alerts_as_data_rbac.ts                |   1 +
 .../src/default_alerts_as_data.ts             |   2 +-
 x-pack/plugins/ml/common/constants/alerts.ts  |  39 +++
 .../alert_actions.tsx                         | 228 ++++++++++++++
 .../anomaly_detection_alerts_table/index.ts   |   8 +
 .../register_alerts_table_configuration.tsx   | 149 ++++++++++
 .../render_cell_value.tsx                     | 115 +++++++
 .../use_alerts_flyout.tsx                     |  52 ++++
 .../ml/public/alerting/register_ml_alerts.ts  |   9 +
 .../components/chart_tooltip/index.ts         |   2 +-
 .../collapsible_panel/collapsible_panel.tsx   |  24 +-
 .../components/collapsible_panel/index.ts     |   1 +
 .../collapsible_panel/panel_header_items.tsx  |  45 +++
 .../contexts/kibana/kibana_context.ts         |   4 +-
 .../contexts/kibana/use_field_formatter.ts    |  26 +-
 .../explorer/alerts/alerts_panel.tsx          | 118 ++++++++
 .../explorer/alerts/alerts_summary.tsx        | 128 ++++++++
 .../anomaly_detection_alerts_state_service.ts | 226 ++++++++++++++
 .../application/explorer/alerts/chart.tsx     | 189 ++++++++++++
 .../application/explorer/alerts/const.ts      |  31 ++
 .../alerts/get_alerts_summary.test.ts         | 128 ++++++++
 .../explorer/alerts/get_alerts_summary.ts     |  60 ++++
 .../application/explorer/alerts/index.ts      |  11 +
 .../explorer/alerts/swim_lane_wrapper.tsx     | 281 ++++++++++++++++++
 .../explorer/annotation_timeline.tsx          | 184 ++++++++++++
 .../explorer/anomaly_explorer_context.tsx     |  11 +
 .../application/explorer/anomaly_timeline.tsx |  52 ++--
 .../anomaly_timeline_state_service.ts         |  54 ++++
 .../public/application/explorer/explorer.tsx  |  13 +-
 .../explorer/swimlane_container.tsx           |   2 +-
 x-pack/plugins/ml/public/plugin.ts            |  11 +-
 .../ml/server/lib/alerts/alerting_service.ts  |  14 +-
 .../register_anomaly_detection_alert_type.ts  |  27 +-
 x-pack/plugins/ml/tsconfig.json               |   2 +
 34 files changed, 2168 insertions(+), 79 deletions(-)
 create mode 100644 x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/alert_actions.tsx
 create mode 100644 x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/index.ts
 create mode 100644 x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/register_alerts_table_configuration.tsx
 create mode 100644 x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/render_cell_value.tsx
 create mode 100644 x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/use_alerts_flyout.tsx
 create mode 100644 x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/alerts_panel.tsx
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/alerts_summary.tsx
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/anomaly_detection_alerts_state_service.ts
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/chart.tsx
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/const.ts
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.test.ts
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.ts
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/index.ts
 create mode 100644 x-pack/plugins/ml/public/application/explorer/alerts/swim_lane_wrapper.tsx
 create mode 100644 x-pack/plugins/ml/public/application/explorer/annotation_timeline.tsx

diff --git a/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts b/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts
index 06fe06c63b4b9..0427570b1cbc6 100644
--- a/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts
+++ b/packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts
@@ -23,6 +23,7 @@ export const AlertConsumers = {
   SLO: 'slo',
   SIEM: 'siem',
   UPTIME: 'uptime',
+  ML: 'ml',
 } as const;
 export type AlertConsumers = typeof AlertConsumers[keyof typeof AlertConsumers];
 export type STATUS_VALUES = 'open' | 'acknowledged' | 'closed' | 'in-progress'; // TODO: remove 'in-progress' after migration to 'acknowledged'
diff --git a/packages/kbn-rule-data-utils/src/default_alerts_as_data.ts b/packages/kbn-rule-data-utils/src/default_alerts_as_data.ts
index 3b2ea148591dc..d1aec24a9b26e 100644
--- a/packages/kbn-rule-data-utils/src/default_alerts_as_data.ts
+++ b/packages/kbn-rule-data-utils/src/default_alerts_as_data.ts
@@ -27,7 +27,7 @@ const ALERT_ACTION_GROUP = `${ALERT_NAMESPACE}.action_group` as const;
 // kibana.alert.case_ids - array of cases associated with the alert
 const ALERT_CASE_IDS = `${ALERT_NAMESPACE}.case_ids` as const;
 
-// kibana.alert.duration.us - alert duration in nanoseconds - updated each execution
+// kibana.alert.duration.us - alert duration in microseconds - updated each execution
 // that the alert is active
 const ALERT_DURATION = `${ALERT_NAMESPACE}.duration.us` as const;
 
diff --git a/x-pack/plugins/ml/common/constants/alerts.ts b/x-pack/plugins/ml/common/constants/alerts.ts
index 1b373b2ec435b..4582f06b214b6 100644
--- a/x-pack/plugins/ml/common/constants/alerts.ts
+++ b/x-pack/plugins/ml/common/constants/alerts.ts
@@ -6,6 +6,13 @@
  */
 
 import { i18n } from '@kbn/i18n';
+import {
+  ALERT_DURATION,
+  ALERT_NAMESPACE,
+  ALERT_RULE_NAME,
+  ALERT_START,
+  ALERT_STATUS,
+} from '@kbn/rule-data-utils';
 import { JobsHealthTests } from '../types/alerts';
 
 export const ML_ALERT_TYPES = {
@@ -75,3 +82,35 @@ export const HEALTH_CHECK_NAMES: Record<JobsHealthTests, { name: string; descrip
     ),
   },
 };
+
+const ML_ALERT_NAMESPACE = ALERT_NAMESPACE;
+export const ALERT_ANOMALY_TIMESTAMP = `${ML_ALERT_NAMESPACE}.anomaly_timestamp` as const;
+export const ALERT_ANOMALY_DETECTION_JOB_ID = `${ML_ALERT_NAMESPACE}.job_id` as const;
+export const ALERT_ANOMALY_SCORE = `${ML_ALERT_NAMESPACE}.anomaly_score` as const;
+export const ALERT_ANOMALY_IS_INTERIM = `${ML_ALERT_NAMESPACE}.is_interim` as const;
+export const ALERT_TOP_RECORDS = `${ML_ALERT_NAMESPACE}.top_records` as const;
+export const ALERT_TOP_INFLUENCERS = `${ML_ALERT_NAMESPACE}.top_influencers` as const;
+
+export const alertFieldNameMap = Object.freeze<Record<string, string>>({
+  [ALERT_RULE_NAME]: i18n.translate('xpack.ml.alertsTable.columns.ruleName', {
+    defaultMessage: 'Rule name',
+  }),
+  [ALERT_STATUS]: i18n.translate('xpack.ml.alertsTable.columns.status', {
+    defaultMessage: 'Status',
+  }),
+  [ALERT_ANOMALY_DETECTION_JOB_ID]: i18n.translate('xpack.ml.alertsTable.columns.jobId', {
+    defaultMessage: 'Job ID',
+  }),
+  [ALERT_ANOMALY_SCORE]: i18n.translate('xpack.ml.alertsTable.columns.anomalyScore', {
+    defaultMessage: 'Latest anomaly score',
+  }),
+  [ALERT_ANOMALY_TIMESTAMP]: i18n.translate('xpack.ml.alertsTable.columns.anomalyTime', {
+    defaultMessage: 'Latest anomaly time',
+  }),
+  [ALERT_DURATION]: i18n.translate('xpack.ml.alertsTable.columns.duration', {
+    defaultMessage: 'Duration',
+  }),
+  [ALERT_START]: i18n.translate('xpack.ml.alertsTable.columns.start', {
+    defaultMessage: 'Start time',
+  }),
+});
diff --git a/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/alert_actions.tsx b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/alert_actions.tsx
new file mode 100644
index 0000000000000..e0206043d5442
--- /dev/null
+++ b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/alert_actions.tsx
@@ -0,0 +1,228 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  EuiButtonIcon,
+  EuiContextMenuItem,
+  EuiContextMenuPanel,
+  EuiPopover,
+  EuiToolTip,
+} from '@elastic/eui';
+
+import React, { useCallback, useMemo, useState } from 'react';
+import { i18n } from '@kbn/i18n';
+import { CaseAttachmentsWithoutOwner } from '@kbn/cases-plugin/public';
+import { AttachmentType } from '@kbn/cases-plugin/common';
+import { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs';
+import {
+  ALERT_RULE_NAME,
+  ALERT_RULE_UUID,
+  ALERT_STATUS,
+  ALERT_STATUS_ACTIVE,
+  ALERT_UUID,
+} from '@kbn/rule-data-utils';
+import { useBulkUntrackAlerts } from '@kbn/triggers-actions-ui-plugin/public';
+import { type Alert } from '@kbn/triggers-actions-ui-plugin/public/types';
+import { PLUGIN_ID } from '../../../common/constants/app';
+import { useMlKibana } from '../../application/contexts/kibana';
+
+export interface AlertActionsProps {
+  alert: Alert;
+  ecsData: Ecs;
+  id?: string;
+  refresh: () => void;
+  setFlyoutAlert: React.Dispatch<React.SetStateAction<any | undefined>>;
+}
+
+const CASES_ACTIONS_ENABLED = false;
+
+export function AlertActions({
+  alert,
+  ecsData,
+  id: pageId,
+  refresh,
+  setFlyoutAlert,
+}: AlertActionsProps) {
+  const alertDoc = Object.entries(alert).reduce((acc, [key, val]) => {
+    return { ...acc, [key]: val?.[0] };
+  }, {});
+
+  const {
+    cases,
+    http: {
+      basePath: { prepend },
+    },
+  } = useMlKibana().services;
+  const casesPrivileges = cases?.helpers.canUseCases();
+
+  const { mutateAsync: untrackAlerts } = useBulkUntrackAlerts();
+
+  const [isPopoverOpen, setIsPopoverOpen] = useState<boolean>(false);
+
+  const ruleId = alert[ALERT_RULE_UUID]?.[0] ?? null;
+  const alertId = alert[ALERT_UUID]?.[0] ?? '';
+
+  const linkToRule = ruleId
+    ? prepend(`/app/management/insightsAndAlerting/triggersActions/rule/${ruleId}`)
+    : null;
+
+  const caseAttachments: CaseAttachmentsWithoutOwner = useMemo(() => {
+    return ecsData?._id
+      ? [
+          {
+            alertId: alertId ?? '',
+            index: ecsData?._index ?? '',
+            type: AttachmentType.alert,
+            rule: {
+              id: ruleId,
+              name: alert[ALERT_RULE_NAME]![0],
+            },
+            owner: PLUGIN_ID,
+          },
+        ]
+      : [];
+  }, [alert, alertId, ecsData?._id, ecsData?._index, ruleId]);
+
+  const isActiveAlert = useMemo(() => alert[ALERT_STATUS]![0] === ALERT_STATUS_ACTIVE, [alert]);
+
+  const onSuccess = useCallback(() => {
+    refresh();
+  }, [refresh]);
+
+  const createCaseFlyout = cases!.hooks.useCasesAddToNewCaseFlyout({ onSuccess });
+  const selectCaseModal = cases!.hooks.useCasesAddToExistingCaseModal({ onSuccess });
+
+  const closeActionsPopover = () => {
+    setIsPopoverOpen(false);
+  };
+
+  const toggleActionsPopover = () => {
+    setIsPopoverOpen(!isPopoverOpen);
+  };
+
+  const handleAddToNewCaseClick = () => {
+    createCaseFlyout.open({ attachments: caseAttachments });
+    closeActionsPopover();
+  };
+
+  const handleAddToExistingCaseClick = () => {
+    selectCaseModal.open({ getAttachments: () => caseAttachments });
+    closeActionsPopover();
+  };
+
+  const handleUntrackAlert = useCallback(async () => {
+    await untrackAlerts({
+      indices: [ecsData?._index ?? ''],
+      alertUuids: [alertId],
+    });
+    onSuccess();
+  }, [untrackAlerts, alertId, ecsData, onSuccess]);
+
+  const actionsMenuItems = [
+    ...(CASES_ACTIONS_ENABLED && casesPrivileges?.create && casesPrivileges.read
+      ? [
+          <EuiContextMenuItem
+            data-test-subj="add-to-existing-case-action"
+            key="addToExistingCase"
+            onClick={handleAddToExistingCaseClick}
+            size="s"
+          >
+            {i18n.translate('xpack.ml.alerts.actions.addToCase', {
+              defaultMessage: 'Add to existing case',
+            })}
+          </EuiContextMenuItem>,
+          <EuiContextMenuItem
+            data-test-subj="add-to-new-case-action"
+            key="addToNewCase"
+            onClick={handleAddToNewCaseClick}
+            size="s"
+          >
+            {i18n.translate('xpack.ml.alerts.actions.addToNewCase', {
+              defaultMessage: 'Add to new case',
+            })}
+          </EuiContextMenuItem>,
+        ]
+      : []),
+    ...(linkToRule
+      ? [
+          <EuiContextMenuItem
+            data-test-subj="viewRuleDetails"
+            key="viewRuleDetails"
+            href={linkToRule}
+          >
+            {i18n.translate('xpack.ml.alertsTable.viewRuleDetailsButtonText', {
+              defaultMessage: 'View rule details',
+            })}
+          </EuiContextMenuItem>,
+        ]
+      : []),
+    <EuiContextMenuItem
+      data-test-subj="viewAlertDetailsFlyout"
+      key="viewAlertDetailsFlyout"
+      onClick={() => {
+        closeActionsPopover();
+        setFlyoutAlert({ fields: alertDoc });
+      }}
+    >
+      {i18n.translate('xpack.ml.alertsTable.viewAlertDetailsButtonText', {
+        defaultMessage: 'View alert details',
+      })}
+    </EuiContextMenuItem>,
+    ...(isActiveAlert
+      ? [
+          <EuiContextMenuItem
+            data-test-subj="untrackAlert"
+            key="untrackAlert"
+            onClick={handleUntrackAlert}
+          >
+            {i18n.translate('xpack.ml.alerts.actions.untrack', {
+              defaultMessage: 'Mark as untracked',
+            })}
+          </EuiContextMenuItem>,
+        ]
+      : []),
+  ];
+
+  const actionsToolTip =
+    actionsMenuItems.length <= 0
+      ? i18n.translate('xpack.ml.alertsTable.notEnoughPermissions', {
+          defaultMessage: 'Additional privileges required',
+        })
+      : i18n.translate('xpack.ml.alertsTable.moreActionsTextLabel', {
+          defaultMessage: 'More actions',
+        });
+
+  return (
+    <>
+      <EuiPopover
+        anchorPosition="downLeft"
+        button={
+          <EuiToolTip content={actionsToolTip}>
+            <EuiButtonIcon
+              aria-label={actionsToolTip}
+              color="text"
+              data-test-subj="alertsTableRowActionMore"
+              display="empty"
+              iconType="boxesHorizontal"
+              onClick={toggleActionsPopover}
+              size="s"
+            />
+          </EuiToolTip>
+        }
+        closePopover={closeActionsPopover}
+        isOpen={isPopoverOpen}
+        panelPaddingSize="none"
+      >
+        <EuiContextMenuPanel
+          size="s"
+          items={actionsMenuItems}
+          data-test-subj="alertsTableActionsMenu"
+        />
+      </EuiPopover>
+    </>
+  );
+}
diff --git a/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/index.ts b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/index.ts
new file mode 100644
index 0000000000000..c44f579efe6dc
--- /dev/null
+++ b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/index.ts
@@ -0,0 +1,8 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export { registerAlertsTableConfiguration } from './register_alerts_table_configuration';
diff --git a/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/register_alerts_table_configuration.tsx b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/register_alerts_table_configuration.tsx
new file mode 100644
index 0000000000000..709bfdf188627
--- /dev/null
+++ b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/register_alerts_table_configuration.tsx
@@ -0,0 +1,149 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { i18n } from '@kbn/i18n';
+import { type TriggersAndActionsUIPublicPluginSetup } from '@kbn/triggers-actions-ui-plugin/public';
+import type {
+  AlertsTableConfigurationRegistry,
+  RenderCustomActionsRowArgs,
+} from '@kbn/triggers-actions-ui-plugin/public/types';
+import { EuiDataGridColumn } from '@elastic/eui';
+import { SortCombinations } from '@elastic/elasticsearch/lib/api/types';
+import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import {
+  ALERT_DURATION,
+  ALERT_END,
+  ALERT_REASON,
+  ALERT_RULE_NAME,
+  ALERT_START,
+  ALERT_STATUS,
+} from '@kbn/rule-data-utils';
+import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common';
+import { getAlertFlyout } from './use_alerts_flyout';
+import {
+  ALERT_ANOMALY_DETECTION_JOB_ID,
+  ALERT_ANOMALY_SCORE,
+  ALERT_ANOMALY_TIMESTAMP,
+} from '../../../common/constants/alerts';
+import { getAlertFormatters, getRenderCellValue } from './render_cell_value';
+import { AlertActions } from './alert_actions';
+
+export function registerAlertsTableConfiguration(
+  triggersActionsUi: TriggersAndActionsUIPublicPluginSetup,
+  fieldFormats: FieldFormatsRegistry
+) {
+  const columns: EuiDataGridColumn[] = [
+    {
+      id: ALERT_STATUS,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.status', {
+        defaultMessage: 'Status',
+      }),
+      initialWidth: 150,
+    },
+    {
+      id: ALERT_REASON,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.reason', {
+        defaultMessage: 'Reason',
+      }),
+      initialWidth: 150,
+    },
+    {
+      id: ALERT_RULE_NAME,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.ruleName', {
+        defaultMessage: 'Rule name',
+      }),
+      initialWidth: 150,
+    },
+    {
+      id: ALERT_ANOMALY_DETECTION_JOB_ID,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.jobId', {
+        defaultMessage: 'Job ID',
+      }),
+      initialWidth: 150,
+    },
+    {
+      id: ALERT_ANOMALY_SCORE,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.anomalyScore', {
+        defaultMessage: 'Latest anomaly score',
+      }),
+      initialWidth: 150,
+      isSortable: true,
+      schema: 'numeric',
+    },
+    {
+      id: ALERT_START,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.triggeredAt', {
+        defaultMessage: 'Triggered at',
+      }),
+      initialWidth: 250,
+      schema: 'datetime',
+    },
+    {
+      id: ALERT_END,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.recoveredAt', {
+        defaultMessage: 'Recovered at',
+      }),
+      initialWidth: 250,
+      schema: 'datetime',
+    },
+    {
+      id: ALERT_ANOMALY_TIMESTAMP,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.anomalyTime', {
+        defaultMessage: 'Latest anomaly time',
+      }),
+      initialWidth: 250,
+      schema: 'datetime',
+    },
+    {
+      id: ALERT_DURATION,
+      displayAsText: i18n.translate('xpack.ml.alertsTable.columns.duration', {
+        defaultMessage: 'Duration',
+      }),
+      initialWidth: 150,
+      schema: 'numeric',
+    },
+  ];
+
+  const sort: SortCombinations[] = [
+    {
+      [ALERT_START]: {
+        order: 'desc' as SortOrder,
+      },
+    },
+  ];
+
+  const config: AlertsTableConfigurationRegistry = {
+    id: ML_ALERTS_CONFIG_ID,
+    columns,
+    useInternalFlyout: getAlertFlyout(columns, getAlertFormatters(fieldFormats)),
+    getRenderCellValue: getRenderCellValue(fieldFormats),
+    sort,
+    useActionsColumn: () => ({
+      renderCustomActionsRow: ({
+        alert,
+        id,
+        setFlyoutAlert,
+        refresh,
+      }: RenderCustomActionsRowArgs) => {
+        return (
+          <AlertActions
+            alert={alert}
+            ecsData={{ _id: alert._id, _index: alert._index }}
+            id={id}
+            setFlyoutAlert={setFlyoutAlert}
+            refresh={refresh}
+          />
+        );
+      },
+    }),
+  };
+
+  triggersActionsUi.alertsTableConfigurationRegistry.register(config);
+}
+
+export const ML_ALERTS_CONFIG_ID = 'mlAlerts';
diff --git a/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/render_cell_value.tsx b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/render_cell_value.tsx
new file mode 100644
index 0000000000000..e58f8cd69e1b3
--- /dev/null
+++ b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/render_cell_value.tsx
@@ -0,0 +1,115 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { isEmpty } from 'lodash';
+import React, { type ReactNode } from 'react';
+import { isDefined } from '@kbn/ml-is-defined';
+import { ALERT_DURATION, ALERT_END, ALERT_START } from '@kbn/rule-data-utils';
+import type { GetRenderCellValue } from '@kbn/triggers-actions-ui-plugin/public';
+import { FIELD_FORMAT_IDS, FieldFormatsRegistry } from '@kbn/field-formats-plugin/common';
+import { getSeverityColor } from '@kbn/ml-anomaly-utils';
+import { EuiHealth } from '@elastic/eui';
+import {
+  alertFieldNameMap,
+  ALERT_ANOMALY_SCORE,
+  ALERT_ANOMALY_TIMESTAMP,
+} from '../../../common/constants/alerts';
+import { getFieldFormatterProvider } from '../../application/contexts/kibana/use_field_formatter';
+
+interface Props {
+  columnId: string;
+  data: any;
+}
+
+export const getMappedNonEcsValue = ({
+  data,
+  fieldName,
+}: {
+  data: any[];
+  fieldName: string;
+}): string[] | undefined => {
+  const item = data.find((d) => d.field === fieldName);
+  if (item != null && item.value != null) {
+    return item.value;
+  }
+  return undefined;
+};
+
+const getRenderValue = (mappedNonEcsValue: any) => {
+  // can be updated when working on https://github.com/elastic/kibana/issues/140819
+  const value = Array.isArray(mappedNonEcsValue) ? mappedNonEcsValue.join() : mappedNonEcsValue;
+
+  if (!isEmpty(value)) {
+    if (typeof value === 'object') {
+      return JSON.stringify(value);
+    }
+    return value;
+  }
+
+  return '—';
+};
+
+export const getRenderCellValue = (fieldFormats: FieldFormatsRegistry): GetRenderCellValue => {
+  const alertValueFormatter = getAlertFormatters(fieldFormats);
+
+  return ({ setFlyoutAlert }) =>
+    (props): ReactNode => {
+      const { columnId, data } = props as Props;
+      if (!isDefined(data)) return;
+
+      const mappedNonEcsValue = getMappedNonEcsValue({
+        data,
+        fieldName: columnId,
+      });
+      const value = getRenderValue(mappedNonEcsValue);
+
+      return alertValueFormatter(columnId, value);
+    };
+};
+
+export function getAlertFormatters(fieldFormats: FieldFormatsRegistry) {
+  const getFormatter = getFieldFormatterProvider(fieldFormats);
+
+  return (columnId: string, value: any): React.ReactElement => {
+    switch (columnId) {
+      case ALERT_START:
+      case ALERT_END:
+      case ALERT_ANOMALY_TIMESTAMP:
+        return <>{getFormatter(FIELD_FORMAT_IDS.DATE)(value)}</>;
+      case ALERT_DURATION:
+        return (
+          <>
+            {getFormatter(FIELD_FORMAT_IDS.DURATION, {
+              inputFormat: 'microseconds',
+              outputFormat: 'humanizePrecise',
+            })(value)}
+          </>
+        );
+      case ALERT_ANOMALY_SCORE:
+        return (
+          <EuiHealth textSize={'xs'} color={getSeverityColor(value)}>
+            {getFormatter(FIELD_FORMAT_IDS.NUMBER)(value)}
+          </EuiHealth>
+        );
+      default:
+        return <>{value}</>;
+    }
+  };
+}
+
+export function getAlertEntryFormatter(fieldFormats: FieldFormatsRegistry) {
+  const alertValueFormatter = getAlertFormatters(fieldFormats);
+
+  return (columnId: string, value: any): { title: string; description: any } => {
+    return {
+      title: alertFieldNameMap[columnId],
+      description: alertValueFormatter(columnId, value),
+    };
+  };
+}
+
+export type RegisterFormatter = ReturnType<typeof getAlertFormatters>;
diff --git a/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/use_alerts_flyout.tsx b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/use_alerts_flyout.tsx
new file mode 100644
index 0000000000000..71a04bd78719d
--- /dev/null
+++ b/x-pack/plugins/ml/public/alerting/anomaly_detection_alerts_table/use_alerts_flyout.tsx
@@ -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; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  AlertsTableFlyoutBaseProps,
+  AlertTableFlyoutComponent,
+} from '@kbn/triggers-actions-ui-plugin/public';
+import { get } from 'lodash';
+import React from 'react';
+import { type EuiDataGridColumn, EuiDescriptionList, EuiPanel, EuiTitle } from '@elastic/eui';
+import { ALERT_RULE_NAME } from '@kbn/rule-data-utils';
+import { isDefined } from '@kbn/ml-is-defined';
+import { RegisterFormatter } from './render_cell_value';
+
+const FlyoutHeader: AlertTableFlyoutComponent = ({ alert }: AlertsTableFlyoutBaseProps) => {
+  const name = alert[ALERT_RULE_NAME];
+  return (
+    <EuiTitle size="s">
+      <h3>{name}</h3>
+    </EuiTitle>
+  );
+};
+
+export const getAlertFlyout =
+  (columns: EuiDataGridColumn[], formatter: RegisterFormatter) => () => {
+    const FlyoutBody: AlertTableFlyoutComponent = ({ alert, id }: AlertsTableFlyoutBaseProps) => (
+      <EuiPanel>
+        <EuiDescriptionList
+          listItems={columns.map((column) => {
+            const value = get(alert, column.id)?.[0];
+
+            return {
+              title: column.displayAsText as string,
+              description: isDefined(value) ? formatter(column.id, value) : '—',
+            };
+          })}
+          type="column"
+          columnWidths={[1, 3]} // Same as [25, 75]
+        />
+      </EuiPanel>
+    );
+
+    return {
+      body: FlyoutBody,
+      header: FlyoutHeader,
+      footer: null,
+    };
+  };
diff --git a/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts b/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts
index 3379c145bf364..9acb265bb12af 100644
--- a/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts
+++ b/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts
@@ -9,6 +9,7 @@ import { i18n } from '@kbn/i18n';
 import { lazy } from 'react';
 import type { TriggersAndActionsUIPublicPluginSetup } from '@kbn/triggers-actions-ui-plugin/public';
 import type { PluginSetupContract as AlertingSetup } from '@kbn/alerting-plugin/public';
+import type { MlCoreSetup } from '../plugin';
 import { ML_ALERT_TYPES } from '../../common/constants/alerts';
 import type { MlAnomalyDetectionAlertParams } from '../../common/types/alerts';
 import { ML_APP_ROUTE, PLUGIN_ID } from '../../common/constants/app';
@@ -18,6 +19,7 @@ import { registerJobsHealthAlertingRule } from './jobs_health_rule';
 
 export function registerMlAlerts(
   triggersActionsUi: TriggersAndActionsUIPublicPluginSetup,
+  getStartServices: MlCoreSetup['getStartServices'],
   alerting?: AlertingSetup
 ) {
   triggersActionsUi.ruleTypeRegistry.register({
@@ -137,6 +139,13 @@ export function registerMlAlerts(
   if (alerting) {
     registerNavigation(alerting);
   }
+
+  // Async import to prevent a bundle size increase
+  Promise.all([getStartServices(), import('./anomaly_detection_alerts_table')]).then(
+    ([[_, mlStartDependencies], { registerAlertsTableConfiguration }]) => {
+      registerAlertsTableConfiguration(triggersActionsUi, mlStartDependencies.fieldFormats);
+    }
+  );
 }
 
 export function registerNavigation(alerting: AlertingSetup) {
diff --git a/x-pack/plugins/ml/public/application/components/chart_tooltip/index.ts b/x-pack/plugins/ml/public/application/components/chart_tooltip/index.ts
index c4bbf6f8d2d7f..d7e83511f3a15 100644
--- a/x-pack/plugins/ml/public/application/components/chart_tooltip/index.ts
+++ b/x-pack/plugins/ml/public/application/components/chart_tooltip/index.ts
@@ -5,5 +5,5 @@
  * 2.0.
  */
 
-export { ChartTooltipService } from './chart_tooltip_service';
+export { ChartTooltipService, type TooltipData } from './chart_tooltip_service';
 export { MlTooltipComponent } from './chart_tooltip';
diff --git a/x-pack/plugins/ml/public/application/components/collapsible_panel/collapsible_panel.tsx b/x-pack/plugins/ml/public/application/components/collapsible_panel/collapsible_panel.tsx
index d01e676b16daf..dbb04ddbc39f0 100644
--- a/x-pack/plugins/ml/public/application/components/collapsible_panel/collapsible_panel.tsx
+++ b/x-pack/plugins/ml/public/application/components/collapsible_panel/collapsible_panel.tsx
@@ -15,7 +15,7 @@ import {
   EuiTitle,
 } from '@elastic/eui';
 import React, { type FC } from 'react';
-import { css } from '@emotion/react';
+import { PanelHeaderItems } from './panel_header_items';
 import { useCurrentThemeVars } from '../../contexts/kibana';
 
 export interface CollapsiblePanelProps {
@@ -67,27 +67,7 @@ export const CollapsiblePanel: FC<CollapsiblePanelProps> = ({
           </EuiFlexItem>
           {headerItems ? (
             <EuiFlexItem grow={false}>
-              <EuiFlexGroup gutterSize={'l'} alignItems={'center'}>
-                {headerItems.map((item, i) => {
-                  return (
-                    <EuiFlexItem key={i} grow={false}>
-                      <div
-                        css={
-                          i < headerItems?.length - 1
-                            ? css`
-                                border-right: ${euiTheme.euiBorderWidthThin} solid
-                                  ${euiTheme.euiBorderColor};
-                                padding-right: ${euiTheme.euiPanelPaddingModifiers.paddingLarge};
-                              `
-                            : null
-                        }
-                      >
-                        {item}
-                      </div>
-                    </EuiFlexItem>
-                  );
-                })}
-              </EuiFlexGroup>
+              <PanelHeaderItems headerItems={headerItems} />
             </EuiFlexItem>
           ) : null}
         </EuiFlexGroup>
diff --git a/x-pack/plugins/ml/public/application/components/collapsible_panel/index.ts b/x-pack/plugins/ml/public/application/components/collapsible_panel/index.ts
index d45a251f69ca9..0b3f9186ff601 100644
--- a/x-pack/plugins/ml/public/application/components/collapsible_panel/index.ts
+++ b/x-pack/plugins/ml/public/application/components/collapsible_panel/index.ts
@@ -6,3 +6,4 @@
  */
 
 export { CollapsiblePanel } from './collapsible_panel';
+export { PanelHeaderItems } from './panel_header_items';
diff --git a/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx b/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
new file mode 100644
index 0000000000000..fa766abadfeb4
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
@@ -0,0 +1,45 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import { css } from '@emotion/react/dist/emotion-react.cjs';
+import React, { type FC } from 'react';
+import { useCurrentThemeVars } from '../../contexts/kibana';
+
+export interface PanelHeaderItems {
+  headerItems: React.ReactElement[];
+  compressed?: boolean;
+}
+
+export const PanelHeaderItems: FC<PanelHeaderItems> = ({ headerItems, compressed = false }) => {
+  const { euiTheme } = useCurrentThemeVars();
+
+  return (
+    <EuiFlexGroup gutterSize={compressed ? 's' : 'l'} alignItems={'center'}>
+      {headerItems.map((item, i) => {
+        return (
+          <EuiFlexItem key={i} grow={false}>
+            <div
+              css={
+                i < headerItems?.length - 1
+                  ? css`
+                      border-right: ${euiTheme.euiBorderWidthThin} solid ${euiTheme.euiBorderColor};
+                      padding-right: ${compressed
+                        ? euiTheme.euiPanelPaddingModifiers.paddingSmall
+                        : euiTheme.euiPanelPaddingModifiers.paddingLarge};
+                    `
+                  : null
+              }
+            >
+              {item}
+            </div>
+          </EuiFlexItem>
+        );
+      })}
+    </EuiFlexGroup>
+  );
+};
diff --git a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
index 29fdc7dc2f5b3..5d143a55d5c27 100644
--- a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
+++ b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts
@@ -29,8 +29,8 @@ import type { ContentManagementPublicStart } from '@kbn/content-management-plugi
 import type { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public';
 import type { PresentationUtilPluginStart } from '@kbn/presentation-util-plugin/public';
 import type { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public';
-import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
 import type { UiActionsStart } from '@kbn/ui-actions-plugin/public';
+import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common';
 import type { MlServicesContext } from '../../app';
 
 interface StartPlugins {
@@ -43,7 +43,7 @@ interface StartPlugins {
   dataViews: DataViewsPublicPluginStart;
   dataVisualizer?: DataVisualizerPluginStart;
   embeddable: EmbeddableStart;
-  fieldFormats: FieldFormatsStart;
+  fieldFormats: FieldFormatsRegistry;
   lens: LensPublicStart;
   licenseManagement?: LicenseManagementUIPluginSetup;
   maps?: MapsStartApi;
diff --git a/x-pack/plugins/ml/public/application/contexts/kibana/use_field_formatter.ts b/x-pack/plugins/ml/public/application/contexts/kibana/use_field_formatter.ts
index 7d34615d61758..3f417cf6f6b6e 100644
--- a/x-pack/plugins/ml/public/application/contexts/kibana/use_field_formatter.ts
+++ b/x-pack/plugins/ml/public/application/contexts/kibana/use_field_formatter.ts
@@ -5,7 +5,11 @@
  * 2.0.
  */
 
-import { FIELD_FORMAT_IDS, FieldFormatParams } from '@kbn/field-formats-plugin/common';
+import {
+  FIELD_FORMAT_IDS,
+  FieldFormatParams,
+  FieldFormatsRegistry,
+} from '@kbn/field-formats-plugin/common';
 import { useMlKibana } from './kibana_context';
 
 /**
@@ -16,16 +20,24 @@ const defaultParam: Record<string, FieldFormatParams> = {
     inputFormat: 'milliseconds',
     outputFormat: 'humanizePrecise',
   },
+  [FIELD_FORMAT_IDS.NUMBER]: {
+    pattern: '00.00',
+  },
 };
 
+export const getFieldFormatterProvider =
+  (fieldFormats: FieldFormatsRegistry) =>
+  (fieldType: FIELD_FORMAT_IDS, params?: FieldFormatParams) => {
+    const fieldFormatter = fieldFormats.deserialize({
+      id: fieldType,
+      params: params ?? defaultParam[fieldType],
+    });
+    return fieldFormatter.convert.bind(fieldFormatter);
+  };
+
 export function useFieldFormatter(fieldType: FIELD_FORMAT_IDS) {
   const {
     services: { fieldFormats },
   } = useMlKibana();
-
-  const fieldFormatter = fieldFormats.deserialize({
-    id: fieldType,
-    params: defaultParam[fieldType],
-  });
-  return fieldFormatter.convert.bind(fieldFormatter);
+  return getFieldFormatterProvider(fieldFormats)(fieldType);
 }
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/alerts_panel.tsx b/x-pack/plugins/ml/public/application/explorer/alerts/alerts_panel.tsx
new file mode 100644
index 0000000000000..d5a5821aae98a
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/alerts_panel.tsx
@@ -0,0 +1,118 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  EuiButtonGroup,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiNotificationBadge,
+  EuiSpacer,
+  EuiLoadingSpinner,
+} from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { ALERT_STATUS_ACTIVE, AlertConsumers, type AlertStatus } from '@kbn/rule-data-utils';
+import React, { type FC, useState } from 'react';
+import useObservable from 'react-use/lib/useObservable';
+import { ML_ALERTS_CONFIG_ID } from '../../../alerting/anomaly_detection_alerts_table/register_alerts_table_configuration';
+import { CollapsiblePanel } from '../../components/collapsible_panel';
+import { useMlKibana } from '../../contexts/kibana';
+import { useAnomalyExplorerContext } from '../anomaly_explorer_context';
+import { AlertsSummary } from './alerts_summary';
+import { AnomalyDetectionAlertsOverviewChart } from './chart';
+import { statusNameMap } from './const';
+
+export const AlertsPanel: FC = () => {
+  const {
+    services: { triggersActionsUi },
+  } = useMlKibana();
+
+  const [isOpen, setIsOpen] = useState(true);
+  const [toggleSelected, setToggleSelected] = useState(`alertsSummary`);
+
+  const { anomalyDetectionAlertsStateService } = useAnomalyExplorerContext();
+
+  const countByStatus = useObservable(anomalyDetectionAlertsStateService.countByStatus$);
+  const alertsQuery = useObservable(anomalyDetectionAlertsStateService.alertsQuery$, {});
+  const isLoading = useObservable(anomalyDetectionAlertsStateService.isLoading$, true);
+
+  const alertStateProps = {
+    alertsTableConfigurationRegistry: triggersActionsUi!.alertsTableConfigurationRegistry,
+    configurationId: ML_ALERTS_CONFIG_ID,
+    id: `ml-details-alerts`,
+    featureIds: [AlertConsumers.ML],
+    query: alertsQuery,
+    showExpandToDetails: true,
+    showAlertStatusWithFlapping: true,
+  };
+  const alertsStateTable = triggersActionsUi!.getAlertsStateTable(alertStateProps);
+
+  const toggleButtons = [
+    {
+      id: `alertsSummary`,
+      label: i18n.translate('xpack.ml.explorer.alertsPanel.summaryLabel', {
+        defaultMessage: 'Summary',
+      }),
+    },
+    {
+      id: `alertsTable`,
+      label: i18n.translate('xpack.ml.explorer.alertsPanel.detailsLabel', {
+        defaultMessage: 'Details',
+      }),
+    },
+  ];
+
+  return (
+    <>
+      <CollapsiblePanel
+        isOpen={isOpen}
+        onToggle={setIsOpen}
+        header={
+          <EuiFlexGroup alignItems={'center'} gutterSize={'xs'}>
+            <EuiFlexItem grow={false}>
+              <FormattedMessage id="xpack.ml.explorer.alertsPanel.header" defaultMessage="Alerts" />
+            </EuiFlexItem>
+            {isLoading ? (
+              <EuiFlexItem grow={false}>
+                <EuiLoadingSpinner size={'m'} />
+              </EuiFlexItem>
+            ) : null}
+          </EuiFlexGroup>
+        }
+        headerItems={Object.entries(countByStatus ?? {}).map(([status, count]) => {
+          return (
+            <>
+              {statusNameMap[status as AlertStatus]}{' '}
+              <EuiNotificationBadge
+                size="m"
+                color={status === ALERT_STATUS_ACTIVE ? 'accent' : 'subdued'}
+              >
+                {count}
+              </EuiNotificationBadge>
+            </>
+          );
+        })}
+      >
+        <AnomalyDetectionAlertsOverviewChart />
+
+        <EuiSpacer size="m" />
+        <EuiButtonGroup
+          legend={i18n.translate('xpack.ml.explorer.alertsPanel.summaryTableToggle', {
+            defaultMessage: 'Summary / Table view toggle',
+          })}
+          options={toggleButtons}
+          idSelected={toggleSelected}
+          onChange={setToggleSelected}
+        />
+        <EuiSpacer size="m" />
+
+        {toggleSelected === 'alertsTable' ? alertsStateTable : <AlertsSummary />}
+      </CollapsiblePanel>
+      <EuiSpacer size="m" />
+    </>
+  );
+};
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/alerts_summary.tsx b/x-pack/plugins/ml/public/application/explorer/alerts/alerts_summary.tsx
new file mode 100644
index 0000000000000..bf0469a0f3145
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/alerts_summary.tsx
@@ -0,0 +1,128 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  EuiBadge,
+  EuiDescriptionList,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiTitle,
+  EuiFlexGrid,
+  EuiPagination,
+} from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+import { ALERT_DURATION, ALERT_END } from '@kbn/rule-data-utils';
+import React, { useMemo, useState } from 'react';
+import useObservable from 'react-use/lib/useObservable';
+import { statusNameMap } from './const';
+import { getAlertFormatters } from '../../../alerting/anomaly_detection_alerts_table/render_cell_value';
+import { useMlKibana } from '../../contexts/kibana';
+import { useAnomalyExplorerContext } from '../anomaly_explorer_context';
+import { getAlertsSummary } from './get_alerts_summary';
+
+const PAGE_SIZE = 3;
+
+export const AlertsSummary: React.FC = () => {
+  const {
+    services: { fieldFormats },
+  } = useMlKibana();
+  const { anomalyDetectionAlertsStateService } = useAnomalyExplorerContext();
+
+  const alertsData = useObservable(anomalyDetectionAlertsStateService.anomalyDetectionAlerts$, []);
+  const formatter = getAlertFormatters(fieldFormats);
+
+  const [activePage, setActivePage] = useState(0);
+
+  const sortedAlertsByRule = useMemo(() => {
+    return getAlertsSummary(alertsData);
+  }, [alertsData]);
+
+  const pageItems = useMemo(() => {
+    return sortedAlertsByRule.slice(activePage * PAGE_SIZE, (activePage + 1) * PAGE_SIZE);
+  }, [activePage, sortedAlertsByRule]);
+
+  return (
+    <>
+      <EuiFlexGrid columns={3} gutterSize={'m'}>
+        {pageItems.map(([ruleName, ruleSummary]) => {
+          return (
+            <EuiFlexItem key={ruleName} grow={false}>
+              <EuiFlexGroup gutterSize="s" alignItems="center">
+                <EuiFlexItem grow={false}>
+                  <EuiTitle size={'xs'}>
+                    <h5>{ruleName}</h5>
+                  </EuiTitle>
+                </EuiFlexItem>
+                {ruleSummary.activeCount > 0 ? (
+                  <EuiFlexItem grow={false}>
+                    <EuiBadge color="accent">{statusNameMap.active}</EuiBadge>
+                  </EuiFlexItem>
+                ) : null}
+              </EuiFlexGroup>
+
+              <EuiDescriptionList
+                compressed
+                type="column"
+                listItems={[
+                  {
+                    title: i18n.translate('xpack.ml.explorer.alertsPanel.summary.totalAlerts', {
+                      defaultMessage: 'Total alerts: ',
+                    }),
+                    description: ruleSummary.totalCount,
+                  },
+                  ...(ruleSummary.activeCount > 0
+                    ? [
+                        {
+                          title: i18n.translate('xpack.ml.explorer.alertsPanel.summary.startedAt', {
+                            defaultMessage: 'Started at: ',
+                          }),
+                          description: formatter(ALERT_END, ruleSummary.startedAt),
+                        },
+                      ]
+                    : [
+                        {
+                          title: i18n.translate(
+                            'xpack.ml.explorer.alertsPanel.summary.recoveredAt',
+                            {
+                              defaultMessage: 'Recovered at: ',
+                            }
+                          ),
+                          description: formatter(ALERT_END, ruleSummary.recoveredAt),
+                        },
+                      ]),
+                  {
+                    title: i18n.translate('xpack.ml.explorer.alertsPanel.summary.lastDuration', {
+                      defaultMessage: 'Last duration: ',
+                    }),
+                    description: formatter(ALERT_DURATION, ruleSummary.lastDuration),
+                  },
+                ]}
+              />
+            </EuiFlexItem>
+          );
+        })}
+      </EuiFlexGrid>
+      {sortedAlertsByRule.length > PAGE_SIZE ? (
+        <EuiFlexGroup gutterSize="s" justifyContent="flexEnd">
+          <EuiFlexItem grow={false}>
+            <EuiPagination
+              aria-label={i18n.translate(
+                'xpack.ml.explorer.alertsPanel.summary.paginationAreaLabel',
+                {
+                  defaultMessage: 'Pagination for alerting rules summary',
+                }
+              )}
+              pageCount={Math.ceil(sortedAlertsByRule.length / PAGE_SIZE)}
+              activePage={activePage}
+              onPageClick={setActivePage}
+            />
+          </EuiFlexItem>
+        </EuiFlexGroup>
+      ) : null}
+    </>
+  );
+};
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/anomaly_detection_alerts_state_service.ts b/x-pack/plugins/ml/public/application/explorer/alerts/anomaly_detection_alerts_state_service.ts
new file mode 100644
index 0000000000000..4141c582834f7
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/anomaly_detection_alerts_state_service.ts
@@ -0,0 +1,226 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { BehaviorSubject, combineLatest, EMPTY, type Observable, Subscription } from 'rxjs';
+import { catchError, debounceTime, map, startWith, switchMap, tap } from 'rxjs/operators';
+import {
+  DataPublicPluginStart,
+  isRunningResponse,
+  TimefilterContract,
+} from '@kbn/data-plugin/public';
+import type {
+  RuleRegistrySearchRequest,
+  RuleRegistrySearchResponse,
+} from '@kbn/rule-registry-plugin/common';
+import {
+  ALERT_DURATION,
+  ALERT_END,
+  ALERT_RULE_NAME,
+  ALERT_RULE_TYPE_ID,
+  ALERT_START,
+  ALERT_STATUS,
+  ALERT_UUID,
+  AlertConsumers,
+} from '@kbn/rule-data-utils';
+import { isDefined } from '@kbn/ml-is-defined';
+import { getSeverityColor } from '@kbn/ml-anomaly-utils';
+import {
+  ALERT_ANOMALY_DETECTION_JOB_ID,
+  ALERT_ANOMALY_SCORE,
+  ALERT_ANOMALY_TIMESTAMP,
+  ML_ALERT_TYPES,
+} from '../../../../common/constants/alerts';
+import { StateService } from '../../services/state_service';
+import { AnomalyTimelineStateService } from '../anomaly_timeline_state_service';
+
+export interface AnomalyDetectionAlert {
+  id: string;
+  [ALERT_ANOMALY_SCORE]: number;
+  [ALERT_ANOMALY_DETECTION_JOB_ID]: string;
+  [ALERT_ANOMALY_TIMESTAMP]: number;
+  [ALERT_START]: number;
+  [ALERT_END]: number | undefined;
+  [ALERT_RULE_NAME]: string;
+  [ALERT_STATUS]: string;
+  [ALERT_DURATION]: number;
+  // Additional fields for the UI
+  color: string;
+}
+
+export type AlertsQuery = Exclude<RuleRegistrySearchRequest['query'], undefined>;
+
+export class AnomalyDetectionAlertsStateService extends StateService {
+  /**
+   * Subject that holds the anomaly detection alerts from the alert-as-data index.
+   * @private
+   */
+  private readonly _aadAlerts$ = new BehaviorSubject<AnomalyDetectionAlert[]>([]);
+
+  private readonly _isLoading$ = new BehaviorSubject<boolean>(true);
+
+  constructor(
+    private readonly _anomalyTimelineStateServices: AnomalyTimelineStateService,
+    private readonly data: DataPublicPluginStart,
+    private readonly timefilter: TimefilterContract
+  ) {
+    super();
+
+    this.selectedAlerts$ = combineLatest([
+      this._aadAlerts$,
+      this._anomalyTimelineStateServices.getSelectedCells$().pipe(map((cells) => cells?.times)),
+    ]).pipe(
+      map(([alerts, selectedTimes]) => {
+        if (!Array.isArray(selectedTimes)) return null;
+
+        return alerts.filter(
+          (alert) =>
+            alert[ALERT_ANOMALY_TIMESTAMP] >= selectedTimes[0] * 1000 &&
+            alert[ALERT_ANOMALY_TIMESTAMP] <= selectedTimes[1] * 1000
+        );
+      })
+    );
+
+    const timeUpdates$ = this.timefilter.getTimeUpdate$().pipe(
+      startWith(null),
+      map(() => this.timefilter.getTime())
+    );
+
+    this.alertsQuery$ = combineLatest([
+      this._anomalyTimelineStateServices.getSwimLaneJobs$(),
+      timeUpdates$,
+    ]).pipe(
+      // Create a result query from the input
+      map(([selectedJobs, timeRange]) => {
+        return {
+          bool: {
+            filter: [
+              {
+                term: {
+                  [ALERT_RULE_TYPE_ID]: ML_ALERT_TYPES.ANOMALY_DETECTION,
+                },
+              },
+              {
+                range: {
+                  [ALERT_ANOMALY_TIMESTAMP]: {
+                    gte: timeRange.from,
+                    lte: timeRange.to,
+                  },
+                },
+              },
+              {
+                terms: {
+                  [ALERT_ANOMALY_DETECTION_JOB_ID]: selectedJobs.map((job) => job.id),
+                },
+              },
+            ],
+          },
+        } as AlertsQuery;
+      })
+    );
+
+    this._init();
+  }
+
+  /**
+   * Count the number of alerts by status.
+   * @param alerts
+   */
+  public countAlertsByStatus(alerts: AnomalyDetectionAlert[]): Record<string, number> {
+    return alerts.reduce(
+      (acc, alert) => {
+        if (!isDefined(acc[alert[ALERT_STATUS]])) {
+          acc[alert[ALERT_STATUS]] = 0;
+        } else {
+          acc[alert[ALERT_STATUS]]++;
+        }
+        return acc;
+      },
+      { active: 0, recovered: 0 } as Record<string, number>
+    );
+  }
+
+  public readonly anomalyDetectionAlerts$: Observable<AnomalyDetectionAlert[]> =
+    this._aadAlerts$.asObservable();
+
+  /**
+   * Query for fetching alerts data based on the job selection and time range.
+   */
+  public readonly alertsQuery$: Observable<AlertsQuery>;
+
+  public readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable();
+
+  /**
+   * Observable for the alerts within the swim lane selection.
+   */
+  public readonly selectedAlerts$: Observable<AnomalyDetectionAlert[] | null>;
+
+  public readonly countByStatus$: Observable<Record<string, number>> = this._aadAlerts$.pipe(
+    map((alerts) => {
+      return this.countAlertsByStatus(alerts);
+    })
+  );
+
+  protected _initSubscriptions(): Subscription {
+    const subscription = new Subscription();
+
+    subscription.add(
+      this.alertsQuery$
+        .pipe(
+          tap(() => {
+            this._isLoading$.next(true);
+          }),
+          debounceTime(300),
+          switchMap((query) => {
+            return this.data.search
+              .search<RuleRegistrySearchRequest, RuleRegistrySearchResponse>(
+                {
+                  featureIds: [AlertConsumers.ML],
+                  query,
+                },
+                { strategy: 'privateRuleRegistryAlertsSearchStrategy' }
+              )
+              .pipe(
+                catchError((error) => {
+                  // Catch error to prevent the observable from completing
+                  return EMPTY;
+                })
+              );
+          })
+        )
+        .subscribe((response) => {
+          if (!isRunningResponse(response)) {
+            this._aadAlerts$.next(
+              response.rawResponse.hits.hits
+                .map(({ fields }) => {
+                  if (!isDefined(fields)) return;
+                  const anomalyScore = Number(fields[ALERT_ANOMALY_SCORE][0]);
+                  return {
+                    id: fields[ALERT_UUID][0],
+                    [ALERT_RULE_NAME]: fields[ALERT_RULE_NAME][0],
+                    [ALERT_ANOMALY_SCORE]: anomalyScore,
+                    [ALERT_ANOMALY_DETECTION_JOB_ID]: fields[ALERT_ANOMALY_DETECTION_JOB_ID][0],
+                    [ALERT_ANOMALY_TIMESTAMP]: new Date(
+                      fields[ALERT_ANOMALY_TIMESTAMP][0]
+                    ).getTime(),
+                    [ALERT_START]: fields[ALERT_START][0],
+                    // Can be undefined if the alert is still active
+                    [ALERT_END]: fields[ALERT_END]?.[0],
+                    [ALERT_STATUS]: fields[ALERT_STATUS][0],
+                    [ALERT_DURATION]: fields[ALERT_DURATION][0],
+                    color: getSeverityColor(anomalyScore),
+                  };
+                })
+                .filter(isDefined)
+            );
+            this._isLoading$.next(false);
+          }
+        })
+    );
+
+    return subscription;
+  }
+}
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/chart.tsx b/x-pack/plugins/ml/public/application/explorer/alerts/chart.tsx
new file mode 100644
index 0000000000000..fa8b9a3de3c58
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/chart.tsx
@@ -0,0 +1,189 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React, { type FC, useMemo } from 'react';
+import { useTimeRangeUpdates } from '@kbn/ml-date-picker';
+import type { TypedLensByValueInput } from '@kbn/lens-plugin/public';
+import useObservable from 'react-use/lib/useObservable';
+import { css } from '@emotion/react';
+import { i18n } from '@kbn/i18n';
+import { Y_AXIS_LABEL_WIDTH } from '../swimlane_annotation_container';
+import { useAnomalyExplorerContext } from '../anomaly_explorer_context';
+import { useMlKibana } from '../../contexts/kibana';
+
+export interface AnomalyDetectionAlertsOverviewChart {
+  seriesType?: 'bar_stacked' | 'line';
+}
+
+export const AnomalyDetectionAlertsOverviewChart: FC<AnomalyDetectionAlertsOverviewChart> = ({
+  seriesType = 'line',
+}) => {
+  const {
+    services: {
+      lens: { EmbeddableComponent },
+    },
+  } = useMlKibana();
+
+  const { anomalyTimelineStateService } = useAnomalyExplorerContext();
+
+  const timeRange = useTimeRangeUpdates();
+
+  const interval = useObservable(
+    anomalyTimelineStateService.getSwimLaneBucketInterval$(),
+    anomalyTimelineStateService.getSwimLaneBucketInterval()
+  );
+
+  const attributes = useMemo<TypedLensByValueInput['attributes']>(() => {
+    return {
+      title: '',
+      visualizationType: 'lnsXY',
+      references: [],
+      type: 'lens',
+      state: {
+        internalReferences: [
+          {
+            type: 'index-pattern',
+            id: 'ml-alerts-data-view',
+            name: 'indexpattern-datasource-layer-layer1',
+          },
+        ],
+        adHocDataViews: {
+          'ml-alerts-data-view': {
+            id: 'ml-alerts-data-view',
+            title: '.alerts-ml.anomaly-detection.alerts-default',
+            timeFieldName: '@timestamp',
+          },
+        },
+        visualization: {
+          hideEndzones: true,
+          legend: {
+            isVisible: false,
+          },
+          valueLabels: 'hide',
+          fittingFunction: 'None',
+          axisTitlesVisibilitySettings: {
+            x: false,
+            yLeft: false,
+            yRight: false,
+          },
+          tickLabelsVisibilitySettings: {
+            x: true,
+            yLeft: true,
+            yRight: true,
+          },
+          labelsOrientation: {
+            x: 0,
+            yLeft: 0,
+            yRight: 0,
+          },
+          gridlinesVisibilitySettings: {
+            x: true,
+            yLeft: true,
+            yRight: true,
+          },
+          preferredSeriesType: seriesType,
+          layers: [
+            {
+              layerId: 'layer1',
+              accessors: ['7327df72-9def-4642-a72d-dc2b0790d5f9'],
+              position: 'top',
+              seriesType,
+              showGridlines: false,
+              layerType: 'data',
+              xAccessor: '953f9efc-fbf6-44e0-a450-c645d2b5ec22',
+            },
+          ],
+        },
+        query: {
+          query: '',
+          language: 'kuery',
+        },
+        filters: [],
+        datasourceStates: {
+          formBased: {
+            layers: {
+              layer1: {
+                columns: {
+                  '953f9efc-fbf6-44e0-a450-c645d2b5ec22': {
+                    label: '@timestamp',
+                    dataType: 'date',
+                    operationType: 'date_histogram',
+                    sourceField: '@timestamp',
+                    isBucketed: true,
+                    scale: 'interval',
+                    params: {
+                      interval: interval?.expression,
+                      includeEmptyRows: true,
+                      dropPartials: false,
+                    },
+                  },
+                  '7327df72-9def-4642-a72d-dc2b0790d5f9': {
+                    label: i18n.translate('xpack.ml.explorer.alerts.totalAlerts', {
+                      defaultMessage: 'Total alerts',
+                    }),
+                    dataType: 'number',
+                    operationType: 'count',
+                    isBucketed: false,
+                    scale: 'ratio',
+                    sourceField: '___records___',
+                    params: {
+                      emptyAsNull: false,
+                      format: {
+                        id: 'number',
+                        params: {
+                          decimals: 0,
+                          compact: true,
+                        },
+                      },
+                    },
+                  },
+                },
+                columnOrder: [
+                  '953f9efc-fbf6-44e0-a450-c645d2b5ec22',
+                  '7327df72-9def-4642-a72d-dc2b0790d5f9',
+                ],
+                incompleteColumns: {},
+                sampling: 1,
+              },
+            },
+          },
+          indexpattern: {
+            layers: {},
+          },
+          textBased: {
+            layers: {},
+          },
+        },
+      },
+    } as TypedLensByValueInput['attributes'];
+  }, [interval?.expression, seriesType]);
+
+  if (!interval) return null;
+
+  return (
+    <div
+      css={css`
+        padding-left: ${Y_AXIS_LABEL_WIDTH - 45}px;
+        height: 120px;
+        width: 100%;
+      `}
+    >
+      <EmbeddableComponent
+        id="mlExplorerAlertsPreview"
+        style={{ height: 120 }}
+        timeRange={timeRange}
+        attributes={attributes}
+        renderMode={'view'}
+        executionContext={{
+          type: 'ml_overall_alert_preview_chart',
+          name: 'Anomaly detection alert preview chart',
+        }}
+        disableTriggers
+      />
+    </div>
+  );
+};
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/const.ts b/x-pack/plugins/ml/public/application/explorer/alerts/const.ts
new file mode 100644
index 0000000000000..5f2fe187a5e64
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/const.ts
@@ -0,0 +1,31 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { i18n } from '@kbn/i18n';
+import {
+  ALERT_STATUS_ACTIVE,
+  ALERT_STATUS_RECOVERED,
+  ALERT_STATUS_UNTRACKED,
+} from '@kbn/rule-data-utils';
+
+export const statusNameMap = {
+  [ALERT_STATUS_ACTIVE]: i18n.translate('xpack.ml.explorer.alertsPanel.statusNameMap.active', {
+    defaultMessage: 'Active',
+  }),
+  [ALERT_STATUS_RECOVERED]: i18n.translate(
+    'xpack.ml.explorer.alertsPanel.statusNameMap.recovered',
+    {
+      defaultMessage: 'Recovered',
+    }
+  ),
+  [ALERT_STATUS_UNTRACKED]: i18n.translate(
+    'xpack.ml.explorer.alertsPanel.statusNameMap.untracked',
+    {
+      defaultMessage: 'Untracked',
+    }
+  ),
+} as const;
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.test.ts b/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.test.ts
new file mode 100644
index 0000000000000..f8340164ddbae
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.test.ts
@@ -0,0 +1,128 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  ALERT_RULE_NAME,
+  ALERT_STATUS,
+  ALERT_START,
+  ALERT_END,
+  ALERT_DURATION,
+} from '@kbn/rule-data-utils';
+import { AnomalyDetectionAlert } from './anomaly_detection_alerts_state_service';
+import { getAlertsSummary } from './get_alerts_summary';
+
+describe('getAlertsSummary', () => {
+  test('should return an empty array when given an empty array', () => {
+    const alertsData: AnomalyDetectionAlert[] = [];
+    const result = getAlertsSummary(alertsData);
+    expect(result).toEqual([]);
+  });
+
+  test('should group alerts by rule name and return a sorted array of rule summaries', () => {
+    const timestamp01 = new Date('2022-01-01T00:00:00.000Z').getTime();
+    const timestamp02 = new Date('2022-01-01T01:00:00.000Z').getTime();
+    const timestamp03 = new Date('2022-01-01T02:00:00.000Z').getTime();
+    const timestamp04 = new Date('2022-01-01T04:00:00.000Z').getTime();
+
+    const alertsData: AnomalyDetectionAlert[] = [
+      {
+        [ALERT_RULE_NAME]: 'rule-1',
+        [ALERT_STATUS]: 'active',
+        [ALERT_START]: timestamp01,
+        [ALERT_END]: timestamp02,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-1',
+        [ALERT_STATUS]: 'recovered',
+        [ALERT_START]: timestamp02,
+        [ALERT_END]: timestamp03,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-2',
+        [ALERT_STATUS]: 'active',
+        [ALERT_START]: timestamp01,
+        [ALERT_END]: timestamp02,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-2',
+        [ALERT_STATUS]: 'active',
+        [ALERT_START]: timestamp01,
+        [ALERT_END]: timestamp02,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-2',
+        [ALERT_STATUS]: 'recovered',
+        [ALERT_START]: timestamp02,
+        [ALERT_END]: timestamp04,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-3',
+        [ALERT_STATUS]: 'recovered',
+        [ALERT_START]: timestamp02,
+        [ALERT_END]: timestamp04,
+        [ALERT_DURATION]: 3600000,
+      },
+      {
+        [ALERT_RULE_NAME]: 'rule-4',
+        [ALERT_STATUS]: 'recovered',
+        [ALERT_START]: timestamp02,
+        [ALERT_END]: timestamp04,
+        [ALERT_DURATION]: 6400000,
+      },
+    ] as AnomalyDetectionAlert[];
+
+    const result = getAlertsSummary(alertsData);
+
+    expect(result).toEqual([
+      [
+        'rule-2',
+        {
+          totalCount: 3,
+          activeCount: 2,
+          recoveredAt: timestamp04,
+          startedAt: timestamp02,
+          lastDuration: 3600000,
+        },
+      ],
+      [
+        'rule-1',
+        {
+          totalCount: 2,
+          activeCount: 1,
+          recoveredAt: timestamp03,
+          startedAt: timestamp02,
+          lastDuration: 3600000,
+        },
+      ],
+      [
+        'rule-4',
+        {
+          totalCount: 1,
+          activeCount: 0,
+          recoveredAt: timestamp04,
+          startedAt: timestamp02,
+          lastDuration: 6400000,
+        },
+      ],
+      [
+        'rule-3',
+        {
+          totalCount: 1,
+          activeCount: 0,
+          recoveredAt: timestamp04,
+          startedAt: timestamp02,
+          lastDuration: 3600000,
+        },
+      ],
+    ]);
+  });
+});
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.ts b/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.ts
new file mode 100644
index 0000000000000..b75a5cb3c1543
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/get_alerts_summary.ts
@@ -0,0 +1,60 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import {
+  ALERT_DURATION,
+  ALERT_RULE_NAME,
+  ALERT_STATUS,
+  ALERT_END,
+  ALERT_START,
+  ALERT_STATUS_ACTIVE,
+} from '@kbn/rule-data-utils';
+import { groupBy } from 'lodash';
+import { AnomalyDetectionAlert } from './anomaly_detection_alerts_state_service';
+
+export type RulesSummary = Array<[string, RuleSummary]>;
+
+export interface RuleSummary {
+  activeCount: number;
+  totalCount: number;
+  lastDuration: number;
+  startedAt: number;
+  recoveredAt: number | undefined;
+}
+
+export function getAlertsSummary(alertsData: AnomalyDetectionAlert[]): RulesSummary {
+  return Object.entries(groupBy(alertsData, ALERT_RULE_NAME) ?? [])
+    .map<[string, RuleSummary]>(([ruleName, alerts]) => {
+      // Find the latest alert for each rule
+      const latestAlert: AnomalyDetectionAlert = alerts.reduce((latest, alert) => {
+        return alert[ALERT_START] > latest[ALERT_START] ? alert : latest;
+      });
+
+      return [
+        ruleName,
+        {
+          totalCount: alerts.length,
+          activeCount: alerts.filter((alert) => alert[ALERT_STATUS] === ALERT_STATUS_ACTIVE).length,
+          recoveredAt: latestAlert[ALERT_END],
+          startedAt: latestAlert[ALERT_START],
+          lastDuration: latestAlert[ALERT_DURATION],
+        },
+      ];
+    })
+    .sort(([, alertsA], [, alertsB]) => {
+      // 1. Prioritize rules with the highest number of active alerts
+      if (alertsA.activeCount > alertsB.activeCount) return -1;
+      if (alertsA.activeCount < alertsB.activeCount) return 1;
+      // 2. Prioritize rules with the highest number of alerts in general
+      if (alertsA.totalCount > alertsB.totalCount) return -1;
+      if (alertsA.totalCount < alertsB.totalCount) return 1;
+      // 3. At last prioritize rules with the longest duration
+      if (alertsA.lastDuration > alertsB.lastDuration) return -1;
+      if (alertsA.lastDuration < alertsB.lastDuration) return 1;
+      return 0;
+    });
+}
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/index.ts b/x-pack/plugins/ml/public/application/explorer/alerts/index.ts
new file mode 100644
index 0000000000000..874724e068990
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/index.ts
@@ -0,0 +1,11 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export { AnomalyDetectionAlertsOverviewChart } from './chart';
+export { AlertsPanel } from './alerts_panel';
+export { SwimLaneWrapper } from './swim_lane_wrapper';
+export { AnomalyDetectionAlertsStateService } from './anomaly_detection_alerts_state_service';
diff --git a/x-pack/plugins/ml/public/application/explorer/alerts/swim_lane_wrapper.tsx b/x-pack/plugins/ml/public/application/explorer/alerts/swim_lane_wrapper.tsx
new file mode 100644
index 0000000000000..4fefe43998f94
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/alerts/swim_lane_wrapper.tsx
@@ -0,0 +1,281 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FormattedMessage } from '@kbn/i18n-react';
+import {
+  EuiButtonIcon,
+  EuiDescriptionList,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiInMemoryTable,
+  EuiNotificationBadge,
+  EuiPopover,
+  EuiPopoverTitle,
+  EuiText,
+} from '@elastic/eui';
+import { css } from '@emotion/react';
+import {
+  ALERT_DURATION,
+  ALERT_RULE_NAME,
+  ALERT_START,
+  ALERT_STATUS_ACTIVE,
+  type AlertStatus,
+} from '@kbn/rule-data-utils';
+import { pick } from 'lodash';
+import React, { type FC, useCallback, useMemo, useRef } from 'react';
+import useObservable from 'react-use/lib/useObservable';
+import { i18n } from '@kbn/i18n';
+import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/basic_table';
+import { PanelHeaderItems } from '../../components/collapsible_panel';
+import { AnomalyDetectionAlert } from './anomaly_detection_alerts_state_service';
+import {
+  ALERT_ANOMALY_DETECTION_JOB_ID,
+  ALERT_ANOMALY_TIMESTAMP,
+  alertFieldNameMap,
+} from '../../../../common/constants/alerts';
+import {
+  getAlertEntryFormatter,
+  getAlertFormatters,
+} from '../../../alerting/anomaly_detection_alerts_table/render_cell_value';
+import { useMlKibana } from '../../contexts/kibana';
+import { useAnomalyExplorerContext } from '../anomaly_explorer_context';
+import type { AppStateSelectedCells, SwimlaneData } from '../explorer_utils';
+import { Y_AXIS_LABEL_WIDTH } from '../swimlane_annotation_container';
+import { CELL_HEIGHT } from '../swimlane_container';
+import { statusNameMap } from './const';
+
+export interface SwimLaneWrapperProps {
+  selection?: AppStateSelectedCells | null;
+  swimlaneContainerWidth?: number;
+  swimLaneData: SwimlaneData;
+}
+
+/**
+ * Wrapper component for the swim lane
+ * that handles the popover for the selected cells.
+ */
+export const SwimLaneWrapper: FC<SwimLaneWrapperProps> = ({
+  children,
+  selection,
+  swimlaneContainerWidth,
+  swimLaneData,
+}) => {
+  const {
+    services: { fieldFormats },
+  } = useMlKibana();
+
+  const containerRef = useRef<HTMLDivElement>(null);
+
+  const { anomalyDetectionAlertsStateService, anomalyTimelineStateService } =
+    useAnomalyExplorerContext();
+
+  const selectedAlerts = useObservable(anomalyDetectionAlertsStateService.selectedAlerts$, []);
+
+  const leftOffset = useMemo<number>(() => {
+    if (!selection || !swimLaneData) return 0;
+    const selectedCellIndex = swimLaneData.points.findIndex((v) => v.time === selection.times[0]);
+    const cellWidth = swimlaneContainerWidth! / swimLaneData.points.length;
+
+    const cellOffset = (selectedCellIndex + 1) * cellWidth;
+
+    return Y_AXIS_LABEL_WIDTH + cellOffset;
+  }, [selection, swimlaneContainerWidth, swimLaneData]);
+
+  const popoverOpen = !!selection && !!selectedAlerts?.length;
+
+  const alertFormatter = useMemo(() => getAlertEntryFormatter(fieldFormats), [fieldFormats]);
+
+  const viewType = 'table';
+
+  const closePopover = useCallback(() => {
+    anomalyTimelineStateService.setSelectedCells();
+  }, [anomalyTimelineStateService]);
+
+  return (
+    <div
+      ref={containerRef}
+      data-test-subj="mlSwimLaneWrapper"
+      css={css`
+        position: relative;
+      `}
+    >
+      <div
+        data-test-subj="swimLanePopoverTriggerWrapper"
+        style={{ left: `${leftOffset}px` }}
+        css={css`
+          position: absolute;
+          top: -${CELL_HEIGHT / 2}px;
+          height: 0;
+        `}
+      >
+        <EuiPopover
+          button={
+            <button
+              data-test-subj="mlSwimLanePopoverTrigger"
+              css={css`
+                position: absolute;
+                top: 0;
+                visibility: hidden;
+              `}
+            />
+          }
+          isOpen={popoverOpen}
+          anchorPosition="upCenter"
+          hasArrow
+          repositionOnScroll
+          closePopover={closePopover}
+          panelPaddingSize="s"
+        >
+          <EuiPopoverTitle paddingSize={'xs'}>
+            <EuiFlexGroup gutterSize={'none'} justifyContent={'spaceBetween'} alignItems={'center'}>
+              <EuiFlexItem grow={false}>
+                <FormattedMessage
+                  id="xpack.ml.explorer.alertsPanel.header"
+                  defaultMessage="Alerts"
+                />
+              </EuiFlexItem>
+              <EuiFlexItem grow={false}>
+                <EuiFlexGroup gutterSize={'none'} alignItems={'center'}>
+                  <EuiFlexItem>
+                    <PanelHeaderItems
+                      compressed
+                      headerItems={Object.entries(
+                        anomalyDetectionAlertsStateService.countAlertsByStatus(
+                          selectedAlerts ?? []
+                        ) ?? {}
+                      ).map(([status, count]) => {
+                        return (
+                          <EuiText size={'xs'}>
+                            {statusNameMap[status as AlertStatus]}{' '}
+                            <EuiNotificationBadge
+                              size="s"
+                              color={status === ALERT_STATUS_ACTIVE ? 'accent' : 'subdued'}
+                            >
+                              {count}
+                            </EuiNotificationBadge>
+                          </EuiText>
+                        );
+                      })}
+                    />
+                  </EuiFlexItem>
+                  <EuiFlexItem grow={false}>
+                    <EuiButtonIcon
+                      size="s"
+                      color={'text'}
+                      iconType={'cross'}
+                      onClick={closePopover}
+                      aria-label={i18n.translate(
+                        'xpack.ml.explorer.cellSelectionPopover.closeButtonAriaLabel',
+                        {
+                          defaultMessage: 'Close popover',
+                        }
+                      )}
+                    />
+                  </EuiFlexItem>
+                </EuiFlexGroup>
+              </EuiFlexItem>
+            </EuiFlexGroup>
+          </EuiPopoverTitle>
+          {viewType === 'table' && !!selectedAlerts?.length ? (
+            <MiniAlertTable data={selectedAlerts} />
+          ) : (
+            (selectedAlerts ?? []).map((alert) => {
+              const fields = Object.entries(
+                pick(alert, [
+                  ALERT_RULE_NAME,
+                  ALERT_ANOMALY_DETECTION_JOB_ID,
+                  ALERT_ANOMALY_TIMESTAMP,
+                  ALERT_START,
+                  ALERT_DURATION,
+                ])
+              ).map(([prop, value]) => {
+                return alertFormatter(prop, value);
+              });
+
+              return (
+                <EuiFlexGroup>
+                  {fields.map(({ title, description }) => {
+                    return (
+                      <EuiFlexItem>
+                        <EuiDescriptionList compressed listItems={[{ title, description }]} />
+                      </EuiFlexItem>
+                    );
+                  })}
+                </EuiFlexGroup>
+              );
+            })
+          )}
+        </EuiPopover>
+      </div>
+
+      {children}
+    </div>
+  );
+};
+
+export interface MiniAlertTableProps {
+  data: AnomalyDetectionAlert[];
+}
+
+const ALERT_PER_PAGE = 3;
+
+export const MiniAlertTable: FC<MiniAlertTableProps> = ({ data }) => {
+  const {
+    services: { fieldFormats },
+  } = useMlKibana();
+
+  const alertValueFormatter = useMemo(() => getAlertFormatters(fieldFormats), [fieldFormats]);
+
+  const columns = useMemo<Array<EuiBasicTableColumn<AnomalyDetectionAlert>>>(() => {
+    return [
+      {
+        field: ALERT_RULE_NAME,
+        width: `150px`,
+        name: alertFieldNameMap[ALERT_RULE_NAME],
+        sortable: true,
+      },
+      {
+        field: ALERT_START,
+        width: `200px`,
+        name: alertFieldNameMap[ALERT_START],
+        sortable: true,
+        render: (value: number) => alertValueFormatter(ALERT_START, value),
+      },
+      {
+        field: ALERT_DURATION,
+        width: `110px`,
+        name: alertFieldNameMap[ALERT_DURATION],
+        sortable: true,
+        render: (value: number) => alertValueFormatter(ALERT_DURATION, value),
+      },
+    ];
+  }, [alertValueFormatter]);
+
+  return (
+    <EuiInMemoryTable
+      css={{ width: '510px' }}
+      compressed
+      columns={columns}
+      items={data}
+      sorting={{
+        sort: {
+          field: ALERT_START,
+          direction: 'asc',
+        },
+      }}
+      pagination={
+        data.length > ALERT_PER_PAGE
+          ? {
+              compressed: true,
+              initialPageSize: ALERT_PER_PAGE,
+              pageSizeOptions: [3, 5, 10],
+            }
+          : false
+      }
+    />
+  );
+};
diff --git a/x-pack/plugins/ml/public/application/explorer/annotation_timeline.tsx b/x-pack/plugins/ml/public/application/explorer/annotation_timeline.tsx
new file mode 100644
index 0000000000000..0b95c8c3c0665
--- /dev/null
+++ b/x-pack/plugins/ml/public/application/explorer/annotation_timeline.tsx
@@ -0,0 +1,184 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React, { type FC, type PropsWithChildren, useEffect } from 'react';
+import d3 from 'd3';
+import { scaleTime } from 'd3-scale';
+import { type ChartTooltipService, type TooltipData } from '../components/chart_tooltip';
+import { useCurrentThemeVars } from '../contexts/kibana';
+
+export interface AnnotationTimelineProps<T extends { timestamp: number; end_timestamp?: number }> {
+  label: string;
+  data: T[];
+  domain: {
+    min: number;
+    max: number;
+  };
+  getTooltipContent: (item: T, hasMergedAnnotations: boolean) => TooltipData;
+  tooltipService: ChartTooltipService;
+  chartWidth: number;
+}
+
+export const Y_AXIS_LABEL_WIDTH = 170;
+export const Y_AXIS_LABEL_PADDING = 8;
+const ANNOTATION_CONTAINER_HEIGHT = 12;
+const ANNOTATION_MIN_WIDTH = 8;
+
+/**
+ * Reusable component for rendering annotation-like items on a timeline.
+ */
+export const AnnotationTimeline = <T extends { timestamp: number; end_timestamp?: number }>({
+  data,
+  domain,
+  label,
+  tooltipService,
+  chartWidth,
+  getTooltipContent,
+}: PropsWithChildren<AnnotationTimelineProps<T>>): ReturnType<FC> => {
+  const canvasRef = React.useRef<HTMLDivElement | null>(null);
+  const { euiTheme } = useCurrentThemeVars();
+
+  useEffect(
+    function renderChart() {
+      if (!(canvasRef.current !== null && Array.isArray(data))) return;
+
+      const chartElement = d3.select(canvasRef.current);
+      chartElement.selectAll('*').remove();
+
+      const dimensions = canvasRef.current.getBoundingClientRect();
+
+      const startingXPos = Y_AXIS_LABEL_WIDTH;
+      const endingXPos = dimensions.width;
+
+      const svg = chartElement
+        .append('svg')
+        .attr('width', '100%')
+        .attr('height', ANNOTATION_CONTAINER_HEIGHT);
+
+      const xScale = scaleTime().domain([domain.min, domain.max]).range([startingXPos, endingXPos]);
+
+      // Add Annotation y axis label
+      svg
+        .append('text')
+        .attr('text-anchor', 'end')
+        .attr('class', 'swimlaneAnnotationLabel')
+        .text(label)
+        .attr('x', Y_AXIS_LABEL_WIDTH - Y_AXIS_LABEL_PADDING)
+        .attr('y', ANNOTATION_CONTAINER_HEIGHT / 2)
+        .attr('dominant-baseline', 'middle')
+        .style('fill', euiTheme.euiTextSubduedColor)
+        .style('font-size', euiTheme.euiFontSizeXS);
+
+      // Add border
+      svg
+        .append('rect')
+        .attr('x', startingXPos)
+        .attr('y', 0)
+        .attr('height', ANNOTATION_CONTAINER_HEIGHT)
+        .attr('width', endingXPos - startingXPos)
+        .style('stroke', euiTheme.euiBorderColor)
+        .style('fill', 'none')
+        .style('stroke-width', 1);
+
+      // Merging overlapping annotations into bigger blocks
+      let mergedAnnotations: Array<{ start: number; end: number; annotations: T[] }> = [];
+      const sortedAnnotationsData = [...data].sort((a, b) => a.timestamp - b.timestamp);
+
+      if (sortedAnnotationsData.length > 0) {
+        let lastEndTime =
+          sortedAnnotationsData[0].end_timestamp ?? sortedAnnotationsData[0].timestamp;
+
+        mergedAnnotations = [
+          {
+            start: sortedAnnotationsData[0].timestamp,
+            end: lastEndTime,
+            annotations: [sortedAnnotationsData[0]],
+          },
+        ];
+
+        for (let i = 1; i < sortedAnnotationsData.length; i++) {
+          if (sortedAnnotationsData[i].timestamp < lastEndTime) {
+            const itemToMerge = mergedAnnotations.pop();
+            if (itemToMerge) {
+              const newMergedItem = {
+                ...itemToMerge,
+                end: lastEndTime,
+                annotations: [...itemToMerge.annotations, sortedAnnotationsData[i]],
+              };
+              mergedAnnotations.push(newMergedItem);
+            }
+          } else {
+            lastEndTime =
+              sortedAnnotationsData[i].end_timestamp ?? sortedAnnotationsData[i].timestamp;
+
+            mergedAnnotations.push({
+              start: sortedAnnotationsData[i].timestamp,
+              end: lastEndTime,
+              annotations: [sortedAnnotationsData[i]],
+            });
+          }
+        }
+      }
+
+      // Add annotation marker
+      mergedAnnotations.forEach((mergedAnnotation) => {
+        const annotationWidth = Math.max(
+          mergedAnnotation.end
+            ? (xScale(Math.min(mergedAnnotation.end, domain.max)) as number) -
+                Math.max(xScale(mergedAnnotation.start) as number, startingXPos)
+            : 0,
+          ANNOTATION_MIN_WIDTH
+        );
+
+        const xPos =
+          mergedAnnotation.start >= domain.min
+            ? (xScale(mergedAnnotation.start) as number)
+            : startingXPos;
+        svg
+          .append('rect')
+          .classed('mlAnnotationRect', true)
+          // If annotation is at the end, prevent overflow by shifting it back
+          .attr('x', xPos + annotationWidth >= endingXPos ? endingXPos - annotationWidth : xPos)
+          .attr('y', 0)
+          .attr('height', ANNOTATION_CONTAINER_HEIGHT)
+          .attr('width', annotationWidth)
+          .on('mouseover', function (this: HTMLElement) {
+            let tooltipData: TooltipData = [];
+            if (Array.isArray(mergedAnnotation.annotations)) {
+              const hasMergedAnnotations = mergedAnnotation.annotations.length > 1;
+              if (hasMergedAnnotations) {
+                // @ts-ignore skipping header so it doesn't have other params
+                tooltipData.push({ skipHeader: true });
+              }
+              tooltipData = [
+                ...tooltipData,
+                ...mergedAnnotation.annotations
+                  .map((item) => getTooltipContent(item, hasMergedAnnotations))
+                  .flat(),
+              ];
+            }
+
+            tooltipService.show(tooltipData, this);
+          })
+          .on('mouseout', () => tooltipService.hide());
+      });
+    },
+    [
+      chartWidth,
+      domain,
+      data,
+      tooltipService,
+      label,
+      euiTheme.euiTextSubduedColor,
+      euiTheme.euiFontSizeXS,
+      euiTheme.euiBorderColor,
+      getTooltipContent,
+    ]
+  );
+
+  return <div ref={canvasRef} />;
+};
diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_explorer_context.tsx b/x-pack/plugins/ml/public/application/explorer/anomaly_explorer_context.tsx
index 2217c540ccf3b..53b9edc97cb6b 100644
--- a/x-pack/plugins/ml/public/application/explorer/anomaly_explorer_context.tsx
+++ b/x-pack/plugins/ml/public/application/explorer/anomaly_explorer_context.tsx
@@ -16,6 +16,7 @@ import { useExplorerUrlState } from './hooks/use_explorer_url_state';
 import { AnomalyChartsStateService } from './anomaly_charts_state_service';
 import { AnomalyExplorerChartsService } from '../services/anomaly_explorer_charts_service';
 import { useTableSeverity } from '../components/controls/select_severity';
+import { AnomalyDetectionAlertsStateService } from './alerts';
 
 export type AnomalyExplorerContextValue =
   | {
@@ -24,6 +25,7 @@ export type AnomalyExplorerContextValue =
       anomalyTimelineService: AnomalyTimelineService;
       anomalyTimelineStateService: AnomalyTimelineStateService;
       chartsStateService: AnomalyChartsStateService;
+      anomalyDetectionAlertsStateService: AnomalyDetectionAlertsStateService;
     }
   | undefined;
 
@@ -59,6 +61,7 @@ export const AnomalyExplorerContextProvider: FC = ({ children }) => {
     services: {
       mlServices: { mlApiServices },
       uiSettings,
+      data,
     },
   } = useMlKibana();
 
@@ -102,12 +105,19 @@ export const AnomalyExplorerContextProvider: FC = ({ children }) => {
       tableSeverityState
     );
 
+    const anomalyDetectionAlertsStateService = new AnomalyDetectionAlertsStateService(
+      anomalyTimelineStateService,
+      data,
+      timefilter
+    );
+
     setAnomalyExplorerContextValue({
       anomalyExplorerChartsService,
       anomalyExplorerCommonStateService,
       anomalyTimelineService,
       anomalyTimelineStateService,
       chartsStateService,
+      anomalyDetectionAlertsStateService,
     });
 
     return () => {
@@ -116,6 +126,7 @@ export const AnomalyExplorerContextProvider: FC = ({ children }) => {
       anomalyExplorerCommonStateService.destroy();
       anomalyTimelineStateService.destroy();
       chartsStateService.destroy();
+      anomalyDetectionAlertsStateService.destroy();
     };
     // eslint-disable-next-line react-hooks/exhaustive-deps
   }, []);
diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx
index 4e0416a63b34a..9864e7b3d3305 100644
--- a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx
+++ b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx
@@ -61,6 +61,7 @@ import { AnomalyTimelineService } from '../services/anomaly_timeline_service';
 import { useAnomalyExplorerContext } from './anomaly_explorer_context';
 import { useTimeBuckets } from '../components/custom_hooks/use_time_buckets';
 import { getTimeBoundsFromSelection } from './hooks/use_selected_cells';
+import { SwimLaneWrapper } from './alerts';
 
 function mapSwimlaneOptionsToEuiOptions(options: string[]) {
   return options.map((option) => ({
@@ -506,6 +507,7 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo(
           </EuiFlexGroup>
 
           <EuiSpacer size="m" />
+
           {annotationXDomain && Array.isArray(annotations) && annotations.length > 0 ? (
             <>
               <MlTooltipComponent>
@@ -522,29 +524,35 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo(
             </>
           ) : null}
 
-          <SwimlaneContainer
-            id="overall"
-            data-test-subj="mlAnomalyExplorerSwimlaneOverall"
-            filterActive={filterActive}
-            timeBuckets={timeBuckets}
-            swimlaneData={overallSwimlaneData as OverallSwimlaneData}
-            swimlaneType={SWIMLANE_TYPE.OVERALL}
+          <SwimLaneWrapper
             selection={overallCellSelection}
-            onCellsSelection={setSelectedCells}
-            onResize={onResize}
-            isLoading={loading}
-            noDataWarning={
-              <EuiText textAlign={'center'}>
-                <h5>
-                  <NoOverallData />
-                </h5>
-              </EuiText>
-            }
-            showTimeline={false}
-            showLegend={false}
-            yAxisWidth={Y_AXIS_LABEL_WIDTH}
-            chartsService={chartsService}
-          />
+            swimlaneContainerWidth={swimlaneContainerWidth}
+            swimLaneData={overallSwimlaneData as OverallSwimlaneData}
+          >
+            <SwimlaneContainer
+              id="overall"
+              data-test-subj="mlAnomalyExplorerSwimlaneOverall"
+              filterActive={filterActive}
+              timeBuckets={timeBuckets}
+              swimlaneData={overallSwimlaneData as OverallSwimlaneData}
+              swimlaneType={SWIMLANE_TYPE.OVERALL}
+              selection={overallCellSelection}
+              onCellsSelection={setSelectedCells}
+              onResize={onResize}
+              isLoading={loading}
+              noDataWarning={
+                <EuiText textAlign={'center'}>
+                  <h5>
+                    <NoOverallData />
+                  </h5>
+                </EuiText>
+              }
+              showTimeline={false}
+              showLegend={false}
+              yAxisWidth={Y_AXIS_LABEL_WIDTH}
+              chartsService={chartsService}
+            />
+          </SwimLaneWrapper>
 
           <EuiSpacer size="m" />
           {viewBySwimlaneOptions.length > 0 && (
diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline_state_service.ts b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline_state_service.ts
index 27a3836fda471..573a0e151ae43 100644
--- a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline_state_service.ts
+++ b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline_state_service.ts
@@ -49,6 +49,12 @@ interface SwimLanePagination {
   viewByPerPage: number;
 }
 
+export interface TimeDomain {
+  min: number;
+  max: number;
+  minInterval: number;
+}
+
 /**
  * Service for managing anomaly timeline state.
  */
@@ -87,6 +93,18 @@ export class AnomalyTimelineStateService extends StateService {
   private _timeBounds$: Observable<TimeRangeBounds>;
   private _refreshSubject$: Observable<Refresh>;
 
+  /** Time domain of the currently active swim lane */
+  public readonly timeDomain$: Observable<TimeDomain | null> = this._overallSwimLaneData$.pipe(
+    map((data) => {
+      if (!data) return null;
+      return {
+        min: data.earliest * 1000,
+        max: data.latest * 1000,
+        minInterval: data.interval * 1000,
+      };
+    })
+  );
+
   constructor(
     private anomalyExplorerUrlStateService: AnomalyExplorerUrlStateService,
     private anomalyExplorerCommonStateService: AnomalyExplorerCommonStateService,
@@ -646,6 +664,42 @@ export class AnomalyTimelineStateService extends StateService {
     return this._viewBySwimLaneOptions$.asObservable();
   }
 
+  /**
+   * Currently selected jobs on the swim lane
+   */
+  public getSwimLaneJobs$(): Observable<ExplorerJob[]> {
+    return combineLatest([
+      this.anomalyExplorerCommonStateService.getSelectedJobs$(),
+      this.getViewBySwimlaneFieldName$(),
+      this._viewBySwimLaneData$,
+      this._selectedCells$,
+    ]).pipe(
+      map(([selectedJobs, swimLaneFieldName, viewBySwimLaneData, selectedCells]) => {
+        // If there are selected lanes on the view by swim lane, use those to filter the jobs.
+        if (
+          selectedCells?.type === SWIMLANE_TYPE.VIEW_BY &&
+          selectedCells?.viewByFieldName === VIEW_BY_JOB_LABEL
+        ) {
+          return selectedJobs.filter((job) => {
+            return selectedCells.lanes.includes(job.id);
+          });
+        }
+
+        if (
+          selectedCells?.type === SWIMLANE_TYPE.OVERALL &&
+          selectedCells?.viewByFieldName === VIEW_BY_JOB_LABEL &&
+          viewBySwimLaneData
+        ) {
+          return selectedJobs.filter((job) => {
+            return viewBySwimLaneData.laneLabels.includes(job.id);
+          });
+        }
+
+        return selectedJobs;
+      })
+    );
+  }
+
   public getViewBySwimLaneOptions(): string[] {
     return this._viewBySwimLaneOptions$.getValue();
   }
diff --git a/x-pack/plugins/ml/public/application/explorer/explorer.tsx b/x-pack/plugins/ml/public/application/explorer/explorer.tsx
index 28a5164719563..7d04cfee36c66 100644
--- a/x-pack/plugins/ml/public/application/explorer/explorer.tsx
+++ b/x-pack/plugins/ml/public/application/explorer/explorer.tsx
@@ -78,6 +78,7 @@ import { useToastNotificationService } from '../services/toast_notification_serv
 import { useMlKibana, useMlLocator } from '../contexts/kibana';
 import { useAnomalyExplorerContext } from './anomaly_explorer_context';
 import { ML_ANOMALY_EXPLORER_PANELS } from '../../../common/types/storage';
+import { AlertsPanel } from './alerts';
 
 interface ExplorerPageProps {
   jobSelectorProps: JobSelectorProps;
@@ -263,8 +264,12 @@ export const Explorer: FC<ExplorerUIProps> = ({
   }, [anomalyExplorerPanelState]);
 
   const { displayWarningToast, displayDangerToast } = useToastNotificationService();
-  const { anomalyTimelineStateService, anomalyExplorerCommonStateService, chartsStateService } =
-    useAnomalyExplorerContext();
+  const {
+    anomalyTimelineStateService,
+    anomalyExplorerCommonStateService,
+    chartsStateService,
+    anomalyDetectionAlertsStateService,
+  } = useAnomalyExplorerContext();
 
   const htmlIdGen = useMemo(() => htmlIdGenerator(), []);
 
@@ -283,6 +288,8 @@ export const Explorer: FC<ExplorerUIProps> = ({
     anomalyExplorerCommonStateService.getSelectedJobs()
   );
 
+  const alertsData = useObservable(anomalyDetectionAlertsStateService.anomalyDetectionAlerts$, []);
+
   const applyFilter = useCallback(
     (fieldName: string, fieldValue: string, action: FilterAction) => {
       const { filterActive, queryString } = filterSettings;
@@ -487,6 +494,8 @@ export const Explorer: FC<ExplorerUIProps> = ({
 
       <EuiSpacer size="m" />
 
+      {alertsData.length > 0 ? <AlertsPanel /> : null}
+
       {annotationsError !== undefined && (
         <>
           <EuiTitle data-test-subj="mlAnomalyExplorerAnnotationsPanel error" size={'xs'}>
diff --git a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx
index 4b69ce479c58e..721f0958ba5fe 100644
--- a/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx
+++ b/x-pack/plugins/ml/public/application/explorer/swimlane_container.tsx
@@ -68,7 +68,7 @@ declare global {
  */
 const RESIZE_THROTTLE_TIME_MS = 500;
 const BORDER_WIDTH = 1;
-const CELL_HEIGHT = 30;
+export const CELL_HEIGHT = 30;
 const LEGEND_HEIGHT = 34;
 const X_AXIS_HEIGHT = 24;
 
diff --git a/x-pack/plugins/ml/public/plugin.ts b/x-pack/plugins/ml/public/plugin.ts
index c0356b0f40192..90d107882f7bb 100644
--- a/x-pack/plugins/ml/public/plugin.ts
+++ b/x-pack/plugins/ml/public/plugin.ts
@@ -42,13 +42,14 @@ import {
 import type { DataVisualizerPluginStart } from '@kbn/data-visualizer-plugin/public';
 import type { PluginSetupContract as AlertingSetup } from '@kbn/alerting-plugin/public';
 import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
-import type { FieldFormatsSetup, FieldFormatsStart } from '@kbn/field-formats-plugin/public';
+import type { FieldFormatsSetup } from '@kbn/field-formats-plugin/public';
 import type { DashboardSetup, DashboardStart } from '@kbn/dashboard-plugin/public';
 import type { ChartsPluginStart } from '@kbn/charts-plugin/public';
 import type { CasesUiSetup, CasesUiStart } from '@kbn/cases-plugin/public';
 import type { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public';
 import type { PresentationUtilPluginStart } from '@kbn/presentation-util-plugin/public';
 import type { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public';
+import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common';
 import {
   getMlSharedServices,
   MlSharedServices,
@@ -78,7 +79,7 @@ export interface MlStartDependencies {
   dataViewEditor: DataViewEditorStart;
   dataVisualizer: DataVisualizerPluginStart;
   embeddable: EmbeddableStart;
-  fieldFormats: FieldFormatsStart;
+  fieldFormats: FieldFormatsRegistry;
   lens: LensPublicStart;
   licensing: LicensingPluginStart;
   maps?: MapsStartApi;
@@ -246,7 +247,11 @@ export class MlPlugin implements Plugin<MlPluginSetup, MlPluginStart> {
                   mlCapabilities.canUseMlAlerts &&
                   mlCapabilities.canGetJobs
                 ) {
-                  registerMlAlerts(pluginsSetup.triggersActionsUi, pluginsSetup.alerting);
+                  registerMlAlerts(
+                    pluginsSetup.triggersActionsUi,
+                    core.getStartServices,
+                    pluginsSetup.alerting
+                  );
                 }
 
                 if (pluginsSetup.maps) {
diff --git a/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts b/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts
index dc85428a63386..2a52e1d1337e2 100644
--- a/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts
+++ b/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts
@@ -928,7 +928,7 @@ export function alertingServiceProvider(
           spaceId
         );
 
-        const message = i18n.translate(
+        const contextMessage = i18n.translate(
           'xpack.ml.alertTypes.anomalyDetectionAlertingRule.recoveredMessage',
           {
             defaultMessage:
@@ -940,18 +940,26 @@ export function alertingServiceProvider(
           }
         );
 
+        const payloadMessage = i18n.translate(
+          'xpack.ml.alertTypes.anomalyDetectionAlertingRule.recoveredReason',
+          {
+            defaultMessage:
+              'No anomalies have been found in the concecutive bucket after the alert was triggered.',
+          }
+        );
+
         return {
           name: '',
           isHealthy: true,
           payload: {
             [ALERT_URL]: url,
-            [ALERT_REASON]: message,
+            [ALERT_REASON]: payloadMessage,
             job_id: queryParams.jobIds[0],
           },
           context: {
             anomalyExplorerUrl: url,
             jobIds: queryParams.jobIds,
-            message,
+            message: contextMessage,
           } as AnomalyDetectionAlertContext,
         };
       }
diff --git a/x-pack/plugins/ml/server/lib/alerts/register_anomaly_detection_alert_type.ts b/x-pack/plugins/ml/server/lib/alerts/register_anomaly_detection_alert_type.ts
index 8e0abc16821fe..ad536027a6619 100644
--- a/x-pack/plugins/ml/server/lib/alerts/register_anomaly_detection_alert_type.ts
+++ b/x-pack/plugins/ml/server/lib/alerts/register_anomaly_detection_alert_type.ts
@@ -6,20 +6,28 @@
  */
 
 import { i18n } from '@kbn/i18n';
-import { KibanaRequest, DEFAULT_APP_CATEGORIES } from '@kbn/core/server';
+import { DEFAULT_APP_CATEGORIES, KibanaRequest } from '@kbn/core/server';
 import type {
   ActionGroup,
   AlertInstanceContext,
   AlertInstanceState,
+  RecoveredActionGroupId,
   RuleTypeParams,
   RuleTypeState,
-  RecoveredActionGroupId,
 } from '@kbn/alerting-plugin/common';
 import { IRuleTypeAlerts, RuleExecutorOptions } from '@kbn/alerting-plugin/server';
-import { ALERT_NAMESPACE, ALERT_REASON, ALERT_URL } from '@kbn/rule-data-utils';
+import { ALERT_REASON, ALERT_URL } from '@kbn/rule-data-utils';
 import { MlAnomalyDetectionAlert } from '@kbn/alerts-as-data-utils';
 import { ES_FIELD_TYPES } from '@kbn/field-types';
-import { ML_ALERT_TYPES } from '../../../common/constants/alerts';
+import {
+  ALERT_ANOMALY_DETECTION_JOB_ID,
+  ALERT_ANOMALY_IS_INTERIM,
+  ALERT_ANOMALY_SCORE,
+  ALERT_ANOMALY_TIMESTAMP,
+  ALERT_TOP_INFLUENCERS,
+  ALERT_TOP_RECORDS,
+  ML_ALERT_TYPES,
+} from '../../../common/constants/alerts';
 import { PLUGIN_ID } from '../../../common/constants/app';
 import { MINIMUM_FULL_LICENSE } from '../../../common/license';
 import {
@@ -79,17 +87,6 @@ export type AnomalyScoreMatchGroupId = typeof ANOMALY_SCORE_MATCH_GROUP_ID;
 
 export const ANOMALY_DETECTION_AAD_INDEX_NAME = 'ml.anomaly-detection';
 
-const ML_ALERT_NAMESPACE = ALERT_NAMESPACE;
-
-export const ALERT_ANOMALY_DETECTION_JOB_ID = `${ML_ALERT_NAMESPACE}.job_id` as const;
-
-export const ALERT_ANOMALY_SCORE = `${ML_ALERT_NAMESPACE}.anomaly_score` as const;
-export const ALERT_ANOMALY_IS_INTERIM = `${ML_ALERT_NAMESPACE}.is_interim` as const;
-export const ALERT_ANOMALY_TIMESTAMP = `${ML_ALERT_NAMESPACE}.anomaly_timestamp` as const;
-
-export const ALERT_TOP_RECORDS = `${ML_ALERT_NAMESPACE}.top_records` as const;
-export const ALERT_TOP_INFLUENCERS = `${ML_ALERT_NAMESPACE}.top_influencers` as const;
-
 export const ANOMALY_DETECTION_AAD_CONFIG: IRuleTypeAlerts<MlAnomalyDetectionAlert> = {
   context: ANOMALY_DETECTION_AAD_INDEX_NAME,
   mappings: {
diff --git a/x-pack/plugins/ml/tsconfig.json b/x-pack/plugins/ml/tsconfig.json
index 4a0077770808a..cca832eee0423 100644
--- a/x-pack/plugins/ml/tsconfig.json
+++ b/x-pack/plugins/ml/tsconfig.json
@@ -108,5 +108,7 @@
     "@kbn/data-view-editor-plugin",
     "@kbn/rule-data-utils",
     "@kbn/alerts-as-data-utils",
+    "@kbn/rule-registry-plugin",
+    "@kbn/securitysolution-ecs",
   ],
 }

From ce0114b3d6a5f0df43b4680620a39db33d234640 Mon Sep 17 00:00:00 2001
From: Walter Rafelsberger <walter.rafelsberger@elastic.co>
Date: Fri, 10 Nov 2023 13:57:59 +0100
Subject: [PATCH 084/147] [ML] AIOps: Log Rate Analysis V2 REST API, replaces
 references to `term` with `item`. (#170274)

This PR uses [conditional
types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html)
to allow the handling of both multiple API versions within one route handler. The more tricky bit turned out
to be not the updated request body, but the response since it is an
NDJSON stream where some messages were updated. In this case also the
functions that create these messages were updated with conditional types
to be able to create a message that fits the definition of the API
version.

The API integration tests originally had these message identifiers in
the `expected` section of their `testData`. I changed that to use helper
functions that retrieve the expected messages from the stream according
to the expected version. All API integration tests are run on both
versions. The functional tests are run only on the newer version since
the UI is expected to work with version `2` only.
---
 x-pack/packages/ml/agg_utils/src/types.ts     |  29 +-
 x-pack/plugins/aiops/common/api/index.ts      |  17 -
 .../common/api/log_rate_analysis/actions.ts   | 128 ++++--
 .../common/api/log_rate_analysis/index.ts     |  24 --
 .../common/api/log_rate_analysis/schema.ts    |  44 +--
 .../common/api/log_rate_analysis/schema_v1.ts |  41 ++
 .../common/api/log_rate_analysis/schema_v2.ts |  66 ++++
 .../aiops/common/api/stream_reducer.test.ts   |  63 +--
 .../aiops/common/api/stream_reducer.ts        |  34 +-
 .../category_table/category_table.tsx         |   2 +-
 .../log_rate_analysis_results.tsx             |  43 +-
 .../mini_histogram/mini_histogram.tsx         |   2 +-
 .../routes/log_rate_analysis/define_route.ts  |  19 +-
 .../queries/fetch_categories.ts               |   2 +-
 .../queries/fetch_category_counts.ts          |   2 +-
 .../queries/fetch_index_info.test.ts          |   2 +-
 .../queries/fetch_index_info.ts               |   2 +-
 .../queries/fetch_significant_categories.ts   |   2 +-
 .../fetch_significant_term_p_values.ts        |   2 +-
 .../fetch_terms_2_categories_counts.ts        |   2 +-
 .../log_rate_analysis/queries/get_filters.ts  |   2 +-
 .../queries/get_histogram_query.ts            |   2 +-
 .../queries/get_query_with_params.ts          |   4 +-
 .../queries/get_request_base.ts               |   2 +-
 .../route_handler_factory.ts                  | 165 +++++---
 .../aiops/log_rate_analysis_full_analysis.ts  | 338 ++++++++--------
 .../aiops/log_rate_analysis_groups_only.ts    | 367 ++++++++++--------
 .../apis/aiops/log_rate_analysis_no_index.ts  |  71 ++--
 .../api_integration/apis/aiops/test_data.ts   |  44 +--
 .../apis/aiops/test_helpers.ts                |  38 ++
 .../test/api_integration/apis/aiops/types.ts  |  14 +-
 .../apis/aiops/permissions.ts                 |  75 ++--
 32 files changed, 963 insertions(+), 685 deletions(-)
 delete mode 100644 x-pack/plugins/aiops/common/api/log_rate_analysis/index.ts
 create mode 100644 x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v1.ts
 create mode 100644 x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v2.ts
 create mode 100644 x-pack/test/api_integration/apis/aiops/test_helpers.ts

diff --git a/x-pack/packages/ml/agg_utils/src/types.ts b/x-pack/packages/ml/agg_utils/src/types.ts
index 026daf861058f..d8e76239d0e09 100644
--- a/x-pack/packages/ml/agg_utils/src/types.ts
+++ b/x-pack/packages/ml/agg_utils/src/types.ts
@@ -149,17 +149,10 @@ export interface SignificantTerm extends FieldValuePair {
   unique?: boolean;
 }
 
-/**
- * Represents a data item in a significant term histogram.
- * @interface
- */
-export interface SignificantTermHistogramItem {
+interface SignificantTermHistogramItemBase {
   /** The document count for this item in the overall context. */
   doc_count_overall: number;
 
-  /** The document count for this item in the significant term context. */
-  doc_count_significant_term: number;
-
   /** The numeric key associated with this item. */
   key: number;
 
@@ -167,6 +160,26 @@ export interface SignificantTermHistogramItem {
   key_as_string: string;
 }
 
+/**
+ * @deprecated since version 2 of internal log rate analysis REST API endpoint
+ */
+interface SignificantTermHistogramItemV1 extends SignificantTermHistogramItemBase {
+  /** The document count for this item in the significant term context. */
+  doc_count_significant_term: number;
+}
+
+interface SignificantTermHistogramItemV2 extends SignificantTermHistogramItemBase {
+  /** The document count for this histogram item in the significant item context. */
+  doc_count_significant_item: number;
+}
+
+/**
+ * Represents a data item in a significant term histogram.
+ */
+export type SignificantTermHistogramItem =
+  | SignificantTermHistogramItemV1
+  | SignificantTermHistogramItemV2;
+
 /**
  * Represents histogram data for a field/value pair.
  * @interface
diff --git a/x-pack/plugins/aiops/common/api/index.ts b/x-pack/plugins/aiops/common/api/index.ts
index 42f1cfa512900..cd1852299f265 100644
--- a/x-pack/plugins/aiops/common/api/index.ts
+++ b/x-pack/plugins/aiops/common/api/index.ts
@@ -5,14 +5,6 @@
  * 2.0.
  */
 
-import type { HttpSetup } from '@kbn/core/public';
-
-import type {
-  AiopsLogRateAnalysisSchema,
-  AiopsLogRateAnalysisApiAction,
-} from './log_rate_analysis';
-import { streamReducer } from './stream_reducer';
-
 export const AIOPS_API_ENDPOINT = {
   LOG_RATE_ANALYSIS: '/internal/aiops/log_rate_analysis',
   CATEGORIZATION_FIELD_VALIDATION: '/internal/aiops/categorization_field_validation',
@@ -20,12 +12,3 @@ export const AIOPS_API_ENDPOINT = {
 
 type AiopsApiEndpointKeys = keyof typeof AIOPS_API_ENDPOINT;
 export type AiopsApiEndpoint = typeof AIOPS_API_ENDPOINT[AiopsApiEndpointKeys];
-
-export interface AiopsApiLogRateAnalysis {
-  http: HttpSetup;
-  endpoint: AiopsApiEndpoint;
-  apiVersion: string;
-  reducer: typeof streamReducer;
-  body: AiopsLogRateAnalysisSchema;
-  actions: AiopsLogRateAnalysisApiAction;
-}
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
index b0ab5ae260955..4075ddffd27f1 100644
--- a/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
+++ b/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
@@ -12,10 +12,24 @@ import type {
   SignificantTermGroupHistogram,
 } from '@kbn/ml-agg-utils';
 
+import type { AiopsLogRateAnalysisApiVersion as ApiVersion } from './schema';
+
 export const API_ACTION_NAME = {
+  /** @since API v2 */
+  ADD_SIGNIFICANT_ITEMS: 'add_significant_items',
+  /** @since API v2 */
+  ADD_SIGNIFICANT_ITEMS_HISTOGRAM: 'add_significant_items_histogram',
+  /** @since API v2 */
+  ADD_SIGNIFICANT_ITEMS_GROUP: 'add_significant_items_group',
+  /** @since API v2 */
+  ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM: 'add_significant_items_group_histogram',
+  /** @deprecated since API v2 */
   ADD_SIGNIFICANT_TERMS: 'add_significant_terms',
+  /** @deprecated since API v2 */
   ADD_SIGNIFICANT_TERMS_HISTOGRAM: 'add_significant_terms_histogram',
+  /** @deprecated since API v2 */
   ADD_SIGNIFICANT_TERMS_GROUP: 'add_significant_terms_group',
+  /** @deprecated since API v2 */
   ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM: 'add_significant_terms_group_histogram',
   ADD_ERROR: 'add_error',
   PING: 'ping',
@@ -26,60 +40,108 @@ export const API_ACTION_NAME = {
 } as const;
 export type ApiActionName = typeof API_ACTION_NAME[keyof typeof API_ACTION_NAME];
 
-interface ApiActionAddSignificantTerms {
-  type: typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS;
+interface ApiActionAddSignificantTerms<T extends ApiVersion> {
+  type: T extends '1'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS
+    : T extends '2'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS
+    : never;
   payload: SignificantTerm[];
 }
 
-export function addSignificantTermsAction(
-  payload: ApiActionAddSignificantTerms['payload']
-): ApiActionAddSignificantTerms {
+export function addSignificantTermsAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantTerms<T>['payload'],
+  version: T
+): ApiActionAddSignificantTerms<T> {
+  if (version === '1') {
+    return {
+      type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS,
+      payload,
+    } as ApiActionAddSignificantTerms<T>;
+  }
+
   return {
-    type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS,
+    type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS,
     payload,
-  };
+  } as ApiActionAddSignificantTerms<T>;
 }
 
-interface ApiActionAddSignificantTermsHistogram {
-  type: typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM;
+interface ApiActionAddSignificantTermsHistogram<T extends ApiVersion> {
+  type: T extends '1'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM
+    : T extends '2'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_HISTOGRAM
+    : never;
   payload: SignificantTermHistogram[];
 }
 
-export function addSignificantTermsHistogramAction(
-  payload: ApiActionAddSignificantTermsHistogram['payload']
-): ApiActionAddSignificantTermsHistogram {
+export function addSignificantTermsHistogramAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantTermsHistogram<T>['payload'],
+  version: T
+): ApiActionAddSignificantTermsHistogram<T> {
+  if (version === '1') {
+    return {
+      type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM,
+      payload,
+    } as ApiActionAddSignificantTermsHistogram<T>;
+  }
+
   return {
-    type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM,
+    type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_HISTOGRAM,
     payload,
-  };
+  } as ApiActionAddSignificantTermsHistogram<T>;
 }
 
-interface ApiActionAddSignificantTermsGroup {
-  type: typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP;
+interface ApiActionAddSignificantTermsGroup<T extends ApiVersion> {
+  type: T extends '1'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP
+    : T extends '2'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP
+    : never;
   payload: SignificantTermGroup[];
 }
 
-export function addSignificantTermsGroupAction(
-  payload: ApiActionAddSignificantTermsGroup['payload']
-) {
+export function addSignificantTermsGroupAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantTermsGroup<T>['payload'],
+  version: T
+): ApiActionAddSignificantTermsGroup<T> {
+  if (version === '1') {
+    return {
+      type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP,
+      payload,
+    } as ApiActionAddSignificantTermsGroup<T>;
+  }
+
   return {
-    type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP,
+    type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP,
     payload,
-  };
+  } as ApiActionAddSignificantTermsGroup<T>;
 }
 
-interface ApiActionAddSignificantTermsGroupHistogram {
-  type: typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM;
+interface ApiActionAddSignificantTermsGroupHistogram<T extends ApiVersion> {
+  type: T extends '1'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM
+    : T extends '2'
+    ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM
+    : never;
   payload: SignificantTermGroupHistogram[];
 }
 
-export function addSignificantTermsGroupHistogramAction(
-  payload: ApiActionAddSignificantTermsGroupHistogram['payload']
-): ApiActionAddSignificantTermsGroupHistogram {
+export function addSignificantTermsGroupHistogramAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantTermsGroupHistogram<T>['payload'],
+  version: T
+): ApiActionAddSignificantTermsGroupHistogram<T> {
+  if (version === '1') {
+    return {
+      type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM,
+      payload,
+    } as ApiActionAddSignificantTermsGroupHistogram<T>;
+  }
+
   return {
-    type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM,
+    type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM,
     payload,
-  };
+  } as ApiActionAddSignificantTermsGroupHistogram<T>;
 }
 
 interface ApiActionAddError {
@@ -148,11 +210,11 @@ export function updateLoadingStateAction(
   };
 }
 
-export type AiopsLogRateAnalysisApiAction =
-  | ApiActionAddSignificantTerms
-  | ApiActionAddSignificantTermsGroup
-  | ApiActionAddSignificantTermsHistogram
-  | ApiActionAddSignificantTermsGroupHistogram
+export type AiopsLogRateAnalysisApiAction<T extends ApiVersion> =
+  | ApiActionAddSignificantTerms<T>
+  | ApiActionAddSignificantTermsGroup<T>
+  | ApiActionAddSignificantTermsHistogram<T>
+  | ApiActionAddSignificantTermsGroupHistogram<T>
   | ApiActionAddError
   | ApiActionPing
   | ApiActionResetAll
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/index.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/index.ts
deleted file mode 100644
index 4687bb8872840..0000000000000
--- a/x-pack/plugins/aiops/common/api/log_rate_analysis/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-export {
-  addSignificantTermsAction,
-  addSignificantTermsGroupAction,
-  addSignificantTermsGroupHistogramAction,
-  addSignificantTermsHistogramAction,
-  addErrorAction,
-  pingAction,
-  resetAllAction,
-  resetErrorsAction,
-  resetGroupsAction,
-  updateLoadingStateAction,
-  API_ACTION_NAME,
-} from './actions';
-export type { AiopsLogRateAnalysisApiAction } from './actions';
-
-export { aiopsLogRateAnalysisSchema } from './schema';
-export type { AiopsLogRateAnalysisSchema } from './schema';
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/schema.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema.ts
index 499b61c5ba5ca..a7fbcfd303b55 100644
--- a/x-pack/plugins/aiops/common/api/log_rate_analysis/schema.ts
+++ b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema.ts
@@ -5,37 +5,17 @@
  * 2.0.
  */
 
-import { schema, TypeOf } from '@kbn/config-schema';
+import type { AiopsLogRateAnalysisSchemaV1 } from './schema_v1';
+import type { AiopsLogRateAnalysisSchemaV2 } from './schema_v2';
 
-export const aiopsLogRateAnalysisSchema = schema.object({
-  start: schema.number(),
-  end: schema.number(),
-  searchQuery: schema.string(),
-  timeFieldName: schema.string(),
-  includeFrozen: schema.maybe(schema.boolean()),
-  grouping: schema.maybe(schema.boolean()),
-  /** Analysis selection time ranges */
-  baselineMin: schema.number(),
-  baselineMax: schema.number(),
-  deviationMin: schema.number(),
-  deviationMax: schema.number(),
-  /** The index to query for log rate analysis */
-  index: schema.string(),
-  /** Settings to override headers derived compression and flush fix */
-  compressResponse: schema.maybe(schema.boolean()),
-  flushFix: schema.maybe(schema.boolean()),
-  /** Overrides to skip steps of the analysis with existing data */
-  overrides: schema.maybe(
-    schema.object({
-      loaded: schema.maybe(schema.number()),
-      remainingFieldCandidates: schema.maybe(schema.arrayOf(schema.string())),
-      // TODO Improve schema
-      significantTerms: schema.maybe(schema.arrayOf(schema.any())),
-      regroupOnly: schema.maybe(schema.boolean()),
-    })
-  ),
-  /** Probability used for the random sampler aggregations */
-  sampleProbability: schema.maybe(schema.number()),
-});
+export type AiopsLogRateAnalysisApiVersion = '1' | '2';
 
-export type AiopsLogRateAnalysisSchema = TypeOf<typeof aiopsLogRateAnalysisSchema>;
+const LATEST_API_VERSION: AiopsLogRateAnalysisApiVersion = '2';
+
+export type AiopsLogRateAnalysisSchema<
+  T extends AiopsLogRateAnalysisApiVersion = typeof LATEST_API_VERSION
+> = T extends '1'
+  ? AiopsLogRateAnalysisSchemaV1
+  : T extends '2'
+  ? AiopsLogRateAnalysisSchemaV2
+  : never;
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v1.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v1.ts
new file mode 100644
index 0000000000000..e994ecc33dafe
--- /dev/null
+++ b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v1.ts
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { schema, TypeOf } from '@kbn/config-schema';
+
+export const aiopsLogRateAnalysisSchemaV1 = schema.object({
+  start: schema.number(),
+  end: schema.number(),
+  searchQuery: schema.string(),
+  timeFieldName: schema.string(),
+  includeFrozen: schema.maybe(schema.boolean()),
+  grouping: schema.maybe(schema.boolean()),
+  /** Analysis selection time ranges */
+  baselineMin: schema.number(),
+  baselineMax: schema.number(),
+  deviationMin: schema.number(),
+  deviationMax: schema.number(),
+  /** The index to query for log rate analysis */
+  index: schema.string(),
+  /** Settings to override headers derived compression and flush fix */
+  compressResponse: schema.maybe(schema.boolean()),
+  flushFix: schema.maybe(schema.boolean()),
+  /** Overrides to skip steps of the analysis with existing data */
+  overrides: schema.maybe(
+    schema.object({
+      loaded: schema.maybe(schema.number()),
+      remainingFieldCandidates: schema.maybe(schema.arrayOf(schema.string())),
+      // TODO Improve schema
+      significantTerms: schema.maybe(schema.arrayOf(schema.any())),
+      regroupOnly: schema.maybe(schema.boolean()),
+    })
+  ),
+  /** Probability used for the random sampler aggregations */
+  sampleProbability: schema.maybe(schema.number()),
+});
+
+export type AiopsLogRateAnalysisSchemaV1 = TypeOf<typeof aiopsLogRateAnalysisSchemaV1>;
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v2.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v2.ts
new file mode 100644
index 0000000000000..2438c04971e91
--- /dev/null
+++ b/x-pack/plugins/aiops/common/api/log_rate_analysis/schema_v2.ts
@@ -0,0 +1,66 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { schema, TypeOf } from '@kbn/config-schema';
+
+const significantItem = schema.object({
+  key: schema.string(),
+  type: schema.oneOf([schema.literal('keyword'), schema.literal('log_pattern')]),
+  fieldName: schema.string(),
+  fieldValue: schema.oneOf([schema.string(), schema.number()]),
+  doc_count: schema.number(),
+  bg_count: schema.number(),
+  total_doc_count: schema.number(),
+  total_bg_count: schema.number(),
+  score: schema.number(),
+  pValue: schema.nullable(schema.number()),
+  normalizedScore: schema.number(),
+  histogram: schema.maybe(
+    schema.arrayOf(
+      schema.object({
+        doc_count_overall: schema.number(),
+        doc_count_significant_item: schema.number(),
+        key: schema.number(),
+        key_as_string: schema.string(),
+      })
+    )
+  ),
+  unique: schema.maybe(schema.boolean()),
+});
+
+export const aiopsLogRateAnalysisSchemaV2 = schema.object({
+  start: schema.number(),
+  end: schema.number(),
+  searchQuery: schema.string(),
+  timeFieldName: schema.string(),
+  includeFrozen: schema.maybe(schema.boolean()),
+  grouping: schema.maybe(schema.boolean()),
+  /** Analysis selection time ranges */
+  baselineMin: schema.number(),
+  baselineMax: schema.number(),
+  deviationMin: schema.number(),
+  deviationMax: schema.number(),
+  /** The index to query for log rate analysis */
+  index: schema.string(),
+  /** Settings to override headers derived compression and flush fix */
+  compressResponse: schema.maybe(schema.boolean()),
+  flushFix: schema.maybe(schema.boolean()),
+  /** Overrides to skip steps of the analysis with existing data */
+  overrides: schema.maybe(
+    schema.object({
+      loaded: schema.maybe(schema.number()),
+      remainingFieldCandidates: schema.maybe(schema.arrayOf(schema.string())),
+      significantItems: schema.maybe(schema.arrayOf(significantItem)),
+      regroupOnly: schema.maybe(schema.boolean()),
+    })
+  ),
+  /** Probability used for the random sampler aggregations */
+  sampleProbability: schema.maybe(schema.number()),
+});
+
+export type AiopsLogRateAnalysisSchemaV2 = TypeOf<typeof aiopsLogRateAnalysisSchemaV2>;
+export type AiopsLogRateAnalysisSchemaSignificantItem = TypeOf<typeof significantItem>;
diff --git a/x-pack/plugins/aiops/common/api/stream_reducer.test.ts b/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
index d779ccab356b3..7802d61e1781e 100644
--- a/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
+++ b/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
@@ -14,7 +14,7 @@ import {
   resetAllAction,
   resetGroupsAction,
   updateLoadingStateAction,
-} from './log_rate_analysis';
+} from './log_rate_analysis/actions';
 import { initialState, streamReducer } from './stream_reducer';
 
 describe('streamReducer', () => {
@@ -28,56 +28,59 @@ describe('streamReducer', () => {
       ccsWarning: true,
       loaded: 50,
       loadingState: 'Loaded 50%',
-      significantTerms: [],
-      significantTermsGroups: [],
+      significantItems: [],
+      significantItemsGroups: [],
       errors: [],
     });
   });
 
-  it('adds significant term, then resets all state again', () => {
+  it('adds significant item, then resets all state again', () => {
     const state1 = streamReducer(
       initialState,
-      addSignificantTermsAction([
-        {
-          key: 'the-field-name:the-field-value',
-          type: 'keyword',
-          fieldName: 'the-field-name',
-          fieldValue: 'the-field-value',
-          doc_count: 10,
-          bg_count: 100,
-          total_doc_count: 1000,
-          total_bg_count: 10000,
-          score: 0.1,
-          pValue: 0.01,
-          normalizedScore: 0.123,
-        },
-      ])
+      addSignificantTermsAction(
+        [
+          {
+            key: 'the-field-name:the-field-value',
+            type: 'keyword',
+            fieldName: 'the-field-name',
+            fieldValue: 'the-field-value',
+            doc_count: 10,
+            bg_count: 100,
+            total_doc_count: 1000,
+            total_bg_count: 10000,
+            score: 0.1,
+            pValue: 0.01,
+            normalizedScore: 0.123,
+          },
+        ],
+        '2'
+      )
     );
 
-    expect(state1.significantTerms).toHaveLength(1);
+    expect(state1.significantItems).toHaveLength(1);
 
     const state2 = streamReducer(state1, resetAllAction());
 
-    expect(state2.significantTerms).toHaveLength(0);
+    expect(state2.significantItems).toHaveLength(0);
   });
 
-  it('adds significant terms and groups, then resets groups only', () => {
-    const state1 = streamReducer(initialState, addSignificantTermsAction(significantTerms));
+  it('adds significant items and groups, then resets groups only', () => {
+    const state1 = streamReducer(initialState, addSignificantTermsAction(significantTerms, '2'));
 
-    expect(state1.significantTerms).toHaveLength(4);
-    expect(state1.significantTermsGroups).toHaveLength(0);
+    expect(state1.significantItems).toHaveLength(4);
+    expect(state1.significantItemsGroups).toHaveLength(0);
 
     const state2 = streamReducer(
       state1,
-      addSignificantTermsGroupAction(finalSignificantTermGroups)
+      addSignificantTermsGroupAction(finalSignificantTermGroups, '2')
     );
 
-    expect(state2.significantTerms).toHaveLength(4);
-    expect(state2.significantTermsGroups).toHaveLength(4);
+    expect(state2.significantItems).toHaveLength(4);
+    expect(state2.significantItemsGroups).toHaveLength(4);
 
     const state3 = streamReducer(state2, resetGroupsAction());
 
-    expect(state3.significantTerms).toHaveLength(4);
-    expect(state3.significantTermsGroups).toHaveLength(0);
+    expect(state3.significantItems).toHaveLength(4);
+    expect(state3.significantItemsGroups).toHaveLength(0);
   });
 });
diff --git a/x-pack/plugins/aiops/common/api/stream_reducer.ts b/x-pack/plugins/aiops/common/api/stream_reducer.ts
index 278c3843a2811..ba9e8014665c8 100644
--- a/x-pack/plugins/aiops/common/api/stream_reducer.ts
+++ b/x-pack/plugins/aiops/common/api/stream_reducer.ts
@@ -7,12 +7,12 @@
 
 import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
 
-import { API_ACTION_NAME, AiopsLogRateAnalysisApiAction } from './log_rate_analysis';
+import { API_ACTION_NAME, AiopsLogRateAnalysisApiAction } from './log_rate_analysis/actions';
 
 interface StreamState {
   ccsWarning: boolean;
-  significantTerms: SignificantTerm[];
-  significantTermsGroups: SignificantTermGroup[];
+  significantItems: SignificantTerm[];
+  significantItemsGroups: SignificantTermGroup[];
   errors: string[];
   loaded: number;
   loadingState: string;
@@ -22,8 +22,8 @@ interface StreamState {
 
 export const initialState: StreamState = {
   ccsWarning: false,
-  significantTerms: [],
-  significantTermsGroups: [],
+  significantItems: [],
+  significantItemsGroups: [],
   errors: [],
   loaded: 0,
   loadingState: '',
@@ -31,17 +31,17 @@ export const initialState: StreamState = {
 
 export function streamReducer(
   state: StreamState,
-  action: AiopsLogRateAnalysisApiAction | AiopsLogRateAnalysisApiAction[]
+  action: AiopsLogRateAnalysisApiAction<'2'> | Array<AiopsLogRateAnalysisApiAction<'2'>>
 ): StreamState {
   if (Array.isArray(action)) {
     return action.reduce(streamReducer, state);
   }
 
   switch (action.type) {
-    case API_ACTION_NAME.ADD_SIGNIFICANT_TERMS:
-      return { ...state, significantTerms: [...state.significantTerms, ...action.payload] };
-    case API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM:
-      const significantTerms = state.significantTerms.map((cp) => {
+    case API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS:
+      return { ...state, significantItems: [...state.significantItems, ...action.payload] };
+    case API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_HISTOGRAM:
+      const significantItems = state.significantItems.map((cp) => {
         const cpHistogram = action.payload.find(
           (h) => h.fieldName === cp.fieldName && h.fieldValue === cp.fieldValue
         );
@@ -50,24 +50,24 @@ export function streamReducer(
         }
         return cp;
       });
-      return { ...state, significantTerms };
-    case API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP:
-      return { ...state, significantTermsGroups: action.payload };
-    case API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM:
-      const significantTermsGroups = state.significantTermsGroups.map((cpg) => {
+      return { ...state, significantItems };
+    case API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP:
+      return { ...state, significantItemsGroups: action.payload };
+    case API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM:
+      const significantItemsGroups = state.significantItemsGroups.map((cpg) => {
         const cpHistogram = action.payload.find((h) => h.id === cpg.id);
         if (cpHistogram) {
           cpg.histogram = cpHistogram.histogram;
         }
         return cpg;
       });
-      return { ...state, significantTermsGroups };
+      return { ...state, significantItemsGroups };
     case API_ACTION_NAME.ADD_ERROR:
       return { ...state, errors: [...state.errors, action.payload] };
     case API_ACTION_NAME.RESET_ERRORS:
       return { ...state, errors: [] };
     case API_ACTION_NAME.RESET_GROUPS:
-      return { ...state, significantTermsGroups: [] };
+      return { ...state, significantItemsGroups: [] };
     case API_ACTION_NAME.RESET_ALL:
       return initialState;
     case API_ACTION_NAME.UPDATE_LOADING_STATE:
diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx
index 283bb71e35a76..3796af67f8cd2 100644
--- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx
+++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx
@@ -142,7 +142,7 @@ export const CategoryTable: FC<Props> = ({
 
           return {
             doc_count_overall: adjustedDocCount,
-            doc_count_significant_term: newTerm,
+            doc_count_significant_item: newTerm,
             key: catKey,
             key_as_string: `${catKey}`,
           };
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
index 97d7201f0140d..3a236085cd6cf 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
@@ -35,7 +35,8 @@ import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
 
 import { useAiopsAppContext } from '../../hooks/use_aiops_app_context';
 import { initialState, streamReducer } from '../../../common/api/stream_reducer';
-import type { AiopsApiLogRateAnalysis } from '../../../common/api';
+import type { AiopsLogRateAnalysisSchema } from '../../../common/api/log_rate_analysis/schema';
+import type { AiopsLogRateAnalysisSchemaSignificantItem } from '../../../common/api/log_rate_analysis/schema_v2';
 import { AIOPS_TELEMETRY_ID } from '../../../common/constants';
 import {
   getGroupTableItems,
@@ -145,9 +146,9 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
   const [groupResults, setGroupResults] = useState<boolean>(false);
   const [groupSkipFields, setGroupSkipFields] = useState<string[]>([]);
   const [uniqueFieldNames, setUniqueFieldNames] = useState<string[]>([]);
-  const [overrides, setOverrides] = useState<
-    AiopsApiLogRateAnalysis['body']['overrides'] | undefined
-  >(undefined);
+  const [overrides, setOverrides] = useState<AiopsLogRateAnalysisSchema['overrides'] | undefined>(
+    undefined
+  );
   const [shouldStart, setShouldStart] = useState(false);
   const [toggleIdSelected, setToggleIdSelected] = useState(resultsGroupedOffId);
 
@@ -164,7 +165,9 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
     setOverrides({
       loaded: 0,
       remainingFieldCandidates: [],
-      significantTerms: data.significantTerms.filter((d) => !skippedFields.includes(d.fieldName)),
+      significantItems: data.significantItems.filter(
+        (d) => !skippedFields.includes(d.fieldName)
+      ) as AiopsLogRateAnalysisSchemaSignificantItem[],
       regroupOnly: true,
     });
     startHandler(true, false);
@@ -176,10 +179,10 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
     data,
     isRunning,
     errors: streamErrors,
-  } = useFetchStream<AiopsApiLogRateAnalysis['body'], typeof streamReducer>(
+  } = useFetchStream<AiopsLogRateAnalysisSchema<'2'>, typeof streamReducer>(
     http,
     '/internal/aiops/log_rate_analysis',
-    '1',
+    '2',
     {
       start: earliest,
       end: latest,
@@ -206,10 +209,10 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
     { [AIOPS_TELEMETRY_ID.AIOPS_ANALYSIS_RUN_ORIGIN]: embeddingOrigin }
   );
 
-  const { significantTerms } = data;
+  const { significantItems } = data;
   useEffect(
-    () => setUniqueFieldNames(uniq(significantTerms.map((d) => d.fieldName)).sort()),
-    [significantTerms]
+    () => setUniqueFieldNames(uniq(significantItems.map((d) => d.fieldName)).sort()),
+    [significantItems]
   );
 
   useEffect(() => {
@@ -221,14 +224,18 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
         ((Array.isArray(remainingFieldCandidates) && remainingFieldCandidates.length > 0) ||
           groupsMissing)
       ) {
-        setOverrides({ loaded, remainingFieldCandidates, significantTerms: data.significantTerms });
+        setOverrides({
+          loaded,
+          remainingFieldCandidates,
+          significantItems: data.significantItems as AiopsLogRateAnalysisSchemaSignificantItem[],
+        });
       } else {
         setOverrides(undefined);
         if (onAnalysisCompleted) {
           onAnalysisCompleted({
             analysisType,
-            significantTerms: data.significantTerms,
-            significantTermsGroups: data.significantTermsGroups,
+            significantTerms: data.significantItems,
+            significantTermsGroups: data.significantItemsGroups,
           });
         }
       }
@@ -277,8 +284,8 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
   }, []);
 
   const groupTableItems = useMemo(
-    () => getGroupTableItems(data.significantTermsGroups),
-    [data.significantTermsGroups]
+    () => getGroupTableItems(data.significantItemsGroups),
+    [data.significantItemsGroups]
   );
 
   const shouldRerunAnalysis = useMemo(
@@ -288,7 +295,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
     [currentAnalysisWindowParameters, windowParameters]
   );
 
-  const showLogRateAnalysisResultsTable = data?.significantTerms.length > 0;
+  const showLogRateAnalysisResultsTable = data?.significantItems.length > 0;
   const groupItemCount = groupTableItems.reduce((p, c) => {
     return p + c.groupItemsSortedByUniqueness.length;
   }, 0);
@@ -475,7 +482,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
       >
         {showLogRateAnalysisResultsTable && groupResults ? (
           <LogRateAnalysisResultsGroupsTable
-            significantTerms={data.significantTerms}
+            significantTerms={data.significantItems}
             groupTableItems={groupTableItems}
             loading={isRunning}
             dataView={dataView}
@@ -487,7 +494,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
         ) : null}
         {showLogRateAnalysisResultsTable && !groupResults ? (
           <LogRateAnalysisResultsTable
-            significantTerms={data.significantTerms}
+            significantTerms={data.significantItems}
             loading={isRunning}
             dataView={dataView}
             timeRangeMs={timeRangeMs}
diff --git a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
index 1e65c797cacbb..5b6a28cc59463 100644
--- a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
+++ b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
@@ -126,7 +126,7 @@ export const MiniHistogram: FC<MiniHistogramProps> = ({
           xScaleType={ScaleType.Time}
           yScaleType={ScaleType.Linear}
           xAccessor={'key'}
-          yAccessors={['doc_count_significant_term']}
+          yAccessors={['doc_count_significant_item']}
           data={chartData}
           stackAccessors={[0]}
           color={barHighlightColor}
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/define_route.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/define_route.ts
index 3be8ef8dcdd2b..6f9343a50ae62 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/define_route.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/define_route.ts
@@ -10,7 +10,8 @@ import type { Logger } from '@kbn/logging';
 import type { DataRequestHandlerContext } from '@kbn/data-plugin/server';
 import type { UsageCounter } from '@kbn/usage-collection-plugin/server';
 
-import { aiopsLogRateAnalysisSchema } from '../../../common/api/log_rate_analysis';
+import { aiopsLogRateAnalysisSchemaV1 } from '../../../common/api/log_rate_analysis/schema_v1';
+import { aiopsLogRateAnalysisSchemaV2 } from '../../../common/api/log_rate_analysis/schema_v2';
 import { AIOPS_API_ENDPOINT } from '../../../common/api';
 
 import type { AiopsLicense } from '../../types';
@@ -27,7 +28,6 @@ export const defineRoute = (
   router.versioned
     .post({
       path: AIOPS_API_ENDPOINT.LOG_RATE_ANALYSIS,
-
       access: 'internal',
     })
     .addVersion(
@@ -35,10 +35,21 @@ export const defineRoute = (
         version: '1',
         validate: {
           request: {
-            body: aiopsLogRateAnalysisSchema,
+            body: aiopsLogRateAnalysisSchemaV1,
+          },
+        },
+      },
+      routeHandlerFactory('1', license, logger, coreStart, usageCounter)
+    )
+    .addVersion(
+      {
+        version: '2',
+        validate: {
+          request: {
+            body: aiopsLogRateAnalysisSchemaV2,
           },
         },
       },
-      routeHandlerFactory(license, logger, coreStart, usageCounter)
+      routeHandlerFactory('2', license, logger, coreStart, usageCounter)
     );
 };
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_categories.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_categories.ts
index bb49622ad999c..e70255ababffd 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_categories.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_categories.ts
@@ -16,7 +16,7 @@ import {
 } from '@kbn/ml-random-sampler-utils';
 
 import { RANDOM_SAMPLER_SEED } from '../../../../common/constants';
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 import { createCategoryRequest } from '../../../../common/api/log_categorization/create_category_request';
 import type {
   Category,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_category_counts.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_category_counts.ts
index fc7c14fb8f2ee..608734ae0e19a 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_category_counts.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_category_counts.ts
@@ -12,7 +12,7 @@ import { ElasticsearchClient } from '@kbn/core/server';
 import type { Logger } from '@kbn/logging';
 import { isPopulatedObject } from '@kbn/ml-is-populated-object';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 import { getCategoryQuery } from '../../../../common/api/log_categorization/get_category_query';
 import type { Category } from '../../../../common/api/log_categorization/types';
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.test.ts
index 790989df9833c..db14c30caebdc 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.test.ts
@@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { ElasticsearchClient } from '@kbn/core/server';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 import { fetchIndexInfo, getRandomDocsRequest } from './fetch_index_info';
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.ts
index cfb9426a739ad..595e212159437 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_index_info.ts
@@ -10,7 +10,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import { ES_FIELD_TYPES } from '@kbn/field-types';
 import type { ElasticsearchClient } from '@kbn/core/server';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 import { getQueryWithParams } from './get_query_with_params';
 import { getRequestBase } from './get_request_base';
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
index c9e54be509426..4cf106a369464 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
@@ -13,7 +13,7 @@ import { criticalTableLookup, type Histogram } from '@kbn/ml-chi2test';
 import { type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
 
 import type { Category } from '../../../../common/api/log_categorization/types';
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 import { LOG_RATE_ANALYSIS_SETTINGS } from '../../../../common/constants';
 
 import { fetchCategories } from './fetch_categories';
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
index 00bcd918f48d9..10b488940ce2c 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
@@ -16,7 +16,7 @@ import {
 } from '@kbn/ml-random-sampler-utils';
 
 import { LOG_RATE_ANALYSIS_SETTINGS, RANDOM_SAMPLER_SEED } from '../../../../common/constants';
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 import { isRequestAbortedError } from '../../../lib/is_request_aborted_error';
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
index f1629f212ae99..14be571331fd0 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
@@ -14,7 +14,7 @@ import type { Logger } from '@kbn/logging';
 import type { FieldValuePair, SignificantTerm } from '@kbn/ml-agg-utils';
 import { isPopulatedObject } from '@kbn/ml-is-populated-object';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 import type { FetchFrequentItemSetsResponse, ItemSet } from '../../../../common/types';
 import { getCategoryQuery } from '../../../../common/api/log_categorization/get_category_query';
 import type { Category } from '../../../../common/api/log_categorization/types';
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_filters.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_filters.ts
index 5e58e138dac6b..e910d2e997441 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_filters.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_filters.ts
@@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { ESFilter } from '@kbn/es-types';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 export function rangeQuery(
   start?: number,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_histogram_query.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_histogram_query.ts
index b45d7d026638e..0f3510df73dcf 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_histogram_query.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_histogram_query.ts
@@ -7,7 +7,7 @@
 
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 import { getQueryWithParams } from './get_query_with_params';
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_query_with_params.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_query_with_params.ts
index 2d68c666b78ea..b7e2e2619316a 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_query_with_params.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_query_with_params.ts
@@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { FieldValuePair } from '@kbn/ml-agg-utils';
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 import { getFilters } from './get_filters';
 
@@ -18,7 +18,7 @@ export const getTermsQuery = ({ fieldName, fieldValue }: FieldValuePair) => {
 };
 
 interface QueryParams {
-  params: AiopsLogRateAnalysisSchema;
+  params: AiopsLogRateAnalysisSchema<'2'>;
   termFilters?: FieldValuePair[];
   filter?: estypes.QueryDslQueryContainer;
 }
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_request_base.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_request_base.ts
index 2410be74ea6b0..ddc1a2b3a0a34 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_request_base.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_request_base.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis';
+import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
 
 export const getRequestBase = ({ index, includeFrozen }: AiopsLogRateAnalysisSchema) => ({
   index,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
index b522d6d6ee818..b92458cc1e3de 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
@@ -23,6 +23,7 @@ import { streamFactory } from '@kbn/ml-response-stream/server';
 import type {
   SignificantTerm,
   SignificantTermGroup,
+  SignificantTermHistogramItem,
   NumericChartData,
   NumericHistogramField,
 } from '@kbn/ml-agg-utils';
@@ -44,8 +45,11 @@ import {
   resetGroupsAction,
   updateLoadingStateAction,
   AiopsLogRateAnalysisApiAction,
-  type AiopsLogRateAnalysisSchema,
-} from '../../../common/api/log_rate_analysis';
+} from '../../../common/api/log_rate_analysis/actions';
+import type {
+  AiopsLogRateAnalysisSchema,
+  AiopsLogRateAnalysisApiVersion as ApiVersion,
+} from '../../../common/api/log_rate_analysis/schema';
 import { getCategoryQuery } from '../../../common/api/log_categorization/get_category_query';
 import { AIOPS_API_ENDPOINT } from '../../../common/api';
 
@@ -74,16 +78,16 @@ const PROGRESS_STEP_GROUPING = 0.1;
 const PROGRESS_STEP_HISTOGRAMS = 0.1;
 const PROGRESS_STEP_HISTOGRAMS_GROUPS = 0.1;
 
-export const routeHandlerFactory: (
+export function routeHandlerFactory<T extends ApiVersion>(
+  version: T,
   license: AiopsLicense,
   logger: Logger,
   coreStart: CoreStart,
   usageCounter?: UsageCounter
-) => RequestHandler<unknown, unknown, AiopsLogRateAnalysisSchema> =
-  (license, logger, coreStart, usageCounter) =>
-  async (
+): RequestHandler<unknown, unknown, AiopsLogRateAnalysisSchema<T>> {
+  return async (
     context: RequestHandlerContext,
-    request: KibanaRequest<unknown, unknown, AiopsLogRateAnalysisSchema>,
+    request: KibanaRequest<unknown, unknown, AiopsLogRateAnalysisSchema<T>>,
     response: KibanaResponseFactory
   ) => {
     const { headers } = request;
@@ -135,7 +139,7 @@ export const routeHandlerFactory: (
         end: streamEnd,
         push,
         responseWithHeaders,
-      } = streamFactory<AiopsLogRateAnalysisApiAction>(
+      } = streamFactory<AiopsLogRateAnalysisApiAction<T>>(
         request.headers,
         logger,
         request.body.compressResponse,
@@ -288,11 +292,27 @@ export const routeHandlerFactory: (
           // This will store the combined count of detected significant log patterns and keywords
           let fieldValuePairsCount = 0;
 
-          const significantCategories: SignificantTerm[] = request.body.overrides?.significantTerms
-            ? request.body.overrides?.significantTerms.filter(
+          const significantCategories: SignificantTerm[] = [];
+
+          if (version === '1') {
+            significantCategories.push(
+              ...((
+                request.body as AiopsLogRateAnalysisSchema<'1'>
+              ).overrides?.significantTerms?.filter(
                 (d) => d.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN
-              )
-            : [];
+              ) ?? [])
+            );
+          }
+
+          if (version === '2') {
+            significantCategories.push(
+              ...((
+                request.body as AiopsLogRateAnalysisSchema<'2'>
+              ).overrides?.significantItems?.filter(
+                (d) => d.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN
+              ) ?? [])
+            );
+          }
 
           // Get significant categories of text fields
           if (textFieldCandidates.length > 0) {
@@ -309,15 +329,31 @@ export const routeHandlerFactory: (
             );
 
             if (significantCategories.length > 0) {
-              push(addSignificantTermsAction(significantCategories));
+              push(addSignificantTermsAction(significantCategories, version));
             }
           }
 
-          const significantTerms: SignificantTerm[] = request.body.overrides?.significantTerms
-            ? request.body.overrides?.significantTerms.filter(
+          const significantTerms: SignificantTerm[] = [];
+
+          if (version === '1') {
+            significantTerms.push(
+              ...((
+                request.body as AiopsLogRateAnalysisSchema<'1'>
+              ).overrides?.significantTerms?.filter(
                 (d) => d.type === SIGNIFICANT_TERM_TYPE.KEYWORD
-              )
-            : [];
+              ) ?? [])
+            );
+          }
+
+          if (version === '2') {
+            significantTerms.push(
+              ...((
+                request.body as AiopsLogRateAnalysisSchema<'2'>
+              ).overrides?.significantItems?.filter(
+                (d) => d.type === SIGNIFICANT_TERM_TYPE.KEYWORD
+              ) ?? [])
+            );
+          }
 
           const fieldsToSample = new Set<string>();
 
@@ -375,7 +411,7 @@ export const routeHandlerFactory: (
               });
               significantTerms.push(...pValues);
 
-              push(addSignificantTermsAction(pValues));
+              push(addSignificantTermsAction(pValues, version));
             }
 
             push(
@@ -546,7 +582,7 @@ export const routeHandlerFactory: (
                 const maxItems = Math.max(...significantTermGroups.map((g) => g.group.length));
 
                 if (maxItems > 1) {
-                  push(addSignificantTermsGroupAction(significantTermGroups));
+                  push(addSignificantTermsGroupAction(significantTermGroups, version));
                 }
 
                 loaded += PROGRESS_STEP_GROUPING;
@@ -608,28 +644,41 @@ export const routeHandlerFactory: (
                       }
                       return;
                     }
-                    const histogram =
+                    const histogram: SignificantTermHistogramItem[] =
                       overallTimeSeries.data.map((o) => {
                         const current = cpgTimeSeries.data.find(
                           (d1) => d1.key_as_string === o.key_as_string
                         ) ?? {
                           doc_count: 0,
                         };
+
+                        if (version === '1') {
+                          return {
+                            key: o.key,
+                            key_as_string: o.key_as_string ?? '',
+                            doc_count_significant_term: current.doc_count,
+                            doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
+                          };
+                        }
+
                         return {
                           key: o.key,
                           key_as_string: o.key_as_string ?? '',
-                          doc_count_significant_term: current.doc_count,
+                          doc_count_significant_item: current.doc_count,
                           doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
                         };
                       }) ?? [];
 
                     push(
-                      addSignificantTermsGroupHistogramAction([
-                        {
-                          id: cpg.id,
-                          histogram,
-                        },
-                      ])
+                      addSignificantTermsGroupHistogramAction(
+                        [
+                          {
+                            id: cpg.id,
+                            histogram,
+                          },
+                        ],
+                        version
+                      )
                     );
                   }
                 }, MAX_CONCURRENT_QUERIES);
@@ -710,17 +759,26 @@ export const routeHandlerFactory: (
                   return;
                 }
 
-                const histogram =
+                const histogram: SignificantTermHistogramItem[] =
                   overallTimeSeries.data.map((o) => {
                     const current = cpTimeSeries.data.find(
                       (d1) => d1.key_as_string === o.key_as_string
                     ) ?? {
                       doc_count: 0,
                     };
+                    if (version === '1') {
+                      return {
+                        key: o.key,
+                        key_as_string: o.key_as_string ?? '',
+                        doc_count_significant_term: current.doc_count,
+                        doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
+                      };
+                    }
+
                     return {
                       key: o.key,
                       key_as_string: o.key_as_string ?? '',
-                      doc_count_significant_term: current.doc_count,
+                      doc_count_significant_item: current.doc_count,
                       doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
                     };
                   }) ?? [];
@@ -730,13 +788,16 @@ export const routeHandlerFactory: (
                 loaded += (1 / fieldValuePairsCount) * PROGRESS_STEP_HISTOGRAMS;
                 pushHistogramDataLoadingState();
                 push(
-                  addSignificantTermsHistogramAction([
-                    {
-                      fieldName,
-                      fieldValue,
-                      histogram,
-                    },
-                  ])
+                  addSignificantTermsHistogramAction(
+                    [
+                      {
+                        fieldName,
+                        fieldValue,
+                        histogram,
+                      },
+                    ],
+                    version
+                  )
                 );
               }
             }, MAX_CONCURRENT_QUERIES);
@@ -802,17 +863,27 @@ export const routeHandlerFactory: (
                 return;
               }
 
-              const histogram =
+              const histogram: SignificantTermHistogramItem[] =
                 overallTimeSeries.data.map((o) => {
                   const current = catTimeSeries.data.find(
                     (d1) => d1.key_as_string === o.key_as_string
                   ) ?? {
                     doc_count: 0,
                   };
+
+                  if (version === '1') {
+                    return {
+                      key: o.key,
+                      key_as_string: o.key_as_string ?? '',
+                      doc_count_significant_term: current.doc_count,
+                      doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
+                    };
+                  }
+
                   return {
                     key: o.key,
                     key_as_string: o.key_as_string ?? '',
-                    doc_count_significant_term: current.doc_count,
+                    doc_count_significant_item: current.doc_count,
                     doc_count_overall: Math.max(0, o.doc_count - current.doc_count),
                   };
                 }) ?? [];
@@ -822,13 +893,16 @@ export const routeHandlerFactory: (
               loaded += (1 / fieldValuePairsCount) * PROGRESS_STEP_HISTOGRAMS;
               pushHistogramDataLoadingState();
               push(
-                addSignificantTermsHistogramAction([
-                  {
-                    fieldName,
-                    fieldValue,
-                    histogram,
-                  },
-                ])
+                addSignificantTermsHistogramAction(
+                  [
+                    {
+                      fieldName,
+                      fieldValue,
+                      histogram,
+                    },
+                  ],
+                  version
+                )
               );
             }
           }
@@ -849,3 +923,4 @@ export const routeHandlerFactory: (
       return response.ok(responseWithHeaders);
     });
   };
+}
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
index c9fe22a472f4f..4c3d787402864 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
@@ -10,13 +10,19 @@ import fetch from 'node-fetch';
 import { format as formatUrl } from 'url';
 
 import expect from '@kbn/expect';
-import type { AiopsApiLogRateAnalysis } from '@kbn/aiops-plugin/common/api';
+import type { AiopsLogRateAnalysisSchema } from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
 import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
 
 import type { FtrProviderContext } from '../../ftr_provider_context';
 
 import { parseStream } from './parse_stream';
-import { logRateAnalysisTestData } from './test_data';
+import { getLogRateAnalysisTestData, API_VERSIONS } from './test_data';
+import {
+  getAddSignificationItemsActions,
+  getHistogramActions,
+  getGroupActions,
+  getGroupHistogramActions,
+} from './test_helpers';
 
 export default ({ getService }: FtrProviderContext) => {
   const aiops = getService('aiops');
@@ -26,202 +32,202 @@ export default ({ getService }: FtrProviderContext) => {
   const esArchiver = getService('esArchiver');
 
   describe('POST /internal/aiops/log_rate_analysis - full analysis', () => {
-    logRateAnalysisTestData.forEach((testData) => {
-      describe(`with ${testData.testName}`, () => {
-        before(async () => {
-          if (testData.esArchive) {
-            await esArchiver.loadIfNeeded(testData.esArchive);
-          } else if (testData.dataGenerator) {
-            await aiops.logRateAnalysisDataGenerator.generateData(testData.dataGenerator);
-          }
-        });
-
-        after(async () => {
-          if (testData.esArchive) {
-            await esArchiver.unload(testData.esArchive);
-          } else if (testData.dataGenerator) {
-            await aiops.logRateAnalysisDataGenerator.removeGeneratedData(testData.dataGenerator);
-          }
-        });
-
-        async function assertAnalysisResult(data: any[]) {
-          expect(data.length).to.eql(
-            testData.expected.actionsLength,
-            `Expected 'actionsLength' to be ${testData.expected.actionsLength}, got ${data.length}.`
-          );
-          data.forEach((d) => {
-            expect(typeof d.type).to.be('string');
+    API_VERSIONS.forEach((apiVersion) => {
+      getLogRateAnalysisTestData<typeof apiVersion>().forEach((testData) => {
+        describe(`with v${apiVersion} - ${testData.testName}`, () => {
+          before(async () => {
+            if (testData.esArchive) {
+              await esArchiver.loadIfNeeded(testData.esArchive);
+            } else if (testData.dataGenerator) {
+              await aiops.logRateAnalysisDataGenerator.generateData(testData.dataGenerator);
+            }
           });
 
-          const addSignificantTermsActions = data.filter(
-            (d) => d.type === testData.expected.significantTermFilter
-          );
-          expect(addSignificantTermsActions.length).to.greaterThan(0);
-
-          const significantTerms = orderBy(
-            addSignificantTermsActions.flatMap((d) => d.payload),
-            ['doc_count'],
-            ['desc']
-          );
-
-          expect(significantTerms).to.eql(
-            testData.expected.significantTerms,
-            'Significant terms do not match expected values.'
-          );
-
-          const histogramActions = data.filter((d) => d.type === testData.expected.histogramFilter);
-          const histograms = histogramActions.flatMap((d) => d.payload);
-          // for each significant term we should get a histogram
-          expect(histogramActions.length).to.be(significantTerms.length);
-          // each histogram should have a length of 20 items.
-          histograms.forEach((h, index) => {
-            expect(h.histogram.length).to.be(20);
+          after(async () => {
+            if (testData.esArchive) {
+              await esArchiver.unload(testData.esArchive);
+            } else if (testData.dataGenerator) {
+              await aiops.logRateAnalysisDataGenerator.removeGeneratedData(testData.dataGenerator);
+            }
           });
 
-          const groupActions = data.filter((d) => d.type === testData.expected.groupFilter);
-          const groups = groupActions.flatMap((d) => d.payload);
-
-          expect(orderBy(groups, ['docCount'], ['desc'])).to.eql(
-            orderBy(testData.expected.groups, ['docCount'], ['desc']),
-            'Grouping result does not match expected values.'
-          );
-
-          const groupHistogramActions = data.filter(
-            (d) => d.type === testData.expected.groupHistogramFilter
-          );
-          const groupHistograms = groupHistogramActions.flatMap((d) => d.payload);
-          // for each significant terms group we should get a histogram
-          expect(groupHistograms.length).to.be(groups.length);
-          // each histogram should have a length of 20 items.
-          groupHistograms.forEach((h, index) => {
-            expect(h.histogram.length).to.be(20);
-          });
-        }
-
-        async function requestWithoutStreaming(body: AiopsApiLogRateAnalysis['body']) {
-          const resp = await supertest
-            .post(`/internal/aiops/log_rate_analysis`)
-            .set('kbn-xsrf', 'kibana')
-            .set(ELASTIC_HTTP_VERSION_HEADER, '1')
-            .send(body)
-            .expect(200);
-
-          // compression is on by default so if the request body is undefined
-          // the response header should include "gzip" and otherwise be "undefined"
-          if (body.compressResponse === undefined) {
-            expect(resp.header['content-encoding']).to.be('gzip');
-          } else if (body.compressResponse === false) {
-            expect(resp.header['content-encoding']).to.be(undefined);
+          async function assertAnalysisResult(data: any[]) {
+            expect(data.length).to.eql(
+              testData.expected.actionsLength,
+              `Expected 'actionsLength' to be ${testData.expected.actionsLength}, got ${data.length}.`
+            );
+            data.forEach((d) => {
+              expect(typeof d.type).to.be('string');
+            });
+
+            const addSignificantItemsActions = getAddSignificationItemsActions(data, apiVersion);
+            expect(addSignificantItemsActions.length).to.greaterThan(0);
+
+            const significantItems = orderBy(
+              addSignificantItemsActions.flatMap((d) => d.payload),
+              ['doc_count'],
+              ['desc']
+            );
+
+            expect(significantItems).to.eql(
+              testData.expected.significantTerms,
+              'Significant terms do not match expected values.'
+            );
+
+            const histogramActions = getHistogramActions(data, apiVersion);
+            const histograms = histogramActions.flatMap((d) => d.payload);
+            // for each significant term we should get a histogram
+            expect(histogramActions.length).to.be(significantItems.length);
+            // each histogram should have a length of 20 items.
+            histograms.forEach((h, index) => {
+              expect(h.histogram.length).to.be(20);
+            });
+
+            const groupActions = getGroupActions(data, apiVersion);
+            const groups = groupActions.flatMap((d) => d.payload);
+
+            expect(orderBy(groups, ['docCount'], ['desc'])).to.eql(
+              orderBy(testData.expected.groups, ['docCount'], ['desc']),
+              'Grouping result does not match expected values.'
+            );
+
+            const groupHistogramActions = getGroupHistogramActions(data, apiVersion);
+            const groupHistograms = groupHistogramActions.flatMap((d) => d.payload);
+            // for each significant terms group we should get a histogram
+            expect(groupHistograms.length).to.be(groups.length);
+            // each histogram should have a length of 20 items.
+            groupHistograms.forEach((h, index) => {
+              expect(h.histogram.length).to.be(20);
+            });
           }
 
-          expect(Buffer.isBuffer(resp.body)).to.be(true);
+          async function requestWithoutStreaming(
+            body: AiopsLogRateAnalysisSchema<typeof apiVersion>
+          ) {
+            const resp = await supertest
+              .post(`/internal/aiops/log_rate_analysis`)
+              .set('kbn-xsrf', 'kibana')
+              .set(ELASTIC_HTTP_VERSION_HEADER, apiVersion)
+              .send(body)
+              .expect(200);
+
+            // compression is on by default so if the request body is undefined
+            // the response header should include "gzip" and otherwise be "undefined"
+            if (body.compressResponse === undefined) {
+              expect(resp.header['content-encoding']).to.be('gzip');
+            } else if (body.compressResponse === false) {
+              expect(resp.header['content-encoding']).to.be(undefined);
+            }
 
-          const chunks: string[] = resp.body.toString().split('\n');
+            expect(Buffer.isBuffer(resp.body)).to.be(true);
 
-          expect(chunks.length).to.eql(
-            testData.expected.chunksLength,
-            `Expected 'chunksLength' to be ${testData.expected.chunksLength}, got ${chunks.length}.`
-          );
+            const chunks: string[] = resp.body.toString().split('\n');
 
-          const lastChunk = chunks.pop();
-          expect(lastChunk).to.be('');
+            expect(chunks.length).to.eql(
+              testData.expected.chunksLength,
+              `Expected 'chunksLength' to be ${testData.expected.chunksLength}, got ${chunks.length}.`
+            );
 
-          let data: any[] = [];
+            const lastChunk = chunks.pop();
+            expect(lastChunk).to.be('');
 
-          expect(() => {
-            data = chunks.map((c) => JSON.parse(c));
-          }).not.to.throwError();
+            let data: any[] = [];
 
-          await assertAnalysisResult(data);
-        }
+            expect(() => {
+              data = chunks.map((c) => JSON.parse(c));
+            }).not.to.throwError();
 
-        it('should return full data without streaming with compression with flushFix', async () => {
-          await requestWithoutStreaming(testData.requestBody);
-        });
+            await assertAnalysisResult(data);
+          }
 
-        it('should return full data without streaming with compression without flushFix', async () => {
-          await requestWithoutStreaming({ ...testData.requestBody, flushFix: false });
-        });
+          it('should return full data without streaming with compression with flushFix', async () => {
+            await requestWithoutStreaming(testData.requestBody);
+          });
 
-        it('should return full data without streaming without compression with flushFix', async () => {
-          await requestWithoutStreaming({ ...testData.requestBody, compressResponse: false });
-        });
+          it('should return full data without streaming with compression without flushFix', async () => {
+            await requestWithoutStreaming({ ...testData.requestBody, flushFix: false });
+          });
 
-        it('should return full data without streaming without compression without flushFix', async () => {
-          await requestWithoutStreaming({
-            ...testData.requestBody,
-            compressResponse: false,
-            flushFix: false,
+          it('should return full data without streaming without compression with flushFix', async () => {
+            await requestWithoutStreaming({ ...testData.requestBody, compressResponse: false });
           });
-        });
 
-        async function requestWithStreaming(body: AiopsApiLogRateAnalysis['body']) {
-          const resp = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
-            method: 'POST',
-            headers: {
-              'Content-Type': 'application/json',
-              [ELASTIC_HTTP_VERSION_HEADER]: '1',
-              'kbn-xsrf': 'stream',
-            },
-            body: JSON.stringify(body),
+          it('should return full data without streaming without compression without flushFix', async () => {
+            await requestWithoutStreaming({
+              ...testData.requestBody,
+              compressResponse: false,
+              flushFix: false,
+            });
           });
 
-          // compression is on by default so if the request body is undefined
-          // the response header should include "gzip" and otherwise be "null"
-          if (body.compressResponse === undefined) {
-            expect(resp.headers.get('content-encoding')).to.be('gzip');
-          } else if (body.compressResponse === false) {
-            expect(resp.headers.get('content-encoding')).to.be(null);
-          }
+          async function requestWithStreaming(body: AiopsLogRateAnalysisSchema<typeof apiVersion>) {
+            const resp = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
+              method: 'POST',
+              headers: {
+                'Content-Type': 'application/json',
+                [ELASTIC_HTTP_VERSION_HEADER]: apiVersion,
+                'kbn-xsrf': 'stream',
+              },
+              body: JSON.stringify(body),
+            });
+
+            // compression is on by default so if the request body is undefined
+            // the response header should include "gzip" and otherwise be "null"
+            if (body.compressResponse === undefined) {
+              expect(resp.headers.get('content-encoding')).to.be('gzip');
+            } else if (body.compressResponse === false) {
+              expect(resp.headers.get('content-encoding')).to.be(null);
+            }
 
-          expect(resp.ok).to.be(true);
-          expect(resp.status).to.be(200);
+            expect(resp.ok).to.be(true);
+            expect(resp.status).to.be(200);
 
-          const stream = resp.body;
+            const stream = resp.body;
 
-          expect(stream).not.to.be(null);
+            expect(stream).not.to.be(null);
 
-          if (stream !== null) {
-            const data: any[] = [];
-            let chunkCounter = 0;
-            const parseStreamCallback = (c: number) => (chunkCounter = c);
+            if (stream !== null) {
+              const data: any[] = [];
+              let chunkCounter = 0;
+              const parseStreamCallback = (c: number) => (chunkCounter = c);
 
-            for await (const action of parseStream(stream, parseStreamCallback)) {
-              expect(action.type).not.to.be('error');
-              data.push(action);
-            }
+              for await (const action of parseStream(stream, parseStreamCallback)) {
+                expect(action.type).not.to.be('error');
+                data.push(action);
+              }
 
-            // Originally we assumed that we can assert streaming in contrast
-            // to non-streaming if there is more than one chunk. However,
-            // this turned out to be flaky since a stream could finish fast
-            // enough to contain only one chunk. So now we are checking if
-            // there's just one chunk or more.
-            expect(chunkCounter).to.be.greaterThan(
-              0,
-              `Expected 'chunkCounter' to be greater than 0, got ${chunkCounter}.`
-            );
+              // Originally we assumed that we can assert streaming in contrast
+              // to non-streaming if there is more than one chunk. However,
+              // this turned out to be flaky since a stream could finish fast
+              // enough to contain only one chunk. So now we are checking if
+              // there's just one chunk or more.
+              expect(chunkCounter).to.be.greaterThan(
+                0,
+                `Expected 'chunkCounter' to be greater than 0, got ${chunkCounter}.`
+              );
 
-            await assertAnalysisResult(data);
+              await assertAnalysisResult(data);
+            }
           }
-        }
 
-        it('should return data in chunks with streaming with compression with flushFix', async () => {
-          await requestWithStreaming(testData.requestBody);
-        });
+          it('should return data in chunks with streaming with compression with flushFix', async () => {
+            await requestWithStreaming(testData.requestBody);
+          });
 
-        it('should return data in chunks with streaming with compression without flushFix', async () => {
-          await requestWithStreaming({ ...testData.requestBody, flushFix: false });
-        });
+          it('should return data in chunks with streaming with compression without flushFix', async () => {
+            await requestWithStreaming({ ...testData.requestBody, flushFix: false });
+          });
 
-        it('should return data in chunks with streaming without compression with flushFix', async () => {
-          await requestWithStreaming({ ...testData.requestBody, compressResponse: false });
-        });
+          it('should return data in chunks with streaming without compression with flushFix', async () => {
+            await requestWithStreaming({ ...testData.requestBody, compressResponse: false });
+          });
 
-        it('should return data in chunks with streaming without compression without flushFix', async () => {
-          await requestWithStreaming({
-            ...testData.requestBody,
-            compressResponse: false,
-            flushFix: false,
+          it('should return data in chunks with streaming without compression without flushFix', async () => {
+            await requestWithStreaming({
+              ...testData.requestBody,
+              compressResponse: false,
+              flushFix: false,
+            });
           });
         });
       });
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
index 8aeccc6af9a97..3ffcf7b04fdd2 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
@@ -10,13 +10,20 @@ import fetch from 'node-fetch';
 import { format as formatUrl } from 'url';
 
 import expect from '@kbn/expect';
-import type { AiopsApiLogRateAnalysis } from '@kbn/aiops-plugin/common/api';
+import type { AiopsLogRateAnalysisSchema } from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
+import type { AiopsLogRateAnalysisSchemaSignificantItem } from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema_v2';
 import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
 
 import type { FtrProviderContext } from '../../ftr_provider_context';
 
 import { parseStream } from './parse_stream';
-import { logRateAnalysisTestData } from './test_data';
+import { getLogRateAnalysisTestData, API_VERSIONS } from './test_data';
+import {
+  getAddSignificationItemsActions,
+  getHistogramActions,
+  getGroupActions,
+  getGroupHistogramActions,
+} from './test_helpers';
 
 export default ({ getService }: FtrProviderContext) => {
   const aiops = getService('aiops');
@@ -25,211 +32,229 @@ export default ({ getService }: FtrProviderContext) => {
   const kibanaServerUrl = formatUrl(config.get('servers.kibana'));
   const esArchiver = getService('esArchiver');
 
-  // FLAKY: https://github.com/elastic/kibana/issues/169325
-  describe.skip('POST /internal/aiops/log_rate_analysis - groups only', () => {
-    logRateAnalysisTestData.forEach((testData) => {
-      const overrides = {
-        loaded: 0,
-        remainingFieldCandidates: [],
-        significantTerms: testData.expected.significantTerms,
-        regroupOnly: true,
-      };
-
-      describe(`with ${testData.testName}`, () => {
-        before(async () => {
-          if (testData.esArchive) {
-            await esArchiver.loadIfNeeded(testData.esArchive);
-          } else if (testData.dataGenerator) {
-            await aiops.logRateAnalysisDataGenerator.generateData(testData.dataGenerator);
-          }
-        });
+  describe('POST /internal/aiops/log_rate_analysis - groups only', () => {
+    API_VERSIONS.forEach((apiVersion) => {
+      getLogRateAnalysisTestData<typeof apiVersion>().forEach((testData) => {
+        let overrides: AiopsLogRateAnalysisSchema<typeof apiVersion>['overrides'] = {};
+
+        if (apiVersion === '1') {
+          overrides = {
+            loaded: 0,
+            remainingFieldCandidates: [],
+            significantTerms: testData.expected.significantTerms,
+            regroupOnly: true,
+          } as AiopsLogRateAnalysisSchema<typeof apiVersion>['overrides'];
+        }
 
-        after(async () => {
-          if (testData.esArchive) {
-            await esArchiver.unload(testData.esArchive);
-          } else if (testData.dataGenerator) {
-            await aiops.logRateAnalysisDataGenerator.removeGeneratedData(testData.dataGenerator);
-          }
-        });
+        if (apiVersion === '2') {
+          overrides = {
+            loaded: 0,
+            remainingFieldCandidates: [],
+            significantItems: testData.expected
+              .significantTerms as AiopsLogRateAnalysisSchemaSignificantItem[],
+            regroupOnly: true,
+          } as AiopsLogRateAnalysisSchema<typeof apiVersion>['overrides'];
+        }
 
-        async function assertAnalysisResult(data: any[]) {
-          expect(data.length).to.eql(
-            testData.expected.actionsLengthGroupOnly,
-            `Expected 'actionsLengthGroupOnly' to be ${testData.expected.actionsLengthGroupOnly}, got ${data.length}.`
-          );
-          data.forEach((d) => {
-            expect(typeof d.type).to.be('string');
+        describe(`with v${apiVersion} - ${testData.testName}`, () => {
+          before(async () => {
+            if (testData.esArchive) {
+              await esArchiver.loadIfNeeded(testData.esArchive);
+            } else if (testData.dataGenerator) {
+              await aiops.logRateAnalysisDataGenerator.generateData(testData.dataGenerator);
+            }
           });
 
-          const addSignificantTermsActions = data.filter(
-            (d) => d.type === testData.expected.significantTermFilter
-          );
-          expect(addSignificantTermsActions.length).to.eql(
-            0,
-            `Expected significant terms actions to be 0, got ${addSignificantTermsActions.length}`
-          );
-
-          const histogramActions = data.filter((d) => d.type === testData.expected.histogramFilter);
-          // for each significant term we should get a histogram
-          expect(histogramActions.length).to.eql(
-            0,
-            `Expected histogram actions to be 0, got ${histogramActions.length}`
-          );
-
-          const groupActions = data.filter((d) => d.type === testData.expected.groupFilter);
-          const groups = groupActions.flatMap((d) => d.payload);
-
-          expect(orderBy(groups, ['docCount'], ['desc'])).to.eql(
-            orderBy(testData.expected.groups, ['docCount'], ['desc']),
-            'Grouping result does not match expected values.'
-          );
-
-          const groupHistogramActions = data.filter(
-            (d) => d.type === testData.expected.groupHistogramFilter
-          );
-          const groupHistograms = groupHistogramActions.flatMap((d) => d.payload);
-          // for each significant terms group we should get a histogram
-          expect(groupHistograms.length).to.be(groups.length);
-          // each histogram should have a length of 20 items.
-          groupHistograms.forEach((h, index) => {
-            expect(h.histogram.length).to.be(20);
+          after(async () => {
+            if (testData.esArchive) {
+              await esArchiver.unload(testData.esArchive);
+            } else if (testData.dataGenerator) {
+              await aiops.logRateAnalysisDataGenerator.removeGeneratedData(testData.dataGenerator);
+            }
           });
-        }
 
-        async function requestWithoutStreaming(body: AiopsApiLogRateAnalysis['body']) {
-          const resp = await supertest
-            .post(`/internal/aiops/log_rate_analysis`)
-            .set('kbn-xsrf', 'kibana')
-            .set(ELASTIC_HTTP_VERSION_HEADER, '1')
-            .send(body)
-            .expect(200);
-
-          // compression is on by default so if the request body is undefined
-          // the response header should include "gzip" and otherwise be "undefined"
-          if (body.compressResponse === undefined) {
-            expect(resp.header['content-encoding']).to.be('gzip');
-          } else if (body.compressResponse === false) {
-            expect(resp.header['content-encoding']).to.be(undefined);
+          async function assertAnalysisResult(data: any[]) {
+            expect(data.length).to.eql(
+              testData.expected.actionsLengthGroupOnly,
+              `Expected 'actionsLengthGroupOnly' to be ${testData.expected.actionsLengthGroupOnly}, got ${data.length}.`
+            );
+            data.forEach((d) => {
+              expect(typeof d.type).to.be('string');
+            });
+
+            const addSignificantItemsActions = getAddSignificationItemsActions(data, apiVersion);
+            expect(addSignificantItemsActions.length).to.eql(
+              0,
+              `Expected significant items actions to be 0, got ${addSignificantItemsActions.length}`
+            );
+
+            const histogramActions = getHistogramActions(data, apiVersion);
+
+            // for each significant item we should get a histogram
+            expect(histogramActions.length).to.eql(
+              0,
+              `Expected histogram actions to be 0, got ${histogramActions.length}`
+            );
+
+            const groupActions = getGroupActions(data, apiVersion);
+            const groups = groupActions.flatMap((d) => d.payload);
+
+            expect(orderBy(groups, ['docCount'], ['desc'])).to.eql(
+              orderBy(testData.expected.groups, ['docCount'], ['desc']),
+              'Grouping result does not match expected values.'
+            );
+
+            const groupHistogramActions = getGroupHistogramActions(data, apiVersion);
+            const groupHistograms = groupHistogramActions.flatMap((d) => d.payload);
+            // for each significant items group we should get a histogram
+            expect(groupHistograms.length).to.be(groups.length);
+            // each histogram should have a length of 20 items.
+            groupHistograms.forEach((h, index) => {
+              expect(h.histogram.length).to.be(20);
+            });
           }
 
-          expect(Buffer.isBuffer(resp.body)).to.be(true);
+          async function requestWithoutStreaming(
+            body: AiopsLogRateAnalysisSchema<typeof apiVersion>
+          ) {
+            const resp = await supertest
+              .post(`/internal/aiops/log_rate_analysis`)
+              .set('kbn-xsrf', 'kibana')
+              .set(ELASTIC_HTTP_VERSION_HEADER, apiVersion)
+              .send(body)
+              .expect(200);
+
+            // compression is on by default so if the request body is undefined
+            // the response header should include "gzip" and otherwise be "undefined"
+            if (body.compressResponse === undefined) {
+              expect(resp.header['content-encoding']).to.be('gzip');
+            } else if (body.compressResponse === false) {
+              expect(resp.header['content-encoding']).to.be(undefined);
+            }
 
-          const chunks: string[] = resp.body.toString().split('\n');
+            expect(Buffer.isBuffer(resp.body)).to.be(true);
 
-          expect(chunks.length).to.eql(
-            testData.expected.chunksLengthGroupOnly,
-            `Expected 'chunksLength' to be ${testData.expected.chunksLengthGroupOnly}, got ${chunks.length}.`
-          );
+            const chunks: string[] = resp.body.toString().split('\n');
 
-          const lastChunk = chunks.pop();
-          expect(lastChunk).to.be('');
+            expect(chunks.length).to.eql(
+              testData.expected.chunksLengthGroupOnly,
+              `Expected 'chunksLength' to be ${testData.expected.chunksLengthGroupOnly}, got ${chunks.length}.`
+            );
 
-          let data: any[] = [];
+            const lastChunk = chunks.pop();
+            expect(lastChunk).to.be('');
 
-          expect(() => {
-            data = chunks.map((c) => JSON.parse(c));
-          }).not.to.throwError();
+            let data: any[] = [];
 
-          await assertAnalysisResult(data);
-        }
+            expect(() => {
+              data = chunks.map((c) => JSON.parse(c));
+            }).not.to.throwError();
 
-        it('should return group only data without streaming with compression with flushFix', async () => {
-          await requestWithoutStreaming({ ...testData.requestBody, overrides });
-        });
+            await assertAnalysisResult(data);
+          }
 
-        it('should return group only  data without streaming with compression without flushFix', async () => {
-          await requestWithoutStreaming({ ...testData.requestBody, overrides, flushFix: false });
-        });
+          it('should return group only data without streaming with compression with flushFix', async () => {
+            await requestWithoutStreaming({ ...testData.requestBody, overrides });
+          });
 
-        it('should return group only  data without streaming without compression with flushFix', async () => {
-          await requestWithoutStreaming({
-            ...testData.requestBody,
-            overrides,
-            compressResponse: false,
+          it('should return group only  data without streaming with compression without flushFix', async () => {
+            await requestWithoutStreaming({
+              ...testData.requestBody,
+              overrides,
+              flushFix: false,
+            });
           });
-        });
 
-        it('should return group only  data without streaming without compression without flushFix', async () => {
-          await requestWithoutStreaming({
-            ...testData.requestBody,
-            overrides,
-            compressResponse: false,
-            flushFix: false,
+          it('should return group only  data without streaming without compression with flushFix', async () => {
+            await requestWithoutStreaming({
+              ...testData.requestBody,
+              overrides,
+              compressResponse: false,
+            });
           });
-        });
 
-        async function requestWithStreaming(body: AiopsApiLogRateAnalysis['body']) {
-          const resp = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
-            method: 'POST',
-            headers: {
-              'Content-Type': 'application/json',
-              [ELASTIC_HTTP_VERSION_HEADER]: '1',
-              'kbn-xsrf': 'stream',
-            },
-            body: JSON.stringify(body),
+          it('should return group only  data without streaming without compression without flushFix', async () => {
+            await requestWithoutStreaming({
+              ...testData.requestBody,
+              overrides,
+              compressResponse: false,
+              flushFix: false,
+            });
           });
 
-          // compression is on by default so if the request body is undefined
-          // the response header should include "gzip" and otherwise be "null"
-          if (body.compressResponse === undefined) {
-            expect(resp.headers.get('content-encoding')).to.be('gzip');
-          } else if (body.compressResponse === false) {
-            expect(resp.headers.get('content-encoding')).to.be(null);
-          }
+          async function requestWithStreaming(body: AiopsLogRateAnalysisSchema<typeof apiVersion>) {
+            const resp = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
+              method: 'POST',
+              headers: {
+                'Content-Type': 'application/json',
+                [ELASTIC_HTTP_VERSION_HEADER]: apiVersion,
+                'kbn-xsrf': 'stream',
+              },
+              body: JSON.stringify(body),
+            });
+
+            // compression is on by default so if the request body is undefined
+            // the response header should include "gzip" and otherwise be "null"
+            if (body.compressResponse === undefined) {
+              expect(resp.headers.get('content-encoding')).to.be('gzip');
+            } else if (body.compressResponse === false) {
+              expect(resp.headers.get('content-encoding')).to.be(null);
+            }
 
-          expect(resp.ok).to.be(true);
-          expect(resp.status).to.be(200);
+            expect(resp.ok).to.be(true);
+            expect(resp.status).to.be(200);
 
-          const stream = resp.body;
+            const stream = resp.body;
 
-          expect(stream).not.to.be(null);
+            expect(stream).not.to.be(null);
 
-          if (stream !== null) {
-            const data: any[] = [];
-            let chunkCounter = 0;
-            const parseStreamCallback = (c: number) => (chunkCounter = c);
+            if (stream !== null) {
+              const data: any[] = [];
+              let chunkCounter = 0;
+              const parseStreamCallback = (c: number) => (chunkCounter = c);
 
-            for await (const action of parseStream(stream, parseStreamCallback)) {
-              expect(action.type).not.to.be('error');
-              data.push(action);
-            }
+              for await (const action of parseStream(stream, parseStreamCallback)) {
+                expect(action.type).not.to.be('error');
+                data.push(action);
+              }
 
-            // Originally we assumed that we can assert streaming in contrast
-            // to non-streaming if there is more than one chunk. However,
-            // this turned out to be flaky since a stream could finish fast
-            // enough to contain only one chunk. So now we are checking if
-            // there's just one chunk or more.
-            expect(chunkCounter).to.be.greaterThan(
-              0,
-              `Expected 'chunkCounter' to be greater than 0, got ${chunkCounter}.`
-            );
+              // Originally we assumed that we can assert streaming in contrast
+              // to non-streaming if there is more than one chunk. However,
+              // this turned out to be flaky since a stream could finish fast
+              // enough to contain only one chunk. So now we are checking if
+              // there's just one chunk or more.
+              expect(chunkCounter).to.be.greaterThan(
+                0,
+                `Expected 'chunkCounter' to be greater than 0, got ${chunkCounter}.`
+              );
 
-            await assertAnalysisResult(data);
+              await assertAnalysisResult(data);
+            }
           }
-        }
 
-        it('should return group only in chunks with streaming with compression with flushFix', async () => {
-          await requestWithStreaming({ ...testData.requestBody, overrides });
-        });
+          it('should return group only in chunks with streaming with compression with flushFix', async () => {
+            await requestWithStreaming({ ...testData.requestBody, overrides });
+          });
 
-        it('should return group only in chunks with streaming with compression without flushFix', async () => {
-          await requestWithStreaming({ ...testData.requestBody, overrides, flushFix: false });
-        });
+          it('should return group only in chunks with streaming with compression without flushFix', async () => {
+            await requestWithStreaming({ ...testData.requestBody, overrides, flushFix: false });
+          });
 
-        it('should return group only in chunks with streaming without compression with flushFix', async () => {
-          await requestWithStreaming({
-            ...testData.requestBody,
-            overrides,
-            compressResponse: false,
+          it('should return group only in chunks with streaming without compression with flushFix', async () => {
+            await requestWithStreaming({
+              ...testData.requestBody,
+              overrides,
+              compressResponse: false,
+            });
           });
-        });
 
-        it('should return group only in chunks with streaming without compression without flushFix', async () => {
-          await requestWithStreaming({
-            ...testData.requestBody,
-            overrides,
-            compressResponse: false,
-            flushFix: false,
+          it('should return group only in chunks with streaming without compression without flushFix', async () => {
+            await requestWithStreaming({
+              ...testData.requestBody,
+              overrides,
+              compressResponse: false,
+              flushFix: false,
+            });
           });
         });
       });
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_no_index.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_no_index.ts
index 088db66e082bd..118cae10c0c9d 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_no_index.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_no_index.ts
@@ -10,53 +10,56 @@ import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
 
 import type { FtrProviderContext } from '../../ftr_provider_context';
 
-import { logRateAnalysisTestData } from './test_data';
+import { getLogRateAnalysisTestData, API_VERSIONS } from './test_data';
+import { getErrorActions } from './test_helpers';
 
 export default ({ getService }: FtrProviderContext) => {
   const supertest = getService('supertest');
 
   describe('POST /internal/aiops/log_rate_analysis - no index', () => {
-    logRateAnalysisTestData.forEach((testData) => {
-      describe(`with ${testData.testName}`, () => {
-        it('should return an error for non existing index without streaming', async () => {
-          const resp = await supertest
-            .post(`/internal/aiops/log_rate_analysis`)
-            .set('kbn-xsrf', 'kibana')
-            .set(ELASTIC_HTTP_VERSION_HEADER, '1')
-            .send({
-              ...testData.requestBody,
-              index: 'does_not_exist',
-            })
-            .expect(200);
+    API_VERSIONS.forEach((apiVersion) => {
+      getLogRateAnalysisTestData<typeof apiVersion>().forEach((testData) => {
+        describe(`with v${apiVersion} - ${testData.testName}`, () => {
+          it('should return an error for non existing index without streaming', async () => {
+            const resp = await supertest
+              .post(`/internal/aiops/log_rate_analysis`)
+              .set('kbn-xsrf', 'kibana')
+              .set(ELASTIC_HTTP_VERSION_HEADER, apiVersion)
+              .send({
+                ...testData.requestBody,
+                index: 'does_not_exist',
+              })
+              .expect(200);
 
-          const chunks: string[] = resp.body.toString().split('\n');
+            const chunks: string[] = resp.body.toString().split('\n');
 
-          expect(chunks.length).to.eql(
-            testData.expected.noIndexChunksLength,
-            `Expected 'noIndexChunksLength' to be ${testData.expected.noIndexChunksLength}, got ${chunks.length}.`
-          );
+            expect(chunks.length).to.eql(
+              testData.expected.noIndexChunksLength,
+              `Expected 'noIndexChunksLength' to be ${testData.expected.noIndexChunksLength}, got ${chunks.length}.`
+            );
 
-          const lastChunk = chunks.pop();
-          expect(lastChunk).to.be('');
+            const lastChunk = chunks.pop();
+            expect(lastChunk).to.be('');
 
-          let data: any[] = [];
+            let data: any[] = [];
 
-          expect(() => {
-            data = chunks.map((c) => JSON.parse(c));
-          }).not.to.throwError();
+            expect(() => {
+              data = chunks.map((c) => JSON.parse(c));
+            }).not.to.throwError();
 
-          expect(data.length).to.eql(
-            testData.expected.noIndexActionsLength,
-            `Expected 'noIndexActionsLength' to be ${testData.expected.noIndexActionsLength}, got ${data.length}.`
-          );
-          data.forEach((d) => {
-            expect(typeof d.type).to.be('string');
-          });
+            expect(data.length).to.eql(
+              testData.expected.noIndexActionsLength,
+              `Expected 'noIndexActionsLength' to be ${testData.expected.noIndexActionsLength}, got ${data.length}.`
+            );
+            data.forEach((d) => {
+              expect(typeof d.type).to.be('string');
+            });
 
-          const errorActions = data.filter((d) => d.type === testData.expected.errorFilter);
-          expect(errorActions.length).to.be(1);
+            const errorActions = getErrorActions(data);
+            expect(errorActions.length).to.be(1);
 
-          expect(errorActions[0].payload).to.be('Failed to fetch index information.');
+            expect(errorActions[0].payload).to.be('Failed to fetch index information.');
+          });
         });
       });
     });
diff --git a/x-pack/test/api_integration/apis/aiops/test_data.ts b/x-pack/test/api_integration/apis/aiops/test_data.ts
index 184925310940e..f323900e3437c 100644
--- a/x-pack/test/api_integration/apis/aiops/test_data.ts
+++ b/x-pack/test/api_integration/apis/aiops/test_data.ts
@@ -13,9 +13,16 @@ import { significantLogPatterns as artificialLogSignificantLogPatterns } from '@
 import { finalSignificantTermGroups as artificialLogsSignificantTermGroups } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_term_groups';
 import { finalSignificantTermGroupsTextfield as artificialLogsSignificantTermGroupsTextfield } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_term_groups_textfield';
 
+import type {
+  AiopsLogRateAnalysisSchema,
+  AiopsLogRateAnalysisApiVersion as ApiVersion,
+} from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
+
 import type { TestData } from './types';
 
-export const logRateAnalysisTestData: TestData[] = [
+export const API_VERSIONS: ApiVersion[] = ['1', '2'];
+
+export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestData<T>> => [
   {
     testName: 'ecommerce',
     esArchive: 'x-pack/test/functional/es_archives/ml/ecommerce',
@@ -30,7 +37,7 @@ export const logRateAnalysisTestData: TestData[] = [
       start: 0,
       timeFieldName: 'order_date',
       grouping: true,
-    },
+    } as AiopsLogRateAnalysisSchema<T>,
     expected: {
       chunksLength: 35,
       chunksLengthGroupOnly: 5,
@@ -38,11 +45,6 @@ export const logRateAnalysisTestData: TestData[] = [
       actionsLengthGroupOnly: 4,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTermFilter: 'add_significant_terms',
-      groupFilter: 'add_significant_terms_group',
-      groupHistogramFilter: 'add_significant_terms_group_histogram',
-      histogramFilter: 'add_significant_terms_histogram',
-      errorFilter: 'add_error',
       significantTerms: [
         {
           key: 'day_of_week:Thursday',
@@ -89,7 +91,7 @@ export const logRateAnalysisTestData: TestData[] = [
       deviationMin: 1668855600000,
       deviationMax: 1668924000000,
       grouping: true,
-    },
+    } as AiopsLogRateAnalysisSchema<T>,
     expected: {
       chunksLength: 27,
       chunksLengthGroupOnly: 11,
@@ -97,11 +99,6 @@ export const logRateAnalysisTestData: TestData[] = [
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTermFilter: 'add_significant_terms',
-      groupFilter: 'add_significant_terms_group',
-      groupHistogramFilter: 'add_significant_terms_group_histogram',
-      histogramFilter: 'add_significant_terms_histogram',
-      errorFilter: 'add_error',
       significantTerms: artificialLogSignificantTerms,
       groups: artificialLogsSignificantTermGroups,
       histogramLength: 20,
@@ -121,7 +118,7 @@ export const logRateAnalysisTestData: TestData[] = [
       deviationMin: 1668855600000,
       deviationMax: 1668924000000,
       grouping: true,
-    },
+    } as AiopsLogRateAnalysisSchema<T>,
     expected: {
       chunksLength: 30,
       chunksLengthGroupOnly: 11,
@@ -129,11 +126,6 @@ export const logRateAnalysisTestData: TestData[] = [
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTermFilter: 'add_significant_terms',
-      groupFilter: 'add_significant_terms_group',
-      groupHistogramFilter: 'add_significant_terms_group_histogram',
-      histogramFilter: 'add_significant_terms_histogram',
-      errorFilter: 'add_error',
       significantTerms: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
       groups: artificialLogsSignificantTermGroupsTextfield,
       histogramLength: 20,
@@ -153,7 +145,7 @@ export const logRateAnalysisTestData: TestData[] = [
       deviationMin: 1668769200000,
       deviationMax: 1668837600000,
       grouping: true,
-    },
+    } as AiopsLogRateAnalysisSchema<T>,
     expected: {
       chunksLength: 27,
       chunksLengthGroupOnly: 11,
@@ -161,11 +153,6 @@ export const logRateAnalysisTestData: TestData[] = [
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTermFilter: 'add_significant_terms',
-      groupFilter: 'add_significant_terms_group',
-      groupHistogramFilter: 'add_significant_terms_group_histogram',
-      histogramFilter: 'add_significant_terms_histogram',
-      errorFilter: 'add_error',
       significantTerms: artificialLogSignificantTerms,
       groups: artificialLogsSignificantTermGroups,
       histogramLength: 20,
@@ -185,7 +172,7 @@ export const logRateAnalysisTestData: TestData[] = [
       deviationMin: 1668769200000,
       deviationMax: 1668837600000,
       grouping: true,
-    },
+    } as AiopsLogRateAnalysisSchema<T>,
     expected: {
       chunksLength: 30,
       chunksLengthGroupOnly: 11,
@@ -193,11 +180,6 @@ export const logRateAnalysisTestData: TestData[] = [
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTermFilter: 'add_significant_terms',
-      groupFilter: 'add_significant_terms_group',
-      groupHistogramFilter: 'add_significant_terms_group_histogram',
-      histogramFilter: 'add_significant_terms_histogram',
-      errorFilter: 'add_error',
       significantTerms: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
       groups: artificialLogsSignificantTermGroupsTextfield,
       histogramLength: 20,
diff --git a/x-pack/test/api_integration/apis/aiops/test_helpers.ts b/x-pack/test/api_integration/apis/aiops/test_helpers.ts
new file mode 100644
index 0000000000000..3818b96b9bbe1
--- /dev/null
+++ b/x-pack/test/api_integration/apis/aiops/test_helpers.ts
@@ -0,0 +1,38 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { AiopsLogRateAnalysisApiVersion as ApiVersion } from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
+
+export const getAddSignificationItemsActions = (data: any[], apiVersion: ApiVersion) =>
+  data.filter(
+    (d) => d.type === (apiVersion === '1' ? 'add_significant_terms' : 'add_significant_items')
+  );
+
+export const getHistogramActions = (data: any[], apiVersion: ApiVersion) =>
+  data.filter(
+    (d) =>
+      d.type ===
+      (apiVersion === '1' ? 'add_significant_terms_histogram' : 'add_significant_items_histogram')
+  );
+
+export const getGroupActions = (data: any[], apiVersion: ApiVersion) =>
+  data.filter(
+    (d) =>
+      d.type ===
+      (apiVersion === '1' ? 'add_significant_terms_group' : 'add_significant_items_group')
+  );
+
+export const getGroupHistogramActions = (data: any[], apiVersion: ApiVersion) =>
+  data.filter(
+    (d) =>
+      d.type ===
+      (apiVersion === '1'
+        ? 'add_significant_terms_group_histogram'
+        : 'add_significant_items_group_histogram')
+  );
+
+export const getErrorActions = (data: any[]) => data.filter((d) => d.type === 'add_error');
diff --git a/x-pack/test/api_integration/apis/aiops/types.ts b/x-pack/test/api_integration/apis/aiops/types.ts
index c4e9eb8191108..a990b1a346c07 100644
--- a/x-pack/test/api_integration/apis/aiops/types.ts
+++ b/x-pack/test/api_integration/apis/aiops/types.ts
@@ -5,16 +5,19 @@
  * 2.0.
  */
 
-import type { AiopsApiLogRateAnalysis } from '@kbn/aiops-plugin/common/api';
+import type {
+  AiopsLogRateAnalysisSchema,
+  AiopsLogRateAnalysisApiVersion as ApiVersion,
+} from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
 import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
 
 import type { LogRateAnalysisDataGenerator } from '../../../functional/services/aiops/log_rate_analysis_data_generator';
 
-export interface TestData {
+export interface TestData<T extends ApiVersion> {
   testName: string;
   esArchive?: string;
   dataGenerator?: LogRateAnalysisDataGenerator;
-  requestBody: AiopsApiLogRateAnalysis['body'];
+  requestBody: AiopsLogRateAnalysisSchema<T>;
   expected: {
     chunksLength: number;
     chunksLengthGroupOnly: number;
@@ -22,11 +25,6 @@ export interface TestData {
     actionsLengthGroupOnly: number;
     noIndexChunksLength: number;
     noIndexActionsLength: number;
-    significantTermFilter: 'add_significant_terms';
-    groupFilter: 'add_significant_terms_group';
-    groupHistogramFilter: 'add_significant_terms_group_histogram';
-    histogramFilter: 'add_significant_terms_histogram';
-    errorFilter: 'add_error';
     significantTerms: SignificantTerm[];
     groups: SignificantTermGroup[];
     histogramLength: number;
diff --git a/x-pack/test/api_integration_basic/apis/aiops/permissions.ts b/x-pack/test/api_integration_basic/apis/aiops/permissions.ts
index 3a42d1e99d1a6..a77d9a634418e 100644
--- a/x-pack/test/api_integration_basic/apis/aiops/permissions.ts
+++ b/x-pack/test/api_integration_basic/apis/aiops/permissions.ts
@@ -11,50 +11,59 @@ import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
 
 import expect from '@kbn/expect';
 
-import type { AiopsApiLogRateAnalysis } from '@kbn/aiops-plugin/common/api';
+import type {
+  AiopsLogRateAnalysisSchema,
+  AiopsLogRateAnalysisApiVersion as ApiVersion,
+} from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
 
 import type { FtrProviderContext } from '../../ftr_provider_context';
 
+const API_VERSIONS: ApiVersion[] = ['1', '2'];
+
 export default ({ getService }: FtrProviderContext) => {
   const supertest = getService('supertest');
   const config = getService('config');
   const kibanaServerUrl = formatUrl(config.get('servers.kibana'));
 
-  const requestBody: AiopsApiLogRateAnalysis['body'] = {
-    baselineMax: 1561719083292,
-    baselineMin: 1560954147006,
-    deviationMax: 1562254538692,
-    deviationMin: 1561986810992,
-    end: 2147483647000,
-    index: 'ft_ecommerce',
-    searchQuery: '{"bool":{"filter":[],"must":[{"match_all":{}}],"must_not":[]}}',
-    start: 0,
-    timeFieldName: 'order_date',
-  };
-
   describe('POST /internal/aiops/log_rate_analysis', () => {
-    it('should return permission denied without streaming', async () => {
-      await supertest
-        .post(`/internal/aiops/log_rate_analysis`)
-        .set('kbn-xsrf', 'kibana')
-        .set(ELASTIC_HTTP_VERSION_HEADER, '1')
-        .send(requestBody)
-        .expect(403);
-    });
+    API_VERSIONS.forEach((apiVersion) => {
+      describe(`with API v${apiVersion}`, () => {
+        const requestBody: AiopsLogRateAnalysisSchema<typeof apiVersion> = {
+          baselineMax: 1561719083292,
+          baselineMin: 1560954147006,
+          deviationMax: 1562254538692,
+          deviationMin: 1561986810992,
+          end: 2147483647000,
+          index: 'ft_ecommerce',
+          searchQuery: '{"bool":{"filter":[],"must":[{"match_all":{}}],"must_not":[]}}',
+          start: 0,
+          timeFieldName: 'order_date',
+        };
 
-    it('should return permission denied with streaming', async () => {
-      const response = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
-        method: 'POST',
-        headers: {
-          'Content-Type': 'application/json',
-          'kbn-xsrf': 'stream',
-          [ELASTIC_HTTP_VERSION_HEADER]: '1',
-        },
-        body: JSON.stringify(requestBody),
-      });
+        it('should return permission denied without streaming', async () => {
+          await supertest
+            .post(`/internal/aiops/log_rate_analysis`)
+            .set('kbn-xsrf', 'kibana')
+            .set(ELASTIC_HTTP_VERSION_HEADER, apiVersion)
+            .send(requestBody)
+            .expect(403);
+        });
+
+        it('should return permission denied with streaming', async () => {
+          const response = await fetch(`${kibanaServerUrl}/internal/aiops/log_rate_analysis`, {
+            method: 'POST',
+            headers: {
+              'Content-Type': 'application/json',
+              'kbn-xsrf': 'stream',
+              [ELASTIC_HTTP_VERSION_HEADER]: apiVersion,
+            },
+            body: JSON.stringify(requestBody),
+          });
 
-      expect(response.ok).to.be(false);
-      expect(response.status).to.be(403);
+          expect(response.ok).to.be(false);
+          expect(response.status).to.be(403);
+        });
+      });
     });
   });
 };

From e3f339c60014d567365ce42231fb5a0be1710e6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerg=C5=91=20=C3=81brah=C3=A1m?= <gergo.abraham@elastic.co>
Date: Fri, 10 Nov 2023 14:08:14 +0100
Subject: [PATCH 085/147] [Defend Workflows] Enable Artifacts cy tests against
 serverless (#170977)

## Summary

Enables _Artifact tabs in Policy details_ and _Artifacts_ cypress tests
against serverless. Or at least the test cases that has `ALL` privilege
(or `NONE` for the _Artifacts_ tests), because there are no such roles
in serverless environment that have:
- read privilege for policy, but no privilege for artifacts,
- read privilege for artifacts

Additionally,
- `@skipInServerless` tag is added,
- the two tests use the usual `indexEndpointHosts()` to have mocked
data,
- and the old `loadEndpointDataForEventFiltersIfNeeded()` is deleted

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../public/management/cypress/README.md       |   1 +
 .../cypress/cypress_serverless.config.ts      |   2 +-
 .../artifact_tabs_in_policy_details.cy.ts     | 106 +++++++++++-------
 .../e2e/artifacts/artifacts_mocked_data.cy.ts |  87 ++++++++------
 .../cypress/tasks/load_endpoint_data.ts       |  28 -----
 5 files changed, 122 insertions(+), 102 deletions(-)
 delete mode 100644 x-pack/plugins/security_solution/public/management/cypress/tasks/load_endpoint_data.ts

diff --git a/x-pack/plugins/security_solution/public/management/cypress/README.md b/x-pack/plugins/security_solution/public/management/cypress/README.md
index 65af201662c48..79689e650faea 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/README.md
+++ b/x-pack/plugins/security_solution/public/management/cypress/README.md
@@ -36,6 +36,7 @@ Similarly to Security Solution cypress tests, we use tags in order to select whi
 - `@serverless` includes a test in the Serverless test suite. You need to explicitly add this tag to any test you want to run against a Serverless environment.
 - `@ess` includes a test in the normal, non-Serverless test suite. You need to explicitly add this tag to any test you want to run against a non-Serverless environment.
 - `@brokenInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that a test should run in Serverless, but currently is broken.
+- `@skipInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that we don't want to run the given test in Serverless.
 
 Important: if you don't provide any tag, your test won't be executed.
 
diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts b/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts
index 35dda2bd68501..77507e12fae87 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts
@@ -14,7 +14,7 @@ export default defineCypressConfig(
     env: {
       IS_SERVERLESS: true,
 
-      grepTags: '@serverless --@brokenInServerless',
+      grepTags: '@serverless --@brokenInServerless --@skipInServerless',
     },
   })
 );
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts
index 5988b73852af5..b6040691c485f 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts
@@ -16,9 +16,10 @@ import {
   removeExceptionsList,
   yieldFirstPolicyID,
 } from '../../tasks/artifacts';
-import { loadEndpointDataForEventFiltersIfNeeded } from '../../tasks/load_endpoint_data';
 import { login, ROLE } from '../../tasks/login';
 import { performUserActions } from '../../tasks/perform_user_actions';
+import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts';
+import type { ReturnTypeFromChainable } from '../../types';
 
 const loginWithPrivilegeAll = () => {
   login(ROLE.endpoint_policy_manager);
@@ -58,15 +59,20 @@ const visitArtifactTab = (tabId: string) => {
   cy.get(`#${tabId}`).click();
 };
 
-describe('Artifact tabs in Policy Details page', { tags: ['@ess'] }, () => {
+describe('Artifact tabs in Policy Details page', { tags: ['@ess', '@serverless'] }, () => {
+  let endpointData: ReturnTypeFromChainable<typeof indexEndpointHosts> | undefined;
+
   before(() => {
-    login();
-    loadEndpointDataForEventFiltersIfNeeded();
+    indexEndpointHosts().then((indexEndpoints) => {
+      endpointData = indexEndpoints;
+    });
   });
 
   after(() => {
-    login();
     removeAllArtifacts();
+
+    endpointData?.cleanup();
+    endpointData = undefined;
   });
 
   for (const testData of getArtifactsListTestsData()) {
@@ -76,22 +82,32 @@ describe('Artifact tabs in Policy Details page', { tags: ['@ess'] }, () => {
         removeExceptionsList(testData.createRequestBody.list_id);
       });
 
-      it(`[NONE] User cannot see the tab for ${testData.title}`, () => {
-        loginWithPrivilegeNone(testData.privilegePrefix);
-        visitPolicyDetailsPage();
+      it(
+        `[NONE] User cannot see the tab for ${testData.title}`,
+        // there is no such role in Serverless environment that can read policy but cannot read artifacts
+        { tags: ['@skipInServerless'] },
+        () => {
+          loginWithPrivilegeNone(testData.privilegePrefix);
+          visitPolicyDetailsPage();
 
-        cy.get(`#${testData.tabId}`).should('not.exist');
-      });
+          cy.get(`#${testData.tabId}`).should('not.exist');
+        }
+      );
 
       context(`Given there are no ${testData.title} entries`, () => {
-        it(`[READ] User CANNOT add ${testData.title} artifact`, () => {
-          loginWithPrivilegeRead(testData.privilegePrefix);
-          visitArtifactTab(testData.tabId);
+        it(
+          `[READ] User CANNOT add ${testData.title} artifact`,
+          // there is no such role in Serverless environment that only reads artifacts
+          { tags: ['@skipInServerless'] },
+          () => {
+            loginWithPrivilegeRead(testData.privilegePrefix);
+            visitArtifactTab(testData.tabId);
 
-          cy.getByTestSubj('policy-artifacts-empty-unexisting').should('exist');
+            cy.getByTestSubj('policy-artifacts-empty-unexisting').should('exist');
 
-          cy.getByTestSubj('unexisting-manage-artifacts-button').should('not.exist');
-        });
+            cy.getByTestSubj('unexisting-manage-artifacts-button').should('not.exist');
+          }
+        );
 
         it(`[ALL] User can add ${testData.title} artifact`, () => {
           loginWithPrivilegeAll();
@@ -129,15 +145,20 @@ describe('Artifact tabs in Policy Details page', { tags: ['@ess'] }, () => {
           createPerPolicyArtifact(testData.artifactName, testData.createRequestBody);
         });
 
-        it(`[READ] User CANNOT Manage or Assign ${testData.title} artifacts`, () => {
-          loginWithPrivilegeRead(testData.privilegePrefix);
-          visitArtifactTab(testData.tabId);
+        it(
+          `[READ] User CANNOT Manage or Assign ${testData.title} artifacts`,
+          // there is no such role in Serverless environment that only reads artifacts
+          { tags: ['@skipInServerless'] },
+          () => {
+            loginWithPrivilegeRead(testData.privilegePrefix);
+            visitArtifactTab(testData.tabId);
 
-          cy.getByTestSubj('policy-artifacts-empty-unassigned').should('exist');
+            cy.getByTestSubj('policy-artifacts-empty-unassigned').should('exist');
 
-          cy.getByTestSubj('unassigned-manage-artifacts-button').should('not.exist');
-          cy.getByTestSubj('unassigned-assign-artifacts-button').should('not.exist');
-        });
+            cy.getByTestSubj('unassigned-manage-artifacts-button').should('not.exist');
+            cy.getByTestSubj('unassigned-assign-artifacts-button').should('not.exist');
+          }
+        );
 
         it(`[ALL] User can Manage and Assign ${testData.title} artifacts`, () => {
           loginWithPrivilegeAll();
@@ -173,23 +194,28 @@ describe('Artifact tabs in Policy Details page', { tags: ['@ess'] }, () => {
           });
         });
 
-        it(`[READ] User can see ${testData.title} artifacts but CANNOT assign or remove from policy`, () => {
-          loginWithPrivilegeRead(testData.privilegePrefix);
-          visitArtifactTab(testData.tabId);
-
-          // List of artifacts
-          cy.getByTestSubj('artifacts-collapsed-list-card').should('have.length', 1);
-          cy.getByTestSubj('artifacts-collapsed-list-card-header-titleHolder').contains(
-            testData.artifactName
-          );
-
-          // Cannot assign artifacts
-          cy.getByTestSubj('artifacts-assign-button').should('not.exist');
-
-          // Cannot remove from policy
-          cy.getByTestSubj('artifacts-collapsed-list-card-header-actions-button').click();
-          cy.getByTestSubj('remove-from-policy-action').should('not.exist');
-        });
+        it(
+          `[READ] User can see ${testData.title} artifacts but CANNOT assign or remove from policy`,
+          // there is no such role in Serverless environment that only reads artifacts
+          { tags: ['@skipInServerless'] },
+          () => {
+            loginWithPrivilegeRead(testData.privilegePrefix);
+            visitArtifactTab(testData.tabId);
+
+            // List of artifacts
+            cy.getByTestSubj('artifacts-collapsed-list-card').should('have.length', 1);
+            cy.getByTestSubj('artifacts-collapsed-list-card-header-titleHolder').contains(
+              testData.artifactName
+            );
+
+            // Cannot assign artifacts
+            cy.getByTestSubj('artifacts-assign-button').should('not.exist');
+
+            // Cannot remove from policy
+            cy.getByTestSubj('artifacts-collapsed-list-card-header-actions-button').click();
+            cy.getByTestSubj('remove-from-policy-action').should('not.exist');
+          }
+        );
 
         it(`[ALL] User can see ${testData.title} artifacts and can assign or remove artifacts from policy`, () => {
           loginWithPrivilegeAll();
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts
index 807502f93880c..e7f32820c00d7 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts
@@ -12,7 +12,8 @@ import { loadPage } from '../../tasks/common';
 import { getArtifactsListTestsData } from '../../fixtures/artifacts_page';
 import { removeAllArtifacts } from '../../tasks/artifacts';
 import { performUserActions } from '../../tasks/perform_user_actions';
-import { loadEndpointDataForEventFiltersIfNeeded } from '../../tasks/load_endpoint_data';
+import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts';
+import type { ReturnTypeFromChainable } from '../../types';
 
 const loginWithWriteAccess = (url: string) => {
   login(ROLE.endpoint_policy_manager);
@@ -30,17 +31,22 @@ const loginWithoutAccess = (url: string) => {
   loadPage(url);
 };
 
-describe('Artifacts pages', { tags: ['@ess'] }, () => {
+describe('Artifacts pages', { tags: ['@ess', '@serverless'] }, () => {
+  let endpointData: ReturnTypeFromChainable<typeof indexEndpointHosts> | undefined;
+
   before(() => {
-    login();
-    loadEndpointDataForEventFiltersIfNeeded();
-    // Clean artifacts data
+    indexEndpointHosts().then((indexEndpoints) => {
+      endpointData = indexEndpoints;
+    });
+
     removeAllArtifacts();
   });
 
   after(() => {
-    // Clean artifacts data
     removeAllArtifacts();
+
+    endpointData?.cleanup();
+    endpointData = undefined;
   });
 
   for (const testData of getArtifactsListTestsData()) {
@@ -53,14 +59,19 @@ describe('Artifacts pages', { tags: ['@ess'] }, () => {
         cy.getByTestSubj(`${testData.pagePrefix}-emptyState-addButton`).should('not.exist');
       });
 
-      it(`read - should show empty state page if there is no ${testData.title} entry and the add button does not exist`, () => {
-        loginWithReadAccess(
-          testData.privilegePrefix,
-          `/app/security/administration/${testData.urlPath}`
-        );
-        cy.getByTestSubj(testData.emptyState).should('exist');
-        cy.getByTestSubj(`${testData.pagePrefix}-emptyState-addButton`).should('not.exist');
-      });
+      it(
+        `read - should show empty state page if there is no ${testData.title} entry and the add button does not exist`,
+        // there is no such role in Serverless environment that only reads artifacts
+        { tags: ['@skipInServerless'] },
+        () => {
+          loginWithReadAccess(
+            testData.privilegePrefix,
+            `/app/security/administration/${testData.urlPath}`
+          );
+          cy.getByTestSubj(testData.emptyState).should('exist');
+          cy.getByTestSubj(`${testData.pagePrefix}-emptyState-addButton`).should('not.exist');
+        }
+      );
 
       it(`write - should show empty state page if there is no ${testData.title} entry and the add button exists`, () => {
         loginWithWriteAccess(`/app/security/administration/${testData.urlPath}`);
@@ -87,25 +98,35 @@ describe('Artifacts pages', { tags: ['@ess'] }, () => {
         cy.getByTestSubj('header-page-title').contains(testData.title);
       });
 
-      it(`read - should not be able to update/delete an existing ${testData.title} entry`, () => {
-        loginWithReadAccess(
-          testData.privilegePrefix,
-          `/app/security/administration/${testData.urlPath}`
-        );
-        cy.getByTestSubj('header-page-title').contains(testData.title);
-        cy.getByTestSubj(`${testData.pagePrefix}-card-header-actions-button`).should('not.exist');
-        cy.getByTestSubj(`${testData.pagePrefix}-card-cardEditAction`).should('not.exist');
-        cy.getByTestSubj(`${testData.pagePrefix}-card-cardDeleteAction`).should('not.exist');
-      });
-
-      it(`read - should not be able to create a new ${testData.title} entry`, () => {
-        loginWithReadAccess(
-          testData.privilegePrefix,
-          `/app/security/administration/${testData.urlPath}`
-        );
-        cy.getByTestSubj('header-page-title').contains(testData.title);
-        cy.getByTestSubj(`${testData.pagePrefix}-pageAddButton`).should('not.exist');
-      });
+      it(
+        `read - should not be able to update/delete an existing ${testData.title} entry`,
+        // there is no such role in Serverless environment that only reads artifacts
+        { tags: ['@skipInServerless'] },
+        () => {
+          loginWithReadAccess(
+            testData.privilegePrefix,
+            `/app/security/administration/${testData.urlPath}`
+          );
+          cy.getByTestSubj('header-page-title').contains(testData.title);
+          cy.getByTestSubj(`${testData.pagePrefix}-card-header-actions-button`).should('not.exist');
+          cy.getByTestSubj(`${testData.pagePrefix}-card-cardEditAction`).should('not.exist');
+          cy.getByTestSubj(`${testData.pagePrefix}-card-cardDeleteAction`).should('not.exist');
+        }
+      );
+
+      it(
+        `read - should not be able to create a new ${testData.title} entry`,
+        // there is no such role in Serverless environment that only reads artifacts
+        { tags: ['@skipInServerless'] },
+        () => {
+          loginWithReadAccess(
+            testData.privilegePrefix,
+            `/app/security/administration/${testData.urlPath}`
+          );
+          cy.getByTestSubj('header-page-title').contains(testData.title);
+          cy.getByTestSubj(`${testData.pagePrefix}-pageAddButton`).should('not.exist');
+        }
+      );
 
       it(`write - should be able to update an existing ${testData.title} entry`, () => {
         loginWithWriteAccess(`/app/security/administration/${testData.urlPath}`);
diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/load_endpoint_data.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/load_endpoint_data.ts
deleted file mode 100644
index b8029a8528e94..0000000000000
--- a/x-pack/plugins/security_solution/public/management/cypress/tasks/load_endpoint_data.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { isEmpty } from 'lodash';
-import { BASE_ENDPOINT_ROUTE } from '../../../../common/endpoint/constants';
-import { runEndpointLoaderScript } from './run_endpoint_loader';
-import { request } from './common';
-
-// Checks for Endpoint data and creates it if needed
-export const loadEndpointDataForEventFiltersIfNeeded = () => {
-  request({
-    method: 'POST',
-    url: `${BASE_ENDPOINT_ROUTE}/suggestions/eventFilters`,
-    body: {
-      field: 'agent.type',
-      query: '',
-    },
-    failOnStatusCode: false,
-  }).then(({ body }) => {
-    if (isEmpty(body)) {
-      runEndpointLoaderScript();
-    }
-  });
-};

From bc2202df1ae226f97068b4709050741949f35923 Mon Sep 17 00:00:00 2001
From: Nathan Reese <reese.nathan@elastic.co>
Date: Fri, 10 Nov 2023 07:00:05 -0700
Subject: [PATCH 086/147] [maps] fix expand layer control is not clickable when
 layers are loading (#170912)

Closes https://github.com/elastic/kibana/issues/170911

root problem is that `EuiButton*` components are disabled when passed
`isLoading` property. Re-worked component to not pass `isLoading` to
`EuiButton*`

### Test instructions
1. create new map
2. click "Collapse layers panel" to collapse layer control
3. open browser dev tools. Open network tab and select "Slow 3G"
4. Pan and zoom map to cause basemap tiles to load. "Expand layers
panel" button should be clickable during loading

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../__snapshots__/layer_control.test.tsx.snap | 24 +++--------
 .../layer_control/expand_button.tsx           | 41 +++++++++++++++++++
 .../layer_control/layer_control.tsx           | 33 ++-------------
 3 files changed, 51 insertions(+), 47 deletions(-)
 create mode 100644 x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/expand_button.tsx

diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap
index 73da1b32f60ec..20395d0674511 100644
--- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap
+++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/__snapshots__/layer_control.test.tsx.snap
@@ -119,12 +119,8 @@ exports[`LayerControl isLayerTOCOpen Should render expand button 1`] = `
   display="inlineBlock"
   position="left"
 >
-  <EuiButtonIcon
-    aria-label="Expand layers panel"
-    className="mapLayerControl__openLayerTOCButton"
-    color="text"
-    data-test-subj="mapExpandLayerControlButton"
-    iconType="menuLeft"
+  <ExpandButton
+    hasErrors={false}
     isLoading={false}
     onClick={[Function]}
   />
@@ -138,12 +134,8 @@ exports[`LayerControl isLayerTOCOpen Should render expand button with error icon
   display="inlineBlock"
   position="left"
 >
-  <EuiButtonIcon
-    aria-label="Expand layers panel"
-    className="mapLayerControl__openLayerTOCButton"
-    color="text"
-    data-test-subj="mapExpandLayerControlButton"
-    iconType="warning"
+  <ExpandButton
+    hasErrors={true}
     isLoading={false}
     onClick={[Function]}
   />
@@ -157,12 +149,8 @@ exports[`LayerControl isLayerTOCOpen Should render expand button with loading ic
   display="inlineBlock"
   position="left"
 >
-  <EuiButtonIcon
-    aria-label="Expand layers panel"
-    className="mapLayerControl__openLayerTOCButton"
-    color="text"
-    data-test-subj="mapExpandLayerControlButton"
-    iconType="menuLeft"
+  <ExpandButton
+    hasErrors={false}
     isLoading={true}
     onClick={[Function]}
   />
diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/expand_button.tsx b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/expand_button.tsx
new file mode 100644
index 0000000000000..f80a84dc6782d
--- /dev/null
+++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/expand_button.tsx
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { EuiButtonEmpty, EuiIcon, EuiLoadingSpinner } from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+
+interface Props {
+  hasErrors: boolean;
+  isLoading: boolean;
+  onClick: () => void;
+}
+
+export function ExpandButton({ hasErrors, isLoading, onClick }: Props) {
+  // isLoading indicates at least one layer is loading.
+  // Expand button should never be disabled.
+  // Not using EuiButton* with iconType props because EuiButton* disables button when isLoading prop is true.
+  return (
+    <EuiButtonEmpty
+      aria-label={i18n.translate('xpack.maps.layerControl.openLayerTOCButtonAriaLabel', {
+        defaultMessage: 'Expand layers panel',
+      })}
+      className="mapLayerControl__openLayerTOCButton"
+      color="text"
+      onClick={onClick}
+      data-test-subj="mapExpandLayerControlButton"
+    >
+      {isLoading ? (
+        <div style={{ paddingTop: '6px' }}>
+          <EuiLoadingSpinner />
+        </div>
+      ) : (
+        <EuiIcon type={hasErrors ? 'warning' : 'menuLeft'} />
+      )}
+    </EuiButtonEmpty>
+  );
+}
diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_control.tsx b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_control.tsx
index 7a4e04066b37c..e1c34223483c8 100644
--- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_control.tsx
+++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_control.tsx
@@ -7,13 +7,13 @@
 
 import React, { Fragment } from 'react';
 import {
+  EuiButton,
+  EuiButtonIcon,
   EuiFlexGroup,
   EuiFlexItem,
   EuiPanel,
-  EuiButton,
   EuiTitle,
   EuiSpacer,
-  EuiButtonIcon,
   EuiToolTip,
 } from '@elastic/eui';
 import { FormattedMessage } from '@kbn/i18n-react';
@@ -21,6 +21,7 @@ import { i18n } from '@kbn/i18n';
 import { LayerTOC } from './layer_toc';
 import { isScreenshotMode } from '../../../kibana_services';
 import { ILayer } from '../../../classes/layers/layer';
+import { ExpandButton } from './expand_button';
 
 export interface Props {
   isReadOnly: boolean;
@@ -35,32 +36,6 @@ export interface Props {
   zoom: number;
 }
 
-function renderExpandButton({
-  hasErrors,
-  isLoading,
-  onClick,
-}: {
-  hasErrors: boolean;
-  isLoading: boolean;
-  onClick: () => void;
-}) {
-  const expandLabel = i18n.translate('xpack.maps.layerControl.openLayerTOCButtonAriaLabel', {
-    defaultMessage: 'Expand layers panel',
-  });
-
-  return (
-    <EuiButtonIcon
-      className="mapLayerControl__openLayerTOCButton"
-      color="text"
-      isLoading={isLoading}
-      onClick={onClick}
-      iconType={hasErrors ? 'warning' : 'menuLeft'}
-      aria-label={expandLabel}
-      data-test-subj="mapExpandLayerControlButton"
-    />
-  );
-}
-
 export function LayerControl({
   isReadOnly,
   isLayerTOCOpen,
@@ -92,7 +67,7 @@ export function LayerControl({
         })}
         position="left"
       >
-        {renderExpandButton({ hasErrors, isLoading, onClick: openLayerTOC })}
+        <ExpandButton hasErrors={hasErrors} isLoading={isLoading} onClick={openLayerTOC} />
       </EuiToolTip>
     );
   }

From c078b9157c2eedeb28c7d136fdc584c9189f674f Mon Sep 17 00:00:00 2001
From: Nathan Reese <reese.nathan@elastic.co>
Date: Fri, 10 Nov 2023 07:01:16 -0700
Subject: [PATCH 087/147] [discover] do not show old results on error (#170769)

Prerequisite for https://github.com/elastic/kibana/issues/167904

### Test
1. install sample web logs
2. Open discover
3. Select time range that displays results
4. Add filter
    ```
    {
      "error_query": {
        "indices": [
          {
            "error_type": "exception",
            "message": "local shard failure message 123",
            "name": "kibana_sample_data_logs"
          }
        ]
      }
    }
    ```
5. Verify discover should display `EmptyPrompt` showing error message
instead of callout with stale data.
<img width="500" alt="Screenshot 2023-11-07 at 9 23 43 AM"
src="https://github.com/elastic/kibana/assets/373691/60237f8c-dcf5-4b4a-991f-4a9f073048af">

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../components/layout/discover_documents.tsx  |  14 --
 .../components/layout/discover_layout.tsx     |   5 +-
 .../main/utils/get_result_state.test.ts       |  23 +--
 .../main/utils/get_result_state.ts            |   8 +-
 .../components/common/error_callout.test.tsx  |  77 +--------
 .../components/common/error_callout.tsx       | 151 ++++--------------
 .../discover/group1/_discover_histogram.ts    |   4 +-
 .../apps/discover/group1/_errors.ts           |   2 +-
 .../apps/discover/group1/_field_data.ts       |   2 +-
 .../group1/_field_data_with_fields_api.ts     |   2 +-
 .../discover/group2/_data_grid_field_data.ts  |   2 +-
 .../apps/discover/group3/_sidebar.ts          |   8 +-
 .../apps/discover/group3/_view_mode_toggle.ts |   4 +-
 .../apps/discover/group4/_date_nested.ts      |   3 +-
 .../apps/discover/group4/_esql_view.ts        |   4 +-
 test/functional/page_objects/discover_page.ts |   8 +-
 .../translations/translations/fr-FR.json      |   2 -
 .../translations/translations/ja-JP.json      |   2 -
 .../translations/translations/zh-CN.json      |   2 -
 .../apps/discover/error_handling.ts           |   2 +-
 .../tests/apps/discover/async_search.ts       |   9 +-
 .../tests/apps/discover/sessions_in_space.ts  |   1 -
 22 files changed, 78 insertions(+), 257 deletions(-)

diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
index bf01e2a7b6669..f655af89c0c4c 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx
@@ -37,7 +37,6 @@ import {
   SHOW_MULTIFIELDS,
   SORT_DEFAULT_ORDER_SETTING,
 } from '@kbn/discover-utils';
-import { i18n } from '@kbn/i18n';
 import useObservable from 'react-use/lib/useObservable';
 import type { DocViewFilterFn } from '@kbn/unified-doc-viewer/types';
 import { DiscoverGrid } from '../../../../components/discover_grid';
@@ -65,7 +64,6 @@ import { DiscoverGridFlyout } from '../../../../components/discover_grid_flyout'
 import { getRenderCustomToolbarWithElements } from '../../../../components/discover_grid/render_custom_toolbar';
 import { useSavedSearchInitial } from '../../services/discover_state_provider';
 import { useFetchMoreRecords } from './use_fetch_more_records';
-import { ErrorCallout } from '../../../../components/common/error_callout';
 import { SelectedVSAvailableCallout } from './selected_vs_available_callout';
 
 const containerStyles = css`
@@ -256,22 +254,11 @@ function DiscoverDocumentsComponent({
     [dataView, onAddColumn, onAddFilter, onRemoveColumn, query, savedSearch.id, setExpandedDoc]
   );
 
-  const dataState = useDataState(stateContainer.dataState.data$.main$);
   const documents = useObservable(stateContainer.dataState.data$.documents$);
 
   const callouts = useMemo(
     () => (
       <>
-        {dataState.error && (
-          <ErrorCallout
-            title={i18n.translate('discover.documentsErrorTitle', {
-              defaultMessage: 'Search error',
-            })}
-            error={dataState.error}
-            inline
-            data-test-subj="discoverMainError"
-          />
-        )}
         <SelectedVSAvailableCallout
           isPlainRecord={isTextBasedQuery}
           textBasedQueryColumns={documents?.textBasedQueryColumns}
@@ -281,7 +268,6 @@ function DiscoverDocumentsComponent({
       </>
     ),
     [
-      dataState.error,
       isTextBasedQuery,
       currentColumns,
       documents?.textBasedQueryColumns,
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
index 6461603609903..b2d3a4b5058ee 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx
@@ -114,8 +114,8 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
 
   const isPlainRecord = useMemo(() => getRawRecordType(query) === RecordRawType.PLAIN, [query]);
   const resultState = useMemo(
-    () => getResultState(dataState.fetchStatus, dataState.foundDocuments!, isPlainRecord),
-    [dataState.fetchStatus, dataState.foundDocuments, isPlainRecord]
+    () => getResultState(dataState.fetchStatus, dataState.foundDocuments ?? false),
+    [dataState.fetchStatus, dataState.foundDocuments]
   );
 
   const onOpenInspector = useInspector({
@@ -338,7 +338,6 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) {
                         }
                       )}
                       error={dataState.error}
-                      data-test-subj="discoverNoResultsError"
                     />
                   ) : (
                     <DiscoverNoResults
diff --git a/src/plugins/discover/public/application/main/utils/get_result_state.test.ts b/src/plugins/discover/public/application/main/utils/get_result_state.test.ts
index 8dd98650f30a5..4e7fcbf60a0c1 100644
--- a/src/plugins/discover/public/application/main/utils/get_result_state.test.ts
+++ b/src/plugins/discover/public/application/main/utils/get_result_state.test.ts
@@ -9,33 +9,38 @@ import { getResultState, resultStatuses } from './get_result_state';
 import { FetchStatus } from '../../types';
 
 describe('getResultState', () => {
-  test('fetching uninitialized', () => {
+  test(`should return 'uninitialized' when fetching uninitialized`, () => {
     const actual = getResultState(FetchStatus.UNINITIALIZED, false);
     expect(actual).toBe(resultStatuses.UNINITIALIZED);
   });
 
-  test('fetching complete with no records', () => {
+  test(`should return 'loading' when fetching is loading`, () => {
+    const actual = getResultState(FetchStatus.LOADING, false);
+    expect(actual).toBe(resultStatuses.LOADING);
+  });
+
+  test(`should return 'none' when fetching is complete with no records`, () => {
     const actual = getResultState(FetchStatus.COMPLETE, false);
     expect(actual).toBe(resultStatuses.NO_RESULTS);
   });
 
-  test('fetching ongoing aka loading', () => {
-    const actual = getResultState(FetchStatus.LOADING, false);
-    expect(actual).toBe(resultStatuses.LOADING);
+  test(`should return 'none' after a fetch error`, () => {
+    const actual = getResultState(FetchStatus.ERROR, false);
+    expect(actual).toBe(resultStatuses.NO_RESULTS);
   });
 
-  test('fetching ready', () => {
+  test(`should return 'ready' when fetching completes with records`, () => {
     const actual = getResultState(FetchStatus.COMPLETE, true);
     expect(actual).toBe(resultStatuses.READY);
   });
 
-  test('re-fetching after already data is available', () => {
+  test(`should reurn 'ready' when re-fetching after already data is available`, () => {
     const actual = getResultState(FetchStatus.LOADING, true);
     expect(actual).toBe(resultStatuses.READY);
   });
 
-  test('after a fetch error when data was successfully fetched before ', () => {
+  test(`should return 'none' after a fetch error when data was successfully fetched before`, () => {
     const actual = getResultState(FetchStatus.ERROR, true);
-    expect(actual).toBe(resultStatuses.READY);
+    expect(actual).toBe(resultStatuses.NO_RESULTS);
   });
 });
diff --git a/src/plugins/discover/public/application/main/utils/get_result_state.ts b/src/plugins/discover/public/application/main/utils/get_result_state.ts
index ff31e114754ad..8d39707c65f9c 100644
--- a/src/plugins/discover/public/application/main/utils/get_result_state.ts
+++ b/src/plugins/discover/public/application/main/utils/get_result_state.ts
@@ -18,15 +18,11 @@ export const resultStatuses = {
  * Returns the current state of the result, depends on fetchStatus and the given fetched rows
  * Determines what is displayed in Discover main view (loading view, data view, empty data view, ...)
  */
-export function getResultState(
-  fetchStatus: FetchStatus,
-  foundDocuments: boolean = false,
-  isPlainRecord?: boolean
-) {
+export function getResultState(fetchStatus: FetchStatus, foundDocuments: boolean = false) {
   if (fetchStatus === FetchStatus.UNINITIALIZED) {
     return resultStatuses.UNINITIALIZED;
   }
-  if (isPlainRecord && fetchStatus === FetchStatus.ERROR) return resultStatuses.NO_RESULTS;
+  if (fetchStatus === FetchStatus.ERROR) return resultStatuses.NO_RESULTS;
 
   if (!foundDocuments && fetchStatus === FetchStatus.LOADING) return resultStatuses.LOADING;
   else if (foundDocuments) return resultStatuses.READY;
diff --git a/src/plugins/discover/public/components/common/error_callout.test.tsx b/src/plugins/discover/public/components/common/error_callout.test.tsx
index ec01af15cd7e2..fd07af1bd548d 100644
--- a/src/plugins/discover/public/components/common/error_callout.test.tsx
+++ b/src/plugins/discover/public/components/common/error_callout.test.tsx
@@ -6,7 +6,7 @@
  * Side Public License, v 1.
  */
 
-import { EuiButton, EuiCallOut, EuiEmptyPrompt, EuiLink, EuiModal } from '@elastic/eui';
+import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
 import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
 import { findTestSubject } from '@kbn/test-jest-helpers';
 import { mount } from 'enzyme';
@@ -37,14 +37,11 @@ describe('ErrorCallout', () => {
   it('should render', () => {
     const title = 'Error title';
     const error = new Error('My error');
-    const wrapper = mountWithServices(
-      <ErrorCallout title={title} error={error} data-test-subj="errorCallout" />
-    );
+    const wrapper = mountWithServices(<ErrorCallout title={title} error={error} />);
     const prompt = wrapper.find(EuiEmptyPrompt);
     expect(prompt).toHaveLength(1);
     expect(prompt.prop('title')).toBeDefined();
     expect(prompt.prop('title')).not.toBeInstanceOf(String);
-    expect(prompt.prop('data-test-subj')).toBe('errorCallout');
     expect(prompt.prop('body')).toBeDefined();
     expect(findTestSubject(prompt, 'discoverErrorCalloutTitle').contains(title)).toBe(true);
     expect(findTestSubject(prompt, 'discoverErrorCalloutMessage').contains(error.message)).toBe(
@@ -53,97 +50,31 @@ describe('ErrorCallout', () => {
     expect(prompt.find(EuiButton)).toHaveLength(1);
   });
 
-  it('should render inline', () => {
-    const title = 'Error title';
-    const error = new Error('My error');
-    const wrapper = mountWithServices(
-      <ErrorCallout title={title} error={error} inline data-test-subj="errorCallout" />
-    );
-    const callout = wrapper.find(EuiCallOut);
-    expect(callout).toHaveLength(1);
-    expect(callout.prop('title')).toBeDefined();
-    expect(callout.prop('title')).not.toBeInstanceOf(String);
-    expect(callout.prop('size')).toBe('s');
-    expect(callout.prop('data-test-subj')).toBe('errorCallout');
-    expect(
-      findTestSubject(callout, 'discoverErrorCalloutMessage').contains(`${title}: ${error.message}`)
-    ).toBe(true);
-    expect(callout.find(EuiLink)).toHaveLength(1);
-  });
-
   it('should render with override display', () => {
     const title = 'Override title';
     const error = new Error('My error');
     const overrideDisplay = <div>Override display</div>;
     mockGetSearchErrorOverrideDisplay.mockReturnValue({ title, body: overrideDisplay });
-    const wrapper = mountWithServices(
-      <ErrorCallout title="Original title" error={error} data-test-subj="errorCallout" />
-    );
+    const wrapper = mountWithServices(<ErrorCallout title="Original title" error={error} />);
     const prompt = wrapper.find(EuiEmptyPrompt);
     expect(prompt).toHaveLength(1);
     expect(prompt.prop('title')).toBeDefined();
     expect(prompt.prop('title')).not.toBeInstanceOf(String);
-    expect(prompt.prop('data-test-subj')).toBe('errorCallout');
     expect(prompt.prop('body')).toBeDefined();
     expect(findTestSubject(prompt, 'discoverErrorCalloutTitle').contains(title)).toBe(true);
     expect(prompt.contains(overrideDisplay)).toBe(true);
     expect(prompt.find(EuiButton)).toHaveLength(0);
   });
 
-  it('should render with override display and inline', () => {
-    const title = 'Override title';
-    const error = new Error('My error');
-    const overrideDisplay = <div>Override display</div>;
-    mockGetSearchErrorOverrideDisplay.mockReturnValue({ title, body: overrideDisplay });
-    const wrapper = mountWithServices(
-      <ErrorCallout title="Original title" error={error} inline data-test-subj="errorCallout" />
-    );
-    const callout = wrapper.find(EuiCallOut);
-    expect(callout).toHaveLength(1);
-    expect(callout.prop('title')).toBeDefined();
-    expect(callout.prop('title')).not.toBeInstanceOf(String);
-    expect(callout.prop('size')).toBe('s');
-    expect(callout.prop('data-test-subj')).toBe('errorCallout');
-    expect(callout.find(EuiLink)).toHaveLength(1);
-    expect(wrapper.find(EuiModal)).toHaveLength(0);
-    expect(wrapper.contains(title)).toBe(true);
-    expect(wrapper.contains(overrideDisplay)).toBe(false);
-    callout.find(EuiLink).simulate('click');
-    expect(wrapper.find(EuiModal)).toHaveLength(1);
-    expect(findTestSubject(wrapper, 'discoverErrorCalloutOverrideModalTitle').contains(title)).toBe(
-      true
-    );
-    expect(
-      findTestSubject(wrapper, 'discoverErrorCalloutOverrideModalBody').contains(overrideDisplay)
-    ).toBe(true);
-    expect(wrapper.contains(overrideDisplay)).toBe(true);
-  });
-
   it('should call showErrorDialog when the button is clicked', () => {
     (discoverServiceMock.core.notifications.showErrorDialog as jest.Mock).mockClear();
     const title = 'Error title';
     const error = new Error('My error');
-    const wrapper = mountWithServices(
-      <ErrorCallout title={title} error={error} data-test-subj="errorCallout" />
-    );
+    const wrapper = mountWithServices(<ErrorCallout title={title} error={error} />);
     wrapper.find(EuiButton).find('button').simulate('click');
     expect(discoverServiceMock.core.notifications.showErrorDialog).toHaveBeenCalledWith({
       title,
       error,
     });
   });
-
-  it('should call showErrorDialog when the button is clicked inline', () => {
-    (discoverServiceMock.core.notifications.showErrorDialog as jest.Mock).mockClear();
-    const title = 'Error title';
-    const error = new Error('My error');
-    const wrapper = mountWithServices(
-      <ErrorCallout title={title} error={error} inline data-test-subj="errorCallout" />
-    );
-    wrapper.find(EuiLink).find('button').simulate('click');
-    expect(discoverServiceMock.core.notifications.showErrorDialog).toHaveBeenCalledWith({
-      title,
-      error,
-    });
-  });
 });
diff --git a/src/plugins/discover/public/components/common/error_callout.tsx b/src/plugins/discover/public/components/common/error_callout.tsx
index 84b5b979c0249..1b3e8f02f39a3 100644
--- a/src/plugins/discover/public/components/common/error_callout.tsx
+++ b/src/plugins/discover/public/components/common/error_callout.tsx
@@ -6,143 +6,58 @@
  * Side Public License, v 1.
  */
 
-import {
-  EuiButton,
-  EuiCallOut,
-  EuiEmptyPrompt,
-  EuiLink,
-  EuiModal,
-  EuiModalBody,
-  EuiModalHeader,
-  EuiModalHeaderTitle,
-  EuiText,
-  useEuiTheme,
-} from '@elastic/eui';
+import { EuiButton, EuiEmptyPrompt, useEuiTheme } from '@elastic/eui';
 import { css } from '@emotion/react';
 import { getSearchErrorOverrideDisplay } from '@kbn/data-plugin/public';
 import { i18n } from '@kbn/i18n';
-import React, { ReactNode, useState } from 'react';
+import React from 'react';
 import { useDiscoverServices } from '../../hooks/use_discover_services';
 
-export interface ErrorCalloutProps {
+interface Props {
   title: string;
   error: Error;
-  inline?: boolean;
-  'data-test-subj'?: string;
 }
 
-export const ErrorCallout = ({
-  title,
-  error,
-  inline,
-  'data-test-subj': dataTestSubj,
-}: ErrorCalloutProps) => {
+export const ErrorCallout = ({ title, error }: Props) => {
   const { core } = useDiscoverServices();
   const { euiTheme } = useEuiTheme();
 
-  const showErrorMessage = i18n.translate('discover.errorCalloutShowErrorMessage', {
-    defaultMessage: 'View details',
-  });
-
   const overrideDisplay = getSearchErrorOverrideDisplay({
     error,
     application: core.application,
   });
 
-  const [overrideModalOpen, setOverrideModalOpen] = useState(false);
-
-  const showError = overrideDisplay?.body
-    ? () => setOverrideModalOpen(true)
-    : () => core.notifications.showErrorDialog({ title, error });
-
-  let formattedTitle: ReactNode = overrideDisplay?.title || title;
-
-  if (inline) {
-    const formattedTitleMessage = overrideDisplay
-      ? formattedTitle
-      : i18n.translate('discover.errorCalloutFormattedTitle', {
-          defaultMessage: '{title}: {errorMessage}',
-          values: { title, errorMessage: error.message },
-        });
-
-    formattedTitle = (
-      <>
-        <span className="eui-textTruncate" data-test-subj="discoverErrorCalloutMessage">
-          {formattedTitleMessage}
-        </span>
-        <EuiLink
-          onClick={showError}
-          css={css`
-            white-space: nowrap;
-            margin-inline-start: ${euiTheme.size.s};
-          `}
-        >
-          {showErrorMessage}
-        </EuiLink>
-      </>
-    );
-  }
-
   return (
-    <>
-      {inline ? (
-        <EuiCallOut
-          title={formattedTitle}
-          color="danger"
-          iconType="error"
-          size="s"
+    <EuiEmptyPrompt
+      iconType="error"
+      color="danger"
+      title={<h2 data-test-subj="discoverErrorCalloutTitle">{overrideDisplay?.title ?? title}</h2>}
+      body={
+        <div
           css={css`
-            .euiTitle {
-              display: flex;
-              align-items: center;
-            }
+            text-align: left;
           `}
-          data-test-subj={dataTestSubj}
-        />
-      ) : (
-        <EuiEmptyPrompt
-          iconType="error"
-          color="danger"
-          title={<h2 data-test-subj="discoverErrorCalloutTitle">{formattedTitle}</h2>}
-          body={
-            <div
-              css={css`
-                text-align: left;
-              `}
-            >
-              {overrideDisplay?.body ?? (
-                <>
-                  <p
-                    css={css`
-                      white-space: break-spaces;
-                      font-family: ${euiTheme.font.familyCode};
-                    `}
-                    data-test-subj="discoverErrorCalloutMessage"
-                  >
-                    {error.message}
-                  </p>
-                  <EuiButton onClick={showError}>{showErrorMessage}</EuiButton>
-                </>
-              )}
-            </div>
-          }
-          data-test-subj={dataTestSubj}
-        />
-      )}
-      {overrideDisplay && overrideModalOpen && (
-        <EuiModal onClose={() => setOverrideModalOpen(false)}>
-          <EuiModalHeader>
-            <EuiModalHeaderTitle data-test-subj="discoverErrorCalloutOverrideModalTitle">
-              {overrideDisplay.title}
-            </EuiModalHeaderTitle>
-          </EuiModalHeader>
-          <EuiModalBody>
-            <EuiText data-test-subj="discoverErrorCalloutOverrideModalBody">
-              {overrideDisplay.body}
-            </EuiText>
-          </EuiModalBody>
-        </EuiModal>
-      )}
-    </>
+        >
+          {overrideDisplay?.body ?? (
+            <>
+              <p
+                css={css`
+                  white-space: break-spaces;
+                  font-family: ${euiTheme.font.familyCode};
+                `}
+                data-test-subj="discoverErrorCalloutMessage"
+              >
+                {error.message}
+              </p>
+              <EuiButton onClick={() => core.notifications.showErrorDialog({ title, error })}>
+                {i18n.translate('discover.errorCalloutShowErrorMessage', {
+                  defaultMessage: 'View details',
+                })}
+              </EuiButton>
+            </>
+          )}
+        </div>
+      }
+    />
   );
 };
diff --git a/test/functional/apps/discover/group1/_discover_histogram.ts b/test/functional/apps/discover/group1/_discover_histogram.ts
index 6e30f75f90a10..d69bd153b3d56 100644
--- a/test/functional/apps/discover/group1/_discover_histogram.ts
+++ b/test/functional/apps/discover/group1/_discover_histogram.ts
@@ -289,8 +289,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       // type an invalid search query, hit refresh
       await queryBar.setQuery('this is > not valid');
       await queryBar.submitQuery();
-      // check the error state
-      expect(await testSubjects.exists('embeddable-lens-failure')).to.be(true);
+
+      await PageObjects.discover.showsErrorCallout();
 
       // now remove the query
       await queryBar.clearQuery();
diff --git a/test/functional/apps/discover/group1/_errors.ts b/test/functional/apps/discover/group1/_errors.ts
index ef68df5b47204..6f0a7ba96b7ad 100644
--- a/test/functional/apps/discover/group1/_errors.ts
+++ b/test/functional/apps/discover/group1/_errors.ts
@@ -32,7 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
 
     describe('invalid scripted field error', () => {
       it('is rendered', async () => {
-        expect(await PageObjects.discover.noResultsErrorVisible()).to.be(true);
+        await PageObjects.discover.showsErrorCallout();
         const painlessStackTrace = await testSubjects.find('painlessStackTrace');
         expect(painlessStackTrace).not.to.be(undefined);
       });
diff --git a/test/functional/apps/discover/group1/_field_data.ts b/test/functional/apps/discover/group1/_field_data.ts
index 0125549ead92f..4047cfcdfc45d 100644
--- a/test/functional/apps/discover/group1/_field_data.ts
+++ b/test/functional/apps/discover/group1/_field_data.ts
@@ -76,7 +76,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           'whitespace but "(" found.';
         await queryBar.setQuery('xxx(yyy))');
         await queryBar.submitQuery();
-        expect(await PageObjects.discover.mainErrorVisible()).to.be(true);
+        await PageObjects.discover.showsErrorCallout();
         const message = await PageObjects.discover.getDiscoverErrorMessage();
         expect(message).to.contain(expectedError);
       });
diff --git a/test/functional/apps/discover/group1/_field_data_with_fields_api.ts b/test/functional/apps/discover/group1/_field_data_with_fields_api.ts
index e262f3ce30c49..7a21210a78e0c 100644
--- a/test/functional/apps/discover/group1/_field_data_with_fields_api.ts
+++ b/test/functional/apps/discover/group1/_field_data_with_fields_api.ts
@@ -80,7 +80,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           'whitespace but "(" found.';
         await queryBar.setQuery('xxx(yyy))');
         await queryBar.submitQuery();
-        expect(await PageObjects.discover.mainErrorVisible()).to.be(true);
+        await PageObjects.discover.showsErrorCallout();
         const message = await PageObjects.discover.getDiscoverErrorMessage();
         expect(message).to.contain(expectedError);
       });
diff --git a/test/functional/apps/discover/group2/_data_grid_field_data.ts b/test/functional/apps/discover/group2/_data_grid_field_data.ts
index 3347f398288a4..f12f378bbf94b 100644
--- a/test/functional/apps/discover/group2/_data_grid_field_data.ts
+++ b/test/functional/apps/discover/group2/_data_grid_field_data.ts
@@ -91,7 +91,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           'whitespace but "(" found.';
         await queryBar.setQuery('xxx(yyy))');
         await queryBar.submitQuery();
-        expect(await PageObjects.discover.mainErrorVisible()).to.be(true);
+        await PageObjects.discover.showsErrorCallout();
         const message = await PageObjects.discover.getDiscoverErrorMessage();
         expect(message).to.contain(expectedError);
       });
diff --git a/test/functional/apps/discover/group3/_sidebar.ts b/test/functional/apps/discover/group3/_sidebar.ts
index b47e71f452818..01e357b7f01e6 100644
--- a/test/functional/apps/discover/group3/_sidebar.ts
+++ b/test/functional/apps/discover/group3/_sidebar.ts
@@ -697,8 +697,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       it('should render even when retrieving documents failed with an error', async () => {
         await PageObjects.header.waitUntilLoadingHasFinished();
 
-        await testSubjects.missingOrFail('discoverNoResultsError');
-
         expect(await PageObjects.unifiedFieldList.getSidebarAriaDescription()).to.be(
           INITIAL_FIELD_LIST_SUMMARY
         );
@@ -708,7 +706,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
         await PageObjects.header.waitUntilLoadingHasFinished();
 
         // error in fetching documents because of the invalid runtime field
-        await testSubjects.existOrFail('discoverNoResultsError');
+        await PageObjects.discover.showsErrorCallout();
 
         await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded();
 
@@ -721,7 +719,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
 
         await browser.refresh();
         await PageObjects.header.waitUntilLoadingHasFinished();
-        await testSubjects.existOrFail('discoverNoResultsError'); // still has error
+        await PageObjects.discover.showsErrorCallout(); // still has error
 
         // check that the sidebar is rendered event after a refresh
         await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded();
@@ -731,8 +729,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
         await PageObjects.discover.removeField('_invalid-runtimefield');
         await PageObjects.header.waitUntilLoadingHasFinished();
         await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded();
-
-        await testSubjects.missingOrFail('discoverNoResultsError');
       });
 
       it('should work correctly when time range is updated', async function () {
diff --git a/test/functional/apps/discover/group3/_view_mode_toggle.ts b/test/functional/apps/discover/group3/_view_mode_toggle.ts
index c47aad66c9a01..62c78efbc2432 100644
--- a/test/functional/apps/discover/group3/_view_mode_toggle.ts
+++ b/test/functional/apps/discover/group3/_view_mode_toggle.ts
@@ -79,13 +79,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           await queryBar.submitQuery();
           await PageObjects.header.waitUntilLoadingHasFinished();
 
-          await testSubjects.existOrFail('discoverMainError');
+          await PageObjects.discover.showsErrorCallout();
 
           await queryBar.clearQuery();
           await queryBar.submitQuery();
           await PageObjects.header.waitUntilLoadingHasFinished();
 
-          await testSubjects.missingOrFail('discoverMainError');
+          await testSubjects.missingOrFail('discoverErrorCalloutTitle');
         });
 
         it('should show Field Statistics tab', async () => {
diff --git a/test/functional/apps/discover/group4/_date_nested.ts b/test/functional/apps/discover/group4/_date_nested.ts
index 9760645fe11c7..f761cdacc7fe9 100644
--- a/test/functional/apps/discover/group4/_date_nested.ts
+++ b/test/functional/apps/discover/group4/_date_nested.ts
@@ -10,7 +10,6 @@ import { FtrProviderContext } from '../ftr_provider_context';
 
 export default function ({ getService, getPageObjects }: FtrProviderContext) {
   const esArchiver = getService('esArchiver');
-  const testSubjects = getService('testSubjects');
   const PageObjects = getPageObjects(['common', 'timePicker', 'discover']);
   const security = getService('security');
   const kibanaServer = getService('kibanaServer');
@@ -34,7 +33,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
     it('should show an error message', async function () {
       await PageObjects.discover.selectIndexPattern('date-nested');
       await PageObjects.discover.waitUntilSearchingHasFinished();
-      await testSubjects.existOrFail('discoverNoResultsError');
+      await PageObjects.discover.showsErrorCallout();
     });
   });
 }
diff --git a/test/functional/apps/discover/group4/_esql_view.ts b/test/functional/apps/discover/group4/_esql_view.ts
index 773af0d512309..2b6547152970d 100644
--- a/test/functional/apps/discover/group4/_esql_view.ts
+++ b/test/functional/apps/discover/group4/_esql_view.ts
@@ -135,7 +135,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       });
     });
     describe('errors', () => {
-      it('should error messages for syntax errors in query', async function () {
+      it('should show error messages for syntax errors in query', async function () {
         await PageObjects.discover.selectTextBaseLang();
         const brokenQueries = [
           'from logstash-* | limit 10*',
@@ -149,7 +149,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
           await PageObjects.header.waitUntilLoadingHasFinished();
           await PageObjects.discover.waitUntilSearchingHasFinished();
           // error in fetching documents because of the invalid query
-          await testSubjects.existOrFail('discoverNoResultsError');
+          await PageObjects.discover.showsErrorCallout();
           const message = await testSubjects.getVisibleText('discoverErrorCalloutMessage');
           expect(message).to.contain(
             "[esql] > Couldn't parse Elasticsearch ES|QL query. Check your query and try again."
diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts
index b20e055ea0d6a..47a79132212cc 100644
--- a/test/functional/page_objects/discover_page.ts
+++ b/test/functional/page_objects/discover_page.ts
@@ -453,12 +453,8 @@ export class DiscoverPageObject extends FtrService {
     return await this.testSubjects.exists('discoverNoResultsTimefilter');
   }
 
-  public noResultsErrorVisible() {
-    return this.testSubjects.exists('discoverNoResultsError');
-  }
-
-  public mainErrorVisible() {
-    return this.testSubjects.exists('discoverMainError');
+  public showsErrorCallout() {
+    return this.testSubjects.existOrFail('discoverErrorCalloutTitle');
   }
 
   public getDiscoverErrorMessage() {
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 6c64ec463940e..a5ed852718005 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -2245,7 +2245,6 @@
     "discover.docTable.totalDocuments": "{totalDocuments} documents",
     "discover.dscTour.stepAddFields.description": "Cliquez sur {plusIcon} pour ajouter les champs qui vous intéressent.",
     "discover.dscTour.stepExpand.description": "Cliquez sur {expandIcon} pour afficher, comparer et filtrer les documents.",
-    "discover.errorCalloutFormattedTitle": "{title} : {errorMessage}",
     "discover.formatHit.moreFields": "et {count} autre(s) {count, plural, one {champ} many {champs} other {champs}}",
     "discover.howToSeeOtherMatchingDocumentsDescription": "Voici les {sampleSize} premiers documents correspondant à votre recherche. Veuillez affiner cette dernière pour en voir davantage.",
     "discover.noMatchRoute.bannerText": "L'application Discover ne reconnaît pas cet itinéraire : {route}",
@@ -2368,7 +2367,6 @@
     "discover.docTable.tableRow.viewSingleDocumentLinkText": "Afficher un seul document",
     "discover.docTable.tableRow.viewSurroundingDocumentsLinkText": "Afficher les documents alentour",
     "discover.documentsAriaLabel": "Documents",
-    "discover.documentsErrorTitle": "Erreur lors de la recherche",
     "discover.docViews.table.scoreSortWarningTooltip": "Filtrez sur _score pour pouvoir récupérer les valeurs correspondantes.",
     "discover.dropZoneTableLabel": "Abandonner la zone pour ajouter un champ en tant que colonne dans la table",
     "discover.dscTour.stepAddFields.imageAltText": "Dans la liste Champs disponibles, cliquez sur l'icône Plus pour afficher/masquer un champ dans le tableau de documents.",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index a24d4d8cc7c10..58375f665fa0c 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -2259,7 +2259,6 @@
     "discover.docTable.totalDocuments": "{totalDocuments}ドキュメント",
     "discover.dscTour.stepAddFields.description": "{plusIcon}をクリックして、関心があるフィールドを追加します。",
     "discover.dscTour.stepExpand.description": "{expandIcon}をクリックすると、ドキュメントを表示、比較、フィルタリングできます。",
-    "discover.errorCalloutFormattedTitle": "{title}:{errorMessage}",
     "discover.formatHit.moreFields": "およびその他{count}個の{count, plural, other {フィールド}}",
     "discover.howToSeeOtherMatchingDocumentsDescription": "これらは検索条件に一致した初めの{sampleSize}件のドキュメントです。他の結果を表示するには検索条件を絞ってください。",
     "discover.noMatchRoute.bannerText": "Discoverアプリケーションはこのルートを認識できません:{route}",
@@ -2382,7 +2381,6 @@
     "discover.docTable.tableRow.viewSingleDocumentLinkText": "単一のドキュメントを表示",
     "discover.docTable.tableRow.viewSurroundingDocumentsLinkText": "周りのドキュメントを表示",
     "discover.documentsAriaLabel": "ドキュメント",
-    "discover.documentsErrorTitle": "検索エラー",
     "discover.docViews.table.scoreSortWarningTooltip": "_scoreの値を取得するには、並べ替える必要があります。",
     "discover.dropZoneTableLabel": "フィールドを列として表に追加するには、ゾーンをドロップします",
     "discover.dscTour.stepAddFields.imageAltText": "[使用可能なフィールド]リストで、プラスアイコンをクリックし、フィールドをドキュメントテーブルに切り替えます。",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index d9aaa9c724465..003312fef8d19 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -2259,7 +2259,6 @@
     "discover.docTable.totalDocuments": "{totalDocuments} 个文档",
     "discover.dscTour.stepAddFields.description": "单击 {plusIcon} 以添加您感兴趣的字段。",
     "discover.dscTour.stepExpand.description": "单击 {expandIcon} 以查看、比较和筛选文档。",
-    "discover.errorCalloutFormattedTitle": "{title}:{errorMessage}",
     "discover.formatHit.moreFields": "及另外 {count} 个{count, plural, other {字段}}",
     "discover.howToSeeOtherMatchingDocumentsDescription": "以下是匹配您的搜索的前 {sampleSize} 个文档,请优化您的搜索以查看其他文档。",
     "discover.noMatchRoute.bannerText": "Discover 应用程序无法识别此路由:{route}",
@@ -2382,7 +2381,6 @@
     "discover.docTable.tableRow.viewSingleDocumentLinkText": "查看单个文档",
     "discover.docTable.tableRow.viewSurroundingDocumentsLinkText": "查看周围文档",
     "discover.documentsAriaLabel": "文档",
-    "discover.documentsErrorTitle": "搜索错误",
     "discover.docViews.table.scoreSortWarningTooltip": "要检索 _score 的值,必须按其筛选。",
     "discover.dropZoneTableLabel": "放置区域以将字段作为列添加到表中",
     "discover.dscTour.stepAddFields.imageAltText": "在可用字段列表中,单击加号图标将字段切换为文档表。",
diff --git a/x-pack/test/functional/apps/discover/error_handling.ts b/x-pack/test/functional/apps/discover/error_handling.ts
index 46eff2e7d0c89..cf362e8a12475 100644
--- a/x-pack/test/functional/apps/discover/error_handling.ts
+++ b/x-pack/test/functional/apps/discover/error_handling.ts
@@ -31,7 +31,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
     // this is the same test as in OSS but it catches different error message issue in different licences
     describe('invalid scripted field error', () => {
       it('is rendered', async () => {
-        expect(await PageObjects.discover.noResultsErrorVisible()).to.be(true);
+        await PageObjects.discover.showsErrorCallout();
         const painlessStackTrace = await testSubjects.find('painlessStackTrace');
         expect(painlessStackTrace).not.to.be(undefined);
       });
diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts
index 9dc632931d301..251290c6f4b5e 100644
--- a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts
+++ b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts
@@ -62,7 +62,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
       await browser.navigateTo(savedSessionURL);
       await PageObjects.header.waitUntilLoadingHasFinished();
       await searchSessions.expectState('restored');
-      await testSubjects.existOrFail('discoverNoResultsError'); // expect error because of fake searchSessionId
+      await testSubjects.existOrFail('discoverErrorCalloutTitle'); // expect error because of fake searchSessionId
       await PageObjects.common.clearAllToasts();
       const searchSessionId1 = await getSearchSessionId();
       expect(searchSessionId1).to.be(fakeSearchSessionId);
@@ -84,10 +84,15 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
       // Note this currently fails, for some reason the fakeSearchSessionId is not restored
       await searchSessions.expectState('restored');
       expect(await getSearchSessionId()).to.be(fakeSearchSessionId);
+
+      // back navigation takes discover to fakeSearchSessionId which is in error state
+      // clean up page to get out of error state before proceeding to next test
+      await PageObjects.common.clearAllToasts();
+      await queryBar.clickQuerySubmitButton();
+      await PageObjects.header.waitUntilLoadingHasFinished();
     });
 
     it('navigation to context cleans the session', async () => {
-      await PageObjects.common.clearAllToasts();
       const table = await PageObjects.discover.getDocTable();
       const isLegacy = await PageObjects.discover.useLegacyTable();
       await table.clickRowToggle({ rowIndex: 0 });
diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts
index ad1e2cae04877..1bb691629a63e 100644
--- a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts
+++ b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts
@@ -71,7 +71,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
 
         // Check that session is restored
         await searchSessions.expectState('restored');
-        await testSubjects.missingOrFail('discoverNoResultsError');
         expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings
       });
     });

From 45a160b8058407eeebadefc1984fbefbcbed223c Mon Sep 17 00:00:00 2001
From: Alex Szabo <alex.szabo@elastic.co>
Date: Fri, 10 Nov 2023 15:28:00 +0100
Subject: [PATCH 088/147] [Ops] Fix cache build (#171019)

## Summary
There was a small change introduced in
https://github.com/elastic/kibana/pull/170918 that exposes a custom env
var, that started to fail on cache builds on CI
(https://buildkite.com/elastic/kibana-agent-packer-cache/builds/474#018bb945-4910-4f5e-b78b-f020574c5b89).
Apparently the BUILDKITE_BRANCH is not available in the script, it's
because it's the same build script called not from buildkite, but
through packer, which probably doesn't forward all the environment
variables.

In this case, we can probably default to `""` and let the script ignore
that section where this variable is exported, because this export is
probably not meant for the cache build. However, we should keep this in
mind, that the packer/cache build is invoking some scripts with a
different env context (might lead to different results if we depend on
some of these vars).

chore: use an empty default when missing BUILDKITE_BRANCH to prevent
error
---
 .buildkite/scripts/common/env.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.buildkite/scripts/common/env.sh b/.buildkite/scripts/common/env.sh
index 3e086cb4505ec..89c9dce5a3b8f 100755
--- a/.buildkite/scripts/common/env.sh
+++ b/.buildkite/scripts/common/env.sh
@@ -29,7 +29,7 @@ KIBANA_PKG_VERSION="$(jq -r .version "$KIBANA_DIR/package.json")"
 export KIBANA_PKG_VERSION
 
 # Detects and exports the final target branch when using a merge queue
-if [[ "$BUILDKITE_BRANCH" == "gh-readonly-queue"* ]]; then
+if [[ "${BUILDKITE_BRANCH:-}" == "gh-readonly-queue"* ]]; then
   # removes gh-readonly-queue/
   BKBRANCH_WITHOUT_GH_MQ_PREFIX="${BUILDKITE_BRANCH#gh-readonly-queue/}"
 
@@ -42,7 +42,7 @@ export MERGE_QUEUE_TARGET_BRANCH
 
 # Exports BUILDKITE_BRANCH_MERGE_QUEUE which will use the value from MERGE_QUEUE_TARGET_BRANCH if defined otherwise
 # will fallback to BUILDKITE_BRANCH.
-BUILDKITE_BRANCH_MERGE_QUEUE="${MERGE_QUEUE_TARGET_BRANCH:-$BUILDKITE_BRANCH}"
+BUILDKITE_BRANCH_MERGE_QUEUE="${MERGE_QUEUE_TARGET_BRANCH:-${BUILDKITE_BRANCH:-}}"
 export BUILDKITE_BRANCH_MERGE_QUEUE
 
 

From b0862085f69b0b3503fad9b7ba0548ddb2329862 Mon Sep 17 00:00:00 2001
From: Nicolas Chaulet <nicolas.chaulet@elastic.co>
Date: Fri, 10 Nov 2023 09:33:41 -0500
Subject: [PATCH 089/147] [Fleet] Allow to download policy and manifest with
 version in querystring (#170987)

---
 .../agent_policy/components/agent_policy_yaml_flyout.tsx  | 7 ++++---
 .../page_steps/install_agent/install_agent_standalone.tsx | 6 ++++--
 .../kubernetes_instructions.test.tsx                      | 6 +++---
 .../agent_enrollment_flyout/kubernetes_instructions.tsx   | 3 ++-
 .../agent_enrollment_flyout/steps/compute_steps.tsx       | 8 +++++---
 x-pack/plugins/fleet/server/routes/agent_policy/index.ts  | 2 ++
 6 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_yaml_flyout.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_yaml_flyout.tsx
index d1cfd995cdda9..6488550b18358 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_yaml_flyout.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_yaml_flyout.tsx
@@ -27,6 +27,7 @@ import {
 import { useGetOneAgentPolicyFull, useGetOneAgentPolicy, useStartServices } from '../../../hooks';
 import { Loading } from '../../../components';
 import { fullAgentPolicyToYaml, agentPolicyRouteService } from '../../../services';
+import { API_VERSIONS } from '../../../../../../common/constants';
 
 const FlyoutBody = styled(EuiFlyoutBody)`
   .euiFlyoutBody__overflowContent {
@@ -65,9 +66,9 @@ export const AgentPolicyYamlFlyout = memo<{ policyId: string; onClose: () => voi
       </>
     );
 
-    const downloadLink = core.http.basePath.prepend(
-      agentPolicyRouteService.getInfoFullDownloadPath(policyId)
-    );
+    const downloadLink =
+      core.http.basePath.prepend(agentPolicyRouteService.getInfoFullDownloadPath(policyId)) +
+      `?apiVersion=${API_VERSIONS.public.v1}`;
 
     return (
       <EuiFlyout onClose={onClose} size="l" maxWidth={640}>
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/install_agent/install_agent_standalone.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/install_agent/install_agent_standalone.tsx
index 3f84a95239beb..f49aaefd65dd9 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/install_agent/install_agent_standalone.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/install_agent/install_agent_standalone.tsx
@@ -11,7 +11,7 @@ import { EuiSteps, EuiSpacer } from '@elastic/eui';
 import { safeDump } from 'js-yaml';
 
 import type { FullAgentPolicy } from '../../../../../../../../../../common/types/models/agent_policy';
-
+import { API_VERSIONS } from '../../../../../../../../../../common/constants';
 import {
   AgentStandaloneBottomBar,
   StandaloneModeWarningCallout,
@@ -95,7 +95,9 @@ export const InstallElasticAgentStandalonePageStep: React.FC<InstallAgentPagePro
   const installManagedCommands = StandaloneInstructions(kibanaVersion);
 
   const downloadLink = core.http.basePath.prepend(
-    `${agentPolicyRouteService.getInfoFullDownloadPath(agentPolicy?.id)}?standalone=true`
+    `${agentPolicyRouteService.getInfoFullDownloadPath(
+      agentPolicy?.id
+    )}?standalone=true&apiVersion=${API_VERSIONS.public.v1}`
   );
   const steps = [
     ConfigureStandaloneAgentStep({
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.test.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.test.tsx
index 9eab4d3e0c99a..c2bfd10ef6f7f 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.test.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.test.tsx
@@ -10,13 +10,13 @@ import { getManifestDownloadLink } from './kubernetes_instructions';
 describe('getManifestDownloadLink', () => {
   it('should return the correct link', () => {
     expect(getManifestDownloadLink('https://fleet.host', 'enrollmentToken')).toEqual(
-      '/api/fleet/kubernetes/download?fleetServer=https%3A%2F%2Ffleet.host&enrolToken=enrollmentToken'
+      '/api/fleet/kubernetes/download?apiVersion=2023-10-31&fleetServer=https%3A%2F%2Ffleet.host&enrolToken=enrollmentToken'
     );
     expect(getManifestDownloadLink('https://fleet.host')).toEqual(
-      '/api/fleet/kubernetes/download?fleetServer=https%3A%2F%2Ffleet.host'
+      '/api/fleet/kubernetes/download?apiVersion=2023-10-31&fleetServer=https%3A%2F%2Ffleet.host'
     );
     expect(getManifestDownloadLink(undefined, 'enrollmentToken')).toEqual(
-      '/api/fleet/kubernetes/download?enrolToken=enrollmentToken'
+      '/api/fleet/kubernetes/download?apiVersion=2023-10-31&enrolToken=enrollmentToken'
     );
   });
 });
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.tsx
index a44b7ab4020e9..f1cf6b5a29032 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/kubernetes_instructions.tsx
@@ -20,7 +20,7 @@ import { i18n } from '@kbn/i18n';
 
 import { useStartServices } from '../../hooks';
 
-import { agentPolicyRouteService } from '../../../common';
+import { agentPolicyRouteService, API_VERSIONS } from '../../../common';
 
 import { sendGetK8sManifest } from '../../hooks/use_request/k8s';
 
@@ -33,6 +33,7 @@ interface Props {
 
 export const getManifestDownloadLink = (fleetServerHost?: string, enrollmentAPIKey?: string) => {
   const searchParams = new URLSearchParams({
+    apiVersion: API_VERSIONS.public.v1,
     ...(fleetServerHost && { fleetServer: fleetServerHost }),
     ...(enrollmentAPIKey && { enrolToken: enrollmentAPIKey }),
   });
diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx
index 495266897db89..5cc8c109131ae 100644
--- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx
+++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx
@@ -13,7 +13,7 @@ import { safeDump } from 'js-yaml';
 import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps';
 
 import type { FullAgentPolicy } from '../../../../common/types/models/agent_policy';
-
+import { API_VERSIONS } from '../../../../common/constants';
 import {
   fullAgentPolicyToYaml,
   agentPolicyRouteService,
@@ -73,10 +73,12 @@ export const StandaloneSteps: React.FunctionComponent<InstructionProps> = ({
         ? core.http.basePath.prepend(
             `${agentPolicyRouteService.getInfoFullDownloadPath(
               selectedPolicy?.id
-            )}?kubernetes=true&standalone=true`
+            )}?kubernetes=true&standalone=true&apiVersion=${API_VERSIONS.public.v1}`
           )
         : core.http.basePath.prepend(
-            `${agentPolicyRouteService.getInfoFullDownloadPath(selectedPolicy?.id)}?standalone=true`
+            `${agentPolicyRouteService.getInfoFullDownloadPath(
+              selectedPolicy?.id
+            )}?standalone=true&apiVersion=${API_VERSIONS.public.v1}`
           );
   }
 
diff --git a/x-pack/plugins/fleet/server/routes/agent_policy/index.ts b/x-pack/plugins/fleet/server/routes/agent_policy/index.ts
index 7ca3409f72b88..747bc6face1f8 100644
--- a/x-pack/plugins/fleet/server/routes/agent_policy/index.ts
+++ b/x-pack/plugins/fleet/server/routes/agent_policy/index.ts
@@ -174,6 +174,7 @@ export const registerRoutes = (router: FleetAuthzRouter) => {
       fleetAuthz: {
         fleet: { all: true },
       },
+      enableQueryVersion: true,
     })
     .addVersion(
       {
@@ -206,6 +207,7 @@ export const registerRoutes = (router: FleetAuthzRouter) => {
       fleetAuthz: {
         fleet: { all: true },
       },
+      enableQueryVersion: true,
     })
     .addVersion(
       {

From c43e6997af35492577b07f196d25d11a6bec6f14 Mon Sep 17 00:00:00 2001
From: Pierre Gayvallet <pierre.gayvallet@elastic.co>
Date: Fri, 10 Nov 2023 15:42:14 +0100
Subject: [PATCH 090/147] redact ES client errors (#171018)

## Summary

Define a custom `toJSON` method on errors from the ES client to have
better control of the format of the output of their JSON serialization
---
 .../src/configure_client.ts                   |  4 ++
 .../src/patch_client.ts                       | 20 ++++++
 .../elasticsearch/errors.test.ts              | 70 +++++++++++++++++++
 3 files changed, 94 insertions(+)
 create mode 100644 packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/patch_client.ts
 create mode 100644 src/core/server/integration_tests/elasticsearch/errors.test.ts

diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.ts
index 5f8d793b0a426..287f3a670ce48 100644
--- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.ts
+++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.ts
@@ -13,9 +13,13 @@ import { parseClientOptions } from './client_config';
 import { instrumentEsQueryAndDeprecationLogger } from './log_query_and_deprecation';
 import { createTransport } from './create_transport';
 import type { AgentFactoryProvider } from './agent_manager';
+import { patchElasticsearchClient } from './patch_client';
 
 const noop = () => undefined;
 
+// Apply ES client patches on module load
+patchElasticsearchClient();
+
 export const configureClient = (
   config: ElasticsearchClientConfig,
   {
diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/patch_client.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/patch_client.ts
new file mode 100644
index 0000000000000..75ea5db91b2e3
--- /dev/null
+++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/patch_client.ts
@@ -0,0 +1,20 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { errors } from '@elastic/elasticsearch';
+
+export const patchElasticsearchClient = () => {
+  const baseErrorPrototype = errors.ElasticsearchClientError.prototype;
+  // @ts-expect-error
+  baseErrorPrototype.toJSON = function () {
+    return {
+      name: this.name,
+      message: this.message,
+    };
+  };
+};
diff --git a/src/core/server/integration_tests/elasticsearch/errors.test.ts b/src/core/server/integration_tests/elasticsearch/errors.test.ts
new file mode 100644
index 0000000000000..b9dcfb33a23a4
--- /dev/null
+++ b/src/core/server/integration_tests/elasticsearch/errors.test.ts
@@ -0,0 +1,70 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import {
+  createTestServers,
+  type TestElasticsearchUtils,
+  type TestKibanaUtils,
+} from '@kbn/core-test-helpers-kbn-server';
+
+describe('elasticsearch clients errors', () => {
+  let esServer: TestElasticsearchUtils;
+  let kibanaServer: TestKibanaUtils;
+
+  beforeAll(async () => {
+    const { startES, startKibana } = createTestServers({
+      adjustTimeout: jest.setTimeout,
+    });
+
+    esServer = await startES();
+    kibanaServer = await startKibana();
+  });
+
+  afterAll(async () => {
+    await kibanaServer.stop();
+    await esServer.stop();
+  });
+
+  it('has the proper JSON representation', async () => {
+    const esClient = kibanaServer.coreStart.elasticsearch.client.asInternalUser;
+
+    try {
+      await esClient.search({
+        index: '.kibana',
+        // @ts-expect-error yes this is invalid
+        query: { someInvalidQuery: { foo: 'bar' } },
+      });
+      expect('should have thrown').toEqual('but it did not');
+    } catch (e) {
+      expect(JSON.stringify(e)).toMatchInlineSnapshot(
+        `"{\\"name\\":\\"ResponseError\\",\\"message\\":\\"parsing_exception\\\\n\\\\tCaused by:\\\\n\\\\t\\\\tnamed_object_not_found_exception: [1:30] unknown field [someInvalidQuery]\\\\n\\\\tRoot causes:\\\\n\\\\t\\\\tparsing_exception: unknown query [someInvalidQuery]\\"}"`
+      );
+    }
+  });
+
+  it('has the proper string representation', async () => {
+    const esClient = kibanaServer.coreStart.elasticsearch.client.asInternalUser;
+
+    try {
+      await esClient.search({
+        index: '.kibana',
+        // @ts-expect-error yes this is invalid
+        query: { someInvalidQuery: { foo: 'bar' } },
+      });
+      expect('should have thrown').toEqual('but it did not');
+    } catch (e) {
+      expect(String(e)).toMatchInlineSnapshot(`
+        "ResponseError: parsing_exception
+        	Caused by:
+        		named_object_not_found_exception: [1:30] unknown field [someInvalidQuery]
+        	Root causes:
+        		parsing_exception: unknown query [someInvalidQuery]"
+      `);
+    }
+  });
+});

From 2b60d3a6ec7745c3e38bb2f6b3b7f73bd7ceb16c Mon Sep 17 00:00:00 2001
From: Pierre Gayvallet <pierre.gayvallet@elastic.co>
Date: Fri, 10 Nov 2023 15:45:51 +0100
Subject: [PATCH 091/147] Minor `reduce` perf optimizations (#170922)

## Summary

Cherry picked from https://github.com/elastic/kibana/pull/168812 the
changes from `core` packages and the `security` and `spaces` plugins

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../src/lib/search/aggregations/validation.ts | 13 ++++----
 .../src/types/object_type.ts                  |  5 +--
 packages/kbn-i18n/src/core/helper.ts          | 15 +++------
 packages/kbn-i18n/src/loader.ts               | 11 +++----
 packages/kbn-std/src/iteration/map.ts         |  5 ++-
 .../src/tools/serializer.ts                   |  5 ++-
 .../server/authorization/check_privileges.ts  | 12 +++----
 .../authorization/disable_ui_capabilities.ts  | 32 +++++++++----------
 .../feature_privilege_builder/management.ts   |  3 +-
 .../authorization/privileges/privileges.ts    | 18 ++++++-----
 .../routes/authorization/privileges/get.ts    |  8 ++---
 .../server/saved_objects/ensure_authorized.ts |  5 ++-
 .../spaces/secure_spaces_client_wrapper.ts    | 14 +++++---
 .../security_usage_collector.ts               |  7 +---
 .../capabilities/capabilities_switcher.ts     | 13 +++++---
 15 files changed, 83 insertions(+), 83 deletions(-)

diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search/aggregations/validation.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search/aggregations/validation.ts
index d5dfbb8e8cb1d..d058feb31ba78 100644
--- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search/aggregations/validation.ts
+++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search/aggregations/validation.ts
@@ -98,13 +98,14 @@ const validateAggregationContainer = (
 ) => {
   return Object.entries(container).reduce<estypes.AggregationsAggregationContainer>(
     (memo, [aggName, aggregation]) => {
-      if (aggregationKeys.includes(aggName)) {
-        return memo;
+      if (!aggregationKeys.includes(aggName)) {
+        (memo as Record<string, unknown>)[aggName] = validateAggregationType(
+          aggName,
+          aggregation,
+          childContext(context, aggName)
+        );
       }
-      return {
-        ...memo,
-        [aggName]: validateAggregationType(aggName, aggregation, childContext(context, aggName)),
-      };
+      return memo;
     },
     {}
   );
diff --git a/packages/kbn-config-schema/src/types/object_type.ts b/packages/kbn-config-schema/src/types/object_type.ts
index fa72ee61ab7ff..6927a10630b1e 100644
--- a/packages/kbn-config-schema/src/types/object_type.ts
+++ b/packages/kbn-config-schema/src/types/object_type.ts
@@ -159,10 +159,7 @@ export class ObjectType<P extends Props = any> extends Type<ObjectResultType<P>>
       ...newProps,
     }).reduce((memo, [key, value]) => {
       if (value !== null && value !== undefined) {
-        return {
-          ...memo,
-          [key]: value,
-        };
+        (memo as Record<string, unknown>)[key] = value;
       }
       return memo;
     }, {} as ExtendedProps<P, NP>);
diff --git a/packages/kbn-i18n/src/core/helper.ts b/packages/kbn-i18n/src/core/helper.ts
index 405f0596cd037..eef4bb88e4927 100644
--- a/packages/kbn-i18n/src/core/helper.ts
+++ b/packages/kbn-i18n/src/core/helper.ts
@@ -18,17 +18,12 @@ export const unique = <T>(arr: T[] = []): T[] => [...new Set(arr)];
 const merge = (a: any, b: any): { [k: string]: any } =>
   unique([...Object.keys(a), ...Object.keys(b)]).reduce((acc, key) => {
     if (isObject(a[key]) && isObject(b[key]) && !Array.isArray(a[key]) && !Array.isArray(b[key])) {
-      return {
-        ...acc,
-        [key]: merge(a[key], b[key]),
-      };
+      acc[key] = merge(a[key], b[key]);
+    } else {
+      acc[key] = b[key] === undefined ? a[key] : b[key];
     }
-
-    return {
-      ...acc,
-      [key]: b[key] === undefined ? a[key] : b[key],
-    };
-  }, {});
+    return acc;
+  }, {} as { [k: string]: any });
 
 export const mergeAll = (...sources: any[]) =>
   sources.filter(isObject).reduce((acc, source) => merge(acc, source));
diff --git a/packages/kbn-i18n/src/loader.ts b/packages/kbn-i18n/src/loader.ts
index 5b4417b54646c..55c924e989daf 100644
--- a/packages/kbn-i18n/src/loader.ts
+++ b/packages/kbn-i18n/src/loader.ts
@@ -148,13 +148,10 @@ export async function getAllTranslations(): Promise<{ [key: string]: Translation
   const locales = getRegisteredLocales();
   const translations = await Promise.all(locales.map(getTranslationsByLocale));
 
-  return locales.reduce(
-    (acc, locale, index) => ({
-      ...acc,
-      [locale]: translations[index],
-    }),
-    {}
-  );
+  return locales.reduce((acc, locale, index) => {
+    acc[locale] = translations[index];
+    return acc;
+  }, {} as { [key: string]: Translation });
 }
 
 /**
diff --git a/packages/kbn-std/src/iteration/map.ts b/packages/kbn-std/src/iteration/map.ts
index 44765d69e1bd0..a65951cc14db5 100644
--- a/packages/kbn-std/src/iteration/map.ts
+++ b/packages/kbn-std/src/iteration/map.ts
@@ -58,5 +58,8 @@ export async function asyncMapWithLimit<T1, T2>(
 
   return results
     .sort(([a], [b]) => a - b)
-    .reduce((acc: T2[], [, result]) => acc.concat(result), []);
+    .reduce((acc: T2[], [, result]) => {
+      acc.push(...result);
+      return acc;
+    }, []);
 }
diff --git a/packages/kbn-telemetry-tools/src/tools/serializer.ts b/packages/kbn-telemetry-tools/src/tools/serializer.ts
index a33d2d78e4137..ab891f1220323 100644
--- a/packages/kbn-telemetry-tools/src/tools/serializer.ts
+++ b/packages/kbn-telemetry-tools/src/tools/serializer.ts
@@ -178,7 +178,10 @@ export function getDescriptor(node: ts.Node, program: ts.Program): Descriptor |
       const constraints = getConstraints(constraint, program);
       const constraintsArray = Array.isArray(constraints) ? constraints : [constraints];
       if (typeof constraintsArray[0] === 'string') {
-        return constraintsArray.reduce((acc, c) => ({ ...acc, [c]: descriptor }), {});
+        return constraintsArray.reduce((acc, c) => {
+          (acc as Record<string, unknown>)[c] = descriptor;
+          return acc;
+        }, {});
       }
     }
     return { '@@INDEX@@': descriptor };
diff --git a/x-pack/plugins/security/server/authorization/check_privileges.ts b/x-pack/plugins/security/server/authorization/check_privileges.ts
index 0e842da4e4851..abc0b791dd49a 100644
--- a/x-pack/plugins/security/server/authorization/check_privileges.ts
+++ b/x-pack/plugins/security/server/authorization/check_privileges.ts
@@ -144,13 +144,11 @@ export function checkPrivilegesFactory(
       const indexPrivileges = Object.entries(hasPrivilegesResponse.index ?? {}).reduce<
         CheckPrivilegesResponse['privileges']['elasticsearch']['index']
       >((acc, [index, indexResponse]) => {
-        return {
-          ...acc,
-          [index]: Object.entries(indexResponse).map(([privilege, authorized]) => ({
-            privilege,
-            authorized,
-          })),
-        };
+        acc[index] = Object.entries(indexResponse).map(([privilege, authorized]) => ({
+          privilege,
+          authorized,
+        }));
+        return acc;
       }, {});
 
       // we need to filter out the non requested privileges from the response
diff --git a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts
index e3cd51bc77015..7283b955e906c 100644
--- a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts
+++ b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts
@@ -37,10 +37,8 @@ export function disableUICapabilitiesFactory(
   const elasticsearchFeatureMap = elasticsearchFeatures.reduce<
     Record<string, RecursiveReadonlyArray<FeatureElasticsearchPrivileges>>
   >((acc, esFeature) => {
-    return {
-      ...acc,
-      [esFeature.id]: esFeature.privileges,
-    };
+    acc[esFeature.id] = esFeature.privileges;
+    return acc;
   }, {});
 
   const allRequiredClusterPrivileges = Array.from(
@@ -59,11 +57,9 @@ export function disableUICapabilitiesFactory(
       return {
         ...acc,
         ...Object.entries(p.requiredIndexPrivileges!).reduce((acc2, [indexName, privileges]) => {
-          return {
-            ...acc2,
-            [indexName]: [...(acc[indexName] ?? []), ...privileges],
-          };
-        }, {}),
+          acc2[indexName] = [...(acc[indexName] ?? []), ...privileges];
+          return acc2;
+        }, {} as Record<string, string[]>),
       };
     }, {});
 
@@ -157,14 +153,16 @@ export function disableUICapabilitiesFactory(
     }
 
     const uiActions = Object.entries(uiCapabilities).reduce<string[]>(
-      (acc, [featureId, featureUICapabilities]) => [
-        ...acc,
-        ...flatten(
-          Object.entries(featureUICapabilities).map(([uiCapability, value]) => {
-            return getActionsForFeatureCapability(featureId, uiCapability, value);
-          })
-        ),
-      ],
+      (acc, [featureId, featureUICapabilities]) => {
+        acc.push(
+          ...flatten(
+            Object.entries(featureUICapabilities).map(([uiCapability, value]) => {
+              return getActionsForFeatureCapability(featureId, uiCapability, value);
+            })
+          )
+        );
+        return acc;
+      },
       []
     );
 
diff --git a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/management.ts b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/management.ts
index 72cc28f5570b5..ef84f8696a212 100644
--- a/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/management.ts
+++ b/x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/management.ts
@@ -18,7 +18,8 @@ export class FeaturePrivilegeManagementBuilder extends BaseFeaturePrivilegeBuild
     }
 
     return Object.entries(managementSections).reduce((acc, [sectionId, items]) => {
-      return [...acc, ...items.map((item) => this.actions.ui.get('management', sectionId, item))];
+      acc.push(...items.map((item) => this.actions.ui.get('management', sectionId, item)));
+      return acc;
     }, [] as string[]);
   }
 }
diff --git a/x-pack/plugins/security/server/authorization/privileges/privileges.ts b/x-pack/plugins/security/server/authorization/privileges/privileges.ts
index 20de4011c39f4..e3e151052f056 100644
--- a/x-pack/plugins/security/server/authorization/privileges/privileges.ts
+++ b/x-pack/plugins/security/server/authorization/privileges/privileges.ts
@@ -37,8 +37,8 @@ export function privilegesFactory(
         (feature) => !feature.excludeFromBasePrivileges
       );
 
-      let allActions: string[] = [];
-      let readActions: string[] = [];
+      const allActionsSet = new Set<string>();
+      const readActionsSet = new Set<string>();
 
       basePrivilegeFeatures.forEach((feature) => {
         for (const { privilegeId, privilege } of featuresService.featurePrivilegeIterator(feature, {
@@ -47,15 +47,17 @@ export function privilegesFactory(
           predicate: (pId, featurePrivilege) => !featurePrivilege.excludeFromBasePrivileges,
         })) {
           const privilegeActions = featurePrivilegeBuilder.getActions(privilege, feature);
-          allActions = [...allActions, ...privilegeActions];
-          if (privilegeId === 'read') {
-            readActions = [...readActions, ...privilegeActions];
-          }
+          privilegeActions.forEach((action) => {
+            allActionsSet.add(action);
+            if (privilegeId === 'read') {
+              readActionsSet.add(action);
+            }
+          });
         }
       });
 
-      allActions = uniq(allActions);
-      readActions = uniq(readActions);
+      const allActions = [...allActionsSet];
+      const readActions = [...readActionsSet];
 
       const featurePrivileges: Record<string, Record<string, string[]>> = {};
       for (const feature of features) {
diff --git a/x-pack/plugins/security/server/routes/authorization/privileges/get.ts b/x-pack/plugins/security/server/routes/authorization/privileges/get.ts
index 8817fca4831ae..1d278aa676ac3 100644
--- a/x-pack/plugins/security/server/routes/authorization/privileges/get.ts
+++ b/x-pack/plugins/security/server/routes/authorization/privileges/get.ts
@@ -38,12 +38,10 @@ export function defineGetPrivilegesRoutes({ router, authz }: RouteDefinitionPara
             space: Object.keys(privileges.space),
             features: Object.entries(privileges.features).reduce(
               (acc, [featureId, featurePrivileges]) => {
-                return {
-                  ...acc,
-                  [featureId]: Object.keys(featurePrivileges),
-                };
+                acc[featureId] = Object.keys(featurePrivileges);
+                return acc;
               },
-              {}
+              {} as Record<string, string[]>
             ),
             reserved: Object.keys(privileges.reserved),
           };
diff --git a/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts b/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts
index e945848d71105..79e15be650773 100644
--- a/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts
+++ b/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts
@@ -104,7 +104,10 @@ export async function ensureAuthorized<T extends string>(
 
   // Neither fully nor partially authorized. Bail with error.
   const uniqueUnauthorizedPrivileges = [...missingPrivileges.entries()].reduce(
-    (acc, [, privilegeSet]) => new Set([...acc, ...privilegeSet]),
+    (acc, [, privilegeSet]) => {
+      privilegeSet.forEach((entry) => acc.add(entry));
+      return acc;
+    },
     new Set<string>()
   );
   const targetTypesAndActions = [...uniqueUnauthorizedPrivileges]
diff --git a/x-pack/plugins/security/server/spaces/secure_spaces_client_wrapper.ts b/x-pack/plugins/security/server/spaces/secure_spaces_client_wrapper.ts
index 18c6ae824584c..1e9e25b6b800d 100644
--- a/x-pack/plugins/security/server/spaces/secure_spaces_client_wrapper.ts
+++ b/x-pack/plugins/security/server/spaces/secure_spaces_client_wrapper.ts
@@ -81,10 +81,13 @@ export class SecureSpacesClientWrapper implements ISpacesClient {
 
     // Collect all privileges which need to be checked
     const allPrivileges = Object.entries(PURPOSE_PRIVILEGE_MAP).reduce(
-      (acc, [getSpacesPurpose, privilegeFactory]) =>
-        !includeAuthorizedPurposes && getSpacesPurpose !== purpose
-          ? acc
-          : { ...acc, [getSpacesPurpose]: privilegeFactory(this.authorization) },
+      (acc, [getSpacesPurpose, privilegeFactory]) => {
+        if (!includeAuthorizedPurposes && getSpacesPurpose !== purpose) {
+          return acc;
+        }
+        acc[getSpacesPurpose as GetAllSpacesPurpose] = privilegeFactory(this.authorization);
+        return acc;
+      },
       {} as Record<GetAllSpacesPurpose, string[]>
     );
 
@@ -117,7 +120,8 @@ export class SecureSpacesClientWrapper implements ISpacesClient {
             const requiredActions = privilegeFactory(this.authorization);
             const hasAllRequired = checkHasAllRequired(space, requiredActions);
             hasAnyAuthorization = hasAnyAuthorization || hasAllRequired;
-            return { ...acc, [purposeKey]: hasAllRequired };
+            acc[purposeKey as GetAllSpacesPurpose] = hasAllRequired;
+            return acc;
           },
           {} as Record<GetAllSpacesPurpose, boolean>
         );
diff --git a/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts b/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts
index f73ac0bbb25a3..5859943391442 100644
--- a/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts
+++ b/x-pack/plugins/security/server/usage_collector/security_usage_collector.ts
@@ -160,12 +160,7 @@ export function registerSecurityUsageCollector({ usageCollection, config, licens
       const loginSelectorEnabled = config.authc.selector.enabled;
       const authProviderCount = config.authc.sortedProviders.length;
       const enabledAuthProviders = [
-        ...new Set(
-          config.authc.sortedProviders.reduce(
-            (acc, provider) => [...acc, provider.type],
-            [] as string[]
-          )
-        ),
+        ...new Set(config.authc.sortedProviders.map((provider) => provider.type)),
       ];
       const accessAgreementEnabled =
         allowAccessAgreement &&
diff --git a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts
index e3183185022f6..b5d9be07d91af 100644
--- a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts
+++ b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts
@@ -63,14 +63,19 @@ function toggleDisabledFeatures(
 ) {
   const disabledFeatureKeys = activeSpace.disabledFeatures;
 
-  const [enabledFeatures, disabledFeatures] = features.reduce(
+  const { enabledFeatures, disabledFeatures } = features.reduce(
     (acc, feature) => {
       if (disabledFeatureKeys.includes(feature.id)) {
-        return [acc[0], [...acc[1], feature]];
+        acc.disabledFeatures.push(feature);
+      } else {
+        acc.enabledFeatures.push(feature);
       }
-      return [[...acc[0], feature], acc[1]];
+      return acc;
     },
-    [[], []] as [KibanaFeature[], KibanaFeature[]]
+    { enabledFeatures: [], disabledFeatures: [] } as {
+      enabledFeatures: KibanaFeature[];
+      disabledFeatures: KibanaFeature[];
+    }
   );
 
   const navLinks = capabilities.navLinks;

From 2720e4f42d7e8a728154765ce277a671fb03fcd4 Mon Sep 17 00:00:00 2001
From: Tomasz Ciecierski <tomasz.ciecierski@elastic.co>
Date: Fri, 10 Nov 2023 15:46:38 +0100
Subject: [PATCH 092/147] [EDR Workflows] fix Osquery test - SavedQueryDropdown
 flakiness  (#170952)

---
 .../osquery/cypress/e2e/all/add_integration.cy.ts    |  8 +++++++-
 .../osquery/cypress/e2e/all/alerts_cases.cy.ts       |  1 +
 .../plugins/osquery/cypress/e2e/all/live_query.cy.ts | 12 ++++++------
 .../osquery/cypress/e2e/all/live_query_packs.cy.ts   |  2 +-
 .../osquery/cypress/e2e/all/live_query_run.cy.ts     |  2 +-
 .../osquery/cypress/e2e/all/packs_create_edit.cy.ts  |  8 +++++++-
 .../osquery/cypress/e2e/all/packs_integration.cy.ts  |  2 +-
 .../osquery/cypress/e2e/all/saved_queries.cy.ts      |  4 +++-
 .../cypress/e2e/roles/t1_and_t2_analyst.cy.ts        |  2 +-
 x-pack/plugins/osquery/cypress/screens/live_query.ts |  2 +-
 x-pack/plugins/osquery/cypress/tasks/live_query.ts   |  4 ++--
 11 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts
index 6eae4381cf34b..90875bebc8384 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts
@@ -5,10 +5,12 @@
  * 2.0.
  */
 
+import { LIVE_QUERY_EDITOR } from '../../screens/live_query';
 import {
   ADD_PACK_HEADER_BUTTON,
   ADD_QUERY_BUTTON,
   formFieldInputSelector,
+  SAVED_QUERY_DROPDOWN_SELECT,
   TABLE_ROWS,
 } from '../../screens/packs';
 import {
@@ -178,11 +180,15 @@ describe('ALL - Add Integration', { tags: ['@ess', '@serverless'] }, () => {
 
       navigateTo('app/osquery/packs');
       cy.getBySel(ADD_PACK_HEADER_BUTTON).click();
+      cy.getBySel('globalLoadingIndicator').should('not.exist');
+
       cy.get(formFieldInputSelector('name')).type(`${packName}{downArrow}{enter}`);
       cy.getBySel('policyIdsComboBox').type(`${policyName} {downArrow}{enter}`);
 
       cy.getBySel(ADD_QUERY_BUTTON).click();
-      cy.getBySel('savedQuerySelect').click().type('{downArrow}{enter}');
+      cy.getBySel('globalLoadingIndicator').should('not.exist');
+      cy.getBySel(LIVE_QUERY_EDITOR).should('exist');
+      cy.getBySel(SAVED_QUERY_DROPDOWN_SELECT).click().type('{downArrow}{enter}');
       cy.contains(/^Save$/).click();
       cy.contains(/^Save pack$/).click();
       cy.contains(`Successfully created "${packName}" pack`).click();
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts
index 3c93bef865b96..7f6f0a006e05b 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts
@@ -71,6 +71,7 @@ describe('Alert Event Details - Cases', { tags: ['@ess', '@serverless'] }, () =>
       cy.contains(/^\d+ agen(t|ts) selected/);
       cy.contains('Run a set of queries in a pack').click();
       cy.get(OSQUERY_FLYOUT_BODY_EDITOR).should('not.exist');
+      cy.getBySel('globalLoadingIndicator').should('not.exist');
       cy.getBySel('select-live-pack').click().type(`${packName}{downArrow}{enter}`);
       submitQuery();
       cy.get('[aria-label="Add to Case"]').first().click();
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts
index a5f9fdab66a99..3e84dc001eed5 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts
@@ -67,22 +67,22 @@ describe('ALL - Live Query', { tags: ['@ess', '@serverless'] }, () => {
       "where pos.remote_port !='0' {shift+enter}" +
       'limit 1000;';
     cy.contains('New live query').click();
-    cy.get(LIVE_QUERY_EDITOR).invoke('height').and('be.gt', 99).and('be.lt', 110);
-    cy.get(LIVE_QUERY_EDITOR).click().invoke('val', multilineQuery);
+    cy.getBySel(LIVE_QUERY_EDITOR).invoke('height').and('be.gt', 99).and('be.lt', 110);
+    cy.getBySel(LIVE_QUERY_EDITOR).click().invoke('val', multilineQuery);
 
     inputQuery(multilineQuery);
-    cy.get(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 220).and('be.lt', 300);
+    cy.getBySel(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 220).and('be.lt', 300);
     selectAllAgents();
     submitQuery();
     cy.getBySel('osqueryResultsPanel');
 
     // check if it get's bigger when we add more lines
-    cy.get(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 220).and('be.lt', 300);
+    cy.getBySel(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 220).and('be.lt', 300);
     inputQuery(multilineQuery);
-    cy.get(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 350).and('be.lt', 600);
+    cy.getBySel(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 350).and('be.lt', 600);
 
     inputQuery('{selectall}{backspace}{selectall}{backspace}');
     // not sure if this is how it used to work when I implemented the functionality, but let's leave it like this for now
-    cy.get(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 200).and('be.lt', 400);
+    cy.getBySel(LIVE_QUERY_EDITOR).invoke('height').should('be.gt', 200).and('be.lt', 400);
   });
 });
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts
index 4269d0e3d7901..da598382bf0ee 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts
@@ -67,7 +67,7 @@ describe('ALL - Live Query Packs', { tags: ['@ess', '@serverless'] }, () => {
   it('should run live pack', () => {
     cy.contains('New live query').click();
     cy.contains('Run a set of queries in a pack.').click();
-    cy.get(LIVE_QUERY_EDITOR).should('not.exist');
+    cy.getBySel(LIVE_QUERY_EDITOR).should('not.exist');
     cy.getBySel('select-live-pack').click().type(`${packName}{downArrow}{enter}`);
     cy.contains('This table contains 3 rows.');
     cy.contains('system_memory_linux_elastic');
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts
index 1200e3e6f610d..035c228623fda 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts
@@ -99,7 +99,7 @@ describe('ALL - Live Query run custom and saved', { tags: ['@ess', '@serverless'
     navigateTo('/app/osquery');
     cy.get('[aria-label="Run query"]').first().should('be.visible').click();
 
-    cy.get(LIVE_QUERY_EDITOR).contains('select * from users;');
+    cy.getBySel(LIVE_QUERY_EDITOR).contains('select * from users;');
   });
 
   it('should open query details by clicking the details icon', () => {
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts
index 64cb28d93d22c..32e2496f8ea06 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts
@@ -33,7 +33,7 @@ import {
   interceptPackId,
 } from '../../tasks/integrations';
 import { DEFAULT_POLICY } from '../../screens/fleet';
-import { getIdFormField } from '../../screens/live_query';
+import { getIdFormField, LIVE_QUERY_EDITOR } from '../../screens/live_query';
 import { loadSavedQuery, cleanupSavedQuery, cleanupPack, loadPack } from '../../tasks/api_fixtures';
 import { request } from '../../tasks/common';
 import { ServerlessRoleName } from '../../support/roles';
@@ -254,6 +254,8 @@ describe('Packs - Create and Edit', { tags: ['@ess', '@serverless'] }, () => {
       cy.getBySel(ADD_QUERY_BUTTON).click();
 
       cy.contains('Attach next query');
+      cy.getBySel('globalLoadingIndicator').should('not.exist');
+      cy.getBySel(LIVE_QUERY_EDITOR).should('exist');
       cy.getBySel(SAVED_QUERY_DROPDOWN_SELECT).type(`${savedQueryName}{downArrow}{enter}`);
       cy.getBySel('osquery-interval-field').click().clear().type('5');
       cy.getBySel(FLYOUT_SAVED_QUERY_SAVE_BUTTON).click();
@@ -367,6 +369,8 @@ describe('Packs - Create and Edit', { tags: ['@ess', '@serverless'] }, () => {
         cy.getBySel(ADD_QUERY_BUTTON).click();
 
         cy.contains('Attach next query');
+        cy.getBySel('globalLoadingIndicator').should('not.exist');
+        cy.getBySel(LIVE_QUERY_EDITOR).should('exist');
         cy.contains('ID must be unique').should('not.exist');
         cy.getBySel(SAVED_QUERY_DROPDOWN_SELECT).type(`${savedQueryName}{downArrow}{enter}`);
         cy.getBySel(FLYOUT_SAVED_QUERY_SAVE_BUTTON).click();
@@ -671,6 +675,8 @@ describe('Packs - Create and Edit', { tags: ['@ess', '@serverless'] }, () => {
 
         cy.getBySel(ADD_QUERY_BUTTON).click();
 
+        cy.getBySel('globalLoadingIndicator').should('not.exist');
+        cy.getBySel(LIVE_QUERY_EDITOR).should('exist');
         cy.getBySel(SAVED_QUERY_DROPDOWN_SELECT).type(
           `${multipleMappingsSavedQueryName} {downArrow} {enter}`
         );
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts
index 73dc45837e2b3..30b8a1641fb94 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts
@@ -162,7 +162,7 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => {
         navigateTo('/app/osquery/live_queries');
         cy.contains('New live query').click();
         cy.contains('Run a set of queries in a pack.').click();
-        cy.get(LIVE_QUERY_EDITOR).should('not.exist');
+        cy.getBySel(LIVE_QUERY_EDITOR).should('not.exist');
         cy.getBySel('select-live-pack').click().type('osquery-monitoring{downArrow}{enter}');
         selectAllAgents();
         submitQuery();
diff --git a/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts
index 1319d4e173ec4..6638567a92625 100644
--- a/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { LIVE_QUERY_EDITOR } from '../../screens/live_query';
 import {
   ADD_QUERY_BUTTON,
   customActionEditSavedQuerySelector,
@@ -142,7 +143,8 @@ describe('ALL - Saved queries', { tags: ['@ess', '@serverless'] }, () => {
       cy.getBySel(ADD_QUERY_BUTTON).click();
 
       cy.contains('Attach next query');
-
+      cy.getBySel('globalLoadingIndicator').should('not.exist');
+      cy.getBySel(LIVE_QUERY_EDITOR).should('exist');
       cy.getBySel(SAVED_QUERY_DROPDOWN_SELECT).click().type('users_elastic{downArrow} {enter}');
       inputQuery('where name=1');
       cy.getBySel('resultsTypeField').click();
diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts b/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts
index 470c844530452..d512f5d5df5bb 100644
--- a/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts
+++ b/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts
@@ -113,7 +113,7 @@ describe(`T1 and T2 analysts`, { tags: ['@ess', '@serverless'] }, () => {
 
         cy.contains('New live query').click();
         selectAllAgents();
-        cy.get(LIVE_QUERY_EDITOR).should('not.exist');
+        cy.getBySel(LIVE_QUERY_EDITOR).should('not.exist');
         submitQuery();
         cy.contains('Query is a required field');
       });
diff --git a/x-pack/plugins/osquery/cypress/screens/live_query.ts b/x-pack/plugins/osquery/cypress/screens/live_query.ts
index 9dc543072fe07..04c56fbce44c7 100644
--- a/x-pack/plugins/osquery/cypress/screens/live_query.ts
+++ b/x-pack/plugins/osquery/cypress/screens/live_query.ts
@@ -7,7 +7,7 @@
 
 export const AGENT_FIELD = '[data-test-subj="comboBoxInput"]';
 export const ALL_AGENTS_OPTION = '[title="All agents"]';
-export const LIVE_QUERY_EDITOR = '.kibanaCodeEditor';
+export const LIVE_QUERY_EDITOR = 'kibanaCodeEditor';
 export const OSQUERY_FLYOUT_BODY_EDITOR =
   '[data-test-subj="flyout-body-osquery"] .kibanaCodeEditor';
 export const SUBMIT_BUTTON = '#submit-button';
diff --git a/x-pack/plugins/osquery/cypress/tasks/live_query.ts b/x-pack/plugins/osquery/cypress/tasks/live_query.ts
index 6a342246517ac..d57f778e2c966 100644
--- a/x-pack/plugins/osquery/cypress/tasks/live_query.ts
+++ b/x-pack/plugins/osquery/cypress/tasks/live_query.ts
@@ -25,10 +25,10 @@ export const selectAllAgents = () => {
 };
 
 export const clearInputQuery = () =>
-  cy.get(LIVE_QUERY_EDITOR).click().type(`{selectall}{backspace}`);
+  cy.getBySel(LIVE_QUERY_EDITOR).click().type(`{selectall}{backspace}`);
 
 export const inputQuery = (query: string, options?: { parseSpecialCharSequences: boolean }) =>
-  cy.get(LIVE_QUERY_EDITOR).type(query, options);
+  cy.getBySel(LIVE_QUERY_EDITOR).type(query, options);
 
 export const inputQueryInFlyout = (
   query: string,

From 65e65a834e56cf41d44140d9c4fef90167cbf926 Mon Sep 17 00:00:00 2001
From: mohamedhamed-ahmed <mohamed.ahmed@elastic.co>
Date: Fri, 10 Nov 2023 15:02:12 +0000
Subject: [PATCH 093/147] [Dataset quality] Creating initial plugin (#171009)

Related to https://github.com/elastic/kibana/issues/169759.

## Summary

This PR creates the initial plugin for Dataset Quality.
The plugin has the basic boilerplate that allows us to continue working
on the UI and Server sides in parallel.

Further configs are to be added along with upcoming commits like:
1. Storybook
2. FTR configs

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .buildkite/ftr_configs.yml                    |  1 -
 .github/CODEOWNERS                            |  1 +
 docs/developer/plugin-list.asciidoc           |  4 +++
 package.json                                  |  1 +
 packages/kbn-optimizer/limits.yml             |  1 +
 tsconfig.base.json                            |  2 ++
 x-pack/.i18nrc.json                           |  1 +
 x-pack/plugins/dataset_quality/README.md      |  3 ++
 .../plugins/dataset_quality/common/index.ts   |  8 +++++
 .../dataset_quality/common/plugin_config.ts   |  9 ++++++
 x-pack/plugins/dataset_quality/jest.config.js | 15 +++++++++
 x-pack/plugins/dataset_quality/kibana.jsonc   | 16 ++++++++++
 .../plugins/dataset_quality/public/index.ts   | 16 ++++++++++
 .../plugins/dataset_quality/public/plugin.ts  | 31 +++++++++++++++++++
 .../plugins/dataset_quality/public/types.ts   | 18 +++++++++++
 .../plugins/dataset_quality/server/index.ts   | 10 ++++++
 .../plugins/dataset_quality/server/plugin.ts  | 14 +++++++++
 x-pack/plugins/dataset_quality/tsconfig.json  | 17 ++++++++++
 yarn.lock                                     |  4 +++
 19 files changed, 171 insertions(+), 1 deletion(-)
 create mode 100755 x-pack/plugins/dataset_quality/README.md
 create mode 100644 x-pack/plugins/dataset_quality/common/index.ts
 create mode 100644 x-pack/plugins/dataset_quality/common/plugin_config.ts
 create mode 100644 x-pack/plugins/dataset_quality/jest.config.js
 create mode 100644 x-pack/plugins/dataset_quality/kibana.jsonc
 create mode 100644 x-pack/plugins/dataset_quality/public/index.ts
 create mode 100644 x-pack/plugins/dataset_quality/public/plugin.ts
 create mode 100644 x-pack/plugins/dataset_quality/public/types.ts
 create mode 100644 x-pack/plugins/dataset_quality/server/index.ts
 create mode 100644 x-pack/plugins/dataset_quality/server/plugin.ts
 create mode 100644 x-pack/plugins/dataset_quality/tsconfig.json

diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml
index 95588c63f7489..cc67d14eefcf8 100644
--- a/.buildkite/ftr_configs.yml
+++ b/.buildkite/ftr_configs.yml
@@ -462,7 +462,6 @@ enabled:
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/configs/ess.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
-
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
   - x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 19b62559fa3c0..453cbc463b270 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -314,6 +314,7 @@ src/plugins/data_view_field_editor @elastic/kibana-data-discovery
 src/plugins/data_view_management @elastic/kibana-data-discovery
 src/plugins/data_views @elastic/kibana-data-discovery
 x-pack/plugins/data_visualizer @elastic/ml-ui
+x-pack/plugins/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/platform-deployment-management
diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc
index 868ef59f47966..df3f4c8ec855d 100644
--- a/docs/developer/plugin-list.asciidoc
+++ b/docs/developer/plugin-list.asciidoc
@@ -519,6 +519,10 @@ Plugin server-side only. Plugin has three main functions:
 |Adds drilldown capabilities to dashboard.  Owned by the Kibana App team.
 
 
+|{kib-repo}blob/{branch}/x-pack/plugins/dataset_quality/README.md[datasetQuality]
+|In order to make ongoing maintenance of log collection easy we want to introduce the concept of dataset quality, where users can easily get an overview on the datasets they have with information such as integration, size, last activity, among others.
+
+
 |{kib-repo}blob/{branch}/x-pack/plugins/data_visualizer/README.md[dataVisualizer]
 |The data_visualizer plugin enables you to explore the fields in your data.
 
diff --git a/package.json b/package.json
index 3a2052836d5de..7db00b814d99d 100644
--- a/package.json
+++ b/package.json
@@ -364,6 +364,7 @@
     "@kbn/data-view-management-plugin": "link:src/plugins/data_view_management",
     "@kbn/data-views-plugin": "link:src/plugins/data_views",
     "@kbn/data-visualizer-plugin": "link:x-pack/plugins/data_visualizer",
+    "@kbn/dataset-quality-plugin": "link:x-pack/plugins/dataset_quality",
     "@kbn/datemath": "link:packages/kbn-datemath",
     "@kbn/deeplinks-analytics": "link:packages/deeplinks/analytics",
     "@kbn/deeplinks-devtools": "link:packages/deeplinks/devtools",
diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml
index de07bccf8bbcb..a3f99b4f93186 100644
--- a/packages/kbn-optimizer/limits.yml
+++ b/packages/kbn-optimizer/limits.yml
@@ -28,6 +28,7 @@ pageLoadAssetSize:
   dashboard: 82025
   dashboardEnhanced: 65646
   data: 454087
+  datasetQuality: 35000
   dataViewEditor: 28082
   dataViewFieldEditor: 27000
   dataViewManagement: 5100
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 40b1ede664328..c367ace533937 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -622,6 +622,8 @@
       "@kbn/data-views-plugin/*": ["src/plugins/data_views/*"],
       "@kbn/data-visualizer-plugin": ["x-pack/plugins/data_visualizer"],
       "@kbn/data-visualizer-plugin/*": ["x-pack/plugins/data_visualizer/*"],
+      "@kbn/dataset-quality-plugin": ["x-pack/plugins/dataset_quality"],
+      "@kbn/dataset-quality-plugin/*": ["x-pack/plugins/dataset_quality/*"],
       "@kbn/datemath": ["packages/kbn-datemath"],
       "@kbn/datemath/*": ["packages/kbn-datemath/*"],
       "@kbn/deeplinks-analytics": ["packages/deeplinks/analytics"],
diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json
index 923d0cce0759d..bb14c06a53e36 100644
--- a/x-pack/.i18nrc.json
+++ b/x-pack/.i18nrc.json
@@ -20,6 +20,7 @@
     "xpack.csp": "plugins/cloud_security_posture",
     "xpack.customBranding": "plugins/custom_branding",
     "xpack.dashboard": "plugins/dashboard_enhanced",
+    "xpack.datasetQuality": "plugins/dataset_quality",
     "xpack.discover": "plugins/discover_enhanced",
     "xpack.crossClusterReplication": "plugins/cross_cluster_replication",
     "xpack.elasticAssistant": "packages/kbn-elastic-assistant",
diff --git a/x-pack/plugins/dataset_quality/README.md b/x-pack/plugins/dataset_quality/README.md
new file mode 100755
index 0000000000000..cd5bfc30658d4
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/README.md
@@ -0,0 +1,3 @@
+# Dataset Quality
+
+In order to make ongoing maintenance of log collection easy we want to introduce the concept of dataset quality, where users can easily get an overview on the datasets they have with information such as integration, size, last activity, among others.
diff --git a/x-pack/plugins/dataset_quality/common/index.ts b/x-pack/plugins/dataset_quality/common/index.ts
new file mode 100644
index 0000000000000..440e8780e6bf5
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/common/index.ts
@@ -0,0 +1,8 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export type { DatasetQualityConfig } from './plugin_config';
diff --git a/x-pack/plugins/dataset_quality/common/plugin_config.ts b/x-pack/plugins/dataset_quality/common/plugin_config.ts
new file mode 100644
index 0000000000000..d0dac3d6cfdbb
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/common/plugin_config.ts
@@ -0,0 +1,9 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface DatasetQualityConfig {}
diff --git a/x-pack/plugins/dataset_quality/jest.config.js b/x-pack/plugins/dataset_quality/jest.config.js
new file mode 100644
index 0000000000000..fdd27a97fc347
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/jest.config.js
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+module.exports = {
+  preset: '@kbn/test',
+  rootDir: '../../..',
+  roots: ['<rootDir>/x-pack/plugins/dataset_quality'],
+  coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/dataset_quality',
+  coverageReporters: ['text', 'html'],
+  collectCoverageFrom: ['<rootDir>/x-pack/plugins/dataset_quality/{common,public}/**/*.{ts,tsx}'],
+};
diff --git a/x-pack/plugins/dataset_quality/kibana.jsonc b/x-pack/plugins/dataset_quality/kibana.jsonc
new file mode 100644
index 0000000000000..133537a76d831
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/kibana.jsonc
@@ -0,0 +1,16 @@
+{
+  "type": "plugin",
+  "id": "@kbn/dataset-quality-plugin",
+  "owner": "@elastic/obs-ux-logs-team",
+  "description": "This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have.",
+  "plugin": {
+    "id": "datasetQuality",
+    "server": true,
+    "browser": true,
+    "configPath": ["xpack", "datasetQuality"],
+    "requiredPlugins": ["data", "kibanaReact", "kibanaUtils", "controls", "embeddable", "share"],
+    "optionalPlugins": [],
+    "requiredBundles": [],
+    "extraPublicDirs": ["common"]
+  }
+}
diff --git a/x-pack/plugins/dataset_quality/public/index.ts b/x-pack/plugins/dataset_quality/public/index.ts
new file mode 100644
index 0000000000000..339be1ec1de9b
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/index.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { PluginInitializerContext } from '@kbn/core/public';
+import { DatasetQualityConfig } from '../common/plugin_config';
+import { DatasetQualityPlugin } from './plugin';
+
+export type { DatasetQualityPluginSetup, DatasetQualityPluginStart } from './types';
+
+export function plugin(context: PluginInitializerContext<DatasetQualityConfig>) {
+  return new DatasetQualityPlugin(context);
+}
diff --git a/x-pack/plugins/dataset_quality/public/plugin.ts b/x-pack/plugins/dataset_quality/public/plugin.ts
new file mode 100644
index 0000000000000..520c02481cd60
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/plugin.ts
@@ -0,0 +1,31 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from '@kbn/core/public';
+import {
+  DatasetQualityPluginSetup,
+  DatasetQualityPluginStart,
+  DatasetQualitySetupDependencies,
+  DatasetQualityStartDependencies,
+} from './types';
+
+export class DatasetQualityPlugin
+  implements Plugin<DatasetQualityPluginSetup, DatasetQualityPluginStart>
+{
+  constructor(context: PluginInitializerContext) {}
+
+  public setup(core: CoreSetup, plugins: DatasetQualitySetupDependencies) {
+    return {};
+  }
+
+  public start(
+    core: CoreStart,
+    plugins: DatasetQualityStartDependencies
+  ): DatasetQualityPluginStart {
+    return {};
+  }
+}
diff --git a/x-pack/plugins/dataset_quality/public/types.ts b/x-pack/plugins/dataset_quality/public/types.ts
new file mode 100644
index 0000000000000..2d57bd6bb1b2e
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/public/types.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface DatasetQualityPluginSetup {}
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface DatasetQualityPluginStart {}
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface DatasetQualityStartDependencies {}
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface DatasetQualitySetupDependencies {}
diff --git a/x-pack/plugins/dataset_quality/server/index.ts b/x-pack/plugins/dataset_quality/server/index.ts
new file mode 100644
index 0000000000000..17b028aa19431
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/server/index.ts
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { DatasetQualityServerPlugin } from './plugin';
+
+export const plugin = () => new DatasetQualityServerPlugin();
diff --git a/x-pack/plugins/dataset_quality/server/plugin.ts b/x-pack/plugins/dataset_quality/server/plugin.ts
new file mode 100644
index 0000000000000..b673fed3ad622
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/server/plugin.ts
@@ -0,0 +1,14 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { Plugin } from '@kbn/core/server';
+
+export class DatasetQualityServerPlugin implements Plugin {
+  setup() {}
+
+  start() {}
+}
diff --git a/x-pack/plugins/dataset_quality/tsconfig.json b/x-pack/plugins/dataset_quality/tsconfig.json
new file mode 100644
index 0000000000000..efe7ece5983ac
--- /dev/null
+++ b/x-pack/plugins/dataset_quality/tsconfig.json
@@ -0,0 +1,17 @@
+{
+  "extends": "../../../tsconfig.base.json",
+  "compilerOptions": {
+    "outDir": "target/types"
+  },
+  "include": [
+    "../../../typings/**/*",
+    "common/**/*",
+    "public/**/*",
+    "server/**/*.ts",
+    "../../typings/**/*"
+  ],
+  "kbn_references": [
+    "@kbn/core",
+  ],
+  "exclude": ["target/**/*"]
+}
diff --git a/yarn.lock b/yarn.lock
index a2d0d454a4d34..dbf3facc5ec10 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4148,6 +4148,10 @@
   version "0.0.0"
   uid ""
 
+"@kbn/dataset-quality-plugin@link:x-pack/plugins/dataset_quality":
+  version "0.0.0"
+  uid ""
+
 "@kbn/datemath@link:packages/kbn-datemath":
   version "0.0.0"
   uid ""

From f7ab8833198ad1d0c2dc2f594e69eb3d7c44f859 Mon Sep 17 00:00:00 2001
From: Ignacio Rivas <rivasign@gmail.com>
Date: Fri, 10 Nov 2023 16:12:31 +0100
Subject: [PATCH 094/147] [Index Management] Add data retention support to
 index template (#170609)

---
 .../template_clone.test.tsx                   |  9 +-
 .../template_create.test.tsx                  | 22 +++++
 .../template_edit.test.tsx                    | 11 +++
 .../template_form.helpers.ts                  | 19 +++-
 .../common/lib/data_stream_serialization.ts   | 42 +++++++-
 .../common/lib/template_serialization.ts      |  2 +
 .../common/types/data_streams.ts              |  7 ++
 .../index_management/common/types/index.ts    |  8 +-
 .../common/types/templates.ts                 |  3 +
 .../shared/fields}/unit_field.tsx             |  2 +-
 .../application/components/shared/index.ts    |  4 +
 .../template_form/steps/step_logistics.tsx    | 96 ++++++++++++++++++-
 .../template_form/steps/step_review.tsx       | 18 ++++
 .../template_form/template_form.tsx           |  9 +-
 .../template_form/template_form_schemas.tsx   | 79 +++++++++++++++
 .../edit_data_retention_modal.tsx             |  2 +-
 .../template_details/tabs/tab_summary.tsx     | 21 ++++
 .../routes/api/templates/validate_schemas.ts  |  6 ++
 .../test/fixtures/template.ts                 | 10 +-
 .../management/index_management/templates.js  | 58 ++++++++++-
 .../create_index_template.ts                  | 53 ++++++++++
 .../index_templates_tab/index.ts              | 14 +++
 22 files changed, 476 insertions(+), 19 deletions(-)
 rename x-pack/plugins/index_management/public/application/{sections/home/data_stream_list/edit_data_retention_modal => components/shared/fields}/unit_field.tsx (97%)
 create mode 100644 x-pack/test/functional/apps/index_management/index_templates_tab/create_index_template.ts
 create mode 100644 x-pack/test/functional/apps/index_management/index_templates_tab/index.ts

diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
index ecd3e617635f1..91afa2ff3947a 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
@@ -12,7 +12,7 @@ import { API_BASE_PATH } from '../../../common/constants';
 import { getComposableTemplate } from '../../../test/fixtures';
 import { setupEnvironment } from '../helpers';
 
-import { TEMPLATE_NAME, INDEX_PATTERNS as DEFAULT_INDEX_PATTERNS, MAPPINGS } from './constants';
+import { TEMPLATE_NAME, INDEX_PATTERNS as DEFAULT_INDEX_PATTERNS } from './constants';
 import { setup } from './template_clone.helpers';
 import { TemplateFormTestBed } from './template_form.helpers';
 
@@ -37,9 +37,7 @@ jest.mock('@elastic/eui', () => {
 const templateToClone = getComposableTemplate({
   name: TEMPLATE_NAME,
   indexPatterns: ['indexPattern1'],
-  template: {
-    mappings: MAPPINGS,
-  },
+  template: {},
   allowAutoCreate: true,
 });
 
@@ -98,7 +96,7 @@ describe('<TemplateClone />', () => {
         actions.clickNextButton();
       });
 
-      const { priority, version, _kbnMeta, allowAutoCreate } = templateToClone;
+      const { template, priority, version, _kbnMeta, allowAutoCreate } = templateToClone;
       expect(httpSetup.post).toHaveBeenLastCalledWith(
         `${API_BASE_PATH}/index_templates`,
         expect.objectContaining({
@@ -109,6 +107,7 @@ describe('<TemplateClone />', () => {
             version,
             allowAutoCreate,
             _kbnMeta,
+            template,
           }),
         })
       );
diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx
index 7558ae7ce272a..fd373efb6d17d 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx
@@ -532,6 +532,12 @@ describe('<TemplateCreate />', () => {
       await actions.completeStepOne({
         name: TEMPLATE_NAME,
         indexPatterns: DEFAULT_INDEX_PATTERNS,
+        dataStream: {},
+        lifecycle: {
+          enabled: true,
+          value: 1,
+          unit: 'd',
+        },
         allowAutoCreate: true,
       });
       // Component templates
@@ -560,6 +566,7 @@ describe('<TemplateCreate />', () => {
             name: TEMPLATE_NAME,
             indexPatterns: DEFAULT_INDEX_PATTERNS,
             allowAutoCreate: true,
+            dataStream: {},
             _kbnMeta: {
               type: 'default',
               hasDatastream: false,
@@ -582,6 +589,10 @@ describe('<TemplateCreate />', () => {
                 },
               },
               aliases: ALIASES,
+              lifecycle: {
+                enabled: true,
+                data_retention: '1d',
+              },
             },
           }),
         })
@@ -621,6 +632,11 @@ describe('<TemplateCreate />', () => {
       name: TEMPLATE_NAME,
       indexPatterns: DEFAULT_INDEX_PATTERNS,
       dataStream: {},
+      lifecycle: {
+        enabled: true,
+        value: 1,
+        unit: 'd',
+      },
     });
 
     await act(async () => {
@@ -631,6 +647,12 @@ describe('<TemplateCreate />', () => {
       `${API_BASE_PATH}/index_templates/simulate`,
       expect.objectContaining({
         body: JSON.stringify({
+          template: {
+            lifecycle: {
+              enabled: true,
+              data_retention: '1d',
+            },
+          },
           index_patterns: DEFAULT_INDEX_PATTERNS,
           data_stream: {},
           allow_auto_create: false,
diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx
index 157cec2f91cd4..56cfbf7968ecc 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_edit.test.tsx
@@ -119,6 +119,11 @@ describe('<TemplateEdit />', () => {
         name: 'test',
         indexPatterns: ['myPattern*'],
         version: 1,
+        lifecycle: {
+          enabled: true,
+          value: 1,
+          unit: 'd',
+        },
       });
       // Component templates
       await actions.completeStepTwo();
@@ -150,6 +155,12 @@ describe('<TemplateEdit />', () => {
               hasDatastream: true,
               isLegacy: false,
             },
+            template: {
+              lifecycle: {
+                enabled: true,
+                data_retention: '1d',
+              },
+            },
           }),
         })
       );
diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts
index 0974ee79346ed..8b98fb769959f 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_form.helpers.ts
@@ -146,6 +146,7 @@ export const formSetup = async (initTestBed: SetupFunc<TestSubjects>) => {
     priority,
     version,
     dataStream,
+    lifecycle,
     allowAutoCreate,
   }: Partial<TemplateDeserialized> = {}) => {
     const { component, form, find } = testBed;
@@ -184,12 +185,27 @@ export const formSetup = async (initTestBed: SetupFunc<TestSubjects>) => {
       if (version) {
         form.setInputValue('versionField.input', JSON.stringify(version));
       }
+    });
+    component.update();
 
+    if (lifecycle && lifecycle.enabled) {
+      act(() => {
+        form.toggleEuiSwitch('dataRetentionToggle.input');
+      });
+      component.update();
+
+      act(() => {
+        form.setInputValue('valueDataRetentionField', String(lifecycle.value));
+      });
+    }
+
+    await act(async () => {
       if (allowAutoCreate) {
         form.toggleEuiSwitch('allowAutoCreateField.input');
       }
 
       clickNextButton();
+      jest.advanceTimersByTime(0);
     });
 
     component.update();
@@ -215,7 +231,6 @@ export const formSetup = async (initTestBed: SetupFunc<TestSubjects>) => {
 
     await act(async () => {
       clickNextButton();
-      jest.advanceTimersByTime(0);
     });
 
     component.update();
@@ -337,6 +352,7 @@ export type TestSubjects =
   | 'orderField.input'
   | 'priorityField.input'
   | 'dataStreamField.input'
+  | 'dataRetentionToggle.input'
   | 'allowAutoCreateField.input'
   | 'pageTitle'
   | 'previewTab'
@@ -361,6 +377,7 @@ export type TestSubjects =
   | 'aliasesEditor'
   | 'settingsEditor'
   | 'versionField.input'
+  | 'valueDataRetentionField'
   | 'mappingsEditor.formTab'
   | 'mappingsEditor.advancedConfiguration.sizeEnabledToggle'
   | 'previewIndexTemplate';
diff --git a/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts b/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts
index d7bd1d9e92f95..ceedd072139aa 100644
--- a/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts
+++ b/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { DataStream, EnhancedDataStreamFromEs, Health } from '../types';
+import { DataStream, EnhancedDataStreamFromEs, Health, DataRetention } from '../types';
 
 export function deserializeDataStream(dataStreamFromEs: EnhancedDataStreamFromEs): DataStream {
   const {
@@ -83,3 +83,43 @@ export const splitSizeAndUnits = (field: string): { size: string; unit: string }
     unit,
   };
 };
+
+export const serializeAsESLifecycle = (lifecycle?: DataRetention): DataStream['lifecycle'] => {
+  if (!lifecycle || !lifecycle?.enabled) {
+    return undefined;
+  }
+
+  const { infiniteDataRetention, value, unit } = lifecycle;
+
+  if (infiniteDataRetention) {
+    return {
+      enabled: true,
+    };
+  }
+
+  return {
+    enabled: true,
+    data_retention: `${value}${unit}`,
+  };
+};
+
+export const deserializeESLifecycle = (lifecycle?: DataStream['lifecycle']): DataRetention => {
+  if (!lifecycle || !lifecycle?.enabled) {
+    return { enabled: false };
+  }
+
+  if (!lifecycle.data_retention) {
+    return {
+      enabled: true,
+      infiniteDataRetention: true,
+    };
+  }
+
+  const { size, unit } = splitSizeAndUnits(lifecycle.data_retention as string);
+
+  return {
+    enabled: true,
+    value: Number(size),
+    unit,
+  };
+};
diff --git a/x-pack/plugins/index_management/common/lib/template_serialization.ts b/x-pack/plugins/index_management/common/lib/template_serialization.ts
index 7c75ec3c56f97..bb871b1556d30 100644
--- a/x-pack/plugins/index_management/common/lib/template_serialization.ts
+++ b/x-pack/plugins/index_management/common/lib/template_serialization.ts
@@ -12,6 +12,7 @@ import {
   TemplateListItem,
   TemplateType,
 } from '../types';
+import { deserializeESLifecycle } from './data_stream_serialization';
 
 const hasEntries = (data: object = {}) => Object.entries(data).length > 0;
 
@@ -69,6 +70,7 @@ export function deserializeTemplate(
     name,
     version,
     priority,
+    ...(template.lifecycle ? { lifecycle: deserializeESLifecycle(template.lifecycle) } : {}),
     indexPatterns: indexPatterns.sort(),
     template,
     ilmPolicy: settings?.index?.lifecycle,
diff --git a/x-pack/plugins/index_management/common/types/data_streams.ts b/x-pack/plugins/index_management/common/types/data_streams.ts
index 80a4be29ee924..f3890dd032a5a 100644
--- a/x-pack/plugins/index_management/common/types/data_streams.ts
+++ b/x-pack/plugins/index_management/common/types/data_streams.ts
@@ -75,3 +75,10 @@ export interface DataStreamIndex {
   preferILM: boolean;
   managedBy: string;
 }
+
+export interface DataRetention {
+  enabled: boolean;
+  infiniteDataRetention?: boolean;
+  value?: number;
+  unit?: string;
+}
diff --git a/x-pack/plugins/index_management/common/types/index.ts b/x-pack/plugins/index_management/common/types/index.ts
index f3f2315cdd15b..ef2e8a389c079 100644
--- a/x-pack/plugins/index_management/common/types/index.ts
+++ b/x-pack/plugins/index_management/common/types/index.ts
@@ -13,7 +13,13 @@ export * from './mappings';
 
 export * from './templates';
 
-export type { EnhancedDataStreamFromEs, Health, DataStream, DataStreamIndex } from './data_streams';
+export type {
+  EnhancedDataStreamFromEs,
+  Health,
+  DataStream,
+  DataStreamIndex,
+  DataRetention,
+} from './data_streams';
 
 export * from './component_templates';
 
diff --git a/x-pack/plugins/index_management/common/types/templates.ts b/x-pack/plugins/index_management/common/types/templates.ts
index 53e120c88c96f..7d85bb4d20ae0 100644
--- a/x-pack/plugins/index_management/common/types/templates.ts
+++ b/x-pack/plugins/index_management/common/types/templates.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { DataRetention, DataStream } from './data_streams';
 import { IndexSettings } from './indices';
 import { Aliases } from './aliases';
 import { Mappings } from './mappings';
@@ -18,6 +19,7 @@ export interface TemplateSerialized {
     settings?: IndexSettings;
     aliases?: Aliases;
     mappings?: Mappings;
+    lifecycle?: DataStream['lifecycle'];
   };
   composed_of?: string[];
   version?: number;
@@ -40,6 +42,7 @@ export interface TemplateDeserialized {
     aliases?: Aliases;
     mappings?: Mappings;
   };
+  lifecycle?: DataRetention;
   composedOf?: string[]; // Composable template only
   version?: number;
   priority?: number; // Composable template only
diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/unit_field.tsx b/x-pack/plugins/index_management/public/application/components/shared/fields/unit_field.tsx
similarity index 97%
rename from x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/unit_field.tsx
rename to x-pack/plugins/index_management/public/application/components/shared/fields/unit_field.tsx
index fc12b2ce9edaf..8a01118a5f095 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/unit_field.tsx
+++ b/x-pack/plugins/index_management/public/application/components/shared/fields/unit_field.tsx
@@ -7,7 +7,7 @@
 
 import React, { FunctionComponent, useState } from 'react';
 import { EuiFilterSelectItem, EuiPopover, EuiButtonEmpty } from '@elastic/eui';
-import { UseField } from '../../../../../shared_imports';
+import { UseField } from '../../../../shared_imports';
 
 interface Props {
   path: string;
diff --git a/x-pack/plugins/index_management/public/application/components/shared/index.ts b/x-pack/plugins/index_management/public/application/components/shared/index.ts
index 06899e202ef82..66681ab20c177 100644
--- a/x-pack/plugins/index_management/public/application/components/shared/index.ts
+++ b/x-pack/plugins/index_management/public/application/components/shared/index.ts
@@ -6,6 +6,7 @@
  */
 
 export type { CommonWizardSteps } from './components';
+
 export {
   TabAliases,
   TabMappings,
@@ -15,3 +16,6 @@ export {
   StepSettingsContainer,
   TemplateContentIndicator,
 } from './components';
+
+export { UnitField } from './fields/unit_field';
+export { timeUnits } from '../../constants/time_units';
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx
index 6dd062ba42674..5307852d3c9e3 100644
--- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx
+++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx
@@ -26,7 +26,10 @@ import {
   Field,
   Forms,
   JsonEditorField,
+  NumericField,
 } from '../../../../shared_imports';
+import { UnitField, timeUnits } from '../../shared';
+import { DataRetention } from '../../../../../common';
 import { documentationService } from '../../../services/documentation';
 import { schemas, nameConfig, nameConfigWithoutValidations } from '../template_form_schemas';
 
@@ -112,6 +115,19 @@ function getFieldsMeta(esDocsBase: string) {
       }),
       testSubject: 'versionField',
     },
+    dataRetention: {
+      title: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.dataRetentionTitle', {
+        defaultMessage: 'Data retention',
+      }),
+      description: i18n.translate(
+        'xpack.idxMgmt.templateForm.stepLogistics.dataRetentionDescription',
+        {
+          defaultMessage:
+            'Data will be kept at least this long before being automatically deleted.',
+        }
+      ),
+      unitTestSubject: 'unitDataRetentionField',
+    },
     allowAutoCreate: {
       title: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.allowAutoCreateTitle', {
         defaultMessage: 'Allow auto create',
@@ -177,9 +193,18 @@ export const StepLogistics: React.FunctionComponent<Props> = React.memo(
       getFormData,
     } = form;
 
-    const [{ addMeta }] = useFormData<{ addMeta: boolean }>({
+    const [{ addMeta, doCreateDataStream, lifecycle }] = useFormData<{
+      addMeta: boolean;
+      lifecycle: DataRetention;
+      doCreateDataStream: boolean;
+    }>({
       form,
-      watch: 'addMeta',
+      watch: [
+        'addMeta',
+        'lifecycle.enabled',
+        'lifecycle.infiniteDataRetention',
+        'doCreateDataStream',
+      ],
     });
 
     /**
@@ -198,8 +223,16 @@ export const StepLogistics: React.FunctionComponent<Props> = React.memo(
       });
     }, [onChange, isFormValid, validate, getFormData]);
 
-    const { name, indexPatterns, createDataStream, order, priority, version, allowAutoCreate } =
-      getFieldsMeta(documentationService.getEsDocsBase());
+    const {
+      name,
+      indexPatterns,
+      createDataStream,
+      order,
+      priority,
+      version,
+      dataRetention,
+      allowAutoCreate,
+    } = getFieldsMeta(documentationService.getEsDocsBase());
 
     return (
       <>
@@ -272,6 +305,61 @@ export const StepLogistics: React.FunctionComponent<Props> = React.memo(
             </FormRow>
           )}
 
+          {/*
+            Since data stream and data retention are settings that are only allowed for non legacy,
+            we only need to check if data stream is set to true to show the data retention.
+          */}
+          {doCreateDataStream && (
+            <FormRow
+              title={dataRetention.title}
+              description={
+                <>
+                  {dataRetention.description}
+                  <EuiSpacer size="m" />
+                  <UseField
+                    path="lifecycle.enabled"
+                    componentProps={{ 'data-test-subj': 'dataRetentionToggle' }}
+                  />
+                </>
+              }
+            >
+              {lifecycle?.enabled && (
+                <UseField
+                  path="lifecycle.value"
+                  component={NumericField}
+                  labelAppend={
+                    <UseField
+                      path="lifecycle.infiniteDataRetention"
+                      data-test-subj="infiniteDataRetentionToggle"
+                      componentProps={{
+                        euiFieldProps: {
+                          compressed: true,
+                        },
+                      }}
+                    />
+                  }
+                  componentProps={{
+                    euiFieldProps: {
+                      disabled: lifecycle?.infiniteDataRetention,
+                      'data-test-subj': 'valueDataRetentionField',
+                      min: 1,
+                      append: (
+                        <UnitField
+                          path="lifecycle.unit"
+                          options={timeUnits}
+                          disabled={lifecycle?.infiniteDataRetention}
+                          euiFieldProps={{
+                            'data-test-subj': 'unitDataRetentionField',
+                          }}
+                        />
+                      ),
+                    },
+                  }}
+                />
+              )}
+            </FormRow>
+          )}
+
           {/* Order */}
           {isLegacy && (
             <FormRow title={order.title} description={order.description}>
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx
index 3ecea64a73e4d..7d01966d207e9 100644
--- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx
+++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx
@@ -27,9 +27,11 @@ import { serializers } from '../../../../shared_imports';
 import { serializeLegacyTemplate, serializeTemplate } from '../../../../../common/lib';
 import { TemplateDeserialized, getTemplateParameter, Aliases } from '../../../../../common';
 import { SimulateTemplate } from '../../index_templates';
+import { getLifecycleValue } from '../../../lib/data_streams';
 import { WizardSection } from '../template_form';
 
 const { stripEmptyFields } = serializers;
+const INFINITE_AS_ICON = true;
 
 const NoneDescriptionText = () => (
   <FormattedMessage
@@ -87,6 +89,7 @@ export const StepReview: React.FunctionComponent<Props> = React.memo(
       indexPatterns,
       version,
       order,
+      template: indexTemplate,
       priority,
       allowAutoCreate,
       composedOf,
@@ -109,6 +112,7 @@ export const StepReview: React.FunctionComponent<Props> = React.memo(
     const serializedMappings = getTemplateParameter(serializedTemplate, 'mappings');
     const serializedSettings = getTemplateParameter(serializedTemplate, 'settings');
     const serializedAliases = getTemplateParameter(serializedTemplate, 'aliases');
+    const serializedLifecycle = (indexTemplate as TemplateDeserialized)?.lifecycle;
 
     const numIndexPatterns = indexPatterns!.length;
 
@@ -274,6 +278,20 @@ export const StepReview: React.FunctionComponent<Props> = React.memo(
                 {getDescriptionText(serializedAliases)}
               </EuiDescriptionListDescription>
 
+              {isLegacy !== true && serializedLifecycle?.enabled && (
+                <>
+                  <EuiDescriptionListTitle data-test-subj="lifecycleTitle">
+                    <FormattedMessage
+                      id="xpack.idxMgmt.templateForm.stepReview.summaryTab.lifecycleLabel"
+                      defaultMessage="Data retention"
+                    />
+                  </EuiDescriptionListTitle>
+                  <EuiDescriptionListDescription data-test-subj="lifecycleValue">
+                    {getLifecycleValue(serializedLifecycle, INFINITE_AS_ICON)}
+                  </EuiDescriptionListDescription>
+                </>
+              )}
+
               {/* Metadata (optional) */}
               {isLegacy !== true && _meta && (
                 <>
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
index 13797f1dfc05b..9d494e0a558d9 100644
--- a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
+++ b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
@@ -21,6 +21,7 @@ import {
 } from '../shared';
 import { documentationService } from '../../services/documentation';
 import { SectionError } from '../section_error';
+import { serializeAsESLifecycle } from '../../../../common/lib/data_stream_serialization';
 import {
   SimulateTemplateFlyoutContent,
   SimulateTemplateProps,
@@ -190,6 +191,9 @@ export const TemplateForm = ({
       if (Object.keys(outputTemplate.template).length === 0) {
         delete outputTemplate.template;
       }
+      if (outputTemplate.lifecycle) {
+        delete outputTemplate.lifecycle;
+      }
     }
 
     return outputTemplate;
@@ -206,10 +210,13 @@ export const TemplateForm = ({
             settings: wizardData.settings,
             mappings: wizardData.mappings,
             aliases: wizardData.aliases,
+            lifecycle: wizardData.logistics.lifecycle
+              ? serializeAsESLifecycle(wizardData.logistics.lifecycle)
+              : undefined,
           },
         };
 
-        return cleanupTemplateObject(outputTemplate);
+        return cleanupTemplateObject(outputTemplate as TemplateDeserialized);
       },
     []
   );
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx b/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx
index 454a0ca4b5b0a..383b60c365086 100644
--- a/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx
+++ b/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx
@@ -158,6 +158,85 @@ export const schemas: Record<string, FormSchema> = {
       }),
       formatters: [toInt],
     },
+
+    'lifecycle.enabled': {
+      type: FIELD_TYPES.TOGGLE,
+      label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.enableDataRetentionLabel', {
+        defaultMessage: 'Enable data retention',
+      }),
+      defaultValue: false,
+    },
+    'lifecycle.infiniteDataRetention': {
+      type: FIELD_TYPES.TOGGLE,
+      label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.infiniteDataRetentionLabel', {
+        defaultMessage: 'Keep data indefinitely',
+      }),
+      defaultValue: false,
+    },
+    'lifecycle.value': {
+      type: FIELD_TYPES.TEXT,
+      label: i18n.translate(
+        'xpack.idxMgmt.templateForm.stepLogistics.fieldDataRetentionValueLabel',
+        {
+          defaultMessage: 'Data Retention',
+        }
+      ),
+      formatters: [toInt],
+      validations: [
+        {
+          validator: ({ value, formData }) => {
+            // If infiniteRetentionPeriod is set, we dont need to validate the data retention field
+            if (formData['lifecycle.infiniteDataRetention']) {
+              return undefined;
+            }
+
+            if (!value) {
+              return {
+                message: i18n.translate(
+                  'xpack.idxMgmt.templateForm.stepLogistics.dataRetentionFieldRequiredError',
+                  {
+                    defaultMessage: 'A data retention value is required.',
+                  }
+                ),
+              };
+            }
+
+            if (value <= 0) {
+              return {
+                message: i18n.translate(
+                  'xpack.idxMgmt.templateForm.stepLogistics.dataRetentionFieldNonNegativeError',
+                  {
+                    defaultMessage: `A positive value is required.`,
+                  }
+                ),
+              };
+            }
+
+            if (value % 1 !== 0) {
+              return {
+                message: i18n.translate(
+                  'xpack.idxMgmt.templateForm.stepLogistics.dataRetentionFieldDecimalError',
+                  {
+                    defaultMessage: `The value should be an integer number.`,
+                  }
+                ),
+              };
+            }
+          },
+        },
+      ],
+    },
+    'lifecycle.unit': {
+      type: FIELD_TYPES.TEXT,
+      label: i18n.translate(
+        'xpack.idxMgmt.templateForm.stepLogistics.fieldDataRetentionUnitLabel',
+        {
+          defaultMessage: 'Time unit',
+        }
+      ),
+      defaultValue: 'd',
+    },
+
     allowAutoCreate: {
       type: FIELD_TYPES.TOGGLE,
       label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.fieldAllowAutoCreateLabel', {
diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx
index a1ac650ba0cb7..713fdc8a709d5 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx
@@ -42,7 +42,7 @@ import { splitSizeAndUnits, DataStream } from '../../../../../../common';
 import { timeUnits } from '../../../../constants/time_units';
 import { isDSLWithILMIndices } from '../../../../lib/data_streams';
 import { useAppContext } from '../../../../app_context';
-import { UnitField } from './unit_field';
+import { UnitField } from '../../../../components/shared';
 import { updateDataRetention } from '../../../../services/api';
 
 interface Props {
diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx
index 5e90a97fbcdb0..492c6f426acd5 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx
@@ -20,6 +20,8 @@ import {
   EuiCodeBlock,
   EuiSpacer,
 } from '@elastic/eui';
+import { serializeAsESLifecycle } from '../../../../../../../common/lib/data_stream_serialization';
+import { getLifecycleValue } from '../../../../../lib/data_streams';
 import { TemplateDeserialized } from '../../../../../../../common';
 import { ILM_PAGES_POLICY_EDIT } from '../../../../../constants';
 import { useIlmLocator } from '../../../../../services/use_ilm_locator';
@@ -28,6 +30,7 @@ interface Props {
   templateDetails: TemplateDeserialized;
 }
 
+const INFINITE_AS_ICON = true;
 const i18nTexts = {
   yes: i18n.translate('xpack.idxMgmt.templateDetails.summaryTab.yesDescriptionText', {
     defaultMessage: 'Yes',
@@ -194,6 +197,24 @@ export const TabSummary: React.FunctionComponent<Props> = ({ templateDetails })
               {version || version === 0 ? version : i18nTexts.none}
             </EuiDescriptionListDescription>
 
+            {/* Data retention */}
+            {hasDatastream && templateDetails?.lifecycle && (
+              <>
+                <EuiDescriptionListTitle>
+                  <FormattedMessage
+                    id="xpack.idxMgmt.templateDetails.summaryTab.lifecycleDescriptionListTitle"
+                    defaultMessage="Data retention"
+                  />
+                </EuiDescriptionListTitle>
+                <EuiDescriptionListDescription>
+                  {getLifecycleValue(
+                    serializeAsESLifecycle(templateDetails.lifecycle),
+                    INFINITE_AS_ICON
+                  )}
+                </EuiDescriptionListDescription>
+              </>
+            )}
+
             {/* Allow auto create */}
             {isLegacy !== true && (
               <>
diff --git a/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts b/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts
index d4236fb9051c4..b9020585ed676 100644
--- a/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts
+++ b/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts
@@ -19,6 +19,12 @@ export const templateSchema = schema.object({
       settings: schema.maybe(schema.object({}, { unknowns: 'allow' })),
       aliases: schema.maybe(schema.object({}, { unknowns: 'allow' })),
       mappings: schema.maybe(schema.object({}, { unknowns: 'allow' })),
+      lifecycle: schema.maybe(
+        schema.object({
+          enabled: schema.boolean(),
+          data_retention: schema.maybe(schema.string()),
+        })
+      ),
     })
   ),
   composedOf: schema.maybe(schema.arrayOf(schema.string())),
diff --git a/x-pack/plugins/index_management/test/fixtures/template.ts b/x-pack/plugins/index_management/test/fixtures/template.ts
index 19a3b30c84c6b..01f83e2d76ff5 100644
--- a/x-pack/plugins/index_management/test/fixtures/template.ts
+++ b/x-pack/plugins/index_management/test/fixtures/template.ts
@@ -7,6 +7,7 @@
 
 import { getRandomString, getRandomNumber } from '@kbn/test-jest-helpers';
 import { TemplateDeserialized, TemplateType, TemplateListItem } from '../../common';
+import { IndexSettings, Aliases, Mappings, DataStream } from '../../common/types';
 
 const objHasProperties = (obj?: Record<string, any>): boolean => {
   return obj === undefined || Object.keys(obj).length === 0 ? false : true;
@@ -17,7 +18,7 @@ export const getComposableTemplate = ({
   version = getRandomNumber(),
   priority = getRandomNumber(),
   indexPatterns = [],
-  template: { settings, aliases, mappings } = {},
+  template: { settings, aliases, mappings, lifecycle } = {},
   hasDatastream = false,
   isLegacy = false,
   type = 'default',
@@ -27,6 +28,12 @@ export const getComposableTemplate = ({
     isLegacy?: boolean;
     type?: TemplateType;
     hasDatastream: boolean;
+    template?: {
+      settings?: IndexSettings;
+      aliases?: Aliases;
+      mappings?: Mappings;
+      lifecycle?: DataStream['lifecycle'];
+    };
   }
 > = {}): TemplateDeserialized => {
   const indexTemplate = {
@@ -39,6 +46,7 @@ export const getComposableTemplate = ({
       aliases,
       mappings,
       settings,
+      lifecycle,
     },
     _kbnMeta: {
       type,
diff --git a/x-pack/test/api_integration/apis/management/index_management/templates.js b/x-pack/test/api_integration/apis/management/index_management/templates.js
index 2c7ba54bb9c98..bb4007852b037 100644
--- a/x-pack/test/api_integration/apis/management/index_management/templates.js
+++ b/x-pack/test/api_integration/apis/management/index_management/templates.js
@@ -30,9 +30,26 @@ export default function ({ getService }) {
     after(() => Promise.all([cleanUpEsResources(), cleanUpTemplates()]));
 
     describe('get all', () => {
-      const templateName = `template-${getRandomString()}`;
-      const indexTemplate = getTemplatePayload(templateName, [getRandomString()]);
-      const legacyTemplate = getTemplatePayload(templateName, [getRandomString()], true);
+      const indexTemplate = getTemplatePayload(`template-${getRandomString()}`, [
+        getRandomString(),
+      ]);
+      const legacyTemplate = getTemplatePayload(
+        `template-${getRandomString()}`,
+        [getRandomString()],
+        true
+      );
+      const tmpTemplate = getTemplatePayload(`template-${getRandomString()}`, [getRandomString()]);
+      const indexTemplateWithLifecycle = {
+        ...tmpTemplate,
+        dataStream: {},
+        template: {
+          ...tmpTemplate.template,
+          lifecycle: {
+            enabled: true,
+            data_retention: '10d',
+          },
+        },
+      };
 
       beforeEach(async () => {
         const res1 = await createTemplate(indexTemplate);
@@ -44,6 +61,11 @@ export default function ({ getService }) {
         if (res2.status !== 200) {
           throw new Error(res2.body.message);
         }
+
+        const res3 = await createTemplate(indexTemplateWithLifecycle);
+        if (res3.status !== 200) {
+          throw new Error(res3.body.message);
+        }
       });
 
       it('should list all the index templates with the expected parameters', async () => {
@@ -107,6 +129,36 @@ export default function ({ getService }) {
         ].sort();
 
         expect(Object.keys(legacyTemplateFound).sort()).to.eql(expectedLegacyKeys);
+
+        // Index template with lifecycle
+        const templateWithLifecycle = allTemplates.templates.find(
+          (template) => template.name === indexTemplateWithLifecycle.name
+        );
+
+        if (!templateWithLifecycle) {
+          throw new Error(
+            `Index template with lifecycle "${
+              indexTemplateWithLifecycle.name
+            }" not found in ${JSON.stringify(allTemplates.templates, null, 2)}`
+          );
+        }
+
+        const expectedWithLifecycleKeys = [
+          'name',
+          'indexPatterns',
+          'lifecycle',
+          'hasSettings',
+          'hasAliases',
+          'hasMappings',
+          'ilmPolicy',
+          'priority',
+          'composedOf',
+          'dataStream',
+          'version',
+          '_kbnMeta',
+        ].sort();
+
+        expect(Object.keys(templateWithLifecycle).sort()).to.eql(expectedWithLifecycleKeys);
       });
     });
 
diff --git a/x-pack/test/functional/apps/index_management/index_templates_tab/create_index_template.ts b/x-pack/test/functional/apps/index_management/index_templates_tab/create_index_template.ts
new file mode 100644
index 0000000000000..9b9d869fb9980
--- /dev/null
+++ b/x-pack/test/functional/apps/index_management/index_templates_tab/create_index_template.ts
@@ -0,0 +1,53 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import expect from '@kbn/expect';
+import { FtrProviderContext } from '../../../ftr_provider_context';
+
+export default ({ getPageObjects, getService }: FtrProviderContext) => {
+  const pageObjects = getPageObjects(['common', 'indexManagement', 'header']);
+  const log = getService('log');
+  const security = getService('security');
+  const testSubjects = getService('testSubjects');
+
+  const INDEX_TEMPLATE_NAME = `test-index-template`;
+
+  describe('Create index template', function () {
+    before(async () => {
+      await log.debug('Navigating to the index templates tab');
+      await security.testUser.setRoles(['index_management_user']);
+      await pageObjects.common.navigateToApp('indexManagement');
+      // Navigate to the data streams tab
+      await pageObjects.indexManagement.changeTabs('templatesTab');
+      await pageObjects.header.waitUntilLoadingHasFinished();
+      // Click create template button
+      await testSubjects.click('createTemplateButton');
+    });
+
+    it('can create an index template with data retention', async () => {
+      // Complete required fields from step 1
+      await testSubjects.setValue('nameField', INDEX_TEMPLATE_NAME);
+      await testSubjects.setValue('indexPatternsField', 'test-1');
+      // Enable data stream
+      await testSubjects.click('dataStreamField > input');
+      // Enable data retention
+      await testSubjects.click('dataRetentionToggle > input');
+      // Set the retention to 7 hours
+      await testSubjects.setValue('valueDataRetentionField', '7');
+      await testSubjects.click('show-filters-button');
+      await testSubjects.click('filter-option-h');
+      // Navigate to the last step of the wizard
+      await testSubjects.click('nextButton');
+      await testSubjects.click('nextButton');
+      await testSubjects.click('nextButton');
+      await testSubjects.click('nextButton');
+      await testSubjects.click('nextButton');
+
+      expect(await testSubjects.getVisibleText('lifecycleValue')).to.be('7 hours');
+    });
+  });
+};
diff --git a/x-pack/test/functional/apps/index_management/index_templates_tab/index.ts b/x-pack/test/functional/apps/index_management/index_templates_tab/index.ts
new file mode 100644
index 0000000000000..992c2094c037e
--- /dev/null
+++ b/x-pack/test/functional/apps/index_management/index_templates_tab/index.ts
@@ -0,0 +1,14 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { FtrProviderContext } from '../../../ftr_provider_context';
+
+export default ({ loadTestFile }: FtrProviderContext) => {
+  describe('Index Management: index templates tab', function () {
+    loadTestFile(require.resolve('./create_index_template'));
+  });
+};

From 3c0ba20369d9582e9fcff69e27d6932a0d991646 Mon Sep 17 00:00:00 2001
From: Nathan Reese <reese.nathan@elastic.co>
Date: Fri, 10 Nov 2023 08:20:25 -0700
Subject: [PATCH 095/147] [maps] fix vector tile layer with joins stuck in
 loading state when not visible (#170984)

Closes https://github.com/elastic/kibana/issues/170983

### Test instructions
1. Download world countries geojson from
https://maps.elastic.co/v8.12/index.html?locale=en#file/world_countries
2. upload downloaded world countries
3. create new map
4. add "Choropleth" layer
5. Set boundaries source to "Points, lines, and polygons from
elasticsearch". Select world countries data view. Set join field to
"iso2"
6. Set statistics view to kibana sample web logs. Set join field to
"geo.src"
7. minimize layer TOC
8. save map and re-open.
9. Minimized layer legend icon should stop showing loading state once
EMS base map is loaded

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../layers/layer_group/layer_group.tsx        |   4 +
 .../geojson_vector_layer.test.ts              |  12 +
 .../geojson_vector_layer.tsx                  |   4 +
 .../mvt_vector_layer.test.tsx                 | 227 ++++++++----------
 .../mvt_vector_layer/mvt_vector_layer.tsx     |   4 +
 5 files changed, 127 insertions(+), 124 deletions(-)

diff --git a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx
index 54ead3de1cbd6..7b7ac229f154e 100644
--- a/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx
+++ b/x-pack/plugins/maps/public/classes/layers/layer_group/layer_group.tsx
@@ -284,6 +284,10 @@ export class LayerGroup implements ILayer {
   }
 
   isLayerLoading(zoom: number): boolean {
+    if (!this.isVisible()) {
+      return false;
+    }
+
     return this._children.some((child) => {
       return child.isLayerLoading(zoom);
     });
diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.test.ts b/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.test.ts
index 6717a04bc80d0..cf558c33458ce 100644
--- a/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.test.ts
+++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.test.ts
@@ -75,6 +75,18 @@ describe('isLayerLoading', () => {
   });
 
   describe('joins', () => {
+    test('should return false when layer is not visible', () => {
+      const layer = new GeoJsonVectorLayer({
+        customIcons: [],
+        joins: [mockJoin],
+        layerDescriptor: {
+          visible: false,
+        } as unknown as VectorLayerDescriptor,
+        source: {} as unknown as IVectorSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(false);
+    });
+
     describe('source data loaded with no features', () => {
       test('should return false when join loading has not started', () => {
         const layer = new GeoJsonVectorLayer({
diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.tsx
index 78d1ac7442a95..4faa32668f7de 100644
--- a/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.tsx
+++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/geojson_vector_layer/geojson_vector_layer.tsx
@@ -61,6 +61,10 @@ export class GeoJsonVectorLayer extends AbstractVectorLayer {
   }
 
   isLayerLoading(zoom: number) {
+    if (!this.isVisible() || !this.showAtZoomLevel(zoom)) {
+      return false;
+    }
+
     const isSourceLoading = super.isLayerLoading(zoom);
     if (isSourceLoading) {
       return true;
diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx
index 4347452c8d22e..69ac1a00068f2 100644
--- a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx
+++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.test.tsx
@@ -110,139 +110,118 @@ describe('isLayerLoading', () => {
     dataRequestMetaAtStart: undefined,
     dataRequestToken: undefined,
   };
-  test('should be true when tile loading has not started', () => {
-    const layer = new MvtVectorLayer({
-      customIcons: [],
-      layerDescriptor: {
-        __dataRequests: [sourceDataRequestDescriptor],
-      } as unknown as VectorLayerDescriptor,
-      source: {
-        getMaxZoom: () => {
-          return 24;
-        },
-        getMinZoom: () => {
-          return 0;
-        },
-      } as unknown as IVectorSource,
+  const mockSource = {
+    getMaxZoom: () => {
+      return 24;
+    },
+    getMinZoom: () => {
+      return 0;
+    },
+  } as unknown as IVectorSource;
+
+  describe('no joins', () => {
+    test('should be true when tile loading has not started', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        layerDescriptor: {
+          __dataRequests: [sourceDataRequestDescriptor],
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(true);
     });
-    expect(layer.isLayerLoading(1)).toBe(true);
-  });
 
-  test('should be true when tiles are loading', () => {
-    const layer = new MvtVectorLayer({
-      customIcons: [],
-      layerDescriptor: {
-        __areTilesLoaded: false,
-        __dataRequests: [sourceDataRequestDescriptor],
-      } as unknown as VectorLayerDescriptor,
-      source: {
-        getMaxZoom: () => {
-          return 24;
-        },
-        getMinZoom: () => {
-          return 0;
-        },
-      } as unknown as IVectorSource,
+    test('should be true when tiles are loading', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        layerDescriptor: {
+          __areTilesLoaded: false,
+          __dataRequests: [sourceDataRequestDescriptor],
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(true);
     });
-    expect(layer.isLayerLoading(1)).toBe(true);
-  });
 
-  test('should be false when tiles are loaded', () => {
-    const layer = new MvtVectorLayer({
-      customIcons: [],
-      layerDescriptor: {
-        __areTilesLoaded: true,
-        __dataRequests: [sourceDataRequestDescriptor],
-      } as unknown as VectorLayerDescriptor,
-      source: {
-        getMaxZoom: () => {
-          return 24;
-        },
-        getMinZoom: () => {
-          return 0;
-        },
-      } as unknown as IVectorSource,
+    test('should be false when tiles are loaded', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        layerDescriptor: {
+          __areTilesLoaded: true,
+          __dataRequests: [sourceDataRequestDescriptor],
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(false);
     });
-    expect(layer.isLayerLoading(1)).toBe(false);
   });
 
-  test('should be true when tiles are loaded but join is loading', () => {
-    const layer = new MvtVectorLayer({
-      customIcons: [],
-      joins: [
-        {
-          hasCompleteConfig: () => {
-            return true;
-          },
-          getSourceDataRequestId: () => {
-            return 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2';
-          },
-          getRightJoinSource: () => {
-            return {} as unknown as IJoinSource;
-          },
-        } as unknown as InnerJoin,
-      ],
-      layerDescriptor: {
-        __areTilesLoaded: true,
-        __dataRequests: [
-          sourceDataRequestDescriptor,
-          {
-            dataId: 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2',
-            dataRequestMetaAtStart: {},
-            dataRequestToken: Symbol('join request'),
-          },
-        ],
-      } as unknown as VectorLayerDescriptor,
-      source: {
-        getMaxZoom: () => {
-          return 24;
-        },
-        getMinZoom: () => {
-          return 0;
-        },
-      } as unknown as IVectorSource,
+  describe('joins', () => {
+    const joinDataRequestId = 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2';
+    const mockJoin = {
+      hasCompleteConfig: () => {
+        return true;
+      },
+      getSourceDataRequestId: () => {
+        return joinDataRequestId;
+      },
+      getRightJoinSource: () => {
+        return {} as unknown as IJoinSource;
+      },
+    } as unknown as InnerJoin;
+
+    test('should be false when layer is not visible', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        joins: [mockJoin],
+        layerDescriptor: {
+          visible: false,
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(false);
+    });
+
+    test('should be true when tiles are loaded but join is loading', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        joins: [mockJoin],
+        layerDescriptor: {
+          __areTilesLoaded: true,
+          __dataRequests: [
+            sourceDataRequestDescriptor,
+            {
+              dataId: joinDataRequestId,
+              dataRequestMetaAtStart: {},
+              dataRequestToken: Symbol('join request'),
+            },
+          ],
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(true);
     });
-    expect(layer.isLayerLoading(1)).toBe(true);
-  });
 
-  test('should be false when tiles are loaded and joins are loaded', () => {
-    const layer = new MvtVectorLayer({
-      customIcons: [],
-      joins: [
-        {
-          hasCompleteConfig: () => {
-            return true;
-          },
-          getSourceDataRequestId: () => {
-            return 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2';
-          },
-          getRightJoinSource: () => {
-            return {} as unknown as IJoinSource;
-          },
-        } as unknown as InnerJoin,
-      ],
-      layerDescriptor: {
-        __areTilesLoaded: true,
-        __dataRequests: [
-          sourceDataRequestDescriptor,
-          {
-            data: {},
-            dataId: 'join_source_a0b0da65-5e1a-4967-9dbe-74f24391afe2',
-            dataRequestMeta: {},
-            dataRequestMetaAtStart: undefined,
-            dataRequestToken: undefined,
-          },
-        ],
-      } as unknown as VectorLayerDescriptor,
-      source: {
-        getMaxZoom: () => {
-          return 24;
-        },
-        getMinZoom: () => {
-          return 0;
-        },
-      } as unknown as IVectorSource,
+    test('should be false when tiles are loaded and joins are loaded', () => {
+      const layer = new MvtVectorLayer({
+        customIcons: [],
+        joins: [mockJoin],
+        layerDescriptor: {
+          __areTilesLoaded: true,
+          __dataRequests: [
+            sourceDataRequestDescriptor,
+            {
+              data: {},
+              dataId: joinDataRequestId,
+              dataRequestMeta: {},
+              dataRequestMetaAtStart: undefined,
+              dataRequestToken: undefined,
+            },
+          ],
+        } as unknown as VectorLayerDescriptor,
+        source: mockSource,
+      });
+      expect(layer.isLayerLoading(1)).toBe(false);
     });
-    expect(layer.isLayerLoading(1)).toBe(false);
   });
 });
diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx
index 099edd9b9e8a3..fa0e91258f8d2 100644
--- a/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx
+++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/mvt_vector_layer/mvt_vector_layer.tsx
@@ -75,6 +75,10 @@ export class MvtVectorLayer extends AbstractVectorLayer {
   }
 
   isLayerLoading(zoom: number) {
+    if (!this.isVisible() || !this.showAtZoomLevel(zoom)) {
+      return false;
+    }
+
     const isSourceLoading = super.isLayerLoading(zoom);
     return isSourceLoading ? true : this._isLoadingJoins();
   }

From 5e661d0b1f9c1f1b416caa50d5d1c81547411aac Mon Sep 17 00:00:00 2001
From: Jon <jon@elastic.co>
Date: Fri, 10 Nov 2023 09:36:39 -0600
Subject: [PATCH 096/147] [docs/ci] Update list of available CI related labels
 (#170907)

---
 dev_docs/tutorials/ci.mdx | 70 +++++++++++++++++++++++++++++++++------
 1 file changed, 59 insertions(+), 11 deletions(-)

diff --git a/dev_docs/tutorials/ci.mdx b/dev_docs/tutorials/ci.mdx
index a332d7e616e6c..2234143c32664 100644
--- a/dev_docs/tutorials/ci.mdx
+++ b/dev_docs/tutorials/ci.mdx
@@ -3,7 +3,7 @@ id: kibDevTutorialCI
 slug: /kibana-dev-docs/tutorials/ci
 title: CI
 description: CI
-date: 2022-02-03
+date: 2023-11-08
 tags: ['kibana', 'onboarding', 'dev', 'ci']
 ---
 
@@ -29,28 +29,76 @@ Build documentation from the root `docs` folder.
 
 ### Labels
 
-Labels can be added to a pull request to run conditional pipelines.
+Labels can be added to a pull request to run conditional pipelines.  Build artifacts will be available on the "Artifacts" tab of the "Build Kibana Distribution and Plugins" step.
+
+#### `ci:all-cypress-suites`
+
+Some Cypress test suites are only run when code changes are made in certain files, typically files with overlapping test coverage.  Adding this label will cause all Cypress tests to run.
+
+#### `ci:build-all-platforms`
+
+Build Windows, macOS, and Linux archives.
+
+#### `ci:build-canvas-shareable-runtime`
+
+Build the Canvas shareable runtime and include it in the distribution.
+
+#### `ci:build-cdn-assets`
+
+Build an archive that can be used to serve Kibana's static assets.
+
+#### `ci:build-cloud-image`
+
+Build cloud Docker images that can be used for testing deployments on Elastic Cloud.
+
+#### `ci:build-os-packages`
+
+Build Docker images, and Debian and RPM packages.
+
+#### `ci:build-serverless-image`
+
+Build serverless Docker images that can be used for testing deployments on Elastic Cloud.
+
+#### `ci:build-storybooks`
+
+Build and upload storybooks.
+
+#### `ci:build-webpack-bundle-analyzer`
+
+Build and upload a bundle report generated by `webpack-bundle-analyzer`.
 
 #### `ci:cloud-deploy`
 
-Create or update a deployment on Elastic Cloud.
+Create or update a deployment on Elastic Cloud production.
+
+#### `ci:cloud-persist-deployment`
+
+Prevents an existing deployment from being shutdown due to inactivity.
 
 #### `ci:cloud-redeploy`
 
 Create a new deployment on Elastic Cloud.  Previous deployments linked to a pull request will be shutdown and data will not be preserved.
 
-#### `ci:build-all-platforms`
+#### `ci:collect-apm`
 
-Build Windows, macOS, and Linux archives.  Artifacts will be available on the "Artifacts" tab of the "Build Kibana Distribution and Plugins" step.
+Collect APM metrics, available for viewing on the Kibana CI APM cluster.
 
-#### `ci:build-os-packages`
+#### `ci:no-auto-commit`
 
-Build Docker images, and Debian and RPM packages.  Artifacts will be available on the "Artifacts" tab of the "Build Kibana Distribution and Plugins" step.
+Skip auto-committing changed files.
 
-#### `ci:build-cloud-image`
+#### `ci:project-deploy-elasticsearch`
 
-Build Docker images that can be used for testing deployments on Elastic Cloud in the CFT region (gcp-us-west2).  Artifacts will be available on the "Artifacts" tab of the "Build Kibana Distribution and Plugins" step.
+Create or update a serverless Elasticsearch project on Elastic Cloud QA.
 
-#### `ci:all-cypress-suites`
+#### `ci:project-deploy-observability`
+
+Create or update a serverless Observability project on Elastic Cloud QA.
+
+#### `ci:project-deploy-security`
+
+Create or update a serverless Security project on Elastic Cloud QA.
+
+#### `ci:project-persist-deployment`
 
-By default, Cypress test suites are only run when code changes are made in certain files, typically files with overlapping test coverage.  Adding this label will cause all Cypress tests to run.
+Prevents an existing deployment from being shutdown due to inactivity.

From dd2fda271187f718def78002516861736dc48cf7 Mon Sep 17 00:00:00 2001
From: Kyle Pollich <kyle.pollich@elastic.co>
Date: Fri, 10 Nov 2023 11:01:36 -0500
Subject: [PATCH 097/147] [Fleet] Append space ID to security solution tag
 (#170789)

## Summary

Fixes https://github.com/elastic/kibana/issues/166798

Appends the current space ID to the ID of the security solution tag.

Note: If there are integrations suffering from the above bug (might be
"stuck" in `installing` status, showing concurrent installation errors,
etc), they should be reinstalled via the API in their corresponding
space, e.g.

```
# In Kibana dev tools for the space in which the integration is installed
POST kbn:/api/fleet/epm/packages/cisco_asa/2.27.1
{
  "force": true
}
```

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../epm/kibana/assets/tag_assets.test.ts      | 149 ++++++++++++------
 .../services/epm/kibana/assets/tag_assets.ts  |   8 +-
 2 files changed, 106 insertions(+), 51 deletions(-)

diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.test.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.test.ts
index 113866017f24b..f3d59c9607a38 100644
--- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.test.ts
+++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.test.ts
@@ -688,55 +688,108 @@ describe('tagKibanaAssets', () => {
     );
   });
 
-  it('should respect SecuritySolution tags', async () => {
-    savedObjectTagClient.get.mockRejectedValue(new Error('not found'));
-    savedObjectTagClient.create.mockImplementation(({ name }: { name: string }) =>
-      Promise.resolve({ id: name.toLowerCase(), name })
-    );
-    const kibanaAssets = {
-      dashboard: [
-        { id: 'dashboard1', type: 'dashboard' },
-        { id: 'dashboard2', type: 'dashboard' },
-        { id: 'search_id1', type: 'search' },
-        { id: 'search_id2', type: 'search' },
-      ],
-    } as any;
-    const assetTags = [
-      {
-        text: 'Security Solution',
-        asset_types: ['dashboard'],
-      },
-    ];
-    await tagKibanaAssets({
-      savedObjectTagAssignmentService,
-      savedObjectTagClient,
-      kibanaAssets,
-      pkgTitle: 'TestPackage',
-      pkgName: 'test-pkg',
-      spaceId: 'default',
-      importedAssets: [],
-      assetTags,
+  describe('Security Solution tag', () => {
+    it('creates tag in default space', async () => {
+      savedObjectTagClient.get.mockRejectedValue(new Error('not found'));
+      savedObjectTagClient.create.mockImplementation(({ name }: { name: string }) =>
+        Promise.resolve({ id: name.toLowerCase(), name })
+      );
+      const kibanaAssets = {
+        dashboard: [
+          { id: 'dashboard1', type: 'dashboard' },
+          { id: 'dashboard2', type: 'dashboard' },
+          { id: 'search_id1', type: 'search' },
+          { id: 'search_id2', type: 'search' },
+        ],
+      } as any;
+      const assetTags = [
+        {
+          text: 'Security Solution',
+          asset_types: ['dashboard'],
+        },
+      ];
+      await tagKibanaAssets({
+        savedObjectTagAssignmentService,
+        savedObjectTagClient,
+        kibanaAssets,
+        pkgTitle: 'TestPackage',
+        pkgName: 'test-pkg',
+        spaceId: 'default',
+        importedAssets: [],
+        assetTags,
+      });
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(
+        managedTagPayloadArg1,
+        managedTagPayloadArg2
+      );
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(
+        {
+          color: '#4DD2CA',
+          description: '',
+          name: 'TestPackage',
+        },
+        { id: 'fleet-pkg-test-pkg-default', overwrite: true, refresh: false }
+      );
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(
+        {
+          color: expect.any(String),
+          description: 'Tag defined in package-spec',
+          name: 'Security Solution',
+        },
+        { id: 'security-solution-default', overwrite: true, refresh: false }
+      );
+    });
+
+    it('creates tag in non-default space', async () => {
+      savedObjectTagClient.get.mockRejectedValue(new Error('not found'));
+      savedObjectTagClient.create.mockImplementation(({ name }: { name: string }) =>
+        Promise.resolve({ id: name.toLowerCase(), name })
+      );
+      const kibanaAssets = {
+        dashboard: [
+          { id: 'dashboard1', type: 'dashboard' },
+          { id: 'dashboard2', type: 'dashboard' },
+          { id: 'search_id1', type: 'search' },
+          { id: 'search_id2', type: 'search' },
+        ],
+      } as any;
+      const assetTags = [
+        {
+          text: 'Security Solution',
+          asset_types: ['dashboard'],
+        },
+      ];
+      await tagKibanaAssets({
+        savedObjectTagAssignmentService,
+        savedObjectTagClient,
+        kibanaAssets,
+        pkgTitle: 'TestPackage',
+        pkgName: 'test-pkg',
+        spaceId: 'my-secondary-space',
+        importedAssets: [],
+        assetTags,
+      });
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(managedTagPayloadArg1, {
+        ...managedTagPayloadArg2,
+        id: 'fleet-managed-my-secondary-space',
+      });
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(
+        {
+          color: expect.any(String),
+          description: '',
+          name: 'TestPackage',
+        },
+        { id: 'fleet-pkg-test-pkg-my-secondary-space', overwrite: true, refresh: false }
+      );
+      expect(savedObjectTagClient.create).toHaveBeenCalledWith(
+        {
+          color: expect.anything(),
+          description: 'Tag defined in package-spec',
+          name: 'Security Solution',
+        },
+        { id: 'security-solution-my-secondary-space', overwrite: true, refresh: false }
+      );
     });
-    expect(savedObjectTagClient.create).toHaveBeenCalledWith(
-      managedTagPayloadArg1,
-      managedTagPayloadArg2
-    );
-    expect(savedObjectTagClient.create).toHaveBeenCalledWith(
-      {
-        color: '#4DD2CA',
-        description: '',
-        name: 'TestPackage',
-      },
-      { id: 'fleet-pkg-test-pkg-default', overwrite: true, refresh: false }
-    );
-    expect(savedObjectTagClient.create).toHaveBeenCalledWith(
-      {
-        color: expect.any(String),
-        description: 'Tag defined in package-spec',
-        name: 'Security Solution',
-      },
-      { id: 'security-solution-default', overwrite: true, refresh: false }
-    );
   });
 
   it('should only call savedObjectTagClient.create for basic tags if there are no assetTags to assign', async () => {
diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.ts
index 86d39a5582607..5e7d4477bbbd3 100644
--- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.ts
+++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/tag_assets.ts
@@ -37,7 +37,7 @@ const PACKAGE_TAG_COLOR = '#4DD2CA';
 const MANAGED_TAG_NAME = 'Managed';
 const LEGACY_MANAGED_TAG_ID = 'managed';
 const SECURITY_SOLUTION_TAG_NAME = 'Security Solution';
-const SECURITY_SOLUTION_TAG_ID = 'security-solution-default';
+const SECURITY_SOLUTION_TAG_ID_BASE = 'security-solution';
 
 // the tag service only accepts 6-digits hex colors
 const TAG_COLORS = [
@@ -65,8 +65,10 @@ const getLegacyPackageTagId = (pkgName: string) => pkgName;
   In that case return id `security-solution-default`
 */
 export const getPackageSpecTagId = (spaceId: string, pkgName: string, tagName: string) => {
-  if (tagName.toLowerCase() === SECURITY_SOLUTION_TAG_NAME.toLowerCase())
-    return SECURITY_SOLUTION_TAG_ID;
+  if (tagName.toLowerCase() === SECURITY_SOLUTION_TAG_NAME.toLowerCase()) {
+    return `${SECURITY_SOLUTION_TAG_ID_BASE}-${spaceId}`;
+  }
+
   // UUID v5 needs a namespace (uuid.DNS) to generate a predictable uuid
   const uniqueId = uuidv5(`${tagName.toLowerCase()}`, uuidv5.DNS);
   return `fleet-shared-tag-${pkgName}-${uniqueId}-${spaceId}`;

From cd909f03b1d71da93041a0b5c184243aa6506dea Mon Sep 17 00:00:00 2001
From: Kyle Pollich <kyle.pollich@elastic.co>
Date: Fri, 10 Nov 2023 11:08:09 -0500
Subject: [PATCH 098/147] [Fleet] Fix inability to upgrade agents from 8.10.4
 -> 8.11 (#170974)

## Summary

Closes https://github.com/elastic/kibana/issues/169825

This PR adds logic to Fleet's `/api/agents/available_versions` endpoint
that will ensure we periodically try to fetch from the live product
versions API at https://www.elastic.co/api/product_versions to make sure
we have eventual consistency in the list of available agent versions.

Currently, Kibana relies entirely on a static file generated at build
time from the above API. If the API isn't up-to-date with the latest
agent version (e.g. kibana completed its build before agent), then that
build of Kibana will never "see" the corresponding build of agent.

This API endpoint is cached for two hours to prevent overfetching from
this external API, and from constantly going out to disk to read from
the agent versions file.

## To do
- [x] Update unit tests
- [x] Consider airgapped environments

## On airgapped environments

In airgapped environments, we're going to try and fetch from the
`product_versions` API and that request is going to fail. What we've
seen happen in some environments is that these requests do not "fail
fast" and instead wait until a network timeout is reached.

I'd love to avoid that timeout case and somehow detect airgapped
environments and avoid calling this API at all. However, we don't have a
great deterministic way to know if someone is in an airgapped
environment. The best guess I think we can make is by checking whether
`xpack.fleet.registryUrl` is set to something other than
`https://epr.elastic.co`. Curious if anyone has thoughts on this.

## Screenshots


![image](https://github.com/elastic/kibana/assets/6766512/0906817c-0098-4b67-8791-d06730f450f6)


![image](https://github.com/elastic/kibana/assets/6766512/59e7c132-f568-470f-b48d-53761ddc2fde)


![image](https://github.com/elastic/kibana/assets/6766512/986372df-a90f-48c3-ae24-c3012e8f7730)

## To test

1. Set up Fleet Server + ES + Kibana
2. Spin up a Fleet Server running Agent v8.11.0
3. Enroll an agent running v8.10.4 (I used multipass)
4. Verify the agent can be upgraded from the UI

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../fleet/server/routes/agent/handlers.ts     |   3 +-
 .../fleet/server/services/agents/crud.test.ts |   6 +
 .../server/services/agents/versions.test.ts   | 110 ++++++++++++++-
 .../fleet/server/services/agents/versions.ts  | 125 +++++++++++++-----
 4 files changed, 203 insertions(+), 41 deletions(-)

diff --git a/x-pack/plugins/fleet/server/routes/agent/handlers.ts b/x-pack/plugins/fleet/server/routes/agent/handlers.ts
index 2f344b0f3fb15..81a01de6b5fde 100644
--- a/x-pack/plugins/fleet/server/routes/agent/handlers.ts
+++ b/x-pack/plugins/fleet/server/routes/agent/handlers.ts
@@ -354,8 +354,9 @@ function isStringArray(arr: unknown | string[]): arr is string[] {
 
 export const getAvailableVersionsHandler: RequestHandler = async (context, request, response) => {
   try {
-    const availableVersions = await AgentService.getAvailableVersions({});
+    const availableVersions = await AgentService.getAvailableVersions();
     const body: GetAvailableVersionsResponse = { items: availableVersions };
+
     return response.ok({ body });
   } catch (error) {
     return defaultFleetErrorHandler({ error, response });
diff --git a/x-pack/plugins/fleet/server/services/agents/crud.test.ts b/x-pack/plugins/fleet/server/services/agents/crud.test.ts
index 47bb8028fffcd..e542881fe13f3 100644
--- a/x-pack/plugins/fleet/server/services/agents/crud.test.ts
+++ b/x-pack/plugins/fleet/server/services/agents/crud.test.ts
@@ -9,7 +9,9 @@ import type { ElasticsearchClient } from '@kbn/core/server';
 import { elasticsearchServiceMock, savedObjectsClientMock } from '@kbn/core/server/mocks';
 
 import { AGENTS_INDEX } from '../../constants';
+import { createAppContextStartContractMock } from '../../mocks';
 import type { Agent } from '../../types';
+import { appContextService } from '../app_context';
 
 import { auditLoggingService } from '../audit_logging';
 
@@ -30,6 +32,7 @@ const mockedAuditLoggingService = auditLoggingService as jest.Mocked<typeof audi
 
 describe('Agents CRUD test', () => {
   const soClientMock = savedObjectsClientMock.create();
+  let mockContract: ReturnType<typeof createAppContextStartContractMock>;
   let esClientMock: ElasticsearchClient;
   let searchMock: jest.Mock;
 
@@ -41,6 +44,9 @@ describe('Agents CRUD test', () => {
       openPointInTime: jest.fn().mockResolvedValue({ id: '1' }),
       closePointInTime: jest.fn(),
     } as unknown as ElasticsearchClient;
+
+    mockContract = createAppContextStartContractMock();
+    appContextService.start(mockContract);
   });
 
   function getEsResponse(ids: string[], total: number) {
diff --git a/x-pack/plugins/fleet/server/services/agents/versions.test.ts b/x-pack/plugins/fleet/server/services/agents/versions.test.ts
index 92e30141c006a..513fba910705d 100644
--- a/x-pack/plugins/fleet/server/services/agents/versions.test.ts
+++ b/x-pack/plugins/fleet/server/services/agents/versions.test.ts
@@ -7,6 +7,8 @@
 
 import { readFile } from 'fs/promises';
 
+import fetch from 'node-fetch';
+
 let mockKibanaVersion = '300.0.0';
 let mockConfig = {};
 jest.mock('../app_context', () => {
@@ -21,16 +23,30 @@ jest.mock('../app_context', () => {
 });
 
 jest.mock('fs/promises');
+jest.mock('node-fetch');
 
 const mockedReadFile = readFile as jest.MockedFunction<typeof readFile>;
+const mockedFetch = fetch as jest.MockedFunction<typeof fetch>;
+
+const emptyResponse = {
+  status: 200,
+  text: jest.fn().mockResolvedValue(JSON.stringify({})),
+} as any;
+
 import { getAvailableVersions } from './versions';
 
 describe('getAvailableVersions', () => {
+  beforeEach(() => {
+    mockedReadFile.mockReset();
+    mockedFetch.mockReset();
+  });
+
   it('should return available version and filter version < 7.17', async () => {
     mockKibanaVersion = '300.0.0';
     mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce(emptyResponse);
 
-    const res = await getAvailableVersions({ cached: false, includeCurrentVersion: true });
+    const res = await getAvailableVersions({ includeCurrentVersion: true, ignoreCache: true });
 
     expect(res).toEqual(['300.0.0', '8.1.0', '8.0.0', '7.17.0']);
   });
@@ -38,8 +54,9 @@ describe('getAvailableVersions', () => {
   it('should not strip -SNAPSHOT from kibana version', async () => {
     mockKibanaVersion = '300.0.0-SNAPSHOT';
     mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce(emptyResponse);
 
-    const res = await getAvailableVersions({ cached: false, includeCurrentVersion: true });
+    const res = await getAvailableVersions({ includeCurrentVersion: true, ignoreCache: true });
     expect(res).toEqual(['300.0.0-SNAPSHOT', '8.1.0', '8.0.0', '7.17.0']);
   });
 
@@ -51,8 +68,9 @@ describe('getAvailableVersions', () => {
       },
     };
     mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce(emptyResponse);
 
-    const res = await getAvailableVersions({ cached: false });
+    const res = await getAvailableVersions({ ignoreCache: true });
 
     expect(res).toEqual(['8.1.0', '8.0.0', '7.17.0']);
   });
@@ -60,8 +78,9 @@ describe('getAvailableVersions', () => {
   it('should not include the current version if includeCurrentVersion = false', async () => {
     mockKibanaVersion = '300.0.0-SNAPSHOT';
     mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce(emptyResponse);
 
-    const res = await getAvailableVersions({ cached: false, includeCurrentVersion: false });
+    const res = await getAvailableVersions({ includeCurrentVersion: false, ignoreCache: true });
 
     expect(res).toEqual(['8.1.0', '8.0.0', '7.17.0']);
   });
@@ -74,9 +93,90 @@ describe('getAvailableVersions', () => {
       },
     };
     mockedReadFile.mockRejectedValue({ code: 'ENOENT' });
+    mockedFetch.mockResolvedValueOnce(emptyResponse);
 
-    const res = await getAvailableVersions({ cached: false });
+    const res = await getAvailableVersions({ ignoreCache: true });
 
     expect(res).toEqual(['300.0.0']);
   });
+
+  it('should include versions returned from product_versions API', async () => {
+    mockKibanaVersion = '300.0.0';
+    mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce({
+      status: 200,
+      text: jest.fn().mockResolvedValue(
+        JSON.stringify([
+          [
+            {
+              title: 'Elastic Agent 8.1.0',
+              version_number: '8.1.0',
+            },
+            {
+              title: 'Elastic Agent 8.10.0',
+              version_number: '8.10.0',
+            },
+            {
+              title: 'Elastic Agent 8.9.2',
+              version_number: '8.9.2',
+            },
+            ,
+          ],
+        ])
+      ),
+    } as any);
+
+    const res = await getAvailableVersions({ ignoreCache: true });
+
+    // Should sort, uniquify and filter out versions < 7.17
+    expect(res).toEqual(['8.10.0', '8.9.2', '8.1.0', '8.0.0', '7.17.0']);
+  });
+
+  it('should cache results', async () => {
+    mockKibanaVersion = '300.0.0';
+    mockedReadFile.mockResolvedValue(`["8.1.0", "8.0.0", "7.17.0", "7.16.0"]`);
+    mockedFetch.mockResolvedValueOnce({
+      status: 200,
+      text: jest.fn().mockResolvedValue(
+        JSON.stringify([
+          [
+            {
+              title: 'Elastic Agent 8.1.0',
+              version_number: '8.1.0',
+            },
+            {
+              title: 'Elastic Agent 8.10.0',
+              version_number: '8.10.0',
+            },
+            {
+              title: 'Elastic Agent 8.9.2',
+              version_number: '8.9.2',
+            },
+            ,
+          ],
+        ])
+      ),
+    } as any);
+
+    await getAvailableVersions();
+
+    mockedFetch.mockResolvedValueOnce({
+      status: 200,
+      text: jest.fn().mockResolvedValue(
+        JSON.stringify([
+          [
+            {
+              title: 'Elastic Agent 300.0.0',
+              version_number: '300.0.0',
+            },
+          ],
+        ])
+      ),
+    } as any);
+
+    const res2 = await getAvailableVersions();
+
+    expect(mockedFetch).toBeCalledTimes(1);
+    expect(res2).not.toContain('300.0.0');
+  });
 });
diff --git a/x-pack/plugins/fleet/server/services/agents/versions.ts b/x-pack/plugins/fleet/server/services/agents/versions.ts
index 7a1b82bb72359..8f31d3f12b344 100644
--- a/x-pack/plugins/fleet/server/services/agents/versions.ts
+++ b/x-pack/plugins/fleet/server/services/agents/versions.ts
@@ -8,18 +8,27 @@
 import { readFile } from 'fs/promises';
 import Path from 'path';
 
-import { REPO_ROOT } from '@kbn/repo-info';
+import fetch from 'node-fetch';
+import pRetry from 'p-retry';
 import { uniq } from 'lodash';
 import semverGte from 'semver/functions/gte';
 import semverGt from 'semver/functions/gt';
 import semverCoerce from 'semver/functions/coerce';
 
+import { REPO_ROOT } from '@kbn/repo-info';
+
 import { appContextService } from '..';
 
 const MINIMUM_SUPPORTED_VERSION = '7.17.0';
 const AGENT_VERSION_BUILD_FILE = 'x-pack/plugins/fleet/target/agent_versions_list.json';
 
-let availableVersions: string[] | undefined;
+// Endpoint maintained by the web-team and hosted on the elastic website
+const PRODUCT_VERSIONS_URL = 'https://www.elastic.co/api/product_versions';
+
+// Cache available versions in memory for 1 hour
+const CACHE_DURATION = 1000 * 60 * 60;
+let CACHED_AVAILABLE_VERSIONS: string[] | undefined;
+let LAST_FETCHED: number | undefined;
 
 export const getLatestAvailableVersion = async (
   includeCurrentVersion?: boolean
@@ -30,54 +39,100 @@ export const getLatestAvailableVersion = async (
 };
 
 export const getAvailableVersions = async ({
-  cached = true,
   includeCurrentVersion,
+  ignoreCache = false, // This is only here to allow us to ignore the cache in tests
 }: {
-  cached?: boolean;
   includeCurrentVersion?: boolean;
-}): Promise<string[]> => {
-  // Use cached value to avoid reading from disk each time
-  if (cached && availableVersions) {
-    return availableVersions;
+  ignoreCache?: boolean;
+} = {}): Promise<string[]> => {
+  const logger = appContextService.getLogger();
+
+  if (LAST_FETCHED && !ignoreCache) {
+    const msSinceLastFetched = Date.now() - (LAST_FETCHED || 0);
+
+    if (msSinceLastFetched < CACHE_DURATION && CACHED_AVAILABLE_VERSIONS !== undefined) {
+      logger.debug(`Cache is valid, returning cached available versions`);
+
+      return CACHED_AVAILABLE_VERSIONS;
+    }
+
+    logger.debug('Cache has expired, fetching available versions from disk + API');
   }
 
-  // Read a static file generated at build time
   const config = appContextService.getConfig();
-  let versionsToDisplay: string[] = [];
-
   const kibanaVersion = appContextService.getKibanaVersion();
 
+  let availableVersions: string[] = [];
+
+  // First, grab available versions from the static file that's placed on disk at build time
   try {
     const file = await readFile(Path.join(REPO_ROOT, AGENT_VERSION_BUILD_FILE), 'utf-8');
-
-    // Exclude versions older than MINIMUM_SUPPORTED_VERSION and pre-release versions (SNAPSHOT, rc..)
-    // De-dup and sort in descending order
     const data: string[] = JSON.parse(file);
 
-    const versions = data
-      .map((item: any) => semverCoerce(item)?.version || '')
-      .filter((v: any) => semverGte(v, MINIMUM_SUPPORTED_VERSION))
-      .sort((a: any, b: any) => (semverGt(a, b) ? -1 : 1));
-    versionsToDisplay = uniq(versions) as string[];
+    availableVersions = [...availableVersions, ...data];
+  } catch (error) {
+    // If we can't read from the file, the error is non-blocking. We'll try to source data from the
+    // product versions API later.
+    logger.debug(`Error reading file ${AGENT_VERSION_BUILD_FILE}: ${error.message}`);
+  }
+
+  // Next, fetch from the product versions API. This API call is aggressively cached, so we won't
+  // fetch from the live API more than `TIME_BETWEEN_FETCHES` milliseconds.
+  const apiVersions = await fetchAgentVersionsFromApi();
+
+  // Coerce each version to a semver object and compare to our `MINIMUM_SUPPORTED_VERSION` - we
+  // only want support versions in the final result. We'll also sort by newest version first.
+  availableVersions = uniq([...availableVersions, ...apiVersions])
+    .map((item: any) => semverCoerce(item)?.version || '')
+    .filter((v: any) => semverGte(v, MINIMUM_SUPPORTED_VERSION))
+    .sort((a: any, b: any) => (semverGt(a, b) ? -1 : 1));
+
+  // If the current stack version isn't included in the list of available versions, add it
+  // at the front of the array
+  const hasCurrentVersion = availableVersions.some((v) => v === kibanaVersion);
+  if (includeCurrentVersion && !hasCurrentVersion) {
+    availableVersions = [kibanaVersion, ...availableVersions];
+  }
 
-    const appendCurrentVersion = includeCurrentVersion;
+  // Allow upgrading to the current stack version if this override flag is provided via `kibana.yml`.
+  // This is useful for development purposes.
+  if (availableVersions.length === 0 && !config?.internal?.onlyAllowAgentUpgradeToKnownVersions) {
+    availableVersions = [kibanaVersion];
+  }
 
-    if (appendCurrentVersion) {
-      // Add current version if not already present
-      const hasCurrentVersion = versionsToDisplay.some((v) => v === kibanaVersion);
+  // Don't prime the cache in tests
+  if (!ignoreCache) {
+    CACHED_AVAILABLE_VERSIONS = availableVersions;
+    LAST_FETCHED = Date.now();
+  }
 
-      versionsToDisplay = !hasCurrentVersion
-        ? [kibanaVersion].concat(versionsToDisplay)
-        : versionsToDisplay;
-    }
+  return availableVersions;
+};
 
-    availableVersions = versionsToDisplay;
+async function fetchAgentVersionsFromApi() {
+  const logger = appContextService.getLogger();
 
-    return availableVersions;
-  } catch (e) {
-    if (e.code === 'ENOENT') {
-      return config?.internal?.onlyAllowAgentUpgradeToKnownVersions ? [] : [kibanaVersion];
-    }
-    throw e;
+  const options = {
+    headers: {
+      'Content-Type': 'application/json',
+    },
+  };
+
+  const response = await pRetry(() => fetch(PRODUCT_VERSIONS_URL, options), { retries: 1 });
+  const rawBody = await response.text();
+
+  // We need to handle non-200 responses gracefully here to support airgapped environments where
+  // Kibana doesn't have internet access to query this API
+  if (response.status >= 400) {
+    logger.debug(`Status code ${response.status} received from versions API: ${rawBody}`);
+    return [];
   }
-};
+
+  const jsonBody = JSON.parse(rawBody);
+
+  const versions: string[] = (jsonBody.length ? jsonBody[0] : [])
+    .filter((item: any) => item?.title?.includes('Elastic Agent'))
+    .map((item: any) => item?.version_number);
+
+  return versions;
+}

From 870cb9f483fa9eaf0303d478f4c2395ee0b3067a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yulia=20=C4=8Cech?=
 <6585477+yuliacech@users.noreply.github.com>
Date: Fri, 10 Nov 2023 17:16:57 +0100
Subject: [PATCH 099/147] [Index Management] Add ingest pipelines link to the
 index details page (#170906)

## Summary

Fixes https://github.com/elastic/kibana/issues/165107
This PR adds a function to the extensions service in Index Management to
register additional content that is rendered in the bottom right corner
under the mappings docs link. This PR also adds a panel with the link to
the ingest pipelines search docs for the serverless search project.

### Screenshots
<img width="1398" alt="Screenshot 2023-11-08 at 21 51 28"
src="https://github.com/elastic/kibana/assets/6585477/f6aeb5f6-1844-4fde-85d4-6aafe58484f9">



### Checklist


- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 x-pack/plugins/index_management/README.md     |   5 +-
 .../index_details_page.test.tsx               |  22 ++++
 .../details_page/details_page_content.tsx     |   2 +-
 .../details_page/details_page_mappings.tsx    | 106 ++--------------
 .../details_page_mappings_content.tsx         | 119 ++++++++++++++++++
 .../plugins/index_management/public/index.ts  |   2 +-
 .../plugins/index_management/public/plugin.ts |   6 +-
 .../services/extensions_service.mock.ts       |   1 +
 .../public/services/extensions_service.ts     |  33 ++++-
 .../index_management/public/services/index.ts |   2 +-
 .../plugins/index_management/public/types.ts  |   4 +
 x-pack/plugins/serverless_search/kibana.jsonc |   4 +-
 .../components/index_mappings_docs_link.tsx   |  68 ++++++++++
 .../serverless_search/public/plugin.ts        |   4 +-
 .../plugins/serverless_search/public/types.ts |   2 +
 .../plugins/serverless_search/tsconfig.json   |   1 +
 16 files changed, 272 insertions(+), 109 deletions(-)
 create mode 100644 x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings_content.tsx
 create mode 100644 x-pack/plugins/serverless_search/public/application/components/index_mappings_docs_link.tsx

diff --git a/x-pack/plugins/index_management/README.md b/x-pack/plugins/index_management/README.md
index 8673447fc577c..867ccbd74335c 100644
--- a/x-pack/plugins/index_management/README.md
+++ b/x-pack/plugins/index_management/README.md
@@ -34,14 +34,15 @@ interface IndexDetailsTab {
 
 An example of adding an ILM tab can be found in [this file](https://github.com/elastic/kibana/blob/main/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx#L250).
 
-- `setIndexOverviewContent(content: IndexOverviewContent)`: replaces the default content in the overview tab (code block describing adding documents to the index) with the custom content. The custom content has the following interface: 
+- `setIndexOverviewContent(content: IndexContent)`: replaces the default content in the overview tab (code block describing adding documents to the index) with the custom content. The custom content has the following interface: 
 ```ts
-interface IndexOverviewContent {
+interface IndexContent {
   renderContent: (args: {
     index: Index;
     getUrlForApp: ApplicationStart['getUrlForApp'];
   }) => ReturnType<FunctionComponent>;
 ```
+- `setIndexMappingsContent(content: IndexContent)`: adds content to the mappings tab of the index details page. The content is displayed in the right bottom corner, below the mappings docs link. 
 
 ## Indices tab
 
diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx
index afdfa15c917aa..24938682ac519 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_details_page/index_details_page.test.tsx
@@ -501,6 +501,28 @@ describe('<IndexDetailsPage />', () => {
         expect(httpSetup.get).toHaveBeenCalledTimes(numberOfRequests + 1);
       });
     });
+
+    it('renders the content set via the extensions service', async () => {
+      const mappingsContent = 'test mappings extension';
+      await act(async () => {
+        testBed = await setup({
+          httpSetup,
+          dependencies: {
+            services: {
+              extensionsService: {
+                _indexMappingsContent: {
+                  renderContent: () => mappingsContent,
+                },
+              },
+            },
+          },
+        });
+      });
+      testBed.component.update();
+      await testBed.actions.clickIndexDetailsTab(IndexDetailsSection.Mappings);
+      const content = testBed.actions.getActiveTabContent();
+      expect(content).toContain(mappingsContent);
+    });
   });
 
   describe('Settings tab', () => {
diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_content.tsx b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_content.tsx
index 0360df733c945..adeadee6132c0 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_content.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_content.tsx
@@ -50,7 +50,7 @@ const defaultTabs: IndexDetailsTab[] = [
     name: (
       <FormattedMessage id="xpack.idxMgmt.indexDetails.mappingsTitle" defaultMessage="Mappings" />
     ),
-    renderTabContent: ({ index }) => <DetailsPageMappings indexName={index.name} />,
+    renderTabContent: ({ index }) => <DetailsPageMappings index={index} />,
     order: 20,
   },
   {
diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings.tsx b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings.tsx
index a83eebd395b1e..c6f74207c92d7 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings.tsx
@@ -6,27 +6,18 @@
  */
 
 import React, { FunctionComponent, useEffect } from 'react';
-import {
-  EuiButton,
-  EuiCodeBlock,
-  EuiFlexGroup,
-  EuiFlexItem,
-  EuiIcon,
-  EuiLink,
-  EuiPageTemplate,
-  EuiPanel,
-  EuiSpacer,
-  EuiText,
-  EuiTitle,
-} from '@elastic/eui';
-import { css } from '@emotion/react';
+import { EuiButton, EuiPageTemplate, EuiSpacer, EuiText } from '@elastic/eui';
+
 import { FormattedMessage } from '@kbn/i18n-react';
 import { SectionLoading } from '@kbn/es-ui-shared-plugin/public';
-import { useLoadIndexMappings, documentationService } from '../../../../services';
+
+import { DetailsPageMappingsContent } from './details_page_mappings_content';
+import { Index } from '../../../../../../common';
+import { useLoadIndexMappings } from '../../../../services';
 import { breadcrumbService, IndexManagementBreadcrumb } from '../../../../services/breadcrumbs';
 
-export const DetailsPageMappings: FunctionComponent<{ indexName: string }> = ({ indexName }) => {
-  const { isLoading, data, error, resendRequest } = useLoadIndexMappings(indexName);
+export const DetailsPageMappings: FunctionComponent<{ index: Index }> = ({ index }) => {
+  const { isLoading, data, error, resendRequest } = useLoadIndexMappings(index.name);
 
   useEffect(() => {
     breadcrumbService.setBreadcrumbs(IndexManagementBreadcrumb.indexDetailsMappings);
@@ -63,7 +54,7 @@ export const DetailsPageMappings: FunctionComponent<{ indexName: string }> = ({
                 id="xpack.idxMgmt.indexDetails.mappings.errorDescription"
                 defaultMessage="We encountered an error loading mappings for index {indexName}. Make sure that the index name in the URL is correct and try again."
                 values={{
-                  indexName,
+                  indexName: index.name,
                 }}
               />
             </EuiText>
@@ -86,82 +77,5 @@ export const DetailsPageMappings: FunctionComponent<{ indexName: string }> = ({
     );
   }
 
-  return (
-    // using "rowReverse" to keep docs links on the top of the mappings code block on smaller screen
-    <EuiFlexGroup
-      wrap
-      direction="rowReverse"
-      css={css`
-        height: 100%;
-      `}
-    >
-      <EuiFlexItem
-        grow={1}
-        css={css`
-          min-width: 400px;
-        `}
-      >
-        <EuiPanel grow={false} paddingSize="l">
-          <EuiFlexGroup alignItems="center" gutterSize="s">
-            <EuiFlexItem grow={false}>
-              <EuiIcon type="iInCircle" />
-            </EuiFlexItem>
-            <EuiFlexItem>
-              <EuiTitle size="xs">
-                <h2>
-                  <FormattedMessage
-                    id="xpack.idxMgmt.indexDetails.mappings.docsCardTitle"
-                    defaultMessage="About index mappings"
-                  />
-                </h2>
-              </EuiTitle>
-            </EuiFlexItem>
-          </EuiFlexGroup>
-          <EuiSpacer size="s" />
-          <EuiText>
-            <p>
-              <FormattedMessage
-                id="xpack.idxMgmt.indexDetails.mappings.docsCardDescription"
-                defaultMessage="Your documents are made up of a set of fields. Index mappings give each field a type
-              (such as keyword, number, or date) and additional subfields. These index mappings determine the functions
-              available in your relevance tuning and search experience."
-              />
-            </p>
-          </EuiText>
-          <EuiSpacer size="m" />
-          <EuiLink
-            data-test-subj="indexDetailsMappingsDocsLink"
-            href={documentationService.getMappingDocumentationLink()}
-            target="_blank"
-            external
-          >
-            <FormattedMessage
-              id="xpack.idxMgmt.indexDetails.mappings.docsCardLink"
-              defaultMessage="Learn more about mappings"
-            />
-          </EuiLink>
-        </EuiPanel>
-      </EuiFlexItem>
-
-      <EuiFlexItem
-        grow={3}
-        css={css`
-          min-width: 600px;
-        `}
-      >
-        <EuiPanel>
-          <EuiCodeBlock
-            language="json"
-            isCopyable
-            data-test-subj="indexDetailsMappingsCodeBlock"
-            css={css`
-              height: 100%;
-            `}
-          >
-            {JSON.stringify(data, null, 2)}
-          </EuiCodeBlock>
-        </EuiPanel>
-      </EuiFlexItem>
-    </EuiFlexGroup>
-  );
+  return <DetailsPageMappingsContent index={index} data={data} />;
 };
diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings_content.tsx b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings_content.tsx
new file mode 100644
index 0000000000000..40544bb18e1ff
--- /dev/null
+++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_mappings_content.tsx
@@ -0,0 +1,119 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React, { FunctionComponent } from 'react';
+import {
+  EuiCodeBlock,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiIcon,
+  EuiLink,
+  EuiPanel,
+  EuiSpacer,
+  EuiText,
+  EuiTitle,
+} from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { css } from '@emotion/react';
+
+import { Index } from '../../../../../../common';
+import { documentationService } from '../../../../services';
+import { useAppContext } from '../../../../app_context';
+
+export const DetailsPageMappingsContent: FunctionComponent<{ index: Index; data: any }> = ({
+  index,
+  data,
+}) => {
+  const {
+    services: { extensionsService },
+    core: { getUrlForApp },
+  } = useAppContext();
+  return (
+    // using "rowReverse" to keep docs links on the top of the mappings code block on smaller screen
+    <EuiFlexGroup
+      wrap
+      direction="rowReverse"
+      css={css`
+        height: 100%;
+      `}
+    >
+      <EuiFlexItem
+        grow={1}
+        css={css`
+          min-width: 400px;
+        `}
+      >
+        <EuiPanel grow={false} paddingSize="l">
+          <EuiFlexGroup alignItems="center" gutterSize="s">
+            <EuiFlexItem grow={false}>
+              <EuiIcon type="iInCircle" />
+            </EuiFlexItem>
+            <EuiFlexItem>
+              <EuiTitle size="xs">
+                <h2>
+                  <FormattedMessage
+                    id="xpack.idxMgmt.indexDetails.mappings.docsCardTitle"
+                    defaultMessage="About index mappings"
+                  />
+                </h2>
+              </EuiTitle>
+            </EuiFlexItem>
+          </EuiFlexGroup>
+          <EuiSpacer size="s" />
+          <EuiText>
+            <p>
+              <FormattedMessage
+                id="xpack.idxMgmt.indexDetails.mappings.docsCardDescription"
+                defaultMessage="Your documents are made up of a set of fields. Index mappings give each field a type
+              (such as keyword, number, or date) and additional subfields. These index mappings determine the functions
+              available in your relevance tuning and search experience."
+              />
+            </p>
+          </EuiText>
+          <EuiSpacer size="m" />
+          <EuiLink
+            data-test-subj="indexDetailsMappingsDocsLink"
+            href={documentationService.getMappingDocumentationLink()}
+            target="_blank"
+            external
+          >
+            <FormattedMessage
+              id="xpack.idxMgmt.indexDetails.mappings.docsCardLink"
+              defaultMessage="Learn more about mappings"
+            />
+          </EuiLink>
+        </EuiPanel>
+        {extensionsService.indexMappingsContent && (
+          <>
+            <EuiSpacer />
+            {extensionsService.indexMappingsContent.renderContent({ index, getUrlForApp })}
+          </>
+        )}
+      </EuiFlexItem>
+
+      <EuiFlexItem
+        grow={3}
+        css={css`
+          min-width: 600px;
+        `}
+      >
+        <EuiPanel>
+          <EuiCodeBlock
+            language="json"
+            isCopyable
+            data-test-subj="indexDetailsMappingsCodeBlock"
+            css={css`
+              height: 100%;
+            `}
+          >
+            {JSON.stringify(data, null, 2)}
+          </EuiCodeBlock>
+        </EuiPanel>
+      </EuiFlexItem>
+    </EuiFlexGroup>
+  );
+};
diff --git a/x-pack/plugins/index_management/public/index.ts b/x-pack/plugins/index_management/public/index.ts
index b8cde1fdf36e7..8fb836ba7ffd9 100644
--- a/x-pack/plugins/index_management/public/index.ts
+++ b/x-pack/plugins/index_management/public/index.ts
@@ -14,7 +14,7 @@ export const plugin = (ctx: PluginInitializerContext) => {
   return new IndexMgmtUIPlugin(ctx);
 };
 
-export type { IndexManagementPluginSetup } from './types';
+export type { IndexManagementPluginSetup, IndexManagementPluginStart } from './types';
 
 export { getIndexListUri, getTemplateDetailsLink } from './application/services/routing';
 
diff --git a/x-pack/plugins/index_management/public/plugin.ts b/x-pack/plugins/index_management/public/plugin.ts
index 87b4ff5be220c..f4038a4e2677f 100644
--- a/x-pack/plugins/index_management/public/plugin.ts
+++ b/x-pack/plugins/index_management/public/plugin.ts
@@ -81,6 +81,10 @@ export class IndexMgmtUIPlugin {
     };
   }
 
-  public start() {}
+  public start() {
+    return {
+      extensionsService: this.extensionsService.setup(),
+    };
+  }
   public stop() {}
 }
diff --git a/x-pack/plugins/index_management/public/services/extensions_service.mock.ts b/x-pack/plugins/index_management/public/services/extensions_service.mock.ts
index 3c0886b0fe4a3..8f4968ad35e41 100644
--- a/x-pack/plugins/index_management/public/services/extensions_service.mock.ts
+++ b/x-pack/plugins/index_management/public/services/extensions_service.mock.ts
@@ -18,6 +18,7 @@ const createServiceMock = (): ExtensionsSetupMock => ({
   addToggle: jest.fn(),
   addIndexDetailsTab: jest.fn(),
   setIndexOverviewContent: jest.fn(),
+  setIndexMappingsContent: jest.fn(),
 });
 
 const createMock = () => {
diff --git a/x-pack/plugins/index_management/public/services/extensions_service.ts b/x-pack/plugins/index_management/public/services/extensions_service.ts
index 94211b32dbd70..1eb68e9a0b746 100644
--- a/x-pack/plugins/index_management/public/services/extensions_service.ts
+++ b/x-pack/plugins/index_management/public/services/extensions_service.ts
@@ -12,7 +12,7 @@ import { EuiBadgeProps } from '@elastic/eui';
 import type { IndexDetailsTab } from '../../common/constants';
 import { Index } from '..';
 
-export interface IndexOverviewContent {
+export interface IndexContent {
   renderContent: (args: {
     index: Index;
     getUrlForApp: ApplicationStart['getUrlForApp'];
@@ -28,13 +28,22 @@ export interface IndexBadge {
 }
 
 export interface ExtensionsSetup {
+  // adds an option to the "manage index" menu
   addAction(action: any): void;
+  // adds a banner to the indices list
   addBanner(banner: any): void;
+  // adds a filter to the indices list
   addFilter(filter: any): void;
+  // adds a badge to the index name
   addBadge(badge: IndexBadge): void;
+  // adds a toggle to the indices list
   addToggle(toggle: any): void;
+  // adds a tab to the index details page
   addIndexDetailsTab(tab: IndexDetailsTab): void;
-  setIndexOverviewContent(content: IndexOverviewContent): void;
+  // sets content to render instead of the code block on the overview tab of the index page
+  setIndexOverviewContent(content: IndexContent): void;
+  // sets content to render below the docs link on the mappings tab of the index page
+  setIndexMappingsContent(content: IndexContent): void;
 }
 
 export class ExtensionsService {
@@ -55,7 +64,8 @@ export class ExtensionsService {
   ];
   private _toggles: any[] = [];
   private _indexDetailsTabs: IndexDetailsTab[] = [];
-  private _indexOverviewContent: IndexOverviewContent | null = null;
+  private _indexOverviewContent: IndexContent | null = null;
+  private _indexMappingsContent: IndexContent | null = null;
   private service?: ExtensionsSetup;
 
   public setup(): ExtensionsSetup {
@@ -66,7 +76,8 @@ export class ExtensionsService {
       addFilter: this.addFilter.bind(this),
       addToggle: this.addToggle.bind(this),
       addIndexDetailsTab: this.addIndexDetailsTab.bind(this),
-      setIndexOverviewContent: this.setIndexOverviewMainContent.bind(this),
+      setIndexOverviewContent: this.setIndexOverviewContent.bind(this),
+      setIndexMappingsContent: this.setIndexMappingsContent.bind(this),
     };
 
     return this.service;
@@ -96,7 +107,7 @@ export class ExtensionsService {
     this._indexDetailsTabs.push(tab);
   }
 
-  private setIndexOverviewMainContent(content: IndexOverviewContent) {
+  private setIndexOverviewContent(content: IndexContent) {
     if (this._indexOverviewContent) {
       throw new Error(`The content for index overview has already been set.`);
     } else {
@@ -104,6 +115,14 @@ export class ExtensionsService {
     }
   }
 
+  private setIndexMappingsContent(content: IndexContent) {
+    if (this._indexMappingsContent) {
+      throw new Error(`The content for index mappings has already been set.`);
+    } else {
+      this._indexMappingsContent = content;
+    }
+  }
+
   public get actions() {
     return this._actions;
   }
@@ -131,4 +150,8 @@ export class ExtensionsService {
   public get indexOverviewContent() {
     return this._indexOverviewContent;
   }
+
+  public get indexMappingsContent() {
+    return this._indexMappingsContent;
+  }
 }
diff --git a/x-pack/plugins/index_management/public/services/index.ts b/x-pack/plugins/index_management/public/services/index.ts
index 8f4ddbeffba35..bca35e09c9776 100644
--- a/x-pack/plugins/index_management/public/services/index.ts
+++ b/x-pack/plugins/index_management/public/services/index.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-export type { ExtensionsSetup } from './extensions_service';
+export type { ExtensionsSetup, IndexContent } from './extensions_service';
 export { ExtensionsService } from './extensions_service';
 
 export type { PublicApiServiceSetup } from './public_api_service';
diff --git a/x-pack/plugins/index_management/public/types.ts b/x-pack/plugins/index_management/public/types.ts
index 57ddf10c767fd..d00e6ba4d5ac7 100644
--- a/x-pack/plugins/index_management/public/types.ts
+++ b/x-pack/plugins/index_management/public/types.ts
@@ -16,6 +16,10 @@ export interface IndexManagementPluginSetup {
   extensionsService: ExtensionsSetup;
 }
 
+export interface IndexManagementPluginStart {
+  extensionsService: ExtensionsSetup;
+}
+
 export interface SetupDependencies {
   fleet?: unknown;
   usageCollection: UsageCollectionSetup;
diff --git a/x-pack/plugins/serverless_search/kibana.jsonc b/x-pack/plugins/serverless_search/kibana.jsonc
index 2ae8f0dbff987..0ac92bc197468 100644
--- a/x-pack/plugins/serverless_search/kibana.jsonc
+++ b/x-pack/plugins/serverless_search/kibana.jsonc
@@ -25,7 +25,9 @@
       "share",
       "visualizations"
     ],
-    "optionalPlugins": [],
+    "optionalPlugins": [
+      "indexManagement",
+    ],
     "requiredBundles": [
       "kibanaReact"
     ]
diff --git a/x-pack/plugins/serverless_search/public/application/components/index_mappings_docs_link.tsx b/x-pack/plugins/serverless_search/public/application/components/index_mappings_docs_link.tsx
new file mode 100644
index 0000000000000..fc1699beffa8f
--- /dev/null
+++ b/x-pack/plugins/serverless_search/public/application/components/index_mappings_docs_link.tsx
@@ -0,0 +1,68 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React, { FunctionComponent } from 'react';
+import {
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiIcon,
+  EuiLink,
+  EuiPanel,
+  EuiSpacer,
+  EuiText,
+  EuiTitle,
+} from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { CoreStart } from '@kbn/core/public';
+import { IndexContent } from '@kbn/index-management-plugin/public/services';
+
+const IndexMappingsDocsLink: FunctionComponent<{ docLinks: CoreStart['docLinks'] }> = ({
+  docLinks,
+}) => {
+  return (
+    <EuiPanel grow={false} paddingSize="l">
+      <EuiFlexGroup alignItems="center" gutterSize="s">
+        <EuiFlexItem grow={false}>
+          <EuiIcon type="iInCircle" />
+        </EuiFlexItem>
+        <EuiFlexItem>
+          <EuiTitle size="xs">
+            <h2>
+              <FormattedMessage
+                id="xpack.serverlessSearch.indexMappings.ingestPipelinesDocs.title"
+                defaultMessage="Transform your searchable content"
+              />
+            </h2>
+          </EuiTitle>
+        </EuiFlexItem>
+      </EuiFlexGroup>
+      <EuiSpacer size="s" />
+      <EuiText>
+        <p>
+          <FormattedMessage
+            id="xpack.serverlessSearch.indexMappings.ingestPipelinesDocs.description"
+            defaultMessage="Want to add custom fields, or use trained ML models to analyze and enrich your
+          indexed documents? Use index-specific ingest pipelines to customize documents to your needs."
+          />
+        </p>
+      </EuiText>
+      <EuiSpacer size="m" />
+      <EuiLink href={docLinks.links.enterpriseSearch.ingestPipelines} target="_blank" external>
+        <FormattedMessage
+          id="xpack.serverlessSearch.indexMappings.ingestPipelinesDocs.linkLabel"
+          defaultMessage="Learn more about ingest pipelines"
+        />
+      </EuiLink>
+    </EuiPanel>
+  );
+};
+
+export const createIndexMappingsDocsLinkContent = (core: CoreStart): IndexContent => {
+  return {
+    renderContent: () => <IndexMappingsDocsLink docLinks={core.docLinks} />,
+  };
+};
diff --git a/x-pack/plugins/serverless_search/public/plugin.ts b/x-pack/plugins/serverless_search/public/plugin.ts
index 6f1cb6465106c..4203925650385 100644
--- a/x-pack/plugins/serverless_search/public/plugin.ts
+++ b/x-pack/plugins/serverless_search/public/plugin.ts
@@ -15,6 +15,7 @@ import {
 import { i18n } from '@kbn/i18n';
 import { appIds } from '@kbn/management-cards-navigation';
 import { AuthenticatedUser } from '@kbn/security-plugin/common';
+import { createIndexMappingsDocsLinkContent as createIndexMappingsContent } from './application/components/index_mappings_docs_link';
 import { createServerlessSearchSideNavComponent as createComponent } from './layout/nav';
 import { docLinks } from '../common/doc_links';
 import {
@@ -85,7 +86,7 @@ export class ServerlessSearchPlugin
 
   public start(
     core: CoreStart,
-    { serverless, management, cloud }: ServerlessSearchPluginStartDependencies
+    { serverless, management, cloud, indexManagement }: ServerlessSearchPluginStartDependencies
   ): ServerlessSearchPluginStart {
     serverless.setProjectHome('/app/elasticsearch');
     serverless.setSideNavComponent(createComponent(core, { serverless, cloud }));
@@ -94,6 +95,7 @@ export class ServerlessSearchPlugin
       enabled: true,
       hideLinksTo: [appIds.MAINTENANCE_WINDOWS],
     });
+    indexManagement?.extensionsService.setIndexMappingsContent(createIndexMappingsContent(core));
     return {};
   }
 
diff --git a/x-pack/plugins/serverless_search/public/types.ts b/x-pack/plugins/serverless_search/public/types.ts
index 5b984289e2bd7..039353fa4e867 100644
--- a/x-pack/plugins/serverless_search/public/types.ts
+++ b/x-pack/plugins/serverless_search/public/types.ts
@@ -10,6 +10,7 @@ import { ManagementSetup, ManagementStart } from '@kbn/management-plugin/public'
 import { SecurityPluginStart } from '@kbn/security-plugin/public';
 import { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/public';
 import { SharePluginStart } from '@kbn/share-plugin/public';
+import { IndexManagementPluginStart } from '@kbn/index-management-plugin/public';
 
 // eslint-disable-next-line @typescript-eslint/no-empty-interface
 export interface ServerlessSearchPluginSetup {}
@@ -29,4 +30,5 @@ export interface ServerlessSearchPluginStartDependencies {
   security: SecurityPluginStart;
   serverless: ServerlessPluginStart;
   share: SharePluginStart;
+  indexManagement?: IndexManagementPluginStart;
 }
diff --git a/x-pack/plugins/serverless_search/tsconfig.json b/x-pack/plugins/serverless_search/tsconfig.json
index 1886f0ccb21b9..c07cff77aa19e 100644
--- a/x-pack/plugins/serverless_search/tsconfig.json
+++ b/x-pack/plugins/serverless_search/tsconfig.json
@@ -36,5 +36,6 @@
     "@kbn/search-connectors",
     "@kbn/shared-ux-router",
     "@kbn/kibana-utils-plugin",
+    "@kbn/index-management-plugin",
   ]
 }

From 8370020cd69b944a13d1c78bf6e15d016504d7b5 Mon Sep 17 00:00:00 2001
From: Davis McPhee <davis.mcphee@elastic.co>
Date: Fri, 10 Nov 2023 12:30:01 -0400
Subject: [PATCH 100/147] [Unified Data Table] Stop escaping column names when
 copying (#170997)

## Summary

When support for copying column values was added to Discover in #132330,
it was designed for copying into spreadsheets, so column names and
values are escaped when copied. We used the same approach for the the
"Copy name" button, but this functionality isn't specific to
spreadsheets and is more likely used for copying into search bars, etc.
This PR updates the copy name functionality to stop escaping field
names.

Resolves #170957.

### Checklist

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 .../utils/copy_value_to_clipboard.test.tsx    |  2 +-
 .../src/utils/copy_value_to_clipboard.ts      | 19 +++++--------------
 .../group2/_data_grid_copy_to_clipboard.ts    |  2 +-
 3 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.test.tsx b/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.test.tsx
index 7ff5c9b3f19b6..f49a7ef95ed6d 100644
--- a/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.test.tsx
+++ b/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.test.tsx
@@ -93,7 +93,7 @@ describe('copyValueToClipboard', () => {
       columnDisplayName: 'text_message',
     });
 
-    expect(result).toBe('"text_message"');
+    expect(result).toBe('text_message');
     expect(execCommandMock).toHaveBeenCalledWith('copy');
     expect(servicesMock.toastNotifications.addInfo).toHaveBeenCalledWith({
       title: 'Copied to clipboard',
diff --git a/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.ts b/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.ts
index 2e9620b42728b..2fc0606624a0b 100644
--- a/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.ts
+++ b/packages/kbn-unified-data-table/src/utils/copy_value_to_clipboard.ts
@@ -131,9 +131,7 @@ export const copyColumnNameToClipboard = ({
   columnDisplayName: string;
   toastNotifications: ToastsStart;
 }): string | null => {
-  const nameFormattedResult = convertNameToString(columnDisplayName);
-  const textToCopy = nameFormattedResult.formattedString;
-  const copied = copyToClipboard(textToCopy);
+  const copied = copyToClipboard(columnDisplayName);
 
   if (!copied) {
     toastNotifications.addWarning({
@@ -147,16 +145,9 @@ export const copyColumnNameToClipboard = ({
     defaultMessage: 'Copied to clipboard',
   });
 
-  if (nameFormattedResult.withFormula) {
-    toastNotifications.addWarning({
-      title: toastTitle,
-      text: WARNING_FOR_FORMULAS,
-    });
-  } else {
-    toastNotifications.addInfo({
-      title: toastTitle,
-    });
-  }
+  toastNotifications.addInfo({
+    title: toastTitle,
+  });
 
-  return textToCopy;
+  return columnDisplayName;
 };
diff --git a/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts b/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts
index 06fe279dbd534..27d847f9c49ce 100644
--- a/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts
+++ b/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts
@@ -79,7 +79,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       await dataGrid.clickCopyColumnName('@timestamp');
       if (canReadClipboard) {
         const copiedTimestampName = await browser.getClipboardValue();
-        expect(copiedTimestampName).to.be('"\'@timestamp"');
+        expect(copiedTimestampName).to.be('@timestamp');
       }
 
       expect(await toasts.getToastCount()).to.be(1);

From 2c90ba9725605089d480a960bad22ec4bfc96974 Mon Sep 17 00:00:00 2001
From: Vadim Kibana <82822460+vadimkibana@users.noreply.github.com>
Date: Fri, 10 Nov 2023 17:34:59 +0100
Subject: [PATCH 101/147] File hashing (#171015)

## Summary

Closes https://github.com/elastic/kibana/issues/167737

In this PR:

- Adds ability to specify a list of hashes to compute per file kind
definition. You specify `hashes: ["sha256"]` and the hash will be
computed and stored automatically on `.upload()` call.
- Enables SHA256 hash computation for the default Kibana file kind, used
for images on the Dashboard app.


### Checklist

Delete any items that are not applicable to this PR.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

### For maintainers

- [x] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 src/plugins/files/common/types.ts             |  7 ++++
 src/plugins/files/server/file/file.ts         | 27 ++++----------
 .../file_client/create_es_file_client.ts      |  1 +
 .../files/server/file_client/file_client.ts   | 37 +++++++++++++++++--
 .../integration_tests/es_file_client.test.ts  | 20 ++++++++++
 src/plugins/files/server/plugin.ts            |  1 +
 6 files changed, 70 insertions(+), 23 deletions(-)

diff --git a/src/plugins/files/common/types.ts b/src/plugins/files/common/types.ts
index 8b6059bdb5637..e2efdb3bdea33 100644
--- a/src/plugins/files/common/types.ts
+++ b/src/plugins/files/common/types.ts
@@ -20,6 +20,7 @@ import type {
 } from '@kbn/shared-ux-file-types';
 import type { UploadOptions } from '../server/blob_storage_service';
 import type { ES_FIXED_SIZE_INDEX_BLOB_STORE } from './constants';
+import type { SupportedFileHashAlgorithm } from '../server/saved_objects/file';
 
 export type {
   FileKindBase,
@@ -94,6 +95,12 @@ export interface FileKind extends FileKindBase {
      */
     share?: HttpEndpointDefinition;
   };
+
+  /**
+   * A list of hashes to compute for this file kind. The hashes will be computed
+   * during the file upload process and stored in the file metadata.
+   */
+  hashes?: SupportedFileHashAlgorithm[];
 }
 
 /** Definition for an endpoint that the File's service will generate */
diff --git a/src/plugins/files/server/file/file.ts b/src/plugins/files/server/file/file.ts
index eeec150cfc78c..495d233fd421b 100644
--- a/src/plugins/files/server/file/file.ts
+++ b/src/plugins/files/server/file/file.ts
@@ -19,7 +19,6 @@ import {
   Observable,
   lastValueFrom,
 } from 'rxjs';
-import { isFileHashTransform } from '../file_client/stream_transforms/file_hash_transform/file_hash_transform';
 import { UploadOptions } from '../blob_storage_service';
 import type { FileShareJSON, FileShareJSONWithToken } from '../../common/types';
 import type { File as IFile, UpdatableFileMetadata, FileJSON } from '../../common';
@@ -72,10 +71,7 @@ export class File<M = unknown> implements IFile {
     return this;
   }
 
-  private upload(
-    content: Readable,
-    options?: Partial<Pick<UploadOptions, 'transforms'>>
-  ): Observable<{ size: number }> {
+  private upload(content: Readable, options?: Partial<Pick<UploadOptions, 'transforms'>>) {
     return defer(() => this.fileClient.upload(this.metadata, content, options));
   }
 
@@ -104,26 +100,17 @@ export class File<M = unknown> implements IFile {
             )
           )
         ),
-        mergeMap(({ size }) => {
+        mergeMap(({ size, hashes }) => {
           const updatedStateAction: Action & { action: 'uploaded' } = {
             action: 'uploaded',
             payload: { size },
           };
 
-          if (options && options.transforms) {
-            options.transforms.some((transform) => {
-              if (isFileHashTransform(transform)) {
-                const fileHash = transform.getFileHash();
-
-                updatedStateAction.payload.hash = {
-                  [fileHash.algorithm]: fileHash.value,
-                };
-
-                return true;
-              }
-
-              return false;
-            });
+          if (hashes && hashes.length) {
+            updatedStateAction.payload.hash = {};
+            for (const { algorithm, value } of hashes) {
+              updatedStateAction.payload.hash[algorithm] = value;
+            }
           }
 
           return this.updateFileState(updatedStateAction);
diff --git a/src/plugins/files/server/file_client/create_es_file_client.ts b/src/plugins/files/server/file_client/create_es_file_client.ts
index 755071d66328c..f9ada86768c2f 100644
--- a/src/plugins/files/server/file_client/create_es_file_client.ts
+++ b/src/plugins/files/server/file_client/create_es_file_client.ts
@@ -70,6 +70,7 @@ export function createEsFileClient(arg: CreateEsFileClientArgs): FileClient {
       id: NO_FILE_KIND,
       http: {},
       maxSizeBytes,
+      hashes: ['md5', 'sha1', 'sha256', 'sha512'],
     },
     new EsIndexFilesMetadataClient(metadataIndex, elasticsearchClient, logger, indexIsAlias),
     new ElasticsearchBlobStorageClient(
diff --git a/src/plugins/files/server/file_client/file_client.ts b/src/plugins/files/server/file_client/file_client.ts
index 3bce97f6bcade..26dbc90a44b90 100644
--- a/src/plugins/files/server/file_client/file_client.ts
+++ b/src/plugins/files/server/file_client/file_client.ts
@@ -40,6 +40,9 @@ import {
   withReportPerformanceMetric,
   FILE_DOWNLOAD_PERFORMANCE_EVENT_NAME,
 } from '../performance';
+import { createFileHashTransform } from './stream_transforms/file_hash_transform';
+import { isFileHashTransform } from './stream_transforms/file_hash_transform/file_hash_transform';
+import { SupportedFileHashAlgorithm } from '../saved_objects/file';
 
 export type UploadOptions = Omit<BlobUploadOptions, 'id'>;
 
@@ -216,8 +219,8 @@ export class FileClientImpl implements FileClient {
     file: FileJSON,
     rs: Readable,
     options?: UploadOptions
-  ): ReturnType<BlobStorageClient['upload']> => {
-    const { maxSizeBytes } = this.fileKindDescriptor;
+  ): Promise<UploadResult> => {
+    const { maxSizeBytes, hashes } = this.fileKindDescriptor;
     const { transforms = [], ...blobOptions } = options || {};
 
     let maxFileSize: number = typeof maxSizeBytes === 'number' ? maxSizeBytes : fourMiB;
@@ -231,11 +234,30 @@ export class FileClientImpl implements FileClient {
 
     transforms.push(enforceMaxByteSizeTransform(maxFileSize));
 
-    return this.blobStorageClient.upload(rs, {
+    if (hashes && hashes.length) {
+      for (const hash of hashes) {
+        transforms.push(createFileHashTransform(hash));
+      }
+    }
+
+    const uploadResult = await this.blobStorageClient.upload(rs, {
       ...blobOptions,
       transforms,
       id: file.id,
     });
+
+    const result: UploadResult = { ...uploadResult, hashes: [] };
+
+    if (transforms && transforms.length) {
+      for (const transform of transforms) {
+        if (isFileHashTransform(transform)) {
+          const fileHash = transform.getFileHash();
+          result.hashes.push(fileHash);
+        }
+      }
+    }
+
+    return result;
   };
 
   public download: BlobStorageClient['download'] = async (args) => {
@@ -300,3 +322,12 @@ export class FileClientImpl implements FileClient {
     return this.internalFileShareService.list(args);
   };
 }
+
+export interface UploadResult {
+  id: string;
+  size: number;
+  hashes: Array<{
+    algorithm: SupportedFileHashAlgorithm;
+    value: string;
+  }>;
+}
diff --git a/src/plugins/files/server/file_client/integration_tests/es_file_client.test.ts b/src/plugins/files/server/file_client/integration_tests/es_file_client.test.ts
index cbe80422e388b..d4c6d268fa7dc 100644
--- a/src/plugins/files/server/file_client/integration_tests/es_file_client.test.ts
+++ b/src/plugins/files/server/file_client/integration_tests/es_file_client.test.ts
@@ -97,6 +97,26 @@ describe('ES-index-backed file client', () => {
     await deleteFile({ id: file.id, hasContent: true });
   });
 
+  test('computes file hashes', async () => {
+    const file = await fileClient.create({
+      id: '123',
+      metadata: {
+        name: 'cool name',
+      },
+    });
+    await file.uploadContent(Readable.from([Buffer.from('test')]));
+
+    expect(file.toJSON().hash).toStrictEqual({
+      md5: '098f6bcd4621d373cade4e832627b4f6',
+      sha1: 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3',
+      sha256: '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+      sha512:
+        'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff',
+    });
+
+    await deleteFile({ id: file.id, hasContent: true });
+  });
+
   test('searches across files', async () => {
     const { id: id1 } = await fileClient.create({
       id: '123',
diff --git a/src/plugins/files/server/plugin.ts b/src/plugins/files/server/plugin.ts
index ba63e08b2ed21..9e608d8f38a59 100755
--- a/src/plugins/files/server/plugin.ts
+++ b/src/plugins/files/server/plugin.ts
@@ -139,6 +139,7 @@ export class FilesPlugin implements Plugin<FilesSetup, FilesStart, FilesPluginSe
         share: { tags: DefaultImageKind.tags },
         update: { tags: DefaultImageKind.tags },
       },
+      hashes: ['sha256'],
     });
   }
 }

From 4df1cbe124a51192bbf6b1212b887b2c627e6283 Mon Sep 17 00:00:00 2001
From: Maryam Saeidi <maryam.saeidi@elastic.co>
Date: Fri, 10 Nov 2023 17:47:35 +0100
Subject: [PATCH 102/147] Enable custom threshold and inventory rules in
 Serverless (#170351)

Closes #170327
Relates to https://github.com/elastic/kibana/issues/168034

## Summary

This PR enables the custom threshold and inventory rules in Serverless.

|Custom threshold rule|Inventory rule|
|---|---|

|![image](https://github.com/elastic/kibana/assets/12370520/35468ded-d936-4bb1-b16b-0bcfe987e0f1)|![image](https://github.com/elastic/kibana/assets/12370520/1d1a65e0-78f5-4550-a620-9342b28ec5a9)|

Related PR: [Add the query delay mechanism to the inventory rule type
and change consumer to
Observability](https://github.com/elastic/kibana/pull/170628)
---
 x-pack/plugins/infra/server/plugin.ts        | 4 ++--
 x-pack/plugins/observability/server/index.ts | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/x-pack/plugins/infra/server/plugin.ts b/x-pack/plugins/infra/server/plugin.ts
index 6a2734b399199..afcbe69c01f5c 100644
--- a/x-pack/plugins/infra/server/plugin.ts
+++ b/x-pack/plugins/infra/server/plugin.ts
@@ -98,7 +98,7 @@ export const config: PluginConfigDescriptor<InfraConfig> = {
       }),
       inventoryThresholdAlertRuleEnabled: offeringBasedSchema({
         traditional: schema.boolean({ defaultValue: true }),
-        serverless: schema.boolean({ defaultValue: false }),
+        serverless: schema.boolean({ defaultValue: true }),
       }),
       metricThresholdAlertRuleEnabled: offeringBasedSchema({
         traditional: schema.boolean({ defaultValue: true }),
@@ -110,7 +110,7 @@ export const config: PluginConfigDescriptor<InfraConfig> = {
       }),
       alertsAndRulesDropdownEnabled: offeringBasedSchema({
         traditional: schema.boolean({ defaultValue: true }),
-        serverless: schema.boolean({ defaultValue: false }),
+        serverless: schema.boolean({ defaultValue: true }),
       }),
     }),
   }),
diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts
index 96231115e3fa2..2153d00abdbc6 100644
--- a/x-pack/plugins/observability/server/index.ts
+++ b/x-pack/plugins/observability/server/index.ts
@@ -48,7 +48,7 @@ const configSchema = schema.object({
     }),
     thresholdRule: schema.object({
       enabled: offeringBasedSchema({
-        serverless: schema.boolean({ defaultValue: false }),
+        serverless: schema.boolean({ defaultValue: true }),
         traditional: schema.boolean({ defaultValue: true }),
       }),
     }),

From 41cacd1e0c5c3f480eaad84e9d914731c448bb02 Mon Sep 17 00:00:00 2001
From: Davis Plumlee <56367316+dplumlee@users.noreply.github.com>
Date: Fri, 10 Nov 2023 12:01:34 -0500
Subject: [PATCH 103/147] [Security Solution] Fixes create/edit rule form
 subtechnique selection bug (#170465)

---
 .../components/rules/mitre/subtechnique_fields.tsx     |  9 ++++-----
 .../components/rules/mitre/technique_fields.tsx        | 10 +++++-----
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx
index efc542f9757a1..7645bc2c2c579 100644
--- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx
@@ -13,7 +13,6 @@ import {
   EuiFlexGroup,
   EuiFlexItem,
 } from '@elastic/eui';
-import { camelCase } from 'lodash/fp';
 import React, { useCallback, useEffect, useMemo, useState } from 'react';
 import styled from 'styled-components';
 
@@ -110,9 +109,9 @@ export const MitreAttackSubtechniqueFields: React.FC<AddSubtechniqueProps> = ({
   }, [field, onFieldChange, techniqueIndex, technique, threatIndex]);
 
   const updateSubtechnique = useCallback(
-    (index: number, value: string) => {
+    (index: number, optionId: string) => {
       const threats = [...(field.value as Threats)];
-      const { id, reference, name } = subtechniquesOptions.find((t) => t.value === value) || {
+      const { id, reference, name } = subtechniquesOptions.find((t) => t.id === optionId) ?? {
         id: '',
         name: '',
         reference: '',
@@ -170,7 +169,7 @@ export const MitreAttackSubtechniqueFields: React.FC<AddSubtechniqueProps> = ({
                 : []),
               ...options.map((option) => ({
                 inputDisplay: <>{option.label}</>,
-                value: option.value,
+                value: option.id,
                 disabled,
               })),
             ]}
@@ -178,7 +177,7 @@ export const MitreAttackSubtechniqueFields: React.FC<AddSubtechniqueProps> = ({
             aria-label=""
             onChange={updateSubtechnique.bind(null, index)}
             fullWidth={true}
-            valueOfSelected={camelCase(subtechnique.name)}
+            valueOfSelected={subtechnique.id}
             data-test-subj="mitreAttackSubtechnique"
             disabled={disabled}
             placeholder={i18n.SUBTECHNIQUE_PLACEHOLDER}
diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx
index 0215204a98cbd..bb677801ecaa9 100644
--- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx
+++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx
@@ -13,7 +13,7 @@ import {
   EuiFlexGroup,
   EuiFlexItem,
 } from '@elastic/eui';
-import { kebabCase, camelCase } from 'lodash/fp';
+import { kebabCase } from 'lodash/fp';
 import React, { useCallback, useEffect, useState } from 'react';
 import styled, { css } from 'styled-components';
 
@@ -105,9 +105,9 @@ export const MitreAttackTechniqueFields: React.FC<AddTechniqueProps> = ({
   }, [field, threatIndex, onFieldChange]);
 
   const updateTechnique = useCallback(
-    (index: number, value: string) => {
+    (index: number, optionId: string) => {
       const threats = [...(field.value as Threats)];
-      const { id, reference, name } = techniquesOptions.find((t) => t.value === value) || {
+      const { id, reference, name } = techniquesOptions.find((t) => t.id === optionId) ?? {
         id: '',
         name: '',
         reference: '',
@@ -153,7 +153,7 @@ export const MitreAttackTechniqueFields: React.FC<AddTechniqueProps> = ({
                 : []),
               ...options.map((option) => ({
                 inputDisplay: <>{option.label}</>,
-                value: option.value,
+                value: option.id,
                 disabled,
               })),
             ]}
@@ -161,7 +161,7 @@ export const MitreAttackTechniqueFields: React.FC<AddTechniqueProps> = ({
             aria-label=""
             onChange={updateTechnique.bind(null, index)}
             fullWidth={true}
-            valueOfSelected={camelCase(technique.name)}
+            valueOfSelected={technique.id}
             data-test-subj="mitreAttackTechnique"
             disabled={disabled}
             placeholder={i18n.TECHNIQUE_PLACEHOLDER}

From 33757f64cac68f3fab44522fe6fdb28001908bdd Mon Sep 17 00:00:00 2001
From: Alex Szabo <alex.szabo@elastic.co>
Date: Fri, 10 Nov 2023 18:26:45 +0100
Subject: [PATCH 104/147] fix: incorrect import causes storybook build to fail
 (#171033)

## Summary
[This
change](https://github.com/darnautov/kibana/blob/b6f20b2219b5ccf22316ee36e0c079b9e3d1327c/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx#L9)
in this PR: https://github.com/elastic/kibana/pull/167998 is causing an
error in building storybooks:
https://buildkite.com/elastic/kibana-on-merge/builds/38046#018bb9d2-7820-43ad-9144-e40d33d28c3b

In brief, the import looks like this:
```typescript
import { css } from '@emotion/react/dist/emotion-react.cjs';
```
but it should be like this:
```typescript
import { css } from '@emotion/react';
```

It looks it's a bad import, we should set up a pre-merge check for these
accidental auto-imports.

cc: @darnautov please review
---
 .../components/collapsible_panel/panel_header_items.tsx         | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx b/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
index fa766abadfeb4..75d43e6ebe6f5 100644
--- a/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
+++ b/x-pack/plugins/ml/public/application/components/collapsible_panel/panel_header_items.tsx
@@ -6,7 +6,7 @@
  */
 
 import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
-import { css } from '@emotion/react/dist/emotion-react.cjs';
+import { css } from '@emotion/react';
 import React, { type FC } from 'react';
 import { useCurrentThemeVars } from '../../contexts/kibana';
 

From 9b29b1898eeac2cef258b954e6711c1602d8854a Mon Sep 17 00:00:00 2001
From: Walter Rafelsberger <walter.rafelsberger@elastic.co>
Date: Fri, 10 Nov 2023 18:57:04 +0100
Subject: [PATCH 105/147] [ML] AIOps Log Rate Analysis: Rename SignificantTerm
 to SignificantItem. (#169756)

Log rate analysis now supports both keywords and log patterns derived
from text fields. The type `SignificantTerm` originally was used for the
results of the `significant_terms` agg to get the p-values for keyword
fields. Since it's now used for both cases (keyword fields and log
patterns) this PR renames the type and related variables etc. to
`SignificantItem` (we used the wording `item` already in some cases in
the context of groups).
---
 x-pack/packages/ml/agg_utils/index.ts         |  18 ++--
 .../ml/agg_utils/src/type_guards.test.ts      |  14 +--
 .../packages/ml/agg_utils/src/type_guards.ts  |   8 +-
 x-pack/packages/ml/agg_utils/src/types.ts     |  88 +++++++--------
 ...ps.ts => final_significant_item_groups.ts} |   4 +-
 ...inal_significant_item_groups_textfield.ts} |   4 +-
 ...m_groups.ts => significant_item_groups.ts} |   4 +-
 .../significant_log_patterns.ts               |   5 +-
 .../artificial_logs/significant_terms.ts      |   5 +-
 ...m_groups.ts => significant_item_groups.ts} |   4 +-
 .../common/api/log_rate_analysis/actions.ts   |  72 ++++++-------
 .../aiops/common/api/stream_reducer.test.ts   |  12 +--
 .../aiops/common/api/stream_reducer.ts        |   6 +-
 x-pack/plugins/aiops/common/types.ts          |  10 +-
 ...uild_extended_base_filter_criteria.test.ts |  12 +--
 .../build_extended_base_filter_criteria.ts    |  36 +++----
 .../log_rate_analysis_content.tsx             |  22 ++--
 .../log_rate_analysis_page.tsx                |   4 +-
 .../log_rate_analysis_results.tsx             |  16 +--
 .../get_group_table_items.test.ts             |   4 +-
 .../get_group_table_items.ts                  |   6 +-
 .../get_table_item_as_kql.test.ts             |   8 +-
 .../get_table_item_as_kql.ts                  |   6 +-
 .../log_rate_analysis_results_table.tsx       | 100 +++++++++---------
 ...log_rate_analysis_results_table_groups.tsx |  16 +--
 ...te_analysis_results_table_row_provider.tsx |  56 +++++-----
 .../log_rate_analysis_results_table/types.ts  |   8 +-
 .../use_copy_to_clipboard_action.test.tsx     |  10 +-
 .../use_copy_to_clipboard_action.tsx          |  12 +--
 .../use_view_in_discover_action.tsx           |   6 +-
 ...se_view_in_log_pattern_analysis_action.tsx |  10 +-
 .../mini_histogram/mini_histogram.tsx         |   4 +-
 .../aiops/public/get_document_stats.ts        |  14 +--
 x-pack/plugins/aiops/public/hooks/use_data.ts |  22 ++--
 .../public/hooks/use_document_count_stats.ts  |   2 +-
 .../queries/duplicate_identifier.ts           |   8 +-
 .../queries/fetch_frequent_item_sets.ts       |  28 ++---
 .../queries/fetch_significant_categories.ts   |   6 +-
 .../fetch_significant_term_p_values.ts        |   8 +-
 .../fetch_terms_2_categories_counts.ts        |   6 +-
 .../get_field_value_pair_counts.test.ts       |   4 +-
 .../queries/get_field_value_pair_counts.ts    |   4 +-
 .../queries/get_group_filter.test.ts          |   6 +-
 .../queries/get_group_filter.ts               |  14 +--
 ...get_groups_with_readded_duplicates.test.ts |  10 +-
 .../get_groups_with_readded_duplicates.ts     |  12 +--
 .../queries/get_marked_duplicates.test.ts     |  10 +-
 .../queries/get_marked_duplicates.ts          |   6 +-
 ... => get_missing_significant_items.test.ts} |  20 ++--
 ...ms.ts => get_missing_significant_items.ts} |  12 +--
 ...ts => get_significant_item_groups.test.ts} |  14 +--
 ...oups.ts => get_significant_item_groups.ts} |  34 +++---
 .../queries/get_simple_hierarchical_tree.ts   |  24 ++---
 .../get_simple_hierarchical_tree_leaves.ts    |   6 +-
 ...ansform_significant_item_to_group.test.ts} |  26 ++---
 ...=> transform_significant_item_to_group.ts} |  16 +--
 .../route_handler_factory.ts                  |  62 +++++------
 .../common/hooks/use_document_count_stats.ts  |  10 +-
 .../components/log_rate_analysis.tsx          |   2 +-
 .../translations/translations/fr-FR.json      |   2 +-
 .../translations/translations/ja-JP.json      |   2 +-
 .../translations/translations/zh-CN.json      |   2 +-
 .../aiops/log_rate_analysis_full_analysis.ts  |   4 +-
 .../aiops/log_rate_analysis_groups_only.ts    |   4 +-
 .../api_integration/apis/aiops/test_data.ts   |  22 ++--
 .../test/api_integration/apis/aiops/types.ts  |   6 +-
 66 files changed, 512 insertions(+), 506 deletions(-)
 rename x-pack/plugins/aiops/common/__mocks__/artificial_logs/{final_significant_term_groups.ts => final_significant_item_groups.ts} (94%)
 rename x-pack/plugins/aiops/common/__mocks__/artificial_logs/{final_significant_term_groups_textfield.ts => final_significant_item_groups_textfield.ts} (95%)
 rename x-pack/plugins/aiops/common/__mocks__/artificial_logs/{significant_term_groups.ts => significant_item_groups.ts} (85%)
 rename x-pack/plugins/aiops/common/__mocks__/farequote/{significant_term_groups.ts => significant_item_groups.ts} (90%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{get_missing_significant_terms.test.ts => get_missing_significant_items.test.ts} (75%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{get_missing_significant_terms.ts => get_missing_significant_items.ts} (57%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{get_significant_term_groups.test.ts => get_significant_item_groups.test.ts} (59%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{get_significant_term_groups.ts => get_significant_item_groups.ts} (70%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{transform_significant_term_to_group.test.ts => transform_significant_item_to_group.test.ts} (66%)
 rename x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/{transform_significant_term_to_group.ts => transform_significant_item_to_group.ts} (77%)

diff --git a/x-pack/packages/ml/agg_utils/index.ts b/x-pack/packages/ml/agg_utils/index.ts
index dd3b694d332c7..6aaf0ff099646 100644
--- a/x-pack/packages/ml/agg_utils/index.ts
+++ b/x-pack/packages/ml/agg_utils/index.ts
@@ -18,17 +18,17 @@ export type {
   NumericHistogramField,
 } from './src/fetch_histograms_for_fields';
 export { isMultiBucketAggregate } from './src/is_multi_bucket_aggregate';
-export { isSignificantTerm } from './src/type_guards';
-export { SIGNIFICANT_TERM_TYPE } from './src/types';
+export { isSignificantItem } from './src/type_guards';
+export { SIGNIFICANT_ITEM_TYPE } from './src/types';
 export type {
   AggCardinality,
-  SignificantTerm,
-  SignificantTermGroup,
-  SignificantTermGroupItem,
-  SignificantTermGroupHistogram,
-  SignificantTermHistogram,
-  SignificantTermHistogramItem,
-  SignificantTermType,
+  SignificantItem,
+  SignificantItemGroup,
+  SignificantItemGroupItem,
+  SignificantItemGroupHistogram,
+  SignificantItemHistogram,
+  SignificantItemHistogramItem,
+  SignificantItemType,
   HistogramField,
   NumericColumnStats,
   NumericColumnStatsMap,
diff --git a/x-pack/packages/ml/agg_utils/src/type_guards.test.ts b/x-pack/packages/ml/agg_utils/src/type_guards.test.ts
index 9cf472abcfb03..7a2c13a025d0b 100644
--- a/x-pack/packages/ml/agg_utils/src/type_guards.test.ts
+++ b/x-pack/packages/ml/agg_utils/src/type_guards.test.ts
@@ -5,15 +5,15 @@
  * 2.0.
  */
 
-import { isSignificantTerm } from './type_guards';
+import { isSignificantItem } from './type_guards';
 
-describe('isSignificantTerm', () => {
-  it('identifies significant terms', () => {
-    expect(isSignificantTerm({})).toBeFalsy();
-    expect(isSignificantTerm({ fieldName: 'response_code' })).toBeFalsy();
-    expect(isSignificantTerm({ fieldValue: '500' })).toBeFalsy();
+describe('isSignificantItem', () => {
+  it('identifies significant items', () => {
+    expect(isSignificantItem({})).toBeFalsy();
+    expect(isSignificantItem({ fieldName: 'response_code' })).toBeFalsy();
+    expect(isSignificantItem({ fieldValue: '500' })).toBeFalsy();
     expect(
-      isSignificantTerm({
+      isSignificantItem({
         key: 'response_code:500',
         type: 'keyword',
         fieldName: 'response_code',
diff --git a/x-pack/packages/ml/agg_utils/src/type_guards.ts b/x-pack/packages/ml/agg_utils/src/type_guards.ts
index 0e33052c8658b..7d8dbc69b265e 100644
--- a/x-pack/packages/ml/agg_utils/src/type_guards.ts
+++ b/x-pack/packages/ml/agg_utils/src/type_guards.ts
@@ -7,17 +7,17 @@
 
 import { isPopulatedObject } from '@kbn/ml-is-populated-object';
 
-import type { SignificantTerm } from './types';
+import type { SignificantItem } from './types';
 
 /**
- * Type guard for a significant term.
+ * Type guard for a significant item.
  * Note this is used as a custom type within Log Rate Analysis
  * for a p-value based variant, not a generic significant terms
  * aggregation type.
  * @param arg The unknown type to be evaluated
- * @returns whether arg is of type SignificantTerm
+ * @returns whether arg is of type SignificantItem
  */
-export function isSignificantTerm(arg: unknown): arg is SignificantTerm {
+export function isSignificantItem(arg: unknown): arg is SignificantItem {
   return isPopulatedObject(arg, [
     'key',
     'type',
diff --git a/x-pack/packages/ml/agg_utils/src/types.ts b/x-pack/packages/ml/agg_utils/src/types.ts
index d8e76239d0e09..1f441fce09a6c 100644
--- a/x-pack/packages/ml/agg_utils/src/types.ts
+++ b/x-pack/packages/ml/agg_utils/src/types.ts
@@ -88,25 +88,25 @@ export interface HistogramField {
 }
 
 /**
- * Enumeration of significant term types.
+ * Enumeration of significant item types.
  */
-export const SIGNIFICANT_TERM_TYPE = {
+export const SIGNIFICANT_ITEM_TYPE = {
   KEYWORD: 'keyword',
   LOG_PATTERN: 'log_pattern',
 } as const;
 
 /**
- * Type for significant term type keys.
+ * Type for significant item type keys.
  */
-type SignificantTermTypeKeys = keyof typeof SIGNIFICANT_TERM_TYPE;
+type SignificantItemTypeKeys = keyof typeof SIGNIFICANT_ITEM_TYPE;
 
 /**
- * Represents the type of significant term as determined by the SIGNIFICANT_TERM_TYPE enumeration.
+ * Represents the type of significant item as determined by the SIGNIFICANT_ITEM_TYPE enumeration.
  */
-export type SignificantTermType = typeof SIGNIFICANT_TERM_TYPE[SignificantTermTypeKeys];
+export type SignificantItemType = typeof SIGNIFICANT_ITEM_TYPE[SignificantItemTypeKeys];
 
 /**
- * Represents significant term metadata for a field/value pair.
+ * Represents significant item metadata for a field/value pair.
  * This interface is used as a custom type within Log Rate Analysis
  * for a p-value based variant, not related to the generic
  * significant terms aggregation type.
@@ -114,42 +114,42 @@ export type SignificantTermType = typeof SIGNIFICANT_TERM_TYPE[SignificantTermTy
  * @interface
  * @extends FieldValuePair
  */
-export interface SignificantTerm extends FieldValuePair {
-  /** The key associated with the significant term. */
+export interface SignificantItem extends FieldValuePair {
+  /** The key associated with the significant item. */
   key: string;
 
-  /** The type of the significant term. */
-  type: SignificantTermType;
+  /** The type of the significant item. */
+  type: SignificantItemType;
 
-  /** The document count for the significant term. */
+  /** The document count for the significant item. */
   doc_count: number;
 
-  /** The background count for the significant term. */
+  /** The background count for the significant item. */
   bg_count: number;
 
-  /** The total document count for all terms. */
+  /** The total document count for all items. */
   total_doc_count: number;
 
-  /** The total background count for all terms. */
+  /** The total background count for all items. */
   total_bg_count: number;
 
-  /** The score associated with the significant term. */
+  /** The score associated with the significant item. */
   score: number;
 
-  /** The p-value for the significant term, or null if not available. */
+  /** The p-value for the significant item, or null if not available. */
   pValue: number | null;
 
-  /** The normalized score for the significant term. */
+  /** The normalized score for the significant item. */
   normalizedScore: number;
 
-  /** An optional histogram of significant term items. */
-  histogram?: SignificantTermHistogramItem[];
+  /** An optional histogram for the significant item. */
+  histogram?: SignificantItemHistogramItem[];
 
-  /** Indicates if the significant term is unique within a group. */
+  /** Indicates if the significant item is unique within a group. */
   unique?: boolean;
 }
 
-interface SignificantTermHistogramItemBase {
+interface SignificantItemHistogramItemBase {
   /** The document count for this item in the overall context. */
   doc_count_overall: number;
 
@@ -163,12 +163,12 @@ interface SignificantTermHistogramItemBase {
 /**
  * @deprecated since version 2 of internal log rate analysis REST API endpoint
  */
-interface SignificantTermHistogramItemV1 extends SignificantTermHistogramItemBase {
+interface SignificantItemHistogramItemV1 extends SignificantItemHistogramItemBase {
   /** The document count for this item in the significant term context. */
   doc_count_significant_term: number;
 }
 
-interface SignificantTermHistogramItemV2 extends SignificantTermHistogramItemBase {
+interface SignificantItemHistogramItemV2 extends SignificantItemHistogramItemBase {
   /** The document count for this histogram item in the significant item context. */
   doc_count_significant_item: number;
 }
@@ -176,41 +176,41 @@ interface SignificantTermHistogramItemV2 extends SignificantTermHistogramItemBas
 /**
  * Represents a data item in a significant term histogram.
  */
-export type SignificantTermHistogramItem =
-  | SignificantTermHistogramItemV1
-  | SignificantTermHistogramItemV2;
+export type SignificantItemHistogramItem =
+  | SignificantItemHistogramItemV1
+  | SignificantItemHistogramItemV2;
 
 /**
  * Represents histogram data for a field/value pair.
  * @interface
  */
-export interface SignificantTermHistogram extends FieldValuePair {
-  /** An array of significant term histogram items. */
-  histogram: SignificantTermHistogramItem[];
+export interface SignificantItemHistogram extends FieldValuePair {
+  /** An array of significant item histogram items. */
+  histogram: SignificantItemHistogramItem[];
 }
 
 /**
  * Represents histogram data for a group of field/value pairs.
  * @interface
  */
-export interface SignificantTermGroupHistogram {
+export interface SignificantItemGroupHistogram {
   /** The identifier for the group. */
   id: string;
 
-  /** An array of significant term histogram items. */
-  histogram: SignificantTermHistogramItem[];
+  /** An array of significant item histogram items. */
+  histogram: SignificantItemHistogramItem[];
 }
 
 /**
- * Represents an item in a significant term group.
+ * Represents an item in a significant item group.
  * @interface
  */
-export interface SignificantTermGroupItem extends FieldValuePair {
-  /** The key associated with the significant term. */
+export interface SignificantItemGroupItem extends FieldValuePair {
+  /** The key associated with the significant item. */
   key: string;
 
-  /** The type of the significant term. */
-  type: SignificantTermType;
+  /** The type of the significant item. */
+  type: SignificantItemType;
 
   /** The document count associated with this item. */
   docCount: number;
@@ -223,15 +223,15 @@ export interface SignificantTermGroupItem extends FieldValuePair {
 }
 
 /**
- * Represents a significant term group.
+ * Represents a significant item group.
  * @interface
  */
-export interface SignificantTermGroup {
+export interface SignificantItemGroup {
   /** The identifier for the item. */
   id: string;
 
-  /** An array of significant term group items. */
-  group: SignificantTermGroupItem[];
+  /** An array of significant item group items. */
+  group: SignificantItemGroupItem[];
 
   /** The document count associated with this item. */
   docCount: number;
@@ -239,6 +239,6 @@ export interface SignificantTermGroup {
   /** The p-value for this item, or null if not available. */
   pValue: number | null;
 
-  /** An optional array of significant term histogram items. */
-  histogram?: SignificantTermHistogramItem[];
+  /** An optional array of significant item histogram items. */
+  histogram?: SignificantItemHistogramItem[];
 }
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups.ts
similarity index 94%
rename from x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts
rename to x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups.ts
index 7166e548449eb..8f28e49ca3d7a 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups.ts
@@ -5,9 +5,9 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-export const finalSignificantTermGroups: SignificantTermGroup[] = [
+export const finalSignificantItemGroups: SignificantItemGroup[] = [
   {
     docCount: 632,
     group: [
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups_textfield.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups_textfield.ts
similarity index 95%
rename from x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups_textfield.ts
rename to x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups_textfield.ts
index f959d9408c418..617a42b930f45 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups_textfield.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_item_groups_textfield.ts
@@ -5,9 +5,9 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-export const finalSignificantTermGroupsTextfield: SignificantTermGroup[] = [
+export const finalSignificantItemGroupsTextfield: SignificantItemGroup[] = [
   {
     docCount: 636,
     group: [
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_item_groups.ts
similarity index 85%
rename from x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts
rename to x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_item_groups.ts
index 160ce3967cd43..b66738704b250 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_item_groups.ts
@@ -5,9 +5,9 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-export const significantTermGroups: SignificantTermGroup[] = [
+export const significantItemGroups: SignificantItemGroup[] = [
   {
     id: '2038579476',
     group: [
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
index ab3ebe02dc536..9efef525ccd57 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_log_patterns.ts
@@ -5,9 +5,10 @@
  * 2.0.
  */
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
-export const significantLogPatterns: SignificantTerm[] = [
+// Named significantLogPatterns since all these items are of type `log_pattern`.
+export const significantLogPatterns: SignificantItem[] = [
   {
     bg_count: 0,
     doc_count: 1266,
diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts
index 4512f5943f4d0..538bf1bc65eb1 100644
--- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts
@@ -5,9 +5,10 @@
  * 2.0.
  */
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
-export const significantTerms: SignificantTerm[] = [
+// Named significantTerms since all these items are of type `keyword`.
+export const significantTerms: SignificantItem[] = [
   {
     key: 'user:Peter',
     type: 'keyword',
diff --git a/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/farequote/significant_item_groups.ts
similarity index 90%
rename from x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts
rename to x-pack/plugins/aiops/common/__mocks__/farequote/significant_item_groups.ts
index 5058f0dbe7e98..95b359f31ea36 100644
--- a/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts
+++ b/x-pack/plugins/aiops/common/__mocks__/farequote/significant_item_groups.ts
@@ -5,9 +5,9 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-export const significantTermGroups: SignificantTermGroup[] = [
+export const significantItemGroups: SignificantItemGroup[] = [
   {
     id: 'group-1',
     group: [
diff --git a/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts b/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
index 4075ddffd27f1..bd3afd3152ae5 100644
--- a/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
+++ b/x-pack/plugins/aiops/common/api/log_rate_analysis/actions.ts
@@ -6,10 +6,10 @@
  */
 
 import type {
-  SignificantTerm,
-  SignificantTermHistogram,
-  SignificantTermGroup,
-  SignificantTermGroupHistogram,
+  SignificantItem,
+  SignificantItemHistogram,
+  SignificantItemGroup,
+  SignificantItemGroupHistogram,
 } from '@kbn/ml-agg-utils';
 
 import type { AiopsLogRateAnalysisApiVersion as ApiVersion } from './schema';
@@ -40,108 +40,108 @@ export const API_ACTION_NAME = {
 } as const;
 export type ApiActionName = typeof API_ACTION_NAME[keyof typeof API_ACTION_NAME];
 
-interface ApiActionAddSignificantTerms<T extends ApiVersion> {
+interface ApiActionAddSignificantItems<T extends ApiVersion> {
   type: T extends '1'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS
     : T extends '2'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS
     : never;
-  payload: SignificantTerm[];
+  payload: SignificantItem[];
 }
 
-export function addSignificantTermsAction<T extends ApiVersion>(
-  payload: ApiActionAddSignificantTerms<T>['payload'],
+export function addSignificantItemsAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantItems<T>['payload'],
   version: T
-): ApiActionAddSignificantTerms<T> {
+): ApiActionAddSignificantItems<T> {
   if (version === '1') {
     return {
       type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS,
       payload,
-    } as ApiActionAddSignificantTerms<T>;
+    } as ApiActionAddSignificantItems<T>;
   }
 
   return {
     type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS,
     payload,
-  } as ApiActionAddSignificantTerms<T>;
+  } as ApiActionAddSignificantItems<T>;
 }
 
-interface ApiActionAddSignificantTermsHistogram<T extends ApiVersion> {
+interface ApiActionAddSignificantItemsHistogram<T extends ApiVersion> {
   type: T extends '1'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM
     : T extends '2'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_HISTOGRAM
     : never;
-  payload: SignificantTermHistogram[];
+  payload: SignificantItemHistogram[];
 }
 
-export function addSignificantTermsHistogramAction<T extends ApiVersion>(
-  payload: ApiActionAddSignificantTermsHistogram<T>['payload'],
+export function addSignificantItemsHistogramAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantItemsHistogram<T>['payload'],
   version: T
-): ApiActionAddSignificantTermsHistogram<T> {
+): ApiActionAddSignificantItemsHistogram<T> {
   if (version === '1') {
     return {
       type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_HISTOGRAM,
       payload,
-    } as ApiActionAddSignificantTermsHistogram<T>;
+    } as ApiActionAddSignificantItemsHistogram<T>;
   }
 
   return {
     type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_HISTOGRAM,
     payload,
-  } as ApiActionAddSignificantTermsHistogram<T>;
+  } as ApiActionAddSignificantItemsHistogram<T>;
 }
 
-interface ApiActionAddSignificantTermsGroup<T extends ApiVersion> {
+interface ApiActionAddSignificantItemsGroup<T extends ApiVersion> {
   type: T extends '1'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP
     : T extends '2'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP
     : never;
-  payload: SignificantTermGroup[];
+  payload: SignificantItemGroup[];
 }
 
-export function addSignificantTermsGroupAction<T extends ApiVersion>(
-  payload: ApiActionAddSignificantTermsGroup<T>['payload'],
+export function addSignificantItemsGroupAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantItemsGroup<T>['payload'],
   version: T
-): ApiActionAddSignificantTermsGroup<T> {
+): ApiActionAddSignificantItemsGroup<T> {
   if (version === '1') {
     return {
       type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP,
       payload,
-    } as ApiActionAddSignificantTermsGroup<T>;
+    } as ApiActionAddSignificantItemsGroup<T>;
   }
 
   return {
     type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP,
     payload,
-  } as ApiActionAddSignificantTermsGroup<T>;
+  } as ApiActionAddSignificantItemsGroup<T>;
 }
 
-interface ApiActionAddSignificantTermsGroupHistogram<T extends ApiVersion> {
+interface ApiActionAddSignificantItemsGroupHistogram<T extends ApiVersion> {
   type: T extends '1'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM
     : T extends '2'
     ? typeof API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM
     : never;
-  payload: SignificantTermGroupHistogram[];
+  payload: SignificantItemGroupHistogram[];
 }
 
-export function addSignificantTermsGroupHistogramAction<T extends ApiVersion>(
-  payload: ApiActionAddSignificantTermsGroupHistogram<T>['payload'],
+export function addSignificantItemsGroupHistogramAction<T extends ApiVersion>(
+  payload: ApiActionAddSignificantItemsGroupHistogram<T>['payload'],
   version: T
-): ApiActionAddSignificantTermsGroupHistogram<T> {
+): ApiActionAddSignificantItemsGroupHistogram<T> {
   if (version === '1') {
     return {
       type: API_ACTION_NAME.ADD_SIGNIFICANT_TERMS_GROUP_HISTOGRAM,
       payload,
-    } as ApiActionAddSignificantTermsGroupHistogram<T>;
+    } as ApiActionAddSignificantItemsGroupHistogram<T>;
   }
 
   return {
     type: API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS_GROUP_HISTOGRAM,
     payload,
-  } as ApiActionAddSignificantTermsGroupHistogram<T>;
+  } as ApiActionAddSignificantItemsGroupHistogram<T>;
 }
 
 interface ApiActionAddError {
@@ -211,10 +211,10 @@ export function updateLoadingStateAction(
 }
 
 export type AiopsLogRateAnalysisApiAction<T extends ApiVersion> =
-  | ApiActionAddSignificantTerms<T>
-  | ApiActionAddSignificantTermsGroup<T>
-  | ApiActionAddSignificantTermsHistogram<T>
-  | ApiActionAddSignificantTermsGroupHistogram<T>
+  | ApiActionAddSignificantItems<T>
+  | ApiActionAddSignificantItemsGroup<T>
+  | ApiActionAddSignificantItemsHistogram<T>
+  | ApiActionAddSignificantItemsGroupHistogram<T>
   | ApiActionAddError
   | ApiActionPing
   | ApiActionResetAll
diff --git a/x-pack/plugins/aiops/common/api/stream_reducer.test.ts b/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
index 7802d61e1781e..f3dd6cce856c7 100644
--- a/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
+++ b/x-pack/plugins/aiops/common/api/stream_reducer.test.ts
@@ -6,11 +6,11 @@
  */
 
 import { significantTerms } from '../__mocks__/artificial_logs/significant_terms';
-import { finalSignificantTermGroups } from '../__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../__mocks__/artificial_logs/final_significant_item_groups';
 
 import {
-  addSignificantTermsAction,
-  addSignificantTermsGroupAction,
+  addSignificantItemsAction,
+  addSignificantItemsGroupAction,
   resetAllAction,
   resetGroupsAction,
   updateLoadingStateAction,
@@ -37,7 +37,7 @@ describe('streamReducer', () => {
   it('adds significant item, then resets all state again', () => {
     const state1 = streamReducer(
       initialState,
-      addSignificantTermsAction(
+      addSignificantItemsAction(
         [
           {
             key: 'the-field-name:the-field-value',
@@ -65,14 +65,14 @@ describe('streamReducer', () => {
   });
 
   it('adds significant items and groups, then resets groups only', () => {
-    const state1 = streamReducer(initialState, addSignificantTermsAction(significantTerms, '2'));
+    const state1 = streamReducer(initialState, addSignificantItemsAction(significantTerms, '2'));
 
     expect(state1.significantItems).toHaveLength(4);
     expect(state1.significantItemsGroups).toHaveLength(0);
 
     const state2 = streamReducer(
       state1,
-      addSignificantTermsGroupAction(finalSignificantTermGroups, '2')
+      addSignificantItemsGroupAction(finalSignificantItemGroups, '2')
     );
 
     expect(state2.significantItems).toHaveLength(4);
diff --git a/x-pack/plugins/aiops/common/api/stream_reducer.ts b/x-pack/plugins/aiops/common/api/stream_reducer.ts
index ba9e8014665c8..05d3fce52c22e 100644
--- a/x-pack/plugins/aiops/common/api/stream_reducer.ts
+++ b/x-pack/plugins/aiops/common/api/stream_reducer.ts
@@ -5,14 +5,14 @@
  * 2.0.
  */
 
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import { API_ACTION_NAME, AiopsLogRateAnalysisApiAction } from './log_rate_analysis/actions';
 
 interface StreamState {
   ccsWarning: boolean;
-  significantItems: SignificantTerm[];
-  significantItemsGroups: SignificantTermGroup[];
+  significantItems: SignificantItem[];
+  significantItemsGroups: SignificantItemGroup[];
   errors: string[];
   loaded: number;
   loadingState: string;
diff --git a/x-pack/plugins/aiops/common/types.ts b/x-pack/plugins/aiops/common/types.ts
index 4b26e30c76a72..67fca0b473549 100644
--- a/x-pack/plugins/aiops/common/types.ts
+++ b/x-pack/plugins/aiops/common/types.ts
@@ -5,11 +5,11 @@
  * 2.0.
  */
 
-import type { SignificantTerm, SignificantTermType, FieldValuePair } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemType, FieldValuePair } from '@kbn/ml-agg-utils';
 
-export interface SignificantTermDuplicateGroup {
-  keys: Pick<SignificantTerm, keyof SignificantTerm>;
-  group: SignificantTerm[];
+export interface SignificantItemDuplicateGroup {
+  keys: Pick<SignificantItem, keyof SignificantItem>;
+  group: SignificantItem[];
 }
 
 export type FieldValuePairCounts = Record<string, Record<string, number>>;
@@ -31,7 +31,7 @@ export interface FetchFrequentItemSetsResponse {
 
 interface SimpleHierarchicalTreeNodeSet extends FieldValuePair {
   key: string;
-  type: SignificantTermType;
+  type: SignificantItemType;
   docCount: number;
   pValue: number | null;
 }
diff --git a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts
index 797f6f1e36a00..37a984dae490d 100644
--- a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts
+++ b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts
@@ -5,13 +5,13 @@
  * 2.0.
  */
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import type { GroupTableItem } from '../../components/log_rate_analysis_results_table/types';
 
 import { buildExtendedBaseFilterCriteria } from './build_extended_base_filter_criteria';
 
-const selectedSignificantTermMock: SignificantTerm = {
+const selectedSignificantItemMock: SignificantItem = {
   key: 'meta.cloud.instance_id.keyword:1234',
   type: 'keyword',
   doc_count: 53408,
@@ -123,13 +123,13 @@ describe('query_utils', () => {
       ]);
     });
 
-    it('includes a term filter when including a selectedSignificantTerm', () => {
+    it('includes a term filter when including a selectedSignificantItem', () => {
       const baseFilterCriteria = buildExtendedBaseFilterCriteria(
         '@timestamp',
         1640082000012,
         1640103600906,
         { match_all: {} },
-        selectedSignificantTermMock
+        selectedSignificantItemMock
       );
 
       expect(baseFilterCriteria).toEqual([
@@ -147,13 +147,13 @@ describe('query_utils', () => {
       ]);
     });
 
-    it('includes a term filter with must_not when excluding a selectedSignificantTerm', () => {
+    it('includes a term filter with must_not when excluding a selectedSignificantItem', () => {
       const baseFilterCriteria = buildExtendedBaseFilterCriteria(
         '@timestamp',
         1640082000012,
         1640103600906,
         { match_all: {} },
-        selectedSignificantTermMock,
+        selectedSignificantItemMock,
         false
       );
 
diff --git a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts
index ee4e707304ff4..d01951b6b8655 100644
--- a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts
+++ b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts
@@ -11,7 +11,7 @@
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { Query } from '@kbn/es-query';
-import { type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 
 import { buildBaseFilterCriteria } from '@kbn/ml-query-utils';
 
@@ -30,8 +30,8 @@ export function buildExtendedBaseFilterCriteria(
   earliestMs?: number,
   latestMs?: number,
   query?: Query['query'],
-  selectedSignificantTerm?: SignificantTerm,
-  includeSelectedSignificantTerm = true,
+  selectedSignificantItem?: SignificantItem,
+  includeSelectedSignificantItem = true,
   selectedGroup?: GroupTableItem | null
 ): estypes.QueryDslQueryContainer[] {
   const filterCriteria = buildBaseFilterCriteria(timeFieldName, earliestMs, latestMs, query);
@@ -41,7 +41,7 @@ export function buildExtendedBaseFilterCriteria(
     const allItems = selectedGroup.groupItemsSortedByUniqueness;
     for (const item of allItems) {
       const { fieldName, fieldValue, key, type, docCount } = item;
-      if (type === SIGNIFICANT_TERM_TYPE.KEYWORD) {
+      if (type === SIGNIFICANT_ITEM_TYPE.KEYWORD) {
         groupFilter.push({ term: { [fieldName]: fieldValue } });
       } else {
         groupFilter.push(
@@ -57,18 +57,18 @@ export function buildExtendedBaseFilterCriteria(
     }
   }
 
-  if (includeSelectedSignificantTerm) {
-    if (selectedSignificantTerm) {
-      if (selectedSignificantTerm.type === 'keyword') {
+  if (includeSelectedSignificantItem) {
+    if (selectedSignificantItem) {
+      if (selectedSignificantItem.type === 'keyword') {
         filterCriteria.push({
-          term: { [selectedSignificantTerm.fieldName]: selectedSignificantTerm.fieldValue },
+          term: { [selectedSignificantItem.fieldName]: selectedSignificantItem.fieldValue },
         });
       } else {
         filterCriteria.push(
-          getCategoryQuery(selectedSignificantTerm.fieldName, [
+          getCategoryQuery(selectedSignificantItem.fieldName, [
             {
-              key: `${selectedSignificantTerm.key}`,
-              count: selectedSignificantTerm.doc_count,
+              key: `${selectedSignificantItem.key}`,
+              count: selectedSignificantItem.doc_count,
               examples: [],
             },
           ])
@@ -77,13 +77,13 @@ export function buildExtendedBaseFilterCriteria(
     } else if (selectedGroup) {
       filterCriteria.push(...groupFilter);
     }
-  } else if (selectedSignificantTerm && !includeSelectedSignificantTerm) {
-    if (selectedSignificantTerm.type === 'keyword') {
+  } else if (selectedSignificantItem && !includeSelectedSignificantItem) {
+    if (selectedSignificantItem.type === 'keyword') {
       filterCriteria.push({
         bool: {
           must_not: [
             {
-              term: { [selectedSignificantTerm.fieldName]: selectedSignificantTerm.fieldValue },
+              term: { [selectedSignificantItem.fieldName]: selectedSignificantItem.fieldValue },
             },
           ],
         },
@@ -92,10 +92,10 @@ export function buildExtendedBaseFilterCriteria(
       filterCriteria.push({
         bool: {
           must_not: [
-            getCategoryQuery(selectedSignificantTerm.fieldName, [
+            getCategoryQuery(selectedSignificantItem.fieldName, [
               {
-                key: `${selectedSignificantTerm.key}`,
-                count: selectedSignificantTerm.doc_count,
+                key: `${selectedSignificantItem.key}`,
+                count: selectedSignificantItem.doc_count,
                 examples: [],
               },
             ]),
@@ -103,7 +103,7 @@ export function buildExtendedBaseFilterCriteria(
         },
       });
     }
-  } else if (selectedGroup && !includeSelectedSignificantTerm) {
+  } else if (selectedGroup && !includeSelectedSignificantItem) {
     filterCriteria.push({
       bool: {
         must_not: [
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx
index 5e2af3d4cb917..0770cfea83771 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx
@@ -20,7 +20,7 @@ import {
   type LogRateAnalysisType,
   type WindowParameters,
 } from '@kbn/aiops-utils';
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import { useData } from '../../../hooks/use_data';
 
@@ -35,11 +35,11 @@ import { useLogRateAnalysisResultsTableRowContext } from '../../log_rate_analysi
 const DEFAULT_SEARCH_QUERY = { match_all: {} };
 
 export function getDocumentCountStatsSplitLabel(
-  significantTerm?: SignificantTerm,
+  significantItem?: SignificantItem,
   group?: GroupTableItem
 ) {
-  if (significantTerm) {
-    return `${significantTerm?.fieldName}:${significantTerm?.fieldValue}`;
+  if (significantItem) {
+    return `${significantItem?.fieldName}:${significantItem?.fieldValue}`;
   } else if (group) {
     return i18n.translate('xpack.aiops.logRateAnalysis.page.documentCountStatsSplitGroupLabel', {
       defaultMessage: 'Selected group',
@@ -94,11 +94,11 @@ export const LogRateAnalysisContent: FC<LogRateAnalysisContentProps> = ({
   }, [windowParameters]);
 
   const {
-    currentSelectedSignificantTerm,
+    currentSelectedSignificantItem,
     currentSelectedGroup,
-    setPinnedSignificantTerm,
+    setPinnedSignificantItem,
     setPinnedGroup,
-    setSelectedSignificantTerm,
+    setSelectedSignificantItem,
     setSelectedGroup,
   } = useLogRateAnalysisResultsTableRowContext();
 
@@ -107,7 +107,7 @@ export const LogRateAnalysisContent: FC<LogRateAnalysisContentProps> = ({
     'log_rate_analysis',
     esSearchQuery,
     setGlobalState,
-    currentSelectedSignificantTerm,
+    currentSelectedSignificantItem,
     currentSelectedGroup,
     undefined,
     timeRange
@@ -132,9 +132,9 @@ export const LogRateAnalysisContent: FC<LogRateAnalysisContentProps> = ({
 
   function clearSelection() {
     setWindowParameters(undefined);
-    setPinnedSignificantTerm(null);
+    setPinnedSignificantItem(null);
     setPinnedGroup(null);
-    setSelectedSignificantTerm(null);
+    setSelectedSignificantItem(null);
     setSelectedGroup(null);
     setIsBrushCleared(true);
     setInitialAnalysisStart(undefined);
@@ -148,7 +148,7 @@ export const LogRateAnalysisContent: FC<LogRateAnalysisContentProps> = ({
           documentCountStats={documentCountStats}
           documentCountStatsSplit={documentCountStatsCompare}
           documentCountStatsSplitLabel={getDocumentCountStatsSplitLabel(
-            currentSelectedSignificantTerm,
+            currentSelectedSignificantItem,
             currentSelectedGroup
           )}
           isBrushCleared={isBrushCleared}
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx
index c3d53fb999023..b3c9f256fb2ea 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx
@@ -37,7 +37,7 @@ export const LogRateAnalysisPage: FC<Props> = ({ stickyHistogram }) => {
   const { data: dataService } = useAiopsAppContext();
   const { dataView, savedSearch } = useDataSource();
 
-  const { currentSelectedSignificantTerm, currentSelectedGroup } =
+  const { currentSelectedSignificantItem, currentSelectedGroup } =
     useLogRateAnalysisResultsTableRowContext();
 
   const [aiopsListState, setAiopsListState] = usePageUrlState<AiOpsPageUrlState>(
@@ -88,7 +88,7 @@ export const LogRateAnalysisPage: FC<Props> = ({ stickyHistogram }) => {
     'log_rate_analysis',
     searchQuery,
     setGlobalState,
-    currentSelectedSignificantTerm,
+    currentSelectedSignificantItem,
     currentSelectedGroup
   );
 
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
index 3a236085cd6cf..457419c8b0501 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx
@@ -31,7 +31,7 @@ import {
 } from '@kbn/aiops-utils';
 import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import { useAiopsAppContext } from '../../hooks/use_aiops_app_context';
 import { initialState, streamReducer } from '../../../common/api/stream_reducer';
@@ -81,9 +81,9 @@ export interface LogRateAnalysisResultsData {
   /** The type of analysis, whether it's a spike or dip */
   analysisType: LogRateAnalysisType;
   /** Statistically significant field/value items. */
-  significantTerms: SignificantTerm[];
+  significantItems: SignificantItem[];
   /** Statistically significant groups of field/value items. */
-  significantTermsGroups: SignificantTermGroup[];
+  significantItemsGroups: SignificantItemGroup[];
 }
 
 /**
@@ -234,8 +234,8 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
         if (onAnalysisCompleted) {
           onAnalysisCompleted({
             analysisType,
-            significantTerms: data.significantItems,
-            significantTermsGroups: data.significantItemsGroups,
+            significantItems: data.significantItems,
+            significantItemsGroups: data.significantItemsGroups,
           });
         }
       }
@@ -246,7 +246,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
   const errors = useMemo(() => [...streamErrors, ...data.errors], [streamErrors, data.errors]);
 
   // Start handler clears possibly hovered or pinned
-  // significant terms on analysis refresh.
+  // significant items on analysis refresh.
   function startHandler(continueAnalysis = false, resetGroupButton = true) {
     if (!continueAnalysis) {
       setOverrides(undefined);
@@ -482,7 +482,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
       >
         {showLogRateAnalysisResultsTable && groupResults ? (
           <LogRateAnalysisResultsGroupsTable
-            significantTerms={data.significantItems}
+            significantItems={data.significantItems}
             groupTableItems={groupTableItems}
             loading={isRunning}
             dataView={dataView}
@@ -494,7 +494,7 @@ export const LogRateAnalysisResults: FC<LogRateAnalysisResultsProps> = ({
         ) : null}
         {showLogRateAnalysisResultsTable && !groupResults ? (
           <LogRateAnalysisResultsTable
-            significantTerms={data.significantItems}
+            significantItems={data.significantItems}
             loading={isRunning}
             dataView={dataView}
             timeRangeMs={timeRangeMs}
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.test.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.test.ts
index 6e6ea7594f69c..c674da3948644 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.test.ts
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.test.ts
@@ -5,13 +5,13 @@
  * 2.0.
  */
 
-import { finalSignificantTermGroups } from '../../../common/__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../../../common/__mocks__/artificial_logs/final_significant_item_groups';
 
 import { getGroupTableItems } from './get_group_table_items';
 
 describe('getGroupTableItems', () => {
   it('transforms groups into table items', () => {
-    const groupTableItems = getGroupTableItems(finalSignificantTermGroups);
+    const groupTableItems = getGroupTableItems(finalSignificantItemGroups);
 
     expect(groupTableItems).toEqual([
       {
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.ts
index 11331037de481..6767b82444946 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.ts
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_group_table_items.ts
@@ -7,14 +7,14 @@
 
 import { sortBy } from 'lodash';
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import type { GroupTableItem, GroupTableItemGroup } from './types';
 
 export function getGroupTableItems(
-  significantTermsGroups: SignificantTermGroup[]
+  significantItemsGroups: SignificantItemGroup[]
 ): GroupTableItem[] {
-  const tableItems = significantTermsGroups.map(({ id, group, docCount, histogram, pValue }) => {
+  const tableItems = significantItemsGroups.map(({ id, group, docCount, histogram, pValue }) => {
     const sortedGroup = sortBy(group, [(d) => d.fieldName]);
     const dedupedGroup: GroupTableItemGroup[] = [];
 
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.test.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.test.ts
index 99b5e9830b08a..64f4fde55a660 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.test.ts
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.test.ts
@@ -5,21 +5,21 @@
  * 2.0.
  */
 
-import { finalSignificantTermGroups } from '../../../common/__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../../../common/__mocks__/artificial_logs/final_significant_item_groups';
 import { significantTerms } from '../../../common/__mocks__/artificial_logs/significant_terms';
 
 import { getGroupTableItems } from './get_group_table_items';
 import { getTableItemAsKQL } from './get_table_item_as_kql';
 
 describe('getTableItemAsKQL', () => {
-  it('returns a KQL syntax for a significant term', () => {
+  it('returns a KQL syntax for a significant item', () => {
     expect(getTableItemAsKQL(significantTerms[0])).toBe('user:Peter');
     expect(getTableItemAsKQL(significantTerms[1])).toBe('response_code:500');
     expect(getTableItemAsKQL(significantTerms[2])).toBe('url:home.php');
     expect(getTableItemAsKQL(significantTerms[3])).toBe('url:login.php');
   });
-  it('returns a KQL syntax for a group of significant terms', () => {
-    const groupTableItems = getGroupTableItems(finalSignificantTermGroups);
+  it('returns a KQL syntax for a group of significant items', () => {
+    const groupTableItems = getGroupTableItems(finalSignificantItemGroups);
     expect(getTableItemAsKQL(groupTableItems[0])).toBe('user:Peter AND url:login.php');
     expect(getTableItemAsKQL(groupTableItems[1])).toBe('response_code:500 AND url:home.php');
     expect(getTableItemAsKQL(groupTableItems[2])).toBe('url:login.php AND response_code:500');
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.ts
index fb13e3d92173c..4374da0cec276 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.ts
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/get_table_item_as_kql.ts
@@ -6,12 +6,12 @@
  */
 
 import { escapeKuery } from '@kbn/es-query';
-import { isSignificantTerm, type SignificantTerm } from '@kbn/ml-agg-utils';
+import { isSignificantItem, type SignificantItem } from '@kbn/ml-agg-utils';
 
 import type { GroupTableItem } from './types';
 
-export const getTableItemAsKQL = (tableItem: GroupTableItem | SignificantTerm) => {
-  if (isSignificantTerm(tableItem)) {
+export const getTableItemAsKQL = (tableItem: GroupTableItem | SignificantItem) => {
+  if (isSignificantItem(tableItem)) {
     return `${escapeKuery(tableItem.fieldName)}:${escapeKuery(String(tableItem.fieldValue))}`;
   }
 
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx
index 95f4460c7f918..d8845145f1ace 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx
@@ -27,7 +27,7 @@ import type { FieldStatsServices } from '@kbn/unified-field-list/src/components/
 import type { DataView } from '@kbn/data-views-plugin/public';
 import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
-import { type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 import type { TimeRange as TimeRangeMs } from '@kbn/ml-date-picker';
 
 import { getCategoryQuery } from '../../../common/api/log_categorization/get_category_query';
@@ -56,7 +56,7 @@ const DEFAULT_SORT_DIRECTION = 'asc';
 const TRUNCATE_TEXT_LINES = 3;
 
 interface LogRateAnalysisResultsTableProps {
-  significantTerms: SignificantTerm[];
+  significantItems: SignificantItem[];
   dataView: DataView;
   loading: boolean;
   isExpandedRow?: boolean;
@@ -69,7 +69,7 @@ interface LogRateAnalysisResultsTableProps {
 }
 
 export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> = ({
-  significantTerms,
+  significantItems,
   dataView,
   loading,
   isExpandedRow,
@@ -84,16 +84,16 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
 
   const {
     pinnedGroup,
-    pinnedSignificantTerm,
+    pinnedSignificantItem,
     selectedGroup,
-    selectedSignificantTerm,
-    setPinnedSignificantTerm,
-    setSelectedSignificantTerm,
+    selectedSignificantItem,
+    setPinnedSignificantItem,
+    setSelectedSignificantItem,
   } = useLogRateAnalysisResultsTableRowContext();
 
   const [pageIndex, setPageIndex] = useState(0);
   const [pageSize, setPageSize] = useState(10);
-  const [sortField, setSortField] = useState<keyof SignificantTerm>(DEFAULT_SORT_FIELD);
+  const [sortField, setSortField] = useState<keyof SignificantItem>(DEFAULT_SORT_FIELD);
   const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>(DEFAULT_SORT_DIRECTION);
 
   const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext();
@@ -112,7 +112,7 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
   const viewInDiscoverAction = useViewInDiscoverAction(dataViewId);
   const viewInLogPatternAnalysisAction = useViewInLogPatternAnalysisAction(dataViewId);
 
-  const columns: Array<EuiBasicTableColumn<SignificantTerm>> = [
+  const columns: Array<EuiBasicTableColumn<SignificantItem>> = [
     {
       'data-test-subj': 'aiopsLogRateAnalysisResultsTableColumnFieldName',
       field: 'fieldName',
@@ -121,7 +121,7 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
       }),
       render: (_, { fieldName, fieldValue, key, type, doc_count: count }) => {
         const dslQuery =
-          type === SIGNIFICANT_TERM_TYPE.KEYWORD
+          type === SIGNIFICANT_ITEM_TYPE.KEYWORD
             ? searchQuery
             : getCategoryQuery(fieldName, [
                 {
@@ -132,17 +132,17 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
               ]);
         return (
           <>
-            {type === SIGNIFICANT_TERM_TYPE.KEYWORD && (
+            {type === SIGNIFICANT_ITEM_TYPE.KEYWORD && (
               <FieldStatsPopover
                 dataView={dataView}
                 fieldName={fieldName}
-                fieldValue={type === SIGNIFICANT_TERM_TYPE.KEYWORD ? fieldValue : key}
+                fieldValue={type === SIGNIFICANT_ITEM_TYPE.KEYWORD ? fieldValue : key}
                 fieldStatsServices={fieldStatsServices}
                 dslQuery={dslQuery}
                 timeRangeMs={timeRangeMs}
               />
             )}
-            {type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN && (
+            {type === SIGNIFICANT_ITEM_TYPE.LOG_PATTERN && (
               <EuiToolTip
                 content={i18n.translate(
                   'xpack.aiops.fieldContextPopover.descriptionTooltipLogPattern',
@@ -351,12 +351,12 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
 
   const { pagination, pageOfItems, sorting } = useMemo(() => {
     const pageStart = pageIndex * pageSize;
-    const itemCount = significantTerms?.length ?? 0;
+    const itemCount = significantItems?.length ?? 0;
 
-    let items: SignificantTerm[] = significantTerms ?? [];
+    let items: SignificantItem[] = significantItems ?? [];
 
     const sortIteratees = [
-      (item: SignificantTerm) => {
+      (item: SignificantItem) => {
         if (item && typeof item[sortField] === 'string') {
           // @ts-ignore Object is possibly null or undefined
           return item[sortField].toLowerCase();
@@ -368,11 +368,11 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
 
     // Only if the table is sorted by p-value, add a secondary sort by doc count.
     if (sortField === 'pValue') {
-      sortIteratees.push((item: SignificantTerm) => item.doc_count);
+      sortIteratees.push((item: SignificantItem) => item.doc_count);
       sortDirections.push(sortDirection);
     }
 
-    items = orderBy(significantTerms, sortIteratees, sortDirections);
+    items = orderBy(significantItems, sortIteratees, sortDirections);
 
     return {
       pageOfItems: items.slice(pageStart, pageStart + pageSize),
@@ -389,59 +389,59 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
         },
       },
     };
-  }, [pageIndex, pageSize, sortField, sortDirection, significantTerms]);
+  }, [pageIndex, pageSize, sortField, sortDirection, significantItems]);
 
   useEffect(() => {
     // If no row is hovered or pinned or the user switched to a new page,
     // fall back to set the first row into a hovered state to make the
     // main document count chart show a comparison view by default.
     if (
-      (selectedSignificantTerm === null ||
-        !pageOfItems.some((item) => isEqual(item, selectedSignificantTerm))) &&
-      pinnedSignificantTerm === null &&
+      (selectedSignificantItem === null ||
+        !pageOfItems.some((item) => isEqual(item, selectedSignificantItem))) &&
+      pinnedSignificantItem === null &&
       pageOfItems.length > 0 &&
       selectedGroup === null &&
       pinnedGroup === null
     ) {
-      setSelectedSignificantTerm(pageOfItems[0]);
+      setSelectedSignificantItem(pageOfItems[0]);
     }
 
     // If a user switched pages and a pinned row is no longer visible
     // on the current page, set the status of pinned rows back to `null`.
     if (
-      pinnedSignificantTerm !== null &&
-      !pageOfItems.some((item) => isEqual(item, pinnedSignificantTerm)) &&
+      pinnedSignificantItem !== null &&
+      !pageOfItems.some((item) => isEqual(item, pinnedSignificantItem)) &&
       selectedGroup === null &&
       pinnedGroup === null
     ) {
-      setPinnedSignificantTerm(null);
+      setPinnedSignificantItem(null);
     }
   }, [
     selectedGroup,
-    selectedSignificantTerm,
-    setSelectedSignificantTerm,
-    setPinnedSignificantTerm,
+    selectedSignificantItem,
+    setSelectedSignificantItem,
+    setPinnedSignificantItem,
     pageOfItems,
     pinnedGroup,
-    pinnedSignificantTerm,
+    pinnedSignificantItem,
   ]);
 
   // When the analysis results table unmounts,
   // make sure to reset any hovered or pinned rows.
   useEffect(
     () => () => {
-      setSelectedSignificantTerm(null);
-      setPinnedSignificantTerm(null);
+      setSelectedSignificantItem(null);
+      setPinnedSignificantItem(null);
     },
     // eslint-disable-next-line react-hooks/exhaustive-deps
     []
   );
 
-  const getRowStyle = (significantTerm: SignificantTerm) => {
+  const getRowStyle = (significantItem: SignificantItem) => {
     if (
-      pinnedSignificantTerm &&
-      pinnedSignificantTerm.fieldName === significantTerm.fieldName &&
-      pinnedSignificantTerm.fieldValue === significantTerm.fieldValue
+      pinnedSignificantItem &&
+      pinnedSignificantItem.fieldName === significantItem.fieldName &&
+      pinnedSignificantItem.fieldValue === significantItem.fieldValue
     ) {
       return {
         backgroundColor: primaryBackgroundColor,
@@ -449,9 +449,9 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
     }
 
     if (
-      selectedSignificantTerm &&
-      selectedSignificantTerm.fieldName === significantTerm.fieldName &&
-      selectedSignificantTerm.fieldValue === significantTerm.fieldValue
+      selectedSignificantItem &&
+      selectedSignificantItem.fieldName === significantItem.fieldName &&
+      selectedSignificantItem.fieldValue === significantItem.fieldValue
     ) {
       return {
         backgroundColor: euiTheme.euiColorLightestShade,
@@ -479,29 +479,29 @@ export const LogRateAnalysisResultsTable: FC<LogRateAnalysisResultsTableProps> =
       onChange={onChange}
       pagination={pagination.totalItemCount > pagination.pageSize ? pagination : undefined}
       loading={false}
-      sorting={sorting as EuiTableSortingType<SignificantTerm>}
-      rowProps={(significantTerm) => {
+      sorting={sorting as EuiTableSortingType<SignificantItem>}
+      rowProps={(significantItem) => {
         return {
-          'data-test-subj': `aiopsLogRateAnalysisResultsTableRow row-${significantTerm.fieldName}-${significantTerm.fieldValue}`,
+          'data-test-subj': `aiopsLogRateAnalysisResultsTableRow row-${significantItem.fieldName}-${significantItem.fieldValue}`,
           onClick: () => {
             if (
-              significantTerm.fieldName === pinnedSignificantTerm?.fieldName &&
-              significantTerm.fieldValue === pinnedSignificantTerm?.fieldValue
+              significantItem.fieldName === pinnedSignificantItem?.fieldName &&
+              significantItem.fieldValue === pinnedSignificantItem?.fieldValue
             ) {
-              setPinnedSignificantTerm(null);
+              setPinnedSignificantItem(null);
             } else {
-              setPinnedSignificantTerm(significantTerm);
+              setPinnedSignificantItem(significantItem);
             }
           },
           onMouseEnter: () => {
-            if (pinnedSignificantTerm === null) {
-              setSelectedSignificantTerm(significantTerm);
+            if (pinnedSignificantItem === null) {
+              setSelectedSignificantItem(significantItem);
             }
           },
           onMouseLeave: () => {
-            setSelectedSignificantTerm(null);
+            setSelectedSignificantItem(null);
           },
-          style: getRowStyle(significantTerm),
+          style: getRowStyle(significantItem),
         };
       }}
     />
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx
index 9f45c79b0746d..f6961e49c2c78 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx
@@ -28,7 +28,7 @@ import {
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 import type { TimeRange as TimeRangeMs } from '@kbn/ml-date-picker';
 import type { DataView } from '@kbn/data-views-plugin/public';
 
@@ -53,7 +53,7 @@ const DEFAULT_SORT_FIELD = 'pValue';
 const DEFAULT_SORT_DIRECTION = 'asc';
 
 interface LogRateAnalysisResultsTableProps {
-  significantTerms: SignificantTerm[];
+  significantItems: SignificantItem[];
   groupTableItems: GroupTableItem[];
   loading: boolean;
   searchQuery: estypes.QueryDslQueryContainer;
@@ -66,7 +66,7 @@ interface LogRateAnalysisResultsTableProps {
 }
 
 export const LogRateAnalysisResultsGroupsTable: FC<LogRateAnalysisResultsTableProps> = ({
-  significantTerms,
+  significantItems,
   groupTableItems,
   loading,
   dataView,
@@ -98,9 +98,9 @@ export const LogRateAnalysisResultsGroupsTable: FC<LogRateAnalysisResultsTablePr
     } else {
       itemIdToExpandedRowMapValues[item.id] = (
         <LogRateAnalysisResultsTable
-          significantTerms={item.groupItemsSortedByUniqueness.reduce<SignificantTerm[]>(
+          significantItems={item.groupItemsSortedByUniqueness.reduce<SignificantItem[]>(
             (p, groupItem) => {
-              const st = significantTerms.find(
+              const st = significantItems.find(
                 (d) => d.fieldName === groupItem.fieldName && d.fieldValue === groupItem.fieldValue
               );
 
@@ -139,7 +139,11 @@ export const LogRateAnalysisResultsGroupsTable: FC<LogRateAnalysisResultsTablePr
       isExpander: true,
       name: (
         <EuiScreenReaderOnly>
-          <span>Expand rows</span>
+          <span>
+            {i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.expandRowsLabel', {
+              defaultMessage: 'Expand rows',
+            })}
+          </span>
         </EuiScreenReaderOnly>
       ),
       render: (item: GroupTableItem) => (
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_row_provider.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_row_provider.tsx
index f4d6c77c9756f..a7b3398e4e7cc 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_row_provider.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_row_provider.tsx
@@ -15,23 +15,23 @@ import React, {
   type SetStateAction,
 } from 'react';
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import type { GroupTableItem } from './types';
 
-type SignificantTermOrNull = SignificantTerm | null;
+type SignificantItemOrNull = SignificantItem | null;
 type GroupOrNull = GroupTableItem | null;
 
 interface LogRateAnalysisResultsTableRow {
-  pinnedSignificantTerm: SignificantTermOrNull;
-  setPinnedSignificantTerm: Dispatch<SetStateAction<SignificantTermOrNull>>;
+  pinnedSignificantItem: SignificantItemOrNull;
+  setPinnedSignificantItem: Dispatch<SetStateAction<SignificantItemOrNull>>;
   pinnedGroup: GroupOrNull;
   setPinnedGroup: Dispatch<SetStateAction<GroupOrNull>>;
-  selectedSignificantTerm: SignificantTermOrNull;
-  setSelectedSignificantTerm: Dispatch<SetStateAction<SignificantTermOrNull>>;
+  selectedSignificantItem: SignificantItemOrNull;
+  setSelectedSignificantItem: Dispatch<SetStateAction<SignificantItemOrNull>>;
   selectedGroup: GroupOrNull;
   setSelectedGroup: Dispatch<SetStateAction<GroupOrNull>>;
-  currentSelectedSignificantTerm?: SignificantTerm;
+  currentSelectedSignificantItem?: SignificantItem;
   currentSelectedGroup?: GroupTableItem;
   clearAllRowState: () => void;
 }
@@ -42,20 +42,20 @@ export const logRateAnalysisResultsTableRowContext = createContext<
 
 export const LogRateAnalysisResultsTableRowStateProvider: FC = ({ children }) => {
   // State that will be shared with all components
-  const [pinnedSignificantTerm, setPinnedSignificantTerm] = useState<SignificantTermOrNull>(null);
+  const [pinnedSignificantItem, setPinnedSignificantItem] = useState<SignificantItemOrNull>(null);
   const [pinnedGroup, setPinnedGroup] = useState<GroupOrNull>(null);
-  const [selectedSignificantTerm, setSelectedSignificantTerm] =
-    useState<SignificantTermOrNull>(null);
+  const [selectedSignificantItem, setSelectedSignificantItem] =
+    useState<SignificantItemOrNull>(null);
   const [selectedGroup, setSelectedGroup] = useState<GroupOrNull>(null);
 
   // If a row is pinned, still overrule with a potentially hovered row.
-  const currentSelectedSignificantTerm = useMemo(() => {
-    if (selectedSignificantTerm) {
-      return selectedSignificantTerm;
-    } else if (pinnedSignificantTerm) {
-      return pinnedSignificantTerm;
+  const currentSelectedSignificantItem = useMemo(() => {
+    if (selectedSignificantItem) {
+      return selectedSignificantItem;
+    } else if (pinnedSignificantItem) {
+      return pinnedSignificantItem;
     }
-  }, [pinnedSignificantTerm, selectedSignificantTerm]);
+  }, [pinnedSignificantItem, selectedSignificantItem]);
 
   // If a group is pinned, still overrule with a potentially hovered group.
   const currentSelectedGroup = useMemo(() => {
@@ -68,33 +68,33 @@ export const LogRateAnalysisResultsTableRowStateProvider: FC = ({ children }) =>
 
   const contextValue: LogRateAnalysisResultsTableRow = useMemo(
     () => ({
-      pinnedSignificantTerm,
-      setPinnedSignificantTerm,
+      pinnedSignificantItem,
+      setPinnedSignificantItem,
       pinnedGroup,
       setPinnedGroup,
-      selectedSignificantTerm,
-      setSelectedSignificantTerm,
+      selectedSignificantItem,
+      setSelectedSignificantItem,
       selectedGroup,
       setSelectedGroup,
-      currentSelectedSignificantTerm,
+      currentSelectedSignificantItem,
       currentSelectedGroup,
       clearAllRowState: () => {
-        setPinnedSignificantTerm(null);
+        setPinnedSignificantItem(null);
         setPinnedGroup(null);
-        setSelectedSignificantTerm(null);
+        setSelectedSignificantItem(null);
         setSelectedGroup(null);
       },
     }),
     [
-      pinnedSignificantTerm,
-      setPinnedSignificantTerm,
+      pinnedSignificantItem,
+      setPinnedSignificantItem,
       pinnedGroup,
       setPinnedGroup,
-      selectedSignificantTerm,
-      setSelectedSignificantTerm,
+      selectedSignificantItem,
+      setSelectedSignificantItem,
       selectedGroup,
       setSelectedGroup,
-      currentSelectedSignificantTerm,
+      currentSelectedSignificantItem,
       currentSelectedGroup,
     ]
   );
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/types.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/types.ts
index 66a8a7fe5ab00..400e4534b54f1 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/types.ts
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/types.ts
@@ -7,10 +7,10 @@
 
 import type { EuiTableActionsColumnType } from '@elastic/eui';
 
-import type { SignificantTerm, SignificantTermGroupItem } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroupItem } from '@kbn/ml-agg-utils';
 
 export type GroupTableItemGroup = Pick<
-  SignificantTermGroupItem,
+  SignificantItemGroupItem,
   'key' | 'type' | 'fieldName' | 'fieldValue' | 'docCount' | 'pValue' | 'duplicate'
 >;
 
@@ -20,9 +20,9 @@ export interface GroupTableItem {
   pValue: number | null;
   uniqueItemsCount: number;
   groupItemsSortedByUniqueness: GroupTableItemGroup[];
-  histogram: SignificantTerm['histogram'];
+  histogram: SignificantItem['histogram'];
 }
 
 export type TableItemAction = EuiTableActionsColumnType<
-  SignificantTerm | GroupTableItem
+  SignificantItem | GroupTableItem
 >['actions'][number];
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.test.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.test.tsx
index 0984c76a4b170..52ffafd29bcc5 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.test.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.test.tsx
@@ -10,9 +10,9 @@ import userEvent from '@testing-library/user-event';
 import { render, act } from '@testing-library/react';
 import { renderHook } from '@testing-library/react-hooks';
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
-import { finalSignificantTermGroups } from '../../../common/__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../../../common/__mocks__/artificial_logs/final_significant_item_groups';
 import { significantTerms } from '../../../common/__mocks__/artificial_logs/significant_terms';
 
 import { getGroupTableItems } from './get_group_table_items';
@@ -20,14 +20,14 @@ import { useCopyToClipboardAction } from './use_copy_to_clipboard_action';
 import type { GroupTableItem } from './types';
 
 interface Action {
-  render: (tableItem: SignificantTerm | GroupTableItem) => ReactElement;
+  render: (tableItem: SignificantItem | GroupTableItem) => ReactElement;
 }
 
 const execCommandMock = (global.document.execCommand = jest.fn());
 const warn = jest.spyOn(console, 'warn').mockImplementation(() => {});
 
 describe('useCopyToClipboardAction', () => {
-  it('renders the action for a single significant term', async () => {
+  it('renders the action for a single significant item', async () => {
     execCommandMock.mockImplementationOnce(() => true);
     const { result } = renderHook(() => useCopyToClipboardAction());
     const { findByText, getByTestId } = render(
@@ -57,7 +57,7 @@ describe('useCopyToClipboardAction', () => {
 
   it('renders the action for a group of items', async () => {
     execCommandMock.mockImplementationOnce(() => true);
-    const groupTableItems = getGroupTableItems(finalSignificantTermGroups);
+    const groupTableItems = getGroupTableItems(finalSignificantItemGroups);
     const { result } = renderHook(useCopyToClipboardAction);
     const { findByText, getByText } = render((result.current as Action).render(groupTableItems[0]));
 
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.tsx
index 87b5239843940..b7dc328f1a468 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_copy_to_clipboard_action.tsx
@@ -10,7 +10,7 @@ import React from 'react';
 import { EuiCopy, EuiToolTip } from '@elastic/eui';
 
 import { i18n } from '@kbn/i18n';
-import { isSignificantTerm, type SignificantTerm } from '@kbn/ml-agg-utils';
+import { isSignificantItem, type SignificantItem } from '@kbn/ml-agg-utils';
 
 import { TableActionButton } from './table_action_button';
 import { getTableItemAsKQL } from './get_table_item_as_kql';
@@ -23,8 +23,8 @@ const copyToClipboardButtonLabel = i18n.translate(
   }
 );
 
-const copyToClipboardSignificantTermMessage = i18n.translate(
-  'xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantTermMessage',
+const copyToClipboardSignificantItemMessage = i18n.translate(
+  'xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantItemMessage',
   {
     defaultMessage: 'Copy field/value pair as KQL syntax to clipboard',
   }
@@ -38,9 +38,9 @@ const copyToClipboardGroupMessage = i18n.translate(
 );
 
 export const useCopyToClipboardAction = (): TableItemAction => ({
-  render: (tableItem: SignificantTerm | GroupTableItem) => {
-    const message = isSignificantTerm(tableItem)
-      ? copyToClipboardSignificantTermMessage
+  render: (tableItem: SignificantItem | GroupTableItem) => {
+    const message = isSignificantItem(tableItem)
+      ? copyToClipboardSignificantItemMessage
       : copyToClipboardGroupMessage;
     return (
       <EuiToolTip content={message}>
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx
index 1547daba0017e..7f467ded4c24b 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx
@@ -8,7 +8,7 @@
 import React, { useMemo } from 'react';
 
 import { i18n } from '@kbn/i18n';
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils';
 import { useAiopsAppContext } from '../../hooks/use_aiops_app_context';
@@ -65,7 +65,7 @@ export const useViewInDiscoverAction = (dataViewId?: string): TableItemAction =>
     }
   }, [application.capabilities.discover?.show, dataViewId, discoverLocator]);
 
-  const generateDiscoverUrl = async (groupTableItem: GroupTableItem | SignificantTerm) => {
+  const generateDiscoverUrl = async (groupTableItem: GroupTableItem | SignificantItem) => {
     if (discoverLocator !== undefined) {
       const url = await discoverLocator.getRedirectUrl({
         indexPatternId: dataViewId,
@@ -82,7 +82,7 @@ export const useViewInDiscoverAction = (dataViewId?: string): TableItemAction =>
   };
 
   return {
-    render: (tableItem: SignificantTerm | GroupTableItem) => {
+    render: (tableItem: SignificantItem | GroupTableItem) => {
       const tooltipText = discoverUrlError ? discoverUrlError : viewInDiscoverMessage;
 
       const clickHandler = async () => {
diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx
index ba25db2b76aac..86f468e207389 100644
--- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx
+++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx
@@ -10,7 +10,7 @@ import React, { useMemo } from 'react';
 import { SerializableRecord } from '@kbn/utility-types';
 import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query';
 import { i18n } from '@kbn/i18n';
-import { isSignificantTerm, type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { isSignificantItem, type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 
 import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils';
 import { useAiopsAppContext } from '../../hooks/use_aiops_app_context';
@@ -19,8 +19,8 @@ import { TableActionButton } from './table_action_button';
 import { getTableItemAsKQL } from './get_table_item_as_kql';
 import type { GroupTableItem, TableItemAction } from './types';
 
-const isLogPattern = (tableItem: SignificantTerm | GroupTableItem) =>
-  isSignificantTerm(tableItem) && tableItem.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN;
+const isLogPattern = (tableItem: SignificantItem | GroupTableItem) =>
+  isSignificantItem(tableItem) && tableItem.type === SIGNIFICANT_ITEM_TYPE.LOG_PATTERN;
 
 const viewInLogPatternAnalysisMessage = i18n.translate(
   'xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInLogPatternAnalysis',
@@ -35,7 +35,7 @@ export const useViewInLogPatternAnalysisAction = (dataViewId?: string): TableIte
   const mlLocator = useMemo(() => share.url.locators.get('ML_APP_LOCATOR'), [share.url.locators]);
 
   const generateLogPatternAnalysisUrl = async (
-    groupTableItem: GroupTableItem | SignificantTerm
+    groupTableItem: GroupTableItem | SignificantItem
   ) => {
     if (mlLocator !== undefined) {
       const searchString = getTableItemAsKQL(groupTableItem);
@@ -85,7 +85,7 @@ export const useViewInLogPatternAnalysisAction = (dataViewId?: string): TableIte
   }, [dataViewId, mlLocator]);
 
   return {
-    render: (tableItem: SignificantTerm | GroupTableItem) => {
+    render: (tableItem: SignificantItem | GroupTableItem) => {
       const message = logPatternAnalysisUrlError
         ? logPatternAnalysisUrlError
         : viewInLogPatternAnalysisMessage;
diff --git a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
index 5b6a28cc59463..6f1564cb6f86c 100644
--- a/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
+++ b/x-pack/plugins/aiops/public/components/mini_histogram/mini_histogram.tsx
@@ -20,14 +20,14 @@ import {
 import { EuiLoadingChart, EuiTextColor } from '@elastic/eui';
 
 import { FormattedMessage } from '@kbn/i18n-react';
-import type { SignificantTermHistogramItem } from '@kbn/ml-agg-utils';
+import type { SignificantItemHistogramItem } from '@kbn/ml-agg-utils';
 
 import { i18n } from '@kbn/i18n';
 import { useAiopsAppContext } from '../../hooks/use_aiops_app_context';
 import { useEuiTheme } from '../../hooks/use_eui_theme';
 
 interface MiniHistogramProps {
-  chartData?: SignificantTermHistogramItem[];
+  chartData?: SignificantItemHistogramItem[];
   isLoading: boolean;
   label: string;
   /** Optional color override for the default bar color for charts */
diff --git a/x-pack/plugins/aiops/public/get_document_stats.ts b/x-pack/plugins/aiops/public/get_document_stats.ts
index 9c5a53c8870e7..d4933d103eb7e 100644
--- a/x-pack/plugins/aiops/public/get_document_stats.ts
+++ b/x-pack/plugins/aiops/public/get_document_stats.ts
@@ -10,7 +10,7 @@ import { each, get } from 'lodash';
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import { isPopulatedObject } from '@kbn/ml-is-populated-object';
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 import type { Query } from '@kbn/es-query';
 import type { RandomSamplerWrapper } from '@kbn/ml-random-sampler-utils';
 
@@ -34,8 +34,8 @@ export interface DocumentStatsSearchStrategyParams {
   timeFieldName?: string;
   runtimeFieldMap?: estypes.MappingRuntimeFields;
   fieldsToFetch?: string[];
-  selectedSignificantTerm?: SignificantTerm;
-  includeSelectedSignificantTerm?: boolean;
+  selectedSignificantItem?: SignificantItem;
+  includeSelectedSignificantItem?: boolean;
   selectedGroup?: GroupTableItem | null;
   trackTotalHits?: boolean;
 }
@@ -54,8 +54,8 @@ export const getDocumentCountStatsRequest = (
     searchQuery,
     intervalMs,
     fieldsToFetch,
-    selectedSignificantTerm,
-    includeSelectedSignificantTerm,
+    selectedSignificantItem,
+    includeSelectedSignificantItem,
     selectedGroup,
     trackTotalHits,
   } = params;
@@ -66,8 +66,8 @@ export const getDocumentCountStatsRequest = (
     earliestMs,
     latestMs,
     searchQuery,
-    selectedSignificantTerm,
-    includeSelectedSignificantTerm,
+    selectedSignificantItem,
+    includeSelectedSignificantItem,
     selectedGroup
   );
 
diff --git a/x-pack/plugins/aiops/public/hooks/use_data.ts b/x-pack/plugins/aiops/public/hooks/use_data.ts
index d44eb1661db34..934a470588960 100644
--- a/x-pack/plugins/aiops/public/hooks/use_data.ts
+++ b/x-pack/plugins/aiops/public/hooks/use_data.ts
@@ -11,7 +11,7 @@ import type { Moment } from 'moment';
 
 import { useExecutionContext } from '@kbn/kibana-react-plugin/public';
 import type { DataView } from '@kbn/data-views-plugin/public';
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import type { Dictionary } from '@kbn/ml-url-state';
 import { mlTimefilterRefresh$, useTimefilter } from '@kbn/ml-date-picker';
@@ -34,7 +34,7 @@ export const useData = (
   contextId: string,
   searchQuery: estypes.QueryDslQueryContainer,
   onUpdate?: (params: Dictionary<unknown>) => void,
-  selectedSignificantTerm?: SignificantTerm,
+  selectedSignificantItem?: SignificantItem,
   selectedGroup: GroupTableItem | null = null,
   barTarget: number = DEFAULT_BAR_TARGET,
   timeRange?: { min: Moment; max: Moment }
@@ -78,27 +78,27 @@ export const useData = (
     return fieldStatsRequest
       ? {
           ...fieldStatsRequest,
-          selectedSignificantTerm,
+          selectedSignificantItem,
           selectedGroup,
-          includeSelectedSignificantTerm: false,
+          includeSelectedSignificantItem: false,
         }
       : undefined;
-  }, [fieldStatsRequest, selectedSignificantTerm, selectedGroup]);
+  }, [fieldStatsRequest, selectedSignificantItem, selectedGroup]);
 
-  const selectedSignificantTermStatsRequest = useMemo(() => {
-    return fieldStatsRequest && (selectedSignificantTerm || selectedGroup)
+  const selectedSignificantItemStatsRequest = useMemo(() => {
+    return fieldStatsRequest && (selectedSignificantItem || selectedGroup)
       ? {
           ...fieldStatsRequest,
-          selectedSignificantTerm,
+          selectedSignificantItem,
           selectedGroup,
-          includeSelectedSignificantTerm: true,
+          includeSelectedSignificantItem: true,
         }
       : undefined;
-  }, [fieldStatsRequest, selectedSignificantTerm, selectedGroup]);
+  }, [fieldStatsRequest, selectedSignificantItem, selectedGroup]);
 
   const documentStats = useDocumentCountStats(
     overallStatsRequest,
-    selectedSignificantTermStatsRequest,
+    selectedSignificantItemStatsRequest,
     lastRefresh
   );
 
diff --git a/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts b/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts
index 8cfaa074286d6..c154640acd4e8 100644
--- a/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts
+++ b/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts
@@ -94,7 +94,7 @@ export function useDocumentCountStats<TParams extends DocumentStatsSearchStrateg
 
       const totalHitsParams = {
         ...searchParams,
-        selectedSignificantTerm: undefined,
+        selectedSignificantItem: undefined,
         trackTotalHits: true,
       };
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/duplicate_identifier.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/duplicate_identifier.ts
index 82513ab2b4e2f..d399aa324b3b1 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/duplicate_identifier.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/duplicate_identifier.ts
@@ -5,12 +5,12 @@
  * 2.0.
  */
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
-// To optimize the `frequent_item_sets` query, we identify duplicate significant terms by count attributes.
-// Note this is a compromise and not 100% accurate because there could be significant terms that
+// To optimize the `frequent_item_sets` query, we identify duplicate significant items by count attributes.
+// Note this is a compromise and not 100% accurate because there could be significant items that
 // have the exact same counts but still don't co-occur.
-export const duplicateIdentifier: Array<keyof SignificantTerm> = [
+export const duplicateIdentifier: Array<keyof SignificantItem> = [
   'doc_count',
   'bg_count',
   'total_doc_count',
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_frequent_item_sets.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_frequent_item_sets.ts
index c74030efaea7f..ff02251b64f95 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_frequent_item_sets.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_frequent_item_sets.ts
@@ -12,12 +12,12 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server';
 import type { Logger } from '@kbn/logging';
-import { type SignificantTerm } from '@kbn/ml-agg-utils';
+import { type SignificantItem } from '@kbn/ml-agg-utils';
 import { createRandomSamplerWrapper } from '@kbn/ml-random-sampler-utils';
 
 import { RANDOM_SAMPLER_SEED, LOG_RATE_ANALYSIS_SETTINGS } from '../../../../common/constants';
 import type {
-  SignificantTermDuplicateGroup,
+  SignificantItemDuplicateGroup,
   ItemSet,
   FetchFrequentItemSetsResponse,
 } from '../../../../common/types';
@@ -29,10 +29,10 @@ interface FrequentItemSetsAggregation extends estypes.AggregationsSamplerAggrega
 }
 
 export function groupDuplicates(
-  cps: SignificantTerm[],
-  uniqueFields: Array<keyof SignificantTerm>
+  cps: SignificantItem[],
+  uniqueFields: Array<keyof SignificantItem>
 ) {
-  const groups: SignificantTermDuplicateGroup[] = [];
+  const groups: SignificantItemDuplicateGroup[] = [];
 
   for (const cp of cps) {
     const compareAttributes = pick(cp, uniqueFields);
@@ -51,16 +51,16 @@ export function groupDuplicates(
   return groups;
 }
 
-export function getShouldClauses(significantTerms: SignificantTerm[]) {
+export function getShouldClauses(significantItems: SignificantItem[]) {
   return Array.from(
-    group(significantTerms, ({ fieldName }) => fieldName),
+    group(significantItems, ({ fieldName }) => fieldName),
     ([field, values]) => ({ terms: { [field]: values.map((d) => d.fieldValue) } })
   );
 }
 
-export function getFrequentItemSetsAggFields(significantTerms: SignificantTerm[]) {
+export function getFrequentItemSetsAggFields(significantItems: SignificantItem[]) {
   return Array.from(
-    group(significantTerms, ({ fieldName }) => fieldName),
+    group(significantItems, ({ fieldName }) => fieldName),
     ([field, values]) => ({ field, include: values.map((d) => String(d.fieldValue)) })
   );
 }
@@ -69,7 +69,7 @@ export async function fetchFrequentItemSets(
   client: ElasticsearchClient,
   index: string,
   searchQuery: estypes.QueryDslQueryContainer,
-  significantTerms: SignificantTerm[],
+  significantItems: SignificantItem[],
   timeFieldName: string,
   deviationMin: number,
   deviationMax: number,
@@ -80,7 +80,7 @@ export async function fetchFrequentItemSets(
   abortSignal?: AbortSignal
 ): Promise<FetchFrequentItemSetsResponse> {
   // Sort significant terms by ascending p-value, necessary to apply the field limit correctly.
-  const sortedSignificantTerms = significantTerms.slice().sort((a, b) => {
+  const sortedSignificantItems = significantItems.slice().sort((a, b) => {
     return (a.pValue ?? 0) - (b.pValue ?? 0);
   });
 
@@ -98,7 +98,7 @@ export async function fetchFrequentItemSets(
           },
         },
       ],
-      should: getShouldClauses(sortedSignificantTerms),
+      should: getShouldClauses(sortedSignificantItems),
     },
   };
 
@@ -108,7 +108,7 @@ export async function fetchFrequentItemSets(
         minimum_set_size: 2,
         size: 200,
         minimum_support: LOG_RATE_ANALYSIS_SETTINGS.FREQUENT_ITEMS_SETS_MINIMUM_SUPPORT,
-        fields: getFrequentItemSetsAggFields(sortedSignificantTerms),
+        fields: getFrequentItemSetsAggFields(sortedSignificantItems),
       },
     },
   };
@@ -177,7 +177,7 @@ export async function fetchFrequentItemSets(
     Object.entries(fis.key).forEach(([key, value]) => {
       result.set[key] = value[0];
 
-      const pValue = sortedSignificantTerms.find(
+      const pValue = sortedSignificantItems.find(
         (t) => t.fieldName === key && t.fieldValue === value[0]
       )?.pValue;
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
index 4cf106a369464..49617a1661ba6 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_categories.ts
@@ -10,7 +10,7 @@ import { uniq } from 'lodash';
 import { ElasticsearchClient } from '@kbn/core/server';
 import type { Logger } from '@kbn/logging';
 import { criticalTableLookup, type Histogram } from '@kbn/ml-chi2test';
-import { type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 
 import type { Category } from '../../../../common/api/log_categorization/types';
 import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
@@ -83,7 +83,7 @@ export const fetchSignificantCategories = async (
 
   if (categoriesOverall.length !== fieldNames.length) return [];
 
-  const significantCategories: SignificantTerm[] = [];
+  const significantCategories: SignificantItem[] = [];
 
   // Using for...of to allow `await` within the loop.
   for (const [i, fieldName] of fieldNames.entries()) {
@@ -152,7 +152,7 @@ export const fetchSignificantCategories = async (
           score,
           pValue,
           normalizedScore: getNormalizedScore(score),
-          type: SIGNIFICANT_TERM_TYPE.LOG_PATTERN,
+          type: SIGNIFICANT_ITEM_TYPE.LOG_PATTERN,
         });
       }
     });
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
index 10b488940ce2c..6cdf6983d5827 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_significant_term_p_values.ts
@@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import { ElasticsearchClient } from '@kbn/core/server';
 
 import type { Logger } from '@kbn/logging';
-import { type SignificantTerm, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 import {
   createRandomSamplerWrapper,
   type RandomSamplerWrapper,
@@ -111,13 +111,13 @@ export const fetchSignificantTermPValues = async (
   sampleProbability: number = 1,
   emitError: (m: string) => void,
   abortSignal?: AbortSignal
-): Promise<SignificantTerm[]> => {
+): Promise<SignificantItem[]> => {
   const randomSamplerWrapper = createRandomSamplerWrapper({
     probability: sampleProbability,
     seed: RANDOM_SAMPLER_SEED,
   });
 
-  const result: SignificantTerm[] = [];
+  const result: SignificantItem[] = [];
 
   const settledPromises = await Promise.allSettled(
     fieldNames.map((fieldName) =>
@@ -168,7 +168,7 @@ export const fetchSignificantTermPValues = async (
       if (typeof pValue === 'number' && pValue < LOG_RATE_ANALYSIS_SETTINGS.P_VALUE_THRESHOLD) {
         result.push({
           key: `${fieldName}:${String(bucket.key)}`,
-          type: SIGNIFICANT_TERM_TYPE.KEYWORD,
+          type: SIGNIFICANT_ITEM_TYPE.KEYWORD,
           fieldName,
           fieldValue: String(bucket.key),
           doc_count: bucket.doc_count,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
index 14be571331fd0..b9eac01041be1 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/fetch_terms_2_categories_counts.ts
@@ -11,7 +11,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
 import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server';
 import type { Logger } from '@kbn/logging';
-import type { FieldValuePair, SignificantTerm } from '@kbn/ml-agg-utils';
+import type { FieldValuePair, SignificantItem } from '@kbn/ml-agg-utils';
 import { isPopulatedObject } from '@kbn/ml-is-populated-object';
 
 import type { AiopsLogRateAnalysisSchema } from '../../../../common/api/log_rate_analysis/schema';
@@ -68,9 +68,9 @@ export async function fetchTerms2CategoriesCounts(
   esClient: ElasticsearchClient,
   params: AiopsLogRateAnalysisSchema,
   searchQuery: estypes.QueryDslQueryContainer,
-  significantTerms: SignificantTerm[],
+  significantTerms: SignificantItem[],
   itemSets: ItemSet[],
-  significantCategories: SignificantTerm[],
+  significantCategories: SignificantItem[],
   from: number,
   to: number,
   logger: Logger,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.test.ts
index fb04844c5bd3d..903755eca45d5 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { significantTermGroups } from '../../../../common/__mocks__/farequote/significant_term_groups';
+import { significantItemGroups } from '../../../../common/__mocks__/farequote/significant_item_groups';
 import { fields } from '../../../../common/__mocks__/artificial_logs/fields';
 import { filteredFrequentItemSets } from '../../../../common/__mocks__/artificial_logs/filtered_frequent_item_sets';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
@@ -16,7 +16,7 @@ import { getSimpleHierarchicalTreeLeaves } from './get_simple_hierarchical_tree_
 
 describe('getFieldValuePairCounts', () => {
   it('returns a nested record with field/value pair counts for farequote', () => {
-    const fieldValuePairCounts = getFieldValuePairCounts(significantTermGroups);
+    const fieldValuePairCounts = getFieldValuePairCounts(significantItemGroups);
 
     expect(fieldValuePairCounts).toEqual({
       airline: {
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.ts
index 429306139d402..6d0e15f2117f8 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_field_value_pair_counts.ts
@@ -5,14 +5,14 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import type { FieldValuePairCounts } from '../../../../common/types';
 
 /**
  * Get a nested record of field/value pairs with counts
  */
-export function getFieldValuePairCounts(cpgs: SignificantTermGroup[]): FieldValuePairCounts {
+export function getFieldValuePairCounts(cpgs: SignificantItemGroup[]): FieldValuePairCounts {
   return cpgs.reduce<FieldValuePairCounts>((p, { group }) => {
     group.forEach(({ fieldName, fieldValue }) => {
       if (p[fieldName] === undefined) {
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.test.ts
index e4d30a4438c6e..9f583f9e199df 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.test.ts
@@ -5,13 +5,13 @@
  * 2.0.
  */
 
-import { finalSignificantTermGroups } from '../../../../common/__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../../../../common/__mocks__/artificial_logs/final_significant_item_groups';
 
 import { getGroupFilter } from './get_group_filter';
 
 describe('getGroupFilter', () => {
-  it('gets a query filter for the significant terms of a group', () => {
-    expect(getGroupFilter(finalSignificantTermGroups[0])).toStrictEqual([
+  it('gets a query filter for the significant items of a group', () => {
+    expect(getGroupFilter(finalSignificantItemGroups[0])).toStrictEqual([
       {
         term: {
           url: 'login.php',
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.ts
index d968ce90ec91b..e2ae795004e18 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_group_filter.ts
@@ -7,21 +7,21 @@
 
 import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 
-import { type SignificantTermGroup, SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { type SignificantItemGroup, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 
 import { getCategoryQuery } from '../../../../common/api/log_categorization/get_category_query';
 
-// Transforms a list of significant terms from a group in a query filter.
+// Transforms a list of significant items from a group in a query filter.
 // Uses a `term` filter for single field value combinations.
 // For fields with multiple values it creates a single `terms` filter that includes
 // all values. This avoids queries not returning any results otherwise because
 // separate `term` filter for multiple values for the same field would rule each other out.
 export function getGroupFilter(
-  significantTermGroup: SignificantTermGroup
+  significantItemGroup: SignificantItemGroup
 ): estypes.QueryDslQueryContainer[] {
   const groupKeywordFilter = Object.entries(
-    significantTermGroup.group
-      .filter((d) => d.type === SIGNIFICANT_TERM_TYPE.KEYWORD)
+    significantItemGroup.group
+      .filter((d) => d.type === SIGNIFICANT_ITEM_TYPE.KEYWORD)
       .reduce<Record<string, Array<string | number>>>((p, c) => {
         if (p[c.fieldName]) {
           p[c.fieldName].push(c.fieldValue);
@@ -35,8 +35,8 @@ export function getGroupFilter(
     return p;
   }, []);
 
-  const groupLogPatternFilter = significantTermGroup.group
-    .filter((d) => d.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN)
+  const groupLogPatternFilter = significantItemGroup.group
+    .filter((d) => d.type === SIGNIFICANT_ITEM_TYPE.LOG_PATTERN)
     .map((d) =>
       getCategoryQuery(d.fieldName, [
         {
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.test.ts
index 3c7325cdb49eb..5a0e1507f398d 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { significantTermGroups } from '../../../../common/__mocks__/artificial_logs/significant_term_groups';
+import { significantItemGroups } from '../../../../common/__mocks__/artificial_logs/significant_item_groups';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
 
 import { duplicateIdentifier } from './duplicate_identifier';
@@ -16,15 +16,15 @@ import { getMarkedDuplicates } from './get_marked_duplicates';
 
 describe('getGroupsWithReaddedDuplicates', () => {
   it('gets groups with readded duplicates', () => {
-    const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter(
+    const groupedSignificantItems = groupDuplicates(significantTerms, duplicateIdentifier).filter(
       (g) => g.group.length > 1
     );
 
-    const fieldValuePairCounts = getFieldValuePairCounts(significantTermGroups);
-    const markedDuplicates = getMarkedDuplicates(significantTermGroups, fieldValuePairCounts);
+    const fieldValuePairCounts = getFieldValuePairCounts(significantItemGroups);
+    const markedDuplicates = getMarkedDuplicates(significantItemGroups, fieldValuePairCounts);
     const groupsWithReaddedDuplicates = getGroupsWithReaddedDuplicates(
       markedDuplicates,
-      groupedSignificantTerms
+      groupedSignificantItems
     );
 
     expect(groupsWithReaddedDuplicates).toEqual([
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.ts
index 6defb9d886662..e3e012ce299e3 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_groups_with_readded_duplicates.ts
@@ -7,20 +7,20 @@
 
 import { uniqWith, isEqual } from 'lodash';
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-import type { SignificantTermDuplicateGroup } from '../../../../common/types';
+import type { SignificantItemDuplicateGroup } from '../../../../common/types';
 
 export function getGroupsWithReaddedDuplicates(
-  groups: SignificantTermGroup[],
-  groupedSignificantTerms: SignificantTermDuplicateGroup[]
-): SignificantTermGroup[] {
+  groups: SignificantItemGroup[],
+  groupedSignificantItems: SignificantItemDuplicateGroup[]
+): SignificantItemGroup[] {
   return groups.map((g) => {
     const group = [...g.group];
 
     for (const groupItem of g.group) {
       const { duplicate } = groupItem;
-      const duplicates = groupedSignificantTerms.find((d) =>
+      const duplicates = groupedSignificantItems.find((d) =>
         d.group.some(
           (dg) => dg.fieldName === groupItem.fieldName && dg.fieldValue === groupItem.fieldValue
         )
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.test.ts
index 9c0d86a392e4d..fcc2448d4cd46 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { significantTermGroups } from '../../../../common/__mocks__/farequote/significant_term_groups';
+import { significantItemGroups } from '../../../../common/__mocks__/farequote/significant_item_groups';
 import { fields } from '../../../../common/__mocks__/artificial_logs/fields';
 import { filteredFrequentItemSets } from '../../../../common/__mocks__/artificial_logs/filtered_frequent_item_sets';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
@@ -16,9 +16,9 @@ import { getSimpleHierarchicalTree } from './get_simple_hierarchical_tree';
 import { getSimpleHierarchicalTreeLeaves } from './get_simple_hierarchical_tree_leaves';
 
 describe('markDuplicates', () => {
-  it('marks duplicates based on significant terms groups for farequote', () => {
-    const fieldValuePairCounts = getFieldValuePairCounts(significantTermGroups);
-    const markedDuplicates = getMarkedDuplicates(significantTermGroups, fieldValuePairCounts);
+  it('marks duplicates based on significant items groups for farequote', () => {
+    const fieldValuePairCounts = getFieldValuePairCounts(significantItemGroups);
+    const markedDuplicates = getMarkedDuplicates(significantItemGroups, fieldValuePairCounts);
 
     expect(markedDuplicates).toEqual([
       {
@@ -74,7 +74,7 @@ describe('markDuplicates', () => {
     ]);
   });
 
-  it('marks duplicates based on significant terms groups for artificial logs', () => {
+  it('marks duplicates based on significant items groups for artificial logs', () => {
     const simpleHierarchicalTree = getSimpleHierarchicalTree(
       filteredFrequentItemSets,
       true,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.ts
index 7708d0634bda3..8ddc13cfee8df 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_marked_duplicates.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import type { FieldValuePairCounts } from '../../../../common/types';
 
@@ -13,9 +13,9 @@ import type { FieldValuePairCounts } from '../../../../common/types';
  * Analyse duplicate field/value pairs in groups.
  */
 export function getMarkedDuplicates(
-  cpgs: SignificantTermGroup[],
+  cpgs: SignificantItemGroup[],
   fieldValuePairCounts: FieldValuePairCounts
-): SignificantTermGroup[] {
+): SignificantItemGroup[] {
   return cpgs.map((cpg) => {
     return {
       ...cpg,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.test.ts
similarity index 75%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.test.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.test.ts
index 412b7013b64d6..8ac70af16d298 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { significantTermGroups } from '../../../../common/__mocks__/artificial_logs/significant_term_groups';
+import { significantItemGroups } from '../../../../common/__mocks__/artificial_logs/significant_item_groups';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
 
 import { duplicateIdentifier } from './duplicate_identifier';
@@ -13,27 +13,27 @@ import { getGroupsWithReaddedDuplicates } from './get_groups_with_readded_duplic
 import { groupDuplicates } from './fetch_frequent_item_sets';
 import { getFieldValuePairCounts } from './get_field_value_pair_counts';
 import { getMarkedDuplicates } from './get_marked_duplicates';
-import { getMissingSignificantTerms } from './get_missing_significant_terms';
+import { getMissingSignificantItems } from './get_missing_significant_items';
 
-describe('getMissingSignificantTerms', () => {
-  it('get missing significant terms', () => {
-    const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter(
+describe('getMissingSignificantItems', () => {
+  it('get missing significant items', () => {
+    const groupedSignificantItems = groupDuplicates(significantTerms, duplicateIdentifier).filter(
       (g) => g.group.length > 1
     );
 
-    const fieldValuePairCounts = getFieldValuePairCounts(significantTermGroups);
-    const markedDuplicates = getMarkedDuplicates(significantTermGroups, fieldValuePairCounts);
+    const fieldValuePairCounts = getFieldValuePairCounts(significantItemGroups);
+    const markedDuplicates = getMarkedDuplicates(significantItemGroups, fieldValuePairCounts);
     const groupsWithReaddedDuplicates = getGroupsWithReaddedDuplicates(
       markedDuplicates,
-      groupedSignificantTerms
+      groupedSignificantItems
     );
 
-    const missingSignificantTerms = getMissingSignificantTerms(
+    const missingSignificantItems = getMissingSignificantItems(
       significantTerms,
       groupsWithReaddedDuplicates
     );
 
-    expect(missingSignificantTerms).toEqual([
+    expect(missingSignificantItems).toEqual([
       {
         key: 'user:Peter',
         type: 'keyword',
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.ts
similarity index 57%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.ts
index 7daa797f16a37..c2847f1592dd1 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_terms.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_missing_significant_items.ts
@@ -5,14 +5,14 @@
  * 2.0.
  */
 
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-export function getMissingSignificantTerms(
-  significantTerms: SignificantTerm[],
-  significantTermGroups: SignificantTermGroup[]
+export function getMissingSignificantItems(
+  significantItems: SignificantItem[],
+  significantItemGroups: SignificantItemGroup[]
 ) {
-  return significantTerms.filter((cp) => {
-    return !significantTermGroups.some((cpg) => {
+  return significantItems.filter((cp) => {
+    return !significantItemGroups.some((cpg) => {
       return cpg.group.some((d) => d.fieldName === cp.fieldName && d.fieldValue === cp.fieldValue);
     });
   });
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.test.ts
similarity index 59%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.test.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.test.ts
index 05a682bc4ea34..cf5ba41fe5216 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.test.ts
@@ -10,20 +10,20 @@ import { orderBy } from 'lodash';
 import { fields } from '../../../../common/__mocks__/artificial_logs/fields';
 import { frequentItemSets } from '../../../../common/__mocks__/artificial_logs/frequent_item_sets';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
-import { finalSignificantTermGroups } from '../../../../common/__mocks__/artificial_logs/final_significant_term_groups';
+import { finalSignificantItemGroups } from '../../../../common/__mocks__/artificial_logs/final_significant_item_groups';
 
-import { getSignificantTermGroups } from './get_significant_term_groups';
+import { getSignificantItemGroups } from './get_significant_item_groups';
 
-describe('getSignificantTermGroups', () => {
-  it('gets significant terms groups', () => {
-    const significantTermGroups = getSignificantTermGroups(
+describe('getSignificantItemGroups', () => {
+  it('gets significant items groups', () => {
+    const significantItemGroups = getSignificantItemGroups(
       frequentItemSets,
       significantTerms,
       fields
     );
 
-    expect(orderBy(significantTermGroups, ['docCount'])).toEqual(
-      orderBy(finalSignificantTermGroups, ['docCount'])
+    expect(orderBy(significantItemGroups, ['docCount'])).toEqual(
+      orderBy(finalSignificantItemGroups, ['docCount'])
     );
   });
 });
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.ts
similarity index 70%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.ts
index 1b498b0d76595..27dc06ad343b9 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_term_groups.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_significant_item_groups.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import { duplicateIdentifier } from './duplicate_identifier';
 import { groupDuplicates } from './fetch_frequent_item_sets';
@@ -13,18 +13,18 @@ import { getFieldValuePairCounts } from './get_field_value_pair_counts';
 import { getMarkedDuplicates } from './get_marked_duplicates';
 import { getSimpleHierarchicalTree } from './get_simple_hierarchical_tree';
 import { getSimpleHierarchicalTreeLeaves } from './get_simple_hierarchical_tree_leaves';
-import { getMissingSignificantTerms } from './get_missing_significant_terms';
-import { transformSignificantTermToGroup } from './transform_significant_term_to_group';
+import { getMissingSignificantItems } from './get_missing_significant_items';
+import { transformSignificantItemToGroup } from './transform_significant_item_to_group';
 import type { ItemSet } from '../../../../common/types';
 
-export function getSignificantTermGroups(
+export function getSignificantItemGroups(
   itemsets: ItemSet[],
-  significantTerms: SignificantTerm[],
+  significantItems: SignificantItem[],
   fields: string[]
-): SignificantTermGroup[] {
-  // We use the grouped significant terms to later repopulate
+): SignificantItemGroup[] {
+  // We use the grouped significant items to later repopulate
   // the `frequent_item_sets` result with the missing duplicates.
-  const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter(
+  const groupedSignificantItems = groupDuplicates(significantItems, duplicateIdentifier).filter(
     (g) => g.group.length > 1
   );
 
@@ -33,7 +33,7 @@ export function getSignificantTermGroups(
   // and then summarize them in larger groups where possible.
 
   // Get a tree structure based on `frequent_item_sets`.
-  const { root } = getSimpleHierarchicalTree(itemsets, false, false, significantTerms, fields);
+  const { root } = getSimpleHierarchicalTree(itemsets, false, false, significantItems, fields);
 
   // Each leave of the tree will be a summarized group of co-occuring field/value pairs.
   const treeLeaves = getSimpleHierarchicalTreeLeaves(root, []);
@@ -42,21 +42,21 @@ export function getSignificantTermGroups(
   // that occur in multiple groups. This will allow us to highlight field/value pairs that are
   // unique to a group in a better way.
   const fieldValuePairCounts = getFieldValuePairCounts(treeLeaves);
-  const significantTermGroups = getMarkedDuplicates(treeLeaves, fieldValuePairCounts);
+  const significantItemGroups = getMarkedDuplicates(treeLeaves, fieldValuePairCounts);
 
   // Some field/value pairs might not be part of the `frequent_item_sets` result set, for example
   // because they don't co-occur with other field/value pairs or because of the limits we set on the query.
   // In this next part we identify those missing pairs and add them as individual groups.
-  const missingSignificantTerms = getMissingSignificantTerms(
-    significantTerms,
-    significantTermGroups
+  const missingSignificantItems = getMissingSignificantItems(
+    significantItems,
+    significantItemGroups
   );
 
-  significantTermGroups.push(
-    ...missingSignificantTerms.map((significantTerm) =>
-      transformSignificantTermToGroup(significantTerm, groupedSignificantTerms)
+  significantItemGroups.push(
+    ...missingSignificantItems.map((significantItem) =>
+      transformSignificantItemToGroup(significantItem, groupedSignificantItems)
     )
   );
 
-  return significantTermGroups;
+  return significantItemGroups;
 }
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree.ts
index 2ffcc184fa71e..54cce87526bb1 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { SignificantTerm } from '@kbn/ml-agg-utils';
+import type { SignificantItem } from '@kbn/ml-agg-utils';
 
 import type { ItemSet, SimpleHierarchicalTreeNode } from '../../../../common/types';
 
@@ -34,7 +34,7 @@ function NewNodeFactory(name: string): SimpleHierarchicalTreeNode {
  * The resulting tree components are non-overlapping subsets of the data.
  * In summary, we start with the most inclusive itemset (highest count), and perform a depth first search in field order.
  *
- * @param significantTerms
+ * @param significantItems
  * @param fields
  * @param displayParent
  * @param parentDocCount
@@ -47,7 +47,7 @@ function NewNodeFactory(name: string): SimpleHierarchicalTreeNode {
  * @returns
  */
 function dfDepthFirstSearch(
-  significantTerms: SignificantTerm[],
+  significantItems: SignificantItem[],
   fields: string[],
   displayParent: SimpleHierarchicalTreeNode,
   parentDocCount: number,
@@ -79,10 +79,10 @@ function dfDepthFirstSearch(
 
   let displayNode: SimpleHierarchicalTreeNode;
 
-  const significantTerm = significantTerms.find(
+  const significantItem = significantItems.find(
     (d) => d.fieldName === field && d.fieldValue === value
   );
-  if (!significantTerm) {
+  if (!significantItem) {
     return 0;
   }
 
@@ -91,8 +91,8 @@ function dfDepthFirstSearch(
     displayParent.name += ` ${value}`;
 
     displayParent.set.push({
-      key: significantTerm.key,
-      type: significantTerm.type,
+      key: significantItem.key,
+      type: significantItem.type,
       fieldName: field,
       fieldValue: value,
       docCount,
@@ -105,8 +105,8 @@ function dfDepthFirstSearch(
     displayNode = NewNodeFactory(`${docCount}/${totalDocCount}${label}`);
     displayNode.set = [...displayParent.set];
     displayNode.set.push({
-      key: significantTerm.key,
-      type: significantTerm.type,
+      key: significantItem.key,
+      type: significantItem.type,
       fieldName: field,
       fieldValue: value,
       docCount,
@@ -148,7 +148,7 @@ function dfDepthFirstSearch(
   let subCount = 0;
   for (const nextValue of getValuesDescending(filteredItemSets, nextField)) {
     subCount += dfDepthFirstSearch(
-      significantTerms,
+      significantItems,
       fields,
       displayNode,
       docCount,
@@ -181,7 +181,7 @@ export function getSimpleHierarchicalTree(
   itemSets: ItemSet[],
   collapseRedundant: boolean,
   displayOther: boolean,
-  significantTerms: SignificantTerm[],
+  significantItems: SignificantItem[],
   fields: string[] = []
 ) {
   const totalDocCount = Math.max(...itemSets.map((d) => d.total_doc_count));
@@ -191,7 +191,7 @@ export function getSimpleHierarchicalTree(
   for (const field of fields) {
     for (const value of getValuesDescending(itemSets, field)) {
       dfDepthFirstSearch(
-        significantTerms,
+        significantItems,
         fields,
         newRoot,
         totalDocCount + 1,
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree_leaves.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree_leaves.ts
index bd183239eeadf..619ec2896d4d4 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree_leaves.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/get_simple_hierarchical_tree_leaves.ts
@@ -6,7 +6,7 @@
  */
 
 import { orderBy } from 'lodash';
-import type { SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItemGroup } from '@kbn/ml-agg-utils';
 import { stringHash } from '@kbn/ml-string-hash';
 
 import type { SimpleHierarchicalTreeNode } from '../../../../common/types';
@@ -16,7 +16,7 @@ import type { SimpleHierarchicalTreeNode } from '../../../../common/types';
  */
 export function getSimpleHierarchicalTreeLeaves(
   tree: SimpleHierarchicalTreeNode,
-  leaves: SignificantTermGroup[],
+  leaves: SignificantItemGroup[],
   level = 1
 ) {
   if (tree.children.length === 0) {
@@ -43,7 +43,7 @@ export function getSimpleHierarchicalTreeLeaves(
   const sortedLeaves = orderBy(leaves, [(d) => d.group.length], ['desc']);
 
   // Checks if a group is a subset of items already present in a larger group.
-  const filteredLeaves = sortedLeaves.reduce<SignificantTermGroup[]>((p, c) => {
+  const filteredLeaves = sortedLeaves.reduce<SignificantItemGroup[]>((p, c) => {
     const isSubset = p.some((pG) =>
       c.group.every((cGI) =>
         pG.group.some((pGI) => pGI.fieldName === cGI.fieldName && pGI.fieldValue === cGI.fieldValue)
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.test.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.test.ts
similarity index 66%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.test.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.test.ts
index 860baa3c800a2..f1a2a540dc877 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.test.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.test.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { significantTermGroups } from '../../../../common/__mocks__/artificial_logs/significant_term_groups';
+import { significantItemGroups } from '../../../../common/__mocks__/artificial_logs/significant_item_groups';
 import { significantTerms } from '../../../../common/__mocks__/artificial_logs/significant_terms';
 
 import { duplicateIdentifier } from './duplicate_identifier';
@@ -13,30 +13,30 @@ import { getGroupsWithReaddedDuplicates } from './get_groups_with_readded_duplic
 import { groupDuplicates } from './fetch_frequent_item_sets';
 import { getFieldValuePairCounts } from './get_field_value_pair_counts';
 import { getMarkedDuplicates } from './get_marked_duplicates';
-import { getMissingSignificantTerms } from './get_missing_significant_terms';
-import { transformSignificantTermToGroup } from './transform_significant_term_to_group';
+import { getMissingSignificantItems } from './get_missing_significant_items';
+import { transformSignificantItemToGroup } from './transform_significant_item_to_group';
 
-describe('getMissingSignificantTerms', () => {
-  it('get missing significant terms', () => {
-    const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter(
+describe('getMissingSignificantItems', () => {
+  it('get missing significant items', () => {
+    const groupedSignificantItems = groupDuplicates(significantTerms, duplicateIdentifier).filter(
       (g) => g.group.length > 1
     );
 
-    const fieldValuePairCounts = getFieldValuePairCounts(significantTermGroups);
-    const markedDuplicates = getMarkedDuplicates(significantTermGroups, fieldValuePairCounts);
+    const fieldValuePairCounts = getFieldValuePairCounts(significantItemGroups);
+    const markedDuplicates = getMarkedDuplicates(significantItemGroups, fieldValuePairCounts);
     const groupsWithReaddedDuplicates = getGroupsWithReaddedDuplicates(
       markedDuplicates,
-      groupedSignificantTerms
+      groupedSignificantItems
     );
 
-    const missingSignificantTerms = getMissingSignificantTerms(
+    const missingSignificantItems = getMissingSignificantItems(
       significantTerms,
       groupsWithReaddedDuplicates
     );
 
-    const transformed = transformSignificantTermToGroup(
-      missingSignificantTerms[0],
-      groupedSignificantTerms
+    const transformed = transformSignificantItemToGroup(
+      missingSignificantItems[0],
+      groupedSignificantItems
     );
 
     expect(transformed).toEqual({
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.ts
similarity index 77%
rename from x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.ts
rename to x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.ts
index 9f95a5c0fa2db..05a1473acc2bd 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_term_to_group.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/queries/transform_significant_item_to_group.ts
@@ -6,17 +6,17 @@
  */
 
 import { stringHash } from '@kbn/ml-string-hash';
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
-import type { SignificantTermDuplicateGroup } from '../../../../common/types';
+import type { SignificantItemDuplicateGroup } from '../../../../common/types';
 
-export function transformSignificantTermToGroup(
-  significantTerm: SignificantTerm,
-  groupedSignificantTerms: SignificantTermDuplicateGroup[]
-): SignificantTermGroup {
-  const { key, type, fieldName, fieldValue, doc_count: docCount, pValue } = significantTerm;
+export function transformSignificantItemToGroup(
+  significantItem: SignificantItem,
+  groupedSignificantItems: SignificantItemDuplicateGroup[]
+): SignificantItemGroup {
+  const { key, type, fieldName, fieldValue, doc_count: docCount, pValue } = significantItem;
 
-  const duplicates = groupedSignificantTerms.find((d) =>
+  const duplicates = groupedSignificantItems.find((d) =>
     d.group.some((dg) => dg.fieldName === fieldName && dg.fieldValue === fieldValue)
   );
 
diff --git a/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts b/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
index b92458cc1e3de..30f3dbe55f446 100644
--- a/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
+++ b/x-pack/plugins/aiops/server/routes/log_rate_analysis/route_handler_factory.ts
@@ -21,23 +21,23 @@ import { i18n } from '@kbn/i18n';
 import { KBN_FIELD_TYPES } from '@kbn/field-types';
 import { streamFactory } from '@kbn/ml-response-stream/server';
 import type {
-  SignificantTerm,
-  SignificantTermGroup,
-  SignificantTermHistogramItem,
+  SignificantItem,
+  SignificantItemGroup,
+  SignificantItemHistogramItem,
   NumericChartData,
   NumericHistogramField,
 } from '@kbn/ml-agg-utils';
-import { SIGNIFICANT_TERM_TYPE } from '@kbn/ml-agg-utils';
+import { SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils';
 import { fetchHistogramsForFields } from '@kbn/ml-agg-utils';
 import { createExecutionContext } from '@kbn/ml-route-utils';
 import type { UsageCounter } from '@kbn/usage-collection-plugin/server';
 
 import { RANDOM_SAMPLER_SEED, AIOPS_TELEMETRY_ID } from '../../../common/constants';
 import {
-  addSignificantTermsAction,
-  addSignificantTermsGroupAction,
-  addSignificantTermsGroupHistogramAction,
-  addSignificantTermsHistogramAction,
+  addSignificantItemsAction,
+  addSignificantItemsGroupAction,
+  addSignificantItemsGroupHistogramAction,
+  addSignificantItemsHistogramAction,
   addErrorAction,
   pingAction,
   resetAllAction,
@@ -65,7 +65,7 @@ import { fetchFrequentItemSets } from './queries/fetch_frequent_item_sets';
 import { fetchTerms2CategoriesCounts } from './queries/fetch_terms_2_categories_counts';
 import { getHistogramQuery } from './queries/get_histogram_query';
 import { getGroupFilter } from './queries/get_group_filter';
-import { getSignificantTermGroups } from './queries/get_significant_term_groups';
+import { getSignificantItemGroups } from './queries/get_significant_item_groups';
 import { trackAIOpsRouteUsage } from '../../lib/track_route_usage';
 
 // 10s ping frequency to keep the stream alive.
@@ -287,19 +287,19 @@ export function routeHandlerFactory<T extends ApiVersion>(
             }
           }
 
-          // Step 2: Significant Categories and Terms
+          // Step 2: Significant Categories and Items
 
           // This will store the combined count of detected significant log patterns and keywords
           let fieldValuePairsCount = 0;
 
-          const significantCategories: SignificantTerm[] = [];
+          const significantCategories: SignificantItem[] = [];
 
           if (version === '1') {
             significantCategories.push(
               ...((
                 request.body as AiopsLogRateAnalysisSchema<'1'>
               ).overrides?.significantTerms?.filter(
-                (d) => d.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN
+                (d) => d.type === SIGNIFICANT_ITEM_TYPE.LOG_PATTERN
               ) ?? [])
             );
           }
@@ -309,7 +309,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
               ...((
                 request.body as AiopsLogRateAnalysisSchema<'2'>
               ).overrides?.significantItems?.filter(
-                (d) => d.type === SIGNIFICANT_TERM_TYPE.LOG_PATTERN
+                (d) => d.type === SIGNIFICANT_ITEM_TYPE.LOG_PATTERN
               ) ?? [])
             );
           }
@@ -329,18 +329,18 @@ export function routeHandlerFactory<T extends ApiVersion>(
             );
 
             if (significantCategories.length > 0) {
-              push(addSignificantTermsAction(significantCategories, version));
+              push(addSignificantItemsAction(significantCategories, version));
             }
           }
 
-          const significantTerms: SignificantTerm[] = [];
+          const significantTerms: SignificantItem[] = [];
 
           if (version === '1') {
             significantTerms.push(
               ...((
                 request.body as AiopsLogRateAnalysisSchema<'1'>
               ).overrides?.significantTerms?.filter(
-                (d) => d.type === SIGNIFICANT_TERM_TYPE.KEYWORD
+                (d) => d.type === SIGNIFICANT_ITEM_TYPE.KEYWORD
               ) ?? [])
             );
           }
@@ -350,7 +350,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
               ...((
                 request.body as AiopsLogRateAnalysisSchema<'2'>
               ).overrides?.significantItems?.filter(
-                (d) => d.type === SIGNIFICANT_TERM_TYPE.KEYWORD
+                (d) => d.type === SIGNIFICANT_ITEM_TYPE.KEYWORD
               ) ?? [])
             );
           }
@@ -411,7 +411,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
               });
               significantTerms.push(...pValues);
 
-              push(addSignificantTermsAction(pValues, version));
+              push(addSignificantItemsAction(pValues, version));
             }
 
             push(
@@ -571,7 +571,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
               }
 
               if (fields.length > 0 && itemSets.length > 0) {
-                const significantTermGroups = getSignificantTermGroups(
+                const significantItemGroups = getSignificantItemGroups(
                   itemSets,
                   [...significantTerms, ...significantCategories],
                   fields
@@ -579,10 +579,10 @@ export function routeHandlerFactory<T extends ApiVersion>(
 
                 // We'll find out if there's at least one group with at least two items,
                 // only then will we return the groups to the clients and make the grouping option available.
-                const maxItems = Math.max(...significantTermGroups.map((g) => g.group.length));
+                const maxItems = Math.max(...significantItemGroups.map((g) => g.group.length));
 
                 if (maxItems > 1) {
-                  push(addSignificantTermsGroupAction(significantTermGroups, version));
+                  push(addSignificantItemsGroupAction(significantItemGroups, version));
                 }
 
                 loaded += PROGRESS_STEP_GROUPING;
@@ -595,9 +595,9 @@ export function routeHandlerFactory<T extends ApiVersion>(
                   return;
                 }
 
-                logDebugMessage(`Fetch ${significantTermGroups.length} group histograms.`);
+                logDebugMessage(`Fetch ${significantItemGroups.length} group histograms.`);
 
-                const groupHistogramQueue = queue(async function (cpg: SignificantTermGroup) {
+                const groupHistogramQueue = queue(async function (cpg: SignificantItemGroup) {
                   if (shouldStop) {
                     logDebugMessage('shouldStop abort fetching group histograms.');
                     groupHistogramQueue.kill();
@@ -644,7 +644,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                       }
                       return;
                     }
-                    const histogram: SignificantTermHistogramItem[] =
+                    const histogram: SignificantItemHistogramItem[] =
                       overallTimeSeries.data.map((o) => {
                         const current = cpgTimeSeries.data.find(
                           (d1) => d1.key_as_string === o.key_as_string
@@ -670,7 +670,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                       }) ?? [];
 
                     push(
-                      addSignificantTermsGroupHistogramAction(
+                      addSignificantItemsGroupHistogramAction(
                         [
                           {
                             id: cpg.id,
@@ -683,7 +683,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                   }
                 }, MAX_CONCURRENT_QUERIES);
 
-                groupHistogramQueue.push(significantTermGroups);
+                groupHistogramQueue.push(significantItemGroups);
                 await groupHistogramQueue.drain();
               }
             } catch (e) {
@@ -706,7 +706,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
             overallTimeSeries !== undefined &&
             !request.body.overrides?.regroupOnly
           ) {
-            const fieldValueHistogramQueue = queue(async function (cp: SignificantTerm) {
+            const fieldValueHistogramQueue = queue(async function (cp: SignificantItem) {
               if (shouldStop) {
                 logDebugMessage('shouldStop abort fetching field/value histograms.');
                 fieldValueHistogramQueue.kill();
@@ -759,7 +759,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                   return;
                 }
 
-                const histogram: SignificantTermHistogramItem[] =
+                const histogram: SignificantItemHistogramItem[] =
                   overallTimeSeries.data.map((o) => {
                     const current = cpTimeSeries.data.find(
                       (d1) => d1.key_as_string === o.key_as_string
@@ -788,7 +788,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                 loaded += (1 / fieldValuePairsCount) * PROGRESS_STEP_HISTOGRAMS;
                 pushHistogramDataLoadingState();
                 push(
-                  addSignificantTermsHistogramAction(
+                  addSignificantItemsHistogramAction(
                     [
                       {
                         fieldName,
@@ -863,7 +863,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
                 return;
               }
 
-              const histogram: SignificantTermHistogramItem[] =
+              const histogram: SignificantItemHistogramItem[] =
                 overallTimeSeries.data.map((o) => {
                   const current = catTimeSeries.data.find(
                     (d1) => d1.key_as_string === o.key_as_string
@@ -893,7 +893,7 @@ export function routeHandlerFactory<T extends ApiVersion>(
               loaded += (1 / fieldValuePairsCount) * PROGRESS_STEP_HISTOGRAMS;
               pushHistogramDataLoadingState();
               push(
-                addSignificantTermsHistogramAction(
+                addSignificantItemsHistogramAction(
                   [
                     {
                       fieldName,
diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts
index 87a9a37d4d2c5..93bf37eb83916 100644
--- a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts
+++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts
@@ -10,7 +10,7 @@ import { stringHash } from '@kbn/ml-string-hash';
 import { extractErrorProperties } from '@kbn/ml-error-utils';
 import { Query } from '@kbn/es-query';
 import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
-import { SignificantTerm } from '@kbn/ml-agg-utils';
+import { SignificantItem } from '@kbn/ml-agg-utils';
 import {
   createRandomSamplerWrapper,
   RandomSampler,
@@ -50,8 +50,8 @@ export interface DocumentStatsSearchStrategyParams {
   timeFieldName?: string;
   runtimeFieldMap?: estypes.MappingRuntimeFields;
   fieldsToFetch?: string[];
-  selectedSignificantTerm?: SignificantTerm;
-  includeSelectedSignificantTerm?: boolean;
+  selectedSignificantItem?: SignificantItem;
+  includeSelectedSignificantItem?: boolean;
   trackTotalHits?: boolean;
 }
 
@@ -167,8 +167,8 @@ export interface DocumentStatsSearchStrategyParams {
   timeFieldName?: string;
   runtimeFieldMap?: estypes.MappingRuntimeFields;
   fieldsToFetch?: string[];
-  selectedSignificantTerm?: SignificantTerm;
-  includeSelectedSignificantTerm?: boolean;
+  selectedSignificantItem?: SignificantItem;
+  includeSelectedSignificantItem?: boolean;
   trackTotalHits?: boolean;
 }
 
diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/log_rate_analysis.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/log_rate_analysis.tsx
index b9ff53140b02c..a8ebb5c884b6b 100644
--- a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/log_rate_analysis.tsx
+++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_details_app_section/components/log_rate_analysis.tsx
@@ -162,7 +162,7 @@ export const LogRateAnalysis: FC<AlertDetailsLogRateAnalysisSectionProps> = ({ r
 
   const onAnalysisCompleted = (analysisResults: LogRateAnalysisResultsData | undefined) => {
     const significantFieldValues = orderBy(
-      analysisResults?.significantTerms?.map((item) => ({
+      analysisResults?.significantItems?.map((item) => ({
         field: item.fieldName,
         value: item.fieldValue,
         docCount: item.doc_count,
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index a5ed852718005..8edd2b48ce470 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -7956,7 +7956,7 @@
     "xpack.aiops.logRateAnalysis.resultsTable.impactLabelColumnTooltip": "Le niveau d'impact du champ sur la différence de taux de messages.",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardButtonLabel": "Copier dans le presse-papiers",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardGroupMessage": "Copier les éléments de groupe en tant que syntaxe KQL dans le Presse-papiers",
-    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantTermMessage": "Copier la paire clé-valeur en tant que syntaxe KQL dans le Presse-papiers",
+    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantItemMessage": "Copier la paire clé-valeur en tant que syntaxe KQL dans le Presse-papiers",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInDiscover": "Afficher dans Discover",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInLogPatternAnalysis": "Voir dans l'analyse du modèle de log",
     "xpack.aiops.logRateAnalysis.resultsTable.logPatternLinkNotAvailableTooltipMessage": "Le lien n'est pas disponible si l'élément du tableau est lui-même un modèle de log.",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 58375f665fa0c..0451262451432 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -7971,7 +7971,7 @@
     "xpack.aiops.logRateAnalysis.resultsTable.impactLabelColumnTooltip": "メッセージレート差異に対するフィールドの影響のレベル。",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardButtonLabel": "クリップボードにコピー",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardGroupMessage": "グループアイテムをKQL構文としてクリップボードにコピー",
-    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantTermMessage": "フィールド/値のペアをKQL構文としてクリップボードにコピー",
+    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantItemMessage": "フィールド/値のペアをKQL構文としてクリップボードにコピー",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInDiscover": "Discoverに表示",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInLogPatternAnalysis": "ログパターン分析で表示",
     "xpack.aiops.logRateAnalysis.resultsTable.logPatternLinkNotAvailableTooltipMessage": "テーブル項目がログパターン自体の場合は、このリンクは使用できません。",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 003312fef8d19..90a4ae742e05d 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -7970,7 +7970,7 @@
     "xpack.aiops.logRateAnalysis.resultsTable.impactLabelColumnTooltip": "字段对消息速率差异的影响水平。",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardButtonLabel": "复制到剪贴板",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardGroupMessage": "将组项目作为 KQL 语法复制到剪贴板",
-    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantTermMessage": "将字段/值对作为 KQL 语法复制到剪贴板",
+    "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.copyToClipboardSignificantItemMessage": "将字段/值对作为 KQL 语法复制到剪贴板",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInDiscover": "在 Discover 中查看",
     "xpack.aiops.logRateAnalysis.resultsTable.linksMenu.viewInLogPatternAnalysis": "在日志模式分析中查看",
     "xpack.aiops.logRateAnalysis.resultsTable.logPatternLinkNotAvailableTooltipMessage": "如果表项目为日志模式本身,则此链接不可用。",
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
index 4c3d787402864..3168dfdfc5ecf 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_full_analysis.ts
@@ -70,8 +70,8 @@ export default ({ getService }: FtrProviderContext) => {
             );
 
             expect(significantItems).to.eql(
-              testData.expected.significantTerms,
-              'Significant terms do not match expected values.'
+              testData.expected.significantItems,
+              'Significant items do not match expected values.'
             );
 
             const histogramActions = getHistogramActions(data, apiVersion);
diff --git a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
index 3ffcf7b04fdd2..fcc4bafabdf3c 100644
--- a/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
+++ b/x-pack/test/api_integration/apis/aiops/log_rate_analysis_groups_only.ts
@@ -41,7 +41,7 @@ export default ({ getService }: FtrProviderContext) => {
           overrides = {
             loaded: 0,
             remainingFieldCandidates: [],
-            significantTerms: testData.expected.significantTerms,
+            significantTerms: testData.expected.significantItems,
             regroupOnly: true,
           } as AiopsLogRateAnalysisSchema<typeof apiVersion>['overrides'];
         }
@@ -51,7 +51,7 @@ export default ({ getService }: FtrProviderContext) => {
             loaded: 0,
             remainingFieldCandidates: [],
             significantItems: testData.expected
-              .significantTerms as AiopsLogRateAnalysisSchemaSignificantItem[],
+              .significantItems as AiopsLogRateAnalysisSchemaSignificantItem[],
             regroupOnly: true,
           } as AiopsLogRateAnalysisSchema<typeof apiVersion>['overrides'];
         }
diff --git a/x-pack/test/api_integration/apis/aiops/test_data.ts b/x-pack/test/api_integration/apis/aiops/test_data.ts
index f323900e3437c..291779ed6c7b2 100644
--- a/x-pack/test/api_integration/apis/aiops/test_data.ts
+++ b/x-pack/test/api_integration/apis/aiops/test_data.ts
@@ -10,8 +10,8 @@
 // that also the jest unit tests use mocks that are not outdated.
 import { significantTerms as artificialLogSignificantTerms } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/significant_terms';
 import { significantLogPatterns as artificialLogSignificantLogPatterns } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/significant_log_patterns';
-import { finalSignificantTermGroups as artificialLogsSignificantTermGroups } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_term_groups';
-import { finalSignificantTermGroupsTextfield as artificialLogsSignificantTermGroupsTextfield } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_term_groups_textfield';
+import { finalSignificantItemGroups as artificialLogsSignificantItemGroups } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_item_groups';
+import { finalSignificantItemGroupsTextfield as artificialLogsSignificantItemGroupsTextfield } from '@kbn/aiops-plugin/common/__mocks__/artificial_logs/final_significant_item_groups_textfield';
 
 import type {
   AiopsLogRateAnalysisSchema,
@@ -45,7 +45,7 @@ export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestDa
       actionsLengthGroupOnly: 4,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTerms: [
+      significantItems: [
         {
           key: 'day_of_week:Thursday',
           type: 'keyword',
@@ -99,8 +99,8 @@ export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestDa
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTerms: artificialLogSignificantTerms,
-      groups: artificialLogsSignificantTermGroups,
+      significantItems: artificialLogSignificantTerms,
+      groups: artificialLogsSignificantItemGroups,
       histogramLength: 20,
     },
   },
@@ -126,8 +126,8 @@ export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestDa
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTerms: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
-      groups: artificialLogsSignificantTermGroupsTextfield,
+      significantItems: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
+      groups: artificialLogsSignificantItemGroupsTextfield,
       histogramLength: 20,
     },
   },
@@ -153,8 +153,8 @@ export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestDa
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTerms: artificialLogSignificantTerms,
-      groups: artificialLogsSignificantTermGroups,
+      significantItems: artificialLogSignificantTerms,
+      groups: artificialLogsSignificantItemGroups,
       histogramLength: 20,
     },
   },
@@ -180,8 +180,8 @@ export const getLogRateAnalysisTestData = <T extends ApiVersion>(): Array<TestDa
       actionsLengthGroupOnly: 10,
       noIndexChunksLength: 4,
       noIndexActionsLength: 3,
-      significantTerms: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
-      groups: artificialLogsSignificantTermGroupsTextfield,
+      significantItems: [...artificialLogSignificantTerms, ...artificialLogSignificantLogPatterns],
+      groups: artificialLogsSignificantItemGroupsTextfield,
       histogramLength: 20,
     },
   },
diff --git a/x-pack/test/api_integration/apis/aiops/types.ts b/x-pack/test/api_integration/apis/aiops/types.ts
index a990b1a346c07..df38825d9698d 100644
--- a/x-pack/test/api_integration/apis/aiops/types.ts
+++ b/x-pack/test/api_integration/apis/aiops/types.ts
@@ -9,7 +9,7 @@ import type {
   AiopsLogRateAnalysisSchema,
   AiopsLogRateAnalysisApiVersion as ApiVersion,
 } from '@kbn/aiops-plugin/common/api/log_rate_analysis/schema';
-import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils';
+import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils';
 
 import type { LogRateAnalysisDataGenerator } from '../../../functional/services/aiops/log_rate_analysis_data_generator';
 
@@ -25,8 +25,8 @@ export interface TestData<T extends ApiVersion> {
     actionsLengthGroupOnly: number;
     noIndexChunksLength: number;
     noIndexActionsLength: number;
-    significantTerms: SignificantTerm[];
-    groups: SignificantTermGroup[];
+    significantItems: SignificantItem[];
+    groups: SignificantItemGroup[];
     histogramLength: number;
   };
 }

From 02ccb7788a82ffe1c1fd8d6800ca5aeccc139e4e Mon Sep 17 00:00:00 2001
From: Ignacio Rivas <rivasign@gmail.com>
Date: Fri, 10 Nov 2023 18:59:49 +0100
Subject: [PATCH 106/147] [Index Management] Add data retention to component
 template UI (#170837)

---
 .../common/types/component_templates.ts       |  3 +
 .../component_template_create.test.tsx        | 25 +++++-
 .../component_template_details.test.ts        |  2 +
 .../component_template_details.helpers.ts     |  1 +
 .../component_template_form.helpers.ts        | 22 ++++-
 .../tab_summary.tsx                           | 19 ++++-
 .../component_template_form.tsx               | 22 ++++-
 .../steps/step_logistics.tsx                  | 69 +++++++++++++++
 .../steps/step_logistics_schema.tsx           | 83 +++++++++++++++++++
 .../steps/step_review.tsx                     | 13 +++
 .../component_templates/shared_imports.ts     |  2 +
 .../component_templates/register_get_route.ts |  4 +-
 .../component_templates/schema_validation.ts  |  6 ++
 .../index_management/component_templates.ts   |  4 +
 14 files changed, 267 insertions(+), 8 deletions(-)

diff --git a/x-pack/plugins/index_management/common/types/component_templates.ts b/x-pack/plugins/index_management/common/types/component_templates.ts
index d2842b0486303..68c58aefc9d06 100644
--- a/x-pack/plugins/index_management/common/types/component_templates.ts
+++ b/x-pack/plugins/index_management/common/types/component_templates.ts
@@ -8,15 +8,18 @@
 import { IndexSettings } from './indices';
 import { Aliases } from './aliases';
 import { Mappings } from './mappings';
+import { DataStream, DataRetention } from '.';
 
 export interface ComponentTemplateSerialized {
   template: {
     settings?: IndexSettings;
     aliases?: Aliases;
     mappings?: Mappings;
+    lifecycle?: DataStream['lifecycle'];
   };
   version?: number;
   _meta?: { [key: string]: any };
+  lifecycle?: DataRetention;
 }
 
 export interface ComponentTemplateDeserialized extends ComponentTemplateSerialized {
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx
index a8ef1278f4d73..eaf9c8389ae95 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx
@@ -12,6 +12,7 @@ import { breadcrumbService, IndexManagementBreadcrumb } from '../../../../servic
 import { setupEnvironment } from './helpers';
 import { API_BASE_PATH } from './helpers/constants';
 import { setup, ComponentTemplateCreateTestBed } from './helpers/component_template_create.helpers';
+import { serializeAsESLifecycle } from '../../../../../../common/lib/data_stream_serialization';
 
 jest.mock('@kbn/kibana-react-plugin/public', () => {
   const original = jest.requireActual('@kbn/kibana-react-plugin/public');
@@ -98,6 +99,19 @@ describe('<ComponentTemplateCreate />', () => {
         expect(exists('metaEditor')).toBe(true);
       });
 
+      test('should toggle the data retention field', async () => {
+        const { exists, component, form } = testBed;
+
+        expect(exists('valueDataRetentionField')).toBe(false);
+
+        await act(async () => {
+          form.toggleEuiSwitch('dataRetentionToggle.input');
+        });
+        component.update();
+
+        expect(exists('valueDataRetentionField')).toBe(true);
+      });
+
       describe('Validation', () => {
         test('should require a name', async () => {
           const { form, actions, component, find } = testBed;
@@ -120,6 +134,11 @@ describe('<ComponentTemplateCreate />', () => {
       const COMPONENT_TEMPLATE_NAME = 'comp-1';
       const SETTINGS = { number_of_shards: 1 };
       const ALIASES = { my_alias: {} };
+      const LIFECYCLE = {
+        enabled: true,
+        value: 2,
+        unit: 'd',
+      };
 
       const BOOLEAN_MAPPING_FIELD = {
         name: 'boolean_datatype',
@@ -136,7 +155,10 @@ describe('<ComponentTemplateCreate />', () => {
         component.update();
 
         // Complete step 1 (logistics)
-        await actions.completeStepLogistics({ name: COMPONENT_TEMPLATE_NAME });
+        await actions.completeStepLogistics({
+          name: COMPONENT_TEMPLATE_NAME,
+          lifecycle: LIFECYCLE,
+        });
 
         // Complete step 2 (index settings)
         await actions.completeStepSettings(SETTINGS);
@@ -199,6 +221,7 @@ describe('<ComponentTemplateCreate />', () => {
                   },
                 },
                 aliases: ALIASES,
+                lifecycle: serializeAsESLifecycle(LIFECYCLE),
               },
               _kbnMeta: { usedBy: [], isManaged: false },
             }),
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_details.test.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_details.test.ts
index 95495af1272c3..501d14042def3 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_details.test.ts
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_details.test.ts
@@ -19,6 +19,7 @@ const COMPONENT_TEMPLATE: ComponentTemplateDeserialized = {
     mappings: { properties: { ip_address: { type: 'ip' } } },
     aliases: { mydata: {} },
     settings: { number_of_shards: 1 },
+    lifecycle: { enabled: true, data_retention: '4d' },
   },
   version: 1,
   _meta: { description: 'component template test' },
@@ -72,6 +73,7 @@ describe('<ComponentTemplateDetails />', () => {
       expect(exists('summaryTabContent.usedByTitle')).toBe(true);
       expect(exists('summaryTabContent.versionTitle')).toBe(true);
       expect(exists('summaryTabContent.metaTitle')).toBe(true);
+      expect(exists('summaryTabContent.dataRetentionTitle')).toBe(true);
 
       // [Settings tab] Navigate to tab and verify content
       act(() => {
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_details.helpers.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_details.helpers.ts
index e2f41bbe246f2..44a78e0d0666f 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_details.helpers.ts
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_details.helpers.ts
@@ -78,6 +78,7 @@ export type ComponentTemplateDetailsTestSubjects =
   | 'summaryTabContent.usedByTitle'
   | 'summaryTabContent.versionTitle'
   | 'summaryTabContent.metaTitle'
+  | 'summaryTabContent.dataRetentionTitle'
   | 'notInUseCallout'
   | 'aliasesTabContent'
   | 'noAliasesCallout'
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts
index 0db29dffff510..d809bb230ffaa 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/component_template_form.helpers.ts
@@ -8,6 +8,7 @@
 import { act } from 'react-dom/test-utils';
 
 import { TestBed } from '@kbn/test-jest-helpers';
+import { DataRetention } from '../../../../../../../common';
 
 interface MappingField {
   name: string;
@@ -52,11 +53,28 @@ export const getFormActions = (testBed: TestBed) => {
       .simulate('click');
   };
 
-  const completeStepLogistics = async ({ name }: { name: string }) => {
+  const completeStepLogistics = async ({
+    name,
+    lifecycle,
+  }: {
+    name: string;
+    lifecycle: DataRetention;
+  }) => {
     const { form, component } = testBed;
     // Add name field
     form.setInputValue('nameField.input', name);
 
+    if (lifecycle && lifecycle.enabled) {
+      act(() => {
+        form.toggleEuiSwitch('dataRetentionToggle.input');
+      });
+      component.update();
+
+      act(() => {
+        form.setInputValue('valueDataRetentionField', String(lifecycle.value));
+      });
+    }
+
     await act(async () => {
       clickNextButton();
     });
@@ -164,6 +182,8 @@ export type ComponentTemplateFormTestSubjects =
   | 'stepReview.content'
   | 'stepReview.summaryTab'
   | 'stepReview.requestTab'
+  | 'valueDataRetentionField'
+  | 'dataRetentionToggle.input'
   | 'versionField'
   | 'aliasesEditor'
   | 'mappingsEditor'
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx
index 3e9f0c38f2a52..cebd88cf75965 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx
@@ -19,6 +19,7 @@ import {
   EuiLink,
 } from '@elastic/eui';
 
+import { getLifecycleValue } from '../../../lib/data_streams';
 import { ComponentTemplateDeserialized } from '../shared_imports';
 import { useComponentTemplatesContext } from '../component_templates_context';
 
@@ -27,13 +28,15 @@ interface Props {
   showCallToAction?: boolean;
 }
 
+const INFINITE_AS_ICON = true;
+
 export const TabSummary: React.FunctionComponent<Props> = ({
   componentTemplateDetails,
   showCallToAction,
 }) => {
   const { getUrlForApp } = useComponentTemplatesContext();
 
-  const { version, _meta, _kbnMeta } = componentTemplateDetails;
+  const { version, _meta, _kbnMeta, template } = componentTemplateDetails;
 
   const { usedBy } = _kbnMeta;
   const templateIsInUse = usedBy.length > 0;
@@ -118,6 +121,20 @@ export const TabSummary: React.FunctionComponent<Props> = ({
           </>
         )}
 
+        {template.lifecycle && (
+          <>
+            <EuiDescriptionListTitle data-test-subj="dataRetentionTitle">
+              <FormattedMessage
+                id="xpack.idxMgmt.componentTemplateDetails.summaryTab.dataRetentionDescriptionListTitle"
+                defaultMessage="Data retention"
+              />
+            </EuiDescriptionListTitle>
+            <EuiDescriptionListDescription>
+              {getLifecycleValue(template.lifecycle, INFINITE_AS_ICON)}
+            </EuiDescriptionListDescription>
+          </>
+        )}
+
         {/* Version (optional) */}
         {typeof version !== 'undefined' && (
           <>
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/component_template_form.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/component_template_form.tsx
index 6ec857e9c2c30..38814ece0c17c 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/component_template_form.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/component_template_form.tsx
@@ -19,6 +19,10 @@ import {
   StepMappingsContainer,
   StepAliasesContainer,
 } from '../../shared_imports';
+import {
+  serializeAsESLifecycle,
+  deserializeESLifecycle,
+} from '../../../../../../common/lib/data_stream_serialization';
 import { useComponentTemplatesContext } from '../../component_templates_context';
 import { StepLogisticsContainer, StepReviewContainer } from './steps';
 
@@ -96,14 +100,17 @@ export const ComponentTemplateForm = ({
   onStepChange,
 }: Props) => {
   const {
-    template: { settings, mappings, aliases },
+    template: { settings, mappings, aliases, lifecycle },
     ...logistics
   } = defaultValue;
 
   const { documentation } = useComponentTemplatesContext();
 
   const wizardDefaultValue: WizardContent = {
-    logistics,
+    logistics: {
+      ...logistics,
+      ...(lifecycle ? { lifecycle: deserializeESLifecycle(lifecycle) } : {}),
+    },
     settings,
     mappings,
     aliases,
@@ -162,6 +169,10 @@ export const ComponentTemplateForm = ({
       delete outputTemplate.template.aliases;
     }
 
+    if (outputTemplate.lifecycle) {
+      delete outputTemplate.lifecycle;
+    }
+
     return outputTemplate;
   };
 
@@ -177,9 +188,14 @@ export const ComponentTemplateForm = ({
             settings: wizardData.settings,
             mappings: wizardData.mappings,
             aliases: wizardData.aliases,
+            lifecycle: wizardData.logistics.lifecycle
+              ? serializeAsESLifecycle(wizardData.logistics.lifecycle)
+              : undefined,
           },
         };
-        return cleanupComponentTemplateObject(outputComponentTemplate);
+        return cleanupComponentTemplateObject(
+          outputComponentTemplate as ComponentTemplateDeserialized
+        );
       },
     []
   );
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics.tsx
index 745f2839c5f69..f892e650c1e1b 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics.tsx
@@ -24,8 +24,12 @@ import {
   getFormRow,
   Field,
   Forms,
+  NumericField,
   JsonEditorField,
+  useFormData,
 } from '../../../shared_imports';
+import { DataRetention } from '../../../../../../../common';
+import { UnitField, timeUnits } from '../../../../shared';
 import { useComponentTemplatesContext } from '../../../component_templates_context';
 import { logisticsFormSchema } from './step_logistics_schema';
 
@@ -48,6 +52,13 @@ export const StepLogistics: React.FunctionComponent<Props> = React.memo(
 
     const { isValid: isFormValid, submit, getFormData, subscribe } = form;
 
+    const [{ lifecycle }] = useFormData<{
+      lifecycle: DataRetention;
+    }>({
+      form,
+      watch: ['lifecycle.enabled', 'lifecycle.infiniteDataRetention'],
+    });
+
     const { documentation } = useComponentTemplatesContext();
 
     const [isMetaVisible, setIsMetaVisible] = useState<boolean>(
@@ -134,6 +145,64 @@ export const StepLogistics: React.FunctionComponent<Props> = React.memo(
           />
         </FormRow>
 
+        {/* Data retention field */}
+        <FormRow
+          title={
+            <FormattedMessage
+              id="xpack.idxMgmt.componentTemplateForm.stepLogistics.dataRetentionTitle"
+              defaultMessage="Data retention"
+            />
+          }
+          description={
+            <>
+              <FormattedMessage
+                id="xpack.idxMgmt.componentTemplateForm.stepLogistics.dataRetentionDescription"
+                defaultMessage="Data will be kept at least this long before being automatically deleted."
+              />
+              <EuiSpacer size="m" />
+              <UseField
+                path="lifecycle.enabled"
+                componentProps={{ 'data-test-subj': 'dataRetentionToggle' }}
+              />
+            </>
+          }
+        >
+          {lifecycle?.enabled && (
+            <UseField
+              path="lifecycle.value"
+              component={NumericField}
+              labelAppend={
+                <UseField
+                  path="lifecycle.infiniteDataRetention"
+                  data-test-subj="infiniteDataRetentionToggle"
+                  componentProps={{
+                    euiFieldProps: {
+                      compressed: true,
+                    },
+                  }}
+                />
+              }
+              componentProps={{
+                euiFieldProps: {
+                  disabled: lifecycle?.infiniteDataRetention,
+                  'data-test-subj': 'valueDataRetentionField',
+                  min: 1,
+                  append: (
+                    <UnitField
+                      path="lifecycle.unit"
+                      options={timeUnits}
+                      disabled={lifecycle?.infiniteDataRetention}
+                      euiFieldProps={{
+                        'data-test-subj': 'unitDataRetentionField',
+                      }}
+                    />
+                  ),
+                },
+              }}
+            />
+          )}
+        </FormRow>
+
         {/* version field */}
         <FormRow
           title={
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics_schema.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics_schema.tsx
index 1ce0af1b511d7..9bf11bcc8d11a 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics_schema.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_logistics_schema.tsx
@@ -58,6 +58,89 @@ export const logisticsFormSchema: FormSchema = {
       },
     ],
   },
+  'lifecycle.enabled': {
+    type: FIELD_TYPES.TOGGLE,
+    label: i18n.translate(
+      'xpack.idxMgmt.componentTemplateForm.stepLogistics.enableDataRetentionLabel',
+      {
+        defaultMessage: 'Enable data retention',
+      }
+    ),
+    defaultValue: false,
+  },
+  'lifecycle.infiniteDataRetention': {
+    type: FIELD_TYPES.TOGGLE,
+    label: i18n.translate(
+      'xpack.idxMgmt.componentTemplateForm.stepLogistics.infiniteDataRetentionLabel',
+      {
+        defaultMessage: 'Keep data indefinitely',
+      }
+    ),
+    defaultValue: false,
+  },
+  'lifecycle.value': {
+    type: FIELD_TYPES.TEXT,
+    label: i18n.translate(
+      'xpack.idxMgmt.componentTemplateForm.stepLogistics.fieldDataRetentionValueLabel',
+      {
+        defaultMessage: 'Data Retention',
+      }
+    ),
+    formatters: [toInt],
+    validations: [
+      {
+        validator: ({ value, formData }) => {
+          // If infiniteRetentionPeriod is set, we dont need to validate the data retention field
+          if (formData['lifecycle.infiniteDataRetention']) {
+            return undefined;
+          }
+
+          if (!value) {
+            return {
+              message: i18n.translate(
+                'xpack.idxMgmt.dataStreamsDetailsPanel.stepLogistics.dataRetentionFieldRequiredError',
+                {
+                  defaultMessage: 'A data retention value is required.',
+                }
+              ),
+            };
+          }
+
+          if (value <= 0) {
+            return {
+              message: i18n.translate(
+                'xpack.idxMgmt.dataStreamsDetailsPanel.stepLogistics.dataRetentionFieldNonNegativeError',
+                {
+                  defaultMessage: `A positive value is required.`,
+                }
+              ),
+            };
+          }
+
+          if (value % 1 !== 0) {
+            return {
+              message: i18n.translate(
+                'xpack.idxMgmt.dataStreamsDetailsPanel.stepLogistics.dataRetentionFieldDecimalError',
+                {
+                  defaultMessage: `The value should be an integer number.`,
+                }
+              ),
+            };
+          }
+        },
+      },
+    ],
+  },
+  'lifecycle.unit': {
+    type: FIELD_TYPES.TEXT,
+    label: i18n.translate(
+      'xpack.idxMgmt.componentTemplateForm.stepLogistics.fieldDataRetentionUnitLabel',
+      {
+        defaultMessage: 'Time unit',
+      }
+    ),
+    defaultValue: 'd',
+  },
   version: {
     type: FIELD_TYPES.NUMBER,
     label: i18n.translate('xpack.idxMgmt.componentTemplateForm.stepLogistics.versionFieldLabel', {
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_review.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_review.tsx
index 159f25ab010b7..72746d426d2e1 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_review.tsx
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_form/steps/step_review.tsx
@@ -28,7 +28,9 @@ import {
   serializeComponentTemplate,
 } from '../../../shared_imports';
 import { MANAGED_BY_FLEET } from '../../../constants';
+import { getLifecycleValue } from '../../../../../lib/data_streams';
 
+const INFINITE_AS_ICON = true;
 const { stripEmptyFields } = serializers;
 
 const getDescriptionText = (data: any) => {
@@ -123,6 +125,17 @@ export const StepReview: React.FunctionComponent<Props> = React.memo(
               <EuiDescriptionListDescription>
                 {getDescriptionText(serializedTemplate?.aliases)}
               </EuiDescriptionListDescription>
+
+              {/* Data retention */}
+              <EuiDescriptionListTitle>
+                <FormattedMessage
+                  id="xpack.idxMgmt.componentTemplateForm.stepReview.summaryTab.dataRetentionLabel"
+                  defaultMessage="Data retention"
+                />
+              </EuiDescriptionListTitle>
+              <EuiDescriptionListDescription>
+                {getLifecycleValue(serializedTemplate?.lifecycle, INFINITE_AS_ICON)}
+              </EuiDescriptionListDescription>
             </EuiDescriptionList>
           </EuiFlexItem>
           {isFleetDatastreamsVisible && dataStreams && (
diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts b/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts
index 78dd0395b6e34..d70ed32e2cdf8 100644
--- a/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts
+++ b/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts
@@ -41,12 +41,14 @@ export {
   useForm,
   Form,
   getUseField,
+  useFormData,
 } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib';
 
 export {
   getFormRow,
   Field,
   JsonEditorField,
+  NumericField,
 } from '@kbn/es-ui-shared-plugin/static/forms/components';
 
 export { isJSON } from '@kbn/es-ui-shared-plugin/static/validators/string';
diff --git a/x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts b/x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts
index 73224c0356ad5..2ccc3919e377a 100644
--- a/x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts
+++ b/x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts
@@ -33,9 +33,9 @@ export function registerGetAllRoute({ router, lib: { handleEsError } }: RouteDep
         const { index_templates: indexTemplates } =
           await client.asCurrentUser.indices.getIndexTemplate();
 
-        const body = componentTemplates.map((componentTemplate: ComponentTemplateFromEs) => {
+        const body = componentTemplates.map((componentTemplate) => {
           const deserializedComponentTemplateListItem = deserializeComponentTemplateList(
-            componentTemplate,
+            componentTemplate as ComponentTemplateFromEs,
             // @ts-expect-error TemplateSerialized.index_patterns not compatible with IndicesIndexTemplate.index_patterns
             indexTemplates
           );
diff --git a/x-pack/plugins/index_management/server/routes/api/component_templates/schema_validation.ts b/x-pack/plugins/index_management/server/routes/api/component_templates/schema_validation.ts
index c436c70ba7a46..586e9db911028 100644
--- a/x-pack/plugins/index_management/server/routes/api/component_templates/schema_validation.ts
+++ b/x-pack/plugins/index_management/server/routes/api/component_templates/schema_validation.ts
@@ -13,6 +13,12 @@ export const componentTemplateSchema = schema.object({
     settings: schema.maybe(schema.object({}, { unknowns: 'allow' })),
     aliases: schema.maybe(schema.object({}, { unknowns: 'allow' })),
     mappings: schema.maybe(schema.object({}, { unknowns: 'allow' })),
+    lifecycle: schema.maybe(
+      schema.object({
+        enabled: schema.boolean(),
+        data_retention: schema.maybe(schema.string()),
+      })
+    ),
   }),
   version: schema.maybe(schema.number()),
   _meta: schema.maybe(schema.object({}, { unknowns: 'allow' })),
diff --git a/x-pack/test/api_integration/apis/management/index_management/component_templates.ts b/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
index 6e2b7ba71e86b..01e7ae46ce8fe 100644
--- a/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
+++ b/x-pack/test/api_integration/apis/management/index_management/component_templates.ts
@@ -147,6 +147,10 @@ export default function ({ getService }: FtrProviderContext) {
                   },
                 },
               },
+              lifecycle: {
+                enabled: true,
+                data_retention: '2d',
+              },
             },
             _meta: {
               description: 'set number of shards to one',

From c62df52c0461dd6b12e5d9f8498b7dde45faa45d Mon Sep 17 00:00:00 2001
From: Achyut Jhunjhunwala <achyut.jhunjhunwala@elastic.co>
Date: Fri, 10 Nov 2023 19:37:34 +0100
Subject: [PATCH 107/147] [Log Explorer] Add logic to display highlights in
 Flyout (#170650)

## Summary

Closes https://github.com/elastic/kibana/issues/169504



![Highlights](https://github.com/elastic/kibana/assets/7416358/06f21ac5-38e1-4521-843f-064c16ddd034)

## What's pending

- [ ] FTR Tests

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 packages/kbn-optimizer/limits.yml             |   2 +-
 .../plugins/log_explorer/common/constants.ts  |  13 +
 .../flyout_detail/flyout_detail.tsx           |  48 +--
 .../flyout_detail/flyout_header.tsx           |  46 +++
 .../flyout_detail/flyout_highlights.tsx       | 207 +++++++++++++
 .../sub_components/highlight_container.tsx    |  42 +++
 .../sub_components/highlight_field.tsx        | 103 +++++++
 .../sub_components/highlight_section.tsx      |  61 ++++
 .../sub_components/hover_action.tsx           |  86 ++++++
 .../components/flyout_detail/translations.ts  | 148 +++++++++
 .../public/components/flyout_detail/types.ts  |  35 ++-
 .../flyout_detail/use_doc_detail.ts           |  61 +++-
 .../public/hooks/use_discover_action.ts       |  17 +
 .../public/hooks/use_flyouot_column_width.tsx |  26 ++
 .../apps/observability_log_explorer/flyout.ts |   4 +-
 .../flyout_highlights.ts                      | 283 +++++++++++++++++
 .../apps/observability_log_explorer/index.ts  |   1 +
 .../observability_log_explorer.ts             |  36 ++-
 .../flyout_highlights.ts                      | 291 ++++++++++++++++++
 .../observability_log_explorer/index.ts       |   2 +
 20 files changed, 1457 insertions(+), 55 deletions(-)
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_header.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_highlights.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_container.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_field.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_section.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/hover_action.tsx
 create mode 100644 x-pack/plugins/log_explorer/public/hooks/use_discover_action.ts
 create mode 100644 x-pack/plugins/log_explorer/public/hooks/use_flyouot_column_width.tsx
 create mode 100644 x-pack/test/functional/apps/observability_log_explorer/flyout_highlights.ts
 create mode 100644 x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/flyout_highlights.ts

diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml
index a3f99b4f93186..d7a5d1c9d09f2 100644
--- a/packages/kbn-optimizer/limits.yml
+++ b/packages/kbn-optimizer/limits.yml
@@ -89,7 +89,7 @@ pageLoadAssetSize:
   licensing: 29004
   links: 44490
   lists: 22900
-  logExplorer: 39045
+  logExplorer: 54342
   logsShared: 281060
   logstash: 53548
   management: 46112
diff --git a/x-pack/plugins/log_explorer/common/constants.ts b/x-pack/plugins/log_explorer/common/constants.ts
index 4a93192b13acb..5aeb491b5a9d2 100644
--- a/x-pack/plugins/log_explorer/common/constants.ts
+++ b/x-pack/plugins/log_explorer/common/constants.ts
@@ -13,6 +13,19 @@ export const HOST_NAME_FIELD = 'host.name';
 export const LOG_LEVEL_FIELD = 'log.level';
 export const MESSAGE_FIELD = 'message';
 export const SERVICE_NAME_FIELD = 'service.name';
+export const TRACE_ID_FIELD = 'trace.id';
+
+export const AGENT_NAME_FIELD = 'agent.name';
+export const ORCHESTRATOR_CLUSTER_NAME_FIELD = 'orchestrator.cluster.name';
+export const ORCHESTRATOR_RESOURCE_ID_FIELD = 'orchestrator.resource.id';
+export const CLOUD_PROVIDER_FIELD = 'cloud.provider';
+export const CLOUD_REGION_FIELD = 'cloud.region';
+export const CLOUD_AVAILABILITY_ZONE_FIELD = 'cloud.availability_zone';
+export const CLOUD_PROJECT_ID_FIELD = 'cloud.project.id';
+export const CLOUD_INSTANCE_ID_FIELD = 'cloud.instance.id';
+export const LOG_FILE_PATH_FIELD = 'log.file.path';
+export const DATASTREAM_NAMESPACE_FIELD = 'data_stream.namespace';
+export const DATASTREAM_DATASET_FIELD = 'data_stream.dataset';
 
 // Sizing
 export const DATA_GRID_COLUMN_WIDTH_SMALL = 240;
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_detail.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_detail.tsx
index 012e5c914ed61..66c4788a32ae2 100644
--- a/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_detail.tsx
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_detail.tsx
@@ -6,42 +6,22 @@
  */
 
 import React from 'react';
-import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
-import { LogLevel } from './sub_components/log_level';
-import { Timestamp } from './sub_components/timestamp';
 import { FlyoutProps, LogDocument } from './types';
-import { getDocDetailRenderFlags, useDocDetail } from './use_doc_detail';
-import { Message } from './sub_components/message';
+import { useDocDetail } from './use_doc_detail';
+import { FlyoutHeader } from './flyout_header';
+import { FlyoutHighlights } from './flyout_highlights';
 
-export function FlyoutDetail({ dataView, doc }: Pick<FlyoutProps, 'dataView' | 'doc' | 'actions'>) {
+export function FlyoutDetail({
+  dataView,
+  doc,
+  actions,
+}: Pick<FlyoutProps, 'dataView' | 'doc' | 'actions'>) {
   const parsedDoc = useDocDetail(doc as LogDocument, { dataView });
 
-  const { hasTimestamp, hasLogLevel, hasMessage, hasBadges, hasFlyoutHeader } =
-    getDocDetailRenderFlags(parsedDoc);
-
-  return hasFlyoutHeader ? (
-    <EuiFlexGroup direction="column" gutterSize="m" data-test-subj="logExplorerFlyoutDetail">
-      <EuiFlexItem grow={false}>
-        {hasBadges && (
-          <EuiFlexGroup responsive={false} gutterSize="m">
-            {hasLogLevel && (
-              <EuiFlexItem grow={false}>
-                <LogLevel level={parsedDoc['log.level']} />
-              </EuiFlexItem>
-            )}
-            {hasTimestamp && (
-              <EuiFlexItem grow={false}>
-                <Timestamp timestamp={parsedDoc['@timestamp']} />
-              </EuiFlexItem>
-            )}
-          </EuiFlexGroup>
-        )}
-      </EuiFlexItem>
-      {hasMessage && (
-        <EuiFlexItem grow={false}>
-          <Message message={parsedDoc.message} />
-        </EuiFlexItem>
-      )}
-    </EuiFlexGroup>
-  ) : null;
+  return (
+    <>
+      <FlyoutHeader doc={parsedDoc} />
+      <FlyoutHighlights formattedDoc={parsedDoc} flattenedDoc={doc.flattened} actions={actions} />
+    </>
+  );
 }
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_header.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_header.tsx
new file mode 100644
index 0000000000000..babca8f273860
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_header.tsx
@@ -0,0 +1,46 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
+import { FlyoutDoc } from './types';
+import { getDocDetailHeaderRenderFlags } from './use_doc_detail';
+import { LogLevel } from './sub_components/log_level';
+import { Timestamp } from './sub_components/timestamp';
+import { Message } from './sub_components/message';
+import * as constants from '../../../common/constants';
+
+export function FlyoutHeader({ doc }: { doc: FlyoutDoc }) {
+  const { hasTimestamp, hasLogLevel, hasMessage, hasBadges, hasFlyoutHeader } =
+    getDocDetailHeaderRenderFlags(doc);
+
+  return hasFlyoutHeader ? (
+    <EuiFlexGroup direction="column" gutterSize="m" data-test-subj="logExplorerFlyoutDetail">
+      <EuiFlexItem grow={false}>
+        {hasBadges && (
+          <EuiFlexGroup responsive={false} gutterSize="m">
+            {hasLogLevel && (
+              <EuiFlexItem grow={false}>
+                <LogLevel level={doc[constants.LOG_LEVEL_FIELD]} />
+              </EuiFlexItem>
+            )}
+            {hasTimestamp && (
+              <EuiFlexItem grow={false}>
+                <Timestamp timestamp={doc[constants.TIMESTAMP_FIELD]} />
+              </EuiFlexItem>
+            )}
+          </EuiFlexGroup>
+        )}
+      </EuiFlexItem>
+      {hasMessage && (
+        <EuiFlexItem grow={false}>
+          <Message message={doc[constants.MESSAGE_FIELD]} />
+        </EuiFlexItem>
+      )}
+    </EuiFlexGroup>
+  ) : null;
+}
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_highlights.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_highlights.tsx
new file mode 100644
index 0000000000000..74d65d73f23b8
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/flyout_highlights.tsx
@@ -0,0 +1,207 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import React from 'react';
+import { FlyoutContentActions } from '@kbn/discover-plugin/public';
+import { DataTableRecord } from '@kbn/discover-utils/src/types';
+import { useMeasure } from 'react-use/lib';
+import { FlyoutDoc } from './types';
+import * as constants from '../../../common/constants';
+import { HighlightField } from './sub_components/highlight_field';
+import {
+  cloudAccordionTitle,
+  flyoutCloudAvailabilityZoneLabel,
+  flyoutCloudInstanceIdLabel,
+  flyoutCloudProjectIdLabel,
+  flyoutCloudProviderLabel,
+  flyoutCloudRegionLabel,
+  flyoutDatasetLabel,
+  flyoutHostNameLabel,
+  flyoutLogPathFileLabel,
+  flyoutNamespaceLabel,
+  flyoutOrchestratorClusterNameLabel,
+  flyoutOrchestratorResourceIdLabel,
+  flyoutServiceLabel,
+  flyoutShipperLabel,
+  flyoutTraceLabel,
+  infraAccordionTitle,
+  otherAccordionTitle,
+  serviceAccordionTitle,
+} from './translations';
+import { HighlightSection } from './sub_components/highlight_section';
+import { DiscoverActionsProvider } from '../../hooks/use_discover_action';
+import { HighlightContainer } from './sub_components/highlight_container';
+import { useFlyoutColumnWidth } from '../../hooks/use_flyouot_column_width';
+
+export function FlyoutHighlights({
+  formattedDoc,
+  flattenedDoc,
+  actions,
+}: {
+  formattedDoc: FlyoutDoc;
+  flattenedDoc: DataTableRecord['flattened'];
+  actions: FlyoutContentActions;
+}) {
+  const [ref, dimensions] = useMeasure<HTMLDivElement>();
+  const { columns, fieldWidth } = useFlyoutColumnWidth(dimensions.width);
+  return (
+    <DiscoverActionsProvider value={actions}>
+      <HighlightContainer ref={ref}>
+        <HighlightSection title={serviceAccordionTitle} columns={columns}>
+          {formattedDoc[constants.SERVICE_NAME_FIELD] && (
+            <HighlightField
+              label={flyoutServiceLabel}
+              field={constants.SERVICE_NAME_FIELD}
+              value={flattenedDoc[constants.SERVICE_NAME_FIELD]}
+              formattedValue={formattedDoc[constants.SERVICE_NAME_FIELD]}
+              dataTestSubj="logExplorerFlyoutService"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.TRACE_ID_FIELD] && (
+            <HighlightField
+              label={flyoutTraceLabel}
+              field={constants.TRACE_ID_FIELD}
+              value={flattenedDoc[constants.TRACE_ID_FIELD]}
+              formattedValue={formattedDoc[constants.TRACE_ID_FIELD]}
+              dataTestSubj="logExplorerFlyoutTrace"
+              width={fieldWidth}
+            />
+          )}
+        </HighlightSection>
+
+        <HighlightSection title={infraAccordionTitle} columns={columns}>
+          {formattedDoc[constants.HOST_NAME_FIELD] && (
+            <HighlightField
+              label={flyoutHostNameLabel}
+              field={constants.HOST_NAME_FIELD}
+              value={flattenedDoc[constants.HOST_NAME_FIELD]}
+              formattedValue={formattedDoc[constants.HOST_NAME_FIELD]}
+              dataTestSubj="logExplorerFlyoutHostName"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.ORCHESTRATOR_CLUSTER_NAME_FIELD] && (
+            <HighlightField
+              label={flyoutOrchestratorClusterNameLabel}
+              field={constants.ORCHESTRATOR_CLUSTER_NAME_FIELD}
+              value={flattenedDoc[constants.ORCHESTRATOR_CLUSTER_NAME_FIELD]}
+              formattedValue={formattedDoc[constants.ORCHESTRATOR_CLUSTER_NAME_FIELD]}
+              dataTestSubj="logExplorerFlyoutClusterName"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.ORCHESTRATOR_RESOURCE_ID_FIELD] && (
+            <HighlightField
+              label={flyoutOrchestratorResourceIdLabel}
+              field={constants.ORCHESTRATOR_RESOURCE_ID_FIELD}
+              value={flattenedDoc[constants.ORCHESTRATOR_RESOURCE_ID_FIELD]}
+              formattedValue={formattedDoc[constants.ORCHESTRATOR_RESOURCE_ID_FIELD]}
+              dataTestSubj="logExplorerFlyoutResourceId"
+              width={fieldWidth}
+            />
+          )}
+        </HighlightSection>
+
+        <HighlightSection title={cloudAccordionTitle} columns={columns}>
+          {formattedDoc[constants.CLOUD_PROVIDER_FIELD] && (
+            <HighlightField
+              label={flyoutCloudProviderLabel}
+              field={constants.CLOUD_PROVIDER_FIELD}
+              value={flattenedDoc[constants.CLOUD_PROVIDER_FIELD]}
+              formattedValue={formattedDoc[constants.CLOUD_PROVIDER_FIELD]}
+              dataTestSubj="logExplorerFlyoutCloudProvider"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.CLOUD_REGION_FIELD] && (
+            <HighlightField
+              label={flyoutCloudRegionLabel}
+              field={constants.CLOUD_REGION_FIELD}
+              value={flattenedDoc[constants.CLOUD_REGION_FIELD]}
+              formattedValue={formattedDoc[constants.CLOUD_REGION_FIELD]}
+              dataTestSubj="logExplorerFlyoutCloudRegion"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.CLOUD_AVAILABILITY_ZONE_FIELD] && (
+            <HighlightField
+              label={flyoutCloudAvailabilityZoneLabel}
+              field={constants.CLOUD_AVAILABILITY_ZONE_FIELD}
+              value={flattenedDoc[constants.CLOUD_AVAILABILITY_ZONE_FIELD]}
+              formattedValue={formattedDoc[constants.CLOUD_AVAILABILITY_ZONE_FIELD]}
+              dataTestSubj="logExplorerFlyoutCloudAz"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.CLOUD_PROJECT_ID_FIELD] && (
+            <HighlightField
+              label={flyoutCloudProjectIdLabel}
+              field={constants.CLOUD_PROJECT_ID_FIELD}
+              value={flattenedDoc[constants.CLOUD_PROJECT_ID_FIELD]}
+              formattedValue={formattedDoc[constants.CLOUD_PROJECT_ID_FIELD]}
+              dataTestSubj="logExplorerFlyoutCloudProjectId"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.CLOUD_INSTANCE_ID_FIELD] && (
+            <HighlightField
+              label={flyoutCloudInstanceIdLabel}
+              field={constants.CLOUD_INSTANCE_ID_FIELD}
+              value={flattenedDoc[constants.CLOUD_INSTANCE_ID_FIELD]}
+              formattedValue={formattedDoc[constants.CLOUD_INSTANCE_ID_FIELD]}
+              dataTestSubj="logExplorerFlyoutCloudInstanceId"
+              width={fieldWidth}
+            />
+          )}
+        </HighlightSection>
+
+        <HighlightSection title={otherAccordionTitle} showBottomRule={false} columns={columns}>
+          {formattedDoc[constants.LOG_FILE_PATH_FIELD] && (
+            <HighlightField
+              label={flyoutLogPathFileLabel}
+              field={constants.LOG_FILE_PATH_FIELD}
+              value={flattenedDoc[constants.LOG_FILE_PATH_FIELD]}
+              formattedValue={formattedDoc[constants.LOG_FILE_PATH_FIELD]}
+              dataTestSubj="logExplorerFlyoutLogPathFile"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.DATASTREAM_NAMESPACE_FIELD] && (
+            <HighlightField
+              label={flyoutNamespaceLabel}
+              field={constants.DATASTREAM_NAMESPACE_FIELD}
+              value={flattenedDoc[constants.DATASTREAM_NAMESPACE_FIELD]}
+              formattedValue={formattedDoc[constants.DATASTREAM_NAMESPACE_FIELD]}
+              dataTestSubj="logExplorerFlyoutNamespace"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.DATASTREAM_DATASET_FIELD] && (
+            <HighlightField
+              label={flyoutDatasetLabel}
+              field={constants.DATASTREAM_DATASET_FIELD}
+              value={flattenedDoc[constants.DATASTREAM_DATASET_FIELD]}
+              formattedValue={formattedDoc[constants.DATASTREAM_DATASET_FIELD]}
+              dataTestSubj="logExplorerFlyoutDataset"
+              width={fieldWidth}
+            />
+          )}
+          {formattedDoc[constants.AGENT_NAME_FIELD] && (
+            <HighlightField
+              label={flyoutShipperLabel}
+              field={constants.AGENT_NAME_FIELD}
+              value={flattenedDoc[constants.AGENT_NAME_FIELD]}
+              formattedValue={formattedDoc[constants.AGENT_NAME_FIELD]}
+              dataTestSubj="logExplorerFlyoutLogShipper"
+              width={fieldWidth}
+            />
+          )}
+        </HighlightSection>
+      </HighlightContainer>
+    </DiscoverActionsProvider>
+  );
+}
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_container.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_container.tsx
new file mode 100644
index 0000000000000..9e00948699404
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_container.tsx
@@ -0,0 +1,42 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { EuiHorizontalRule, EuiPanel } from '@elastic/eui';
+
+interface HighlightContainerProps {
+  children: React.ReactNode;
+}
+
+const hasNonUndefinedSubChild = (children: React.ReactNode[]): boolean => {
+  return children.some((child) => {
+    if (React.isValidElement(child)) {
+      const subChildren = React.Children.toArray(child.props.children);
+      return subChildren.some((subChild) => subChild !== undefined && subChild !== null);
+    }
+    return false;
+  });
+};
+
+export const HighlightContainer = React.forwardRef<HTMLDivElement, HighlightContainerProps>(
+  ({ children }, ref) => {
+    const validChildren = React.Children.toArray(children).filter(Boolean);
+    const hasChildren = validChildren.length > 0;
+    const shouldRender = hasChildren && hasNonUndefinedSubChild(validChildren);
+
+    const flexChildren = validChildren.map((child, idx) => <div key={idx}>{child}</div>);
+
+    return shouldRender ? (
+      <div ref={ref}>
+        <EuiHorizontalRule margin="xs" />
+        <EuiPanel paddingSize="m" hasShadow={false} hasBorder={true}>
+          {flexChildren}
+        </EuiPanel>
+      </div>
+    ) : null;
+  }
+);
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_field.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_field.tsx
new file mode 100644
index 0000000000000..ca47b10548236
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_field.tsx
@@ -0,0 +1,103 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { EuiFlexGroup, EuiFlexItem, EuiText, copyToClipboard } from '@elastic/eui';
+import React, { ReactNode, useMemo, useState } from 'react';
+import { HoverAction, HoverActionType } from './hover_action';
+import {
+  flyoutHoverActionFilterForText,
+  flyoutHoverActionFilterOutText,
+  flyoutHoverActionFilterForFieldPresentText,
+  flyoutHoverActionToggleColumnText,
+  flyoutHoverActionCopyToClipboardText,
+} from '../translations';
+import { useDiscoverActionsContext } from '../../../hooks/use_discover_action';
+
+interface HighlightFieldProps {
+  label: string | ReactNode;
+  field: string;
+  value: unknown;
+  formattedValue: string;
+  dataTestSubj: string;
+  width: number;
+}
+
+export function HighlightField({
+  label,
+  field,
+  value,
+  formattedValue,
+  dataTestSubj,
+  width,
+}: HighlightFieldProps) {
+  const filterForText = flyoutHoverActionFilterForText(value);
+  const filterOutText = flyoutHoverActionFilterOutText(value);
+  const actions = useDiscoverActionsContext();
+  const [columnAdded, setColumnAdded] = useState(false);
+
+  const hoverActions: HoverActionType[] = useMemo(
+    () => [
+      {
+        id: 'addToFilterAction',
+        tooltipContent: filterForText,
+        iconType: 'plusInCircle',
+        onClick: () => actions?.addFilter && actions.addFilter(field, value, '+'),
+        display: true,
+      },
+      {
+        id: 'removeFromFilterAction',
+        tooltipContent: filterOutText,
+        iconType: 'minusInCircle',
+        onClick: () => actions?.addFilter && actions.addFilter(field, value, '-'),
+        display: true,
+      },
+      {
+        id: 'filterForFieldPresentAction',
+        tooltipContent: flyoutHoverActionFilterForFieldPresentText,
+        iconType: 'filter',
+        onClick: () => actions?.addFilter && actions.addFilter('_exists_', field, '+'),
+        display: true,
+      },
+      {
+        id: 'toggleColumnAction',
+        tooltipContent: flyoutHoverActionToggleColumnText,
+        iconType: 'listAdd',
+        onClick: () => {
+          if (actions) {
+            if (columnAdded) {
+              actions?.removeColumn?.(field);
+            } else {
+              actions?.addColumn?.(field);
+            }
+            setColumnAdded(!columnAdded);
+          }
+        },
+        display: true,
+      },
+      {
+        id: 'copyToClipboardAction',
+        tooltipContent: flyoutHoverActionCopyToClipboardText,
+        iconType: 'copyClipboard',
+        onClick: () => copyToClipboard(value as string),
+        display: true,
+      },
+    ],
+    [filterForText, filterOutText, actions, field, value, columnAdded]
+  );
+  return formattedValue ? (
+    <EuiFlexGroup direction="column" gutterSize="none" data-test-subj={dataTestSubj}>
+      <EuiFlexItem>
+        <EuiText color="subdued" size="xs">
+          {label}
+        </EuiText>
+      </EuiFlexItem>
+      <EuiFlexItem>
+        <HoverAction displayText={formattedValue} actions={hoverActions} width={width} />
+      </EuiFlexItem>
+    </EuiFlexGroup>
+  ) : null;
+}
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_section.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_section.tsx
new file mode 100644
index 0000000000000..0b598339ed29b
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/highlight_section.tsx
@@ -0,0 +1,61 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import {
+  EuiAccordion,
+  EuiFlexGrid,
+  EuiHorizontalRule,
+  EuiTitle,
+  EuiFlexItem,
+  useGeneratedHtmlId,
+} from '@elastic/eui';
+
+interface HighlightSectionProps {
+  title: string;
+  children: React.ReactNode;
+  showBottomRule?: boolean;
+  columns: 1 | 2 | 3;
+}
+
+export function HighlightSection({
+  title,
+  children,
+  showBottomRule = true,
+  columns,
+}: HighlightSectionProps) {
+  const validChildren = React.Children.toArray(children).filter(Boolean);
+  const shouldRenderSection = validChildren.length > 0;
+  const accordionTitle = (
+    <EuiTitle size="xs">
+      <p>{title}</p>
+    </EuiTitle>
+  );
+
+  const flexChildren = validChildren.map((child, idx) => (
+    <EuiFlexItem key={idx}>{child}</EuiFlexItem>
+  ));
+
+  const accordionId = useGeneratedHtmlId({
+    prefix: title,
+  });
+
+  return shouldRenderSection ? (
+    <>
+      <EuiAccordion
+        id={accordionId}
+        buttonContent={accordionTitle}
+        paddingSize="s"
+        initialIsOpen={true}
+        data-test-subj={`logExplorerFlyoutHighlightSection${title}`}
+      >
+        <EuiFlexGrid columns={columns}>{flexChildren}</EuiFlexGrid>
+      </EuiAccordion>
+      {showBottomRule && <EuiHorizontalRule margin="xs" />}
+    </>
+  ) : null;
+}
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/hover_action.tsx b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/hover_action.tsx
new file mode 100644
index 0000000000000..5ed25be2b36d9
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/sub_components/hover_action.tsx
@@ -0,0 +1,86 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+
+import {
+  EuiFlexGroup,
+  EuiToolTip,
+  EuiButtonIcon,
+  useEuiTheme,
+  EuiTextTruncate,
+  EuiText,
+} from '@elastic/eui';
+import type { IconType } from '@elastic/eui';
+
+export interface HoverActionType {
+  id: string;
+  tooltipContent: string;
+  iconType: IconType;
+  onClick: () => void;
+  display: boolean;
+}
+
+interface HoverActionProps {
+  displayText: string;
+  actions: HoverActionType[];
+  width: number;
+}
+
+export const HoverAction = ({ displayText, actions, width }: HoverActionProps) => {
+  const { euiTheme } = useEuiTheme();
+
+  return (
+    <EuiFlexGroup
+      responsive={false}
+      alignItems="center"
+      justifyContent="flexStart"
+      gutterSize="s"
+      css={{
+        ':hover, :focus-within': {
+          '.visibleOnHoverFocus': {
+            opacity: 1,
+            visibility: 'visible',
+          },
+        },
+      }}
+    >
+      <EuiTextTruncate text={displayText} truncation="end" width={width}>
+        {(truncatedText: string) => (
+          <EuiText
+            // Value returned from formatFieldValue is always sanitized
+            dangerouslySetInnerHTML={{ __html: truncatedText }}
+          />
+        )}
+      </EuiTextTruncate>
+      <EuiFlexGroup
+        className="visibleOnHoverFocus"
+        css={{
+          flexGrow: 0,
+          flexShrink: 0,
+          opacity: 0,
+          visibility: 'hidden',
+          transition: `opacity ${euiTheme.animation.normal} ${euiTheme.animation.resistance}, visibility ${euiTheme.animation.normal} ${euiTheme.animation.resistance}`,
+        }}
+        responsive={false}
+        alignItems="center"
+        gutterSize="none"
+      >
+        {actions.map((action) => (
+          <EuiToolTip content={action.tooltipContent} key={action.id}>
+            <EuiButtonIcon
+              size="xs"
+              iconType={action.iconType}
+              aria-label={action.tooltipContent as string}
+              onClick={() => action.onClick()}
+            />
+          </EuiToolTip>
+        ))}
+      </EuiFlexGroup>
+    </EuiFlexGroup>
+  );
+};
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/translations.ts b/x-pack/plugins/log_explorer/public/components/flyout_detail/translations.ts
index fcb42cf79a5dd..9c27e333a4bdc 100644
--- a/x-pack/plugins/log_explorer/public/components/flyout_detail/translations.ts
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/translations.ts
@@ -10,3 +10,151 @@ import { i18n } from '@kbn/i18n';
 export const flyoutMessageLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.message', {
   defaultMessage: 'Message',
 });
+
+export const flyoutServiceLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.service', {
+  defaultMessage: 'Service',
+});
+
+export const flyoutTraceLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.trace', {
+  defaultMessage: 'Trace',
+});
+
+export const flyoutHostNameLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.hostName', {
+  defaultMessage: 'Host name',
+});
+
+export const serviceAccordionTitle = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.accordion.title.service',
+  {
+    defaultMessage: 'Service',
+  }
+);
+
+export const infraAccordionTitle = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.accordion.title.infrastructure',
+  {
+    defaultMessage: 'Infrastructure',
+  }
+);
+
+export const cloudAccordionTitle = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.accordion.title.cloud',
+  {
+    defaultMessage: 'Cloud',
+  }
+);
+
+export const otherAccordionTitle = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.accordion.title.other',
+  {
+    defaultMessage: 'Other',
+  }
+);
+
+export const flyoutOrchestratorClusterNameLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.orchestratorClusterName',
+  {
+    defaultMessage: 'Orchestrator cluster Name',
+  }
+);
+
+export const flyoutOrchestratorResourceIdLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.orchestratorResourceId',
+  {
+    defaultMessage: 'Orchestrator resource ID',
+  }
+);
+
+export const flyoutCloudProviderLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.cloudProvider',
+  {
+    defaultMessage: 'Cloud provider',
+  }
+);
+
+export const flyoutCloudRegionLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.cloudRegion',
+  {
+    defaultMessage: 'Cloud region',
+  }
+);
+
+export const flyoutCloudAvailabilityZoneLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.cloudAvailabilityZone',
+  {
+    defaultMessage: 'Cloud availability zone',
+  }
+);
+
+export const flyoutCloudProjectIdLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.cloudProjectId',
+  {
+    defaultMessage: 'Cloud project ID',
+  }
+);
+
+export const flyoutCloudInstanceIdLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.cloudInstanceId',
+  {
+    defaultMessage: 'Cloud instance ID',
+  }
+);
+
+export const flyoutLogPathFileLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.logPathFile',
+  {
+    defaultMessage: 'Log path file',
+  }
+);
+
+export const flyoutNamespaceLabel = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.label.namespace',
+  {
+    defaultMessage: 'Namespace',
+  }
+);
+
+export const flyoutDatasetLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.dataset', {
+  defaultMessage: 'Dataset',
+});
+
+export const flyoutShipperLabel = i18n.translate('xpack.logExplorer.flyoutDetail.label.shipper', {
+  defaultMessage: 'Shipper',
+});
+
+export const flyoutHoverActionFilterForText = (text: unknown) =>
+  i18n.translate('xpack.logExplorer.flyoutDetail.value.hover.filterFor', {
+    defaultMessage: 'Filter for this {value}',
+    values: {
+      value: text as string,
+    },
+  });
+
+export const flyoutHoverActionFilterOutText = (text: unknown) =>
+  i18n.translate('xpack.logExplorer.flyoutDetail.value.hover.filterOut', {
+    defaultMessage: 'Filter out this {value}',
+    values: {
+      value: text as string,
+    },
+  });
+
+export const flyoutHoverActionFilterForFieldPresentText = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.value.hover.filterForFieldPresent',
+  {
+    defaultMessage: 'Filter for field present',
+  }
+);
+
+export const flyoutHoverActionToggleColumnText = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.value.hover.toggleColumn',
+  {
+    defaultMessage: 'Toggle column in table',
+  }
+);
+
+export const flyoutHoverActionCopyToClipboardText = i18n.translate(
+  'xpack.logExplorer.flyoutDetail.value.hover.copyToClipboard',
+  {
+    defaultMessage: 'Copy to clipboard',
+  }
+);
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/types.ts b/x-pack/plugins/log_explorer/public/components/flyout_detail/types.ts
index cf8cfb8170e21..28110024108da 100644
--- a/x-pack/plugins/log_explorer/public/components/flyout_detail/types.ts
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/types.ts
@@ -5,7 +5,6 @@
  * 2.0.
  */
 
-import type { EuiIconType } from '@elastic/eui/src/components/icon/icon';
 import type { DataView } from '@kbn/data-views-plugin/common';
 import type { FlyoutContentProps } from '@kbn/discover-plugin/public';
 import type { DataTableRecord } from '@kbn/discover-utils/types';
@@ -19,6 +18,21 @@ export interface LogDocument extends DataTableRecord {
     '@timestamp': string;
     'log.level'?: string;
     message?: string;
+
+    'host.name'?: string;
+    'service.name'?: string;
+    'trace.id'?: string;
+    'agent.name'?: string;
+    'orchestrator.cluster.name'?: string;
+    'orchestrator.resource.id'?: string;
+    'cloud.provider'?: string;
+    'cloud.region'?: string;
+    'cloud.availability_zone'?: string;
+    'cloud.project.id'?: string;
+    'cloud.instance.id'?: string;
+    'log.file.path'?: string;
+    'data_stream.namespace': string;
+    'data_stream.dataset': string;
   };
 }
 
@@ -26,10 +40,19 @@ export interface FlyoutDoc {
   '@timestamp': string;
   'log.level'?: string;
   message?: string;
-}
 
-export interface FlyoutHighlightField {
-  label: string;
-  value: string;
-  iconType?: EuiIconType;
+  'host.name'?: string;
+  'service.name'?: string;
+  'trace.id'?: string;
+  'agent.name'?: string;
+  'orchestrator.cluster.name'?: string;
+  'orchestrator.resource.id'?: string;
+  'cloud.provider'?: string;
+  'cloud.region'?: string;
+  'cloud.availability_zone'?: string;
+  'cloud.project.id'?: string;
+  'cloud.instance.id'?: string;
+  'log.file.path'?: string;
+  'data_stream.namespace': string;
+  'data_stream.dataset': string;
 }
diff --git a/x-pack/plugins/log_explorer/public/components/flyout_detail/use_doc_detail.ts b/x-pack/plugins/log_explorer/public/components/flyout_detail/use_doc_detail.ts
index 32e4bcd966745..938855f00f5a3 100644
--- a/x-pack/plugins/log_explorer/public/components/flyout_detail/use_doc_detail.ts
+++ b/x-pack/plugins/log_explorer/public/components/flyout_detail/use_doc_detail.ts
@@ -5,7 +5,8 @@
  * 2.0.
  */
 import { formatFieldValue } from '@kbn/discover-utils';
-import { LOG_LEVEL_FIELD, MESSAGE_FIELD, TIMESTAMP_FIELD } from '../../../common/constants';
+import he from 'he';
+import * as constants from '../../../common/constants';
 import { useKibanaContextForPlugin } from '../../utils/use_kibana';
 import { FlyoutDoc, FlyoutProps, LogDocument } from './types';
 
@@ -30,21 +31,59 @@ export function useDocDetail(
     );
   };
 
-  const level = formatField(LOG_LEVEL_FIELD)?.toLowerCase();
-  const timestamp = formatField(TIMESTAMP_FIELD);
-  const message = formatField(MESSAGE_FIELD);
+  // Flyout Headers
+  const level = formatField(constants.LOG_LEVEL_FIELD)?.toLowerCase();
+  const timestamp = formatField(constants.TIMESTAMP_FIELD);
+  const formattedMessage = formatField(constants.MESSAGE_FIELD);
+  const message = formattedMessage ? he.decode(formattedMessage) : undefined;
+
+  // Service Highlights
+  const serviceName = formatField(constants.SERVICE_NAME_FIELD);
+  const traceId = formatField(constants.TRACE_ID_FIELD);
+
+  // Infrastructure Highlights
+  const hostname = formatField(constants.HOST_NAME_FIELD);
+  const orchestratorClusterName = formatField(constants.ORCHESTRATOR_CLUSTER_NAME_FIELD);
+  const orchestratorResourceId = formatField(constants.ORCHESTRATOR_RESOURCE_ID_FIELD);
+
+  // Cloud Highlights
+  const cloudProvider = formatField(constants.CLOUD_PROVIDER_FIELD);
+  const cloudRegion = formatField(constants.CLOUD_REGION_FIELD);
+  const cloudAz = formatField(constants.CLOUD_AVAILABILITY_ZONE_FIELD);
+  const cloudProjectId = formatField(constants.CLOUD_PROJECT_ID_FIELD);
+  const cloudInstanceId = formatField(constants.CLOUD_INSTANCE_ID_FIELD);
+
+  // Other Highlights
+  const logFilePath = formatField(constants.LOG_FILE_PATH_FIELD);
+  const namespace = formatField(constants.DATASTREAM_NAMESPACE_FIELD);
+  const dataset = formatField(constants.DATASTREAM_DATASET_FIELD);
+  const agentName = formatField(constants.AGENT_NAME_FIELD);
 
   return {
-    [LOG_LEVEL_FIELD]: level,
-    [TIMESTAMP_FIELD]: timestamp,
-    [MESSAGE_FIELD]: message,
+    [constants.LOG_LEVEL_FIELD]: level,
+    [constants.TIMESTAMP_FIELD]: timestamp,
+    [constants.MESSAGE_FIELD]: message,
+    [constants.SERVICE_NAME_FIELD]: serviceName,
+    [constants.TRACE_ID_FIELD]: traceId,
+    [constants.HOST_NAME_FIELD]: hostname,
+    [constants.ORCHESTRATOR_CLUSTER_NAME_FIELD]: orchestratorClusterName,
+    [constants.ORCHESTRATOR_RESOURCE_ID_FIELD]: orchestratorResourceId,
+    [constants.CLOUD_PROVIDER_FIELD]: cloudProvider,
+    [constants.CLOUD_REGION_FIELD]: cloudRegion,
+    [constants.CLOUD_AVAILABILITY_ZONE_FIELD]: cloudAz,
+    [constants.CLOUD_PROJECT_ID_FIELD]: cloudProjectId,
+    [constants.CLOUD_INSTANCE_ID_FIELD]: cloudInstanceId,
+    [constants.LOG_FILE_PATH_FIELD]: logFilePath,
+    [constants.DATASTREAM_NAMESPACE_FIELD]: namespace,
+    [constants.DATASTREAM_DATASET_FIELD]: dataset,
+    [constants.AGENT_NAME_FIELD]: agentName,
   };
 }
 
-export const getDocDetailRenderFlags = (doc: FlyoutDoc) => {
-  const hasTimestamp = Boolean(doc['@timestamp']);
-  const hasLogLevel = Boolean(doc['log.level']);
-  const hasMessage = Boolean(doc.message);
+export const getDocDetailHeaderRenderFlags = (doc: FlyoutDoc) => {
+  const hasTimestamp = Boolean(doc[constants.TIMESTAMP_FIELD]);
+  const hasLogLevel = Boolean(doc[constants.LOG_LEVEL_FIELD]);
+  const hasMessage = Boolean(doc[constants.MESSAGE_FIELD]);
 
   const hasBadges = hasTimestamp || hasLogLevel;
 
diff --git a/x-pack/plugins/log_explorer/public/hooks/use_discover_action.ts b/x-pack/plugins/log_explorer/public/hooks/use_discover_action.ts
new file mode 100644
index 0000000000000..ef1a1ae715ca6
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/hooks/use_discover_action.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import createContainer from 'constate';
+import { FlyoutContentActions } from '@kbn/discover-plugin/public';
+
+interface UseFlyoutActionsDeps {
+  value: FlyoutContentActions;
+}
+
+const useDiscoverActions = ({ value }: UseFlyoutActionsDeps) => value;
+
+export const [DiscoverActionsProvider, useDiscoverActionsContext] =
+  createContainer(useDiscoverActions);
diff --git a/x-pack/plugins/log_explorer/public/hooks/use_flyouot_column_width.tsx b/x-pack/plugins/log_explorer/public/hooks/use_flyouot_column_width.tsx
new file mode 100644
index 0000000000000..53e626223b910
--- /dev/null
+++ b/x-pack/plugins/log_explorer/public/hooks/use_flyouot_column_width.tsx
@@ -0,0 +1,26 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { useEuiTheme } from '@elastic/eui';
+
+interface FlyoutColumnWidth {
+  columns: 1 | 2 | 3;
+  fieldWidth: number;
+}
+
+export const useFlyoutColumnWidth = (width: number): FlyoutColumnWidth => {
+  const { euiTheme } = useEuiTheme();
+
+  const numberOfColumns = width > euiTheme.breakpoint.m ? 3 : width > euiTheme.breakpoint.s ? 2 : 1;
+  const widthFactor = numberOfColumns === 3 ? 2.5 : 2.2;
+  const fieldWidth = width / (numberOfColumns * widthFactor);
+
+  return {
+    columns: numberOfColumns,
+    fieldWidth,
+  };
+};
diff --git a/x-pack/test/functional/apps/observability_log_explorer/flyout.ts b/x-pack/test/functional/apps/observability_log_explorer/flyout.ts
index f8277db16e8db..b2b71c817255a 100644
--- a/x-pack/test/functional/apps/observability_log_explorer/flyout.ts
+++ b/x-pack/test/functional/apps/observability_log_explorer/flyout.ts
@@ -54,9 +54,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       });
     });
 
-    after('clean up archives', async () => {
+    after('clean up DataStream', async () => {
       if (cleanupDataStreamSetup) {
-        cleanupDataStreamSetup();
+        await cleanupDataStreamSetup();
       }
     });
 
diff --git a/x-pack/test/functional/apps/observability_log_explorer/flyout_highlights.ts b/x-pack/test/functional/apps/observability_log_explorer/flyout_highlights.ts
new file mode 100644
index 0000000000000..3b71935cd6fbc
--- /dev/null
+++ b/x-pack/test/functional/apps/observability_log_explorer/flyout_highlights.ts
@@ -0,0 +1,283 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { FtrProviderContext } from '../../ftr_provider_context';
+
+const DATASET_NAME = 'flyout';
+const NAMESPACE = 'default';
+const DATA_STREAM_NAME = `logs-${DATASET_NAME}-${NAMESPACE}`;
+const NOW = Date.now();
+
+const sharedDoc = {
+  time: NOW + 1000,
+  logFilepath: '/flyout.log',
+  serviceName: 'frontend-node',
+  datasetName: DATASET_NAME,
+  namespace: NAMESPACE,
+  message: 'full document',
+  logLevel: 'info',
+  traceId: 'abcdef',
+  hostName: 'gke-edge-oblt-pool',
+  orchestratorClusterId: 'my-cluster-id',
+  orchestratorClusterName: 'my-cluster-id',
+  orchestratorResourceId: 'orchestratorResourceId',
+  cloudProvider: 'gcp',
+  cloudRegion: 'us-central-1',
+  cloudAz: 'us-central-1a',
+  cloudProjectId: 'elastic-project',
+  cloudInstanceId: 'BgfderflkjTheUiGuy',
+  agentName: 'node',
+};
+
+export default function ({ getService, getPageObjects }: FtrProviderContext) {
+  const dataGrid = getService('dataGrid');
+  const testSubjects = getService('testSubjects');
+  const PageObjects = getPageObjects(['observabilityLogExplorer']);
+
+  describe('Flyout highlight customization', () => {
+    let cleanupDataStreamSetup: () => Promise<void>;
+
+    describe('Service container', () => {
+      const { serviceName, traceId, ...rest } = sharedDoc;
+      const docWithoutServiceName = { ...rest, traceId, time: NOW - 1000 };
+      const docWithoutTraceId = { ...rest, serviceName, time: NOW - 2000 };
+      const docWithoutServiceContainer = { ...rest, time: NOW - 4000 };
+
+      const docs = [
+        sharedDoc,
+        docWithoutServiceName,
+        docWithoutTraceId,
+        docWithoutServiceContainer,
+      ];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+      });
+
+      after('clean up DataStream', async () => {
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the service container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.existOrFail('logExplorerFlyoutService');
+        await testSubjects.existOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the service container even when 1 field is missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.missingOrFail('logExplorerFlyoutService');
+        await testSubjects.existOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the service container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 3 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.missingOrFail('logExplorerFlyoutService');
+        await testSubjects.missingOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Infrastructure container', () => {
+      const { hostName, orchestratorClusterName, orchestratorResourceId, ...rest } = sharedDoc;
+      const docWithoutHostName = {
+        ...rest,
+        orchestratorClusterName,
+        orchestratorResourceId,
+        time: NOW - 1000,
+      };
+      const docWithoutInfrastructureContainer = { ...rest, time: NOW - 2000 };
+
+      const docs = [sharedDoc, docWithoutHostName, docWithoutInfrastructureContainer];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+      });
+
+      after('clean up DataStream', async () => {
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the infrastructure container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.existOrFail('logExplorerFlyoutHostName');
+        await testSubjects.existOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.existOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the infrastructure container even when 1 field is missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.missingOrFail('logExplorerFlyoutHostName');
+        await testSubjects.existOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.existOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the infrastructure container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 2 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.missingOrFail('logExplorerFlyoutHostName');
+        await testSubjects.missingOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.missingOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Cloud container', () => {
+      const { cloudProvider, cloudInstanceId, cloudProjectId, cloudRegion, cloudAz, ...rest } =
+        sharedDoc;
+      const docWithoutCloudProviderAndInstanceId = {
+        ...rest,
+        cloudProjectId,
+        cloudRegion,
+        cloudAz,
+        time: NOW - 1000,
+      };
+      const docWithoutCloudContainer = { ...rest, time: NOW - 2000 };
+
+      const docs = [sharedDoc, docWithoutCloudProviderAndInstanceId, docWithoutCloudContainer];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+      });
+
+      after('clean up DataStream', async () => {
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the cloud container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionCloud');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProjectId');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudInstanceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the cloud container even when some fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionCloud');
+
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudInstanceId');
+
+        await testSubjects.existOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProjectId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the cloud container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 2 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionCloud');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProjectId');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudInstanceId');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Other container', () => {
+      const { logFilepath, agentName, ...rest } = sharedDoc;
+      const docWithoutLogPathAndAgentName = {
+        ...rest,
+        time: NOW - 1000,
+      };
+
+      const docs = [sharedDoc, docWithoutLogPathAndAgentName];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+      });
+
+      after('clean up DataStream', async () => {
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the other container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionOther');
+        await testSubjects.existOrFail('logExplorerFlyoutLogPathFile');
+        await testSubjects.existOrFail('logExplorerFlyoutNamespace');
+        await testSubjects.existOrFail('logExplorerFlyoutDataset');
+        await testSubjects.existOrFail('logExplorerFlyoutLogShipper');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the other container even when some fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionOther');
+
+        await testSubjects.missingOrFail('logExplorerFlyoutLogPathFile');
+        await testSubjects.missingOrFail('logExplorerFlyoutLogShipper');
+
+        await testSubjects.existOrFail('logExplorerFlyoutNamespace');
+        await testSubjects.existOrFail('logExplorerFlyoutDataset');
+        await dataGrid.closeFlyout();
+      });
+    });
+  });
+}
diff --git a/x-pack/test/functional/apps/observability_log_explorer/index.ts b/x-pack/test/functional/apps/observability_log_explorer/index.ts
index 948910dab6ab4..7a767baa887de 100644
--- a/x-pack/test/functional/apps/observability_log_explorer/index.ts
+++ b/x-pack/test/functional/apps/observability_log_explorer/index.ts
@@ -16,5 +16,6 @@ export default function ({ loadTestFile }: FtrProviderContext) {
     loadTestFile(require.resolve('./filter_controls'));
     loadTestFile(require.resolve('./flyout'));
     loadTestFile(require.resolve('./header_menu'));
+    loadTestFile(require.resolve('./flyout_highlights.ts'));
   });
 }
diff --git a/x-pack/test/functional/page_objects/observability_log_explorer.ts b/x-pack/test/functional/page_objects/observability_log_explorer.ts
index 2978e3205f464..0b3266465c32e 100644
--- a/x-pack/test/functional/page_objects/observability_log_explorer.ts
+++ b/x-pack/test/functional/page_objects/observability_log_explorer.ts
@@ -406,12 +406,24 @@ export function ObservabilityLogExplorerPageObject({
 
 interface MockLogDoc {
   time: number;
-  logFilepath: string;
+  logFilepath?: string;
   serviceName?: string;
   namespace: string;
   datasetName: string;
   message?: string;
   logLevel?: string;
+  traceId?: string;
+  hostName?: string;
+  orchestratorClusterId?: string;
+  orchestratorClusterName?: string;
+  orchestratorResourceId?: string;
+  cloudProvider?: string;
+  cloudRegion?: string;
+  cloudAz?: string;
+  cloudProjectId?: string;
+  cloudInstanceId?: string;
+  agentName?: string;
+
   [key: string]: unknown;
 }
 
@@ -423,6 +435,17 @@ export function createLogDoc({
   datasetName,
   message,
   logLevel,
+  traceId,
+  hostName,
+  orchestratorClusterId,
+  orchestratorClusterName,
+  orchestratorResourceId,
+  cloudProvider,
+  cloudRegion,
+  cloudAz,
+  cloudProjectId,
+  cloudInstanceId,
+  agentName,
   ...extraFields
 }: MockLogDoc) {
   return {
@@ -452,6 +475,17 @@ export function createLogDoc({
       dataset: datasetName,
     },
     ...(logLevel && { 'log.level': logLevel }),
+    ...(traceId && { 'trace.id': traceId }),
+    ...(hostName && { 'host.name': hostName }),
+    ...(orchestratorClusterId && { 'orchestrator.cluster.id': orchestratorClusterId }),
+    ...(orchestratorClusterName && { 'orchestrator.cluster.name': orchestratorClusterName }),
+    ...(orchestratorResourceId && { 'orchestrator.resource.id': orchestratorResourceId }),
+    ...(cloudProvider && { 'cloud.provider': cloudProvider }),
+    ...(cloudRegion && { 'cloud.region': cloudRegion }),
+    ...(cloudAz && { 'cloud.availability_zone': cloudAz }),
+    ...(cloudProjectId && { 'cloud.project.id': cloudProjectId }),
+    ...(cloudInstanceId && { 'cloud.instance.id': cloudInstanceId }),
+    ...(agentName && { 'agent.name': agentName }),
     ...extraFields,
   };
 }
diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/flyout_highlights.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/flyout_highlights.ts
new file mode 100644
index 0000000000000..98a3914fed4e8
--- /dev/null
+++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/flyout_highlights.ts
@@ -0,0 +1,291 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { FtrProviderContext } from '../../../ftr_provider_context';
+
+const DATASET_NAME = 'flyout';
+const NAMESPACE = 'default';
+const DATA_STREAM_NAME = `logs-${DATASET_NAME}-${NAMESPACE}`;
+const NOW = Date.now();
+
+const sharedDoc = {
+  time: NOW + 1000,
+  logFilepath: '/flyout.log',
+  serviceName: 'frontend-node',
+  datasetName: DATASET_NAME,
+  namespace: NAMESPACE,
+  message: 'full document',
+  logLevel: 'info',
+  traceId: 'abcdef',
+  hostName: 'gke-edge-oblt-pool',
+  orchestratorClusterId: 'my-cluster-id',
+  orchestratorClusterName: 'my-cluster-id',
+  orchestratorResourceId: 'orchestratorResourceId',
+  cloudProvider: 'gcp',
+  cloudRegion: 'us-central-1',
+  cloudAz: 'us-central-1a',
+  cloudProjectId: 'elastic-project',
+  cloudInstanceId: 'BgfderflkjTheUiGuy',
+  agentName: 'node',
+};
+
+export default function ({ getService, getPageObjects }: FtrProviderContext) {
+  const dataGrid = getService('dataGrid');
+  const testSubjects = getService('testSubjects');
+  const PageObjects = getPageObjects(['observabilityLogExplorer', 'svlCommonPage']);
+
+  describe('Flyout highlight customization', () => {
+    let cleanupDataStreamSetup: () => Promise<void>;
+
+    describe('Service container', () => {
+      const { serviceName, traceId, ...rest } = sharedDoc;
+      const docWithoutServiceName = { ...rest, traceId, time: NOW - 1000 };
+      const docWithoutTraceId = { ...rest, serviceName, time: NOW - 2000 };
+      const docWithoutServiceContainer = { ...rest, time: NOW - 4000 };
+
+      const docs = [
+        sharedDoc,
+        docWithoutServiceName,
+        docWithoutTraceId,
+        docWithoutServiceContainer,
+      ];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+        await PageObjects.svlCommonPage.login();
+      });
+
+      after('clean up DataStream', async () => {
+        await PageObjects.svlCommonPage.forceLogout();
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the service container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.existOrFail('logExplorerFlyoutService');
+        await testSubjects.existOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the service container even when 1 field is missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.missingOrFail('logExplorerFlyoutService');
+        await testSubjects.existOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the service container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 3 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionService');
+        await testSubjects.missingOrFail('logExplorerFlyoutService');
+        await testSubjects.missingOrFail('logExplorerFlyoutTrace');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Infrastructure container', () => {
+      const { hostName, orchestratorClusterName, orchestratorResourceId, ...rest } = sharedDoc;
+      const docWithoutHostName = {
+        ...rest,
+        orchestratorClusterName,
+        orchestratorResourceId,
+        time: NOW - 1000,
+      };
+      const docWithoutInfrastructureContainer = { ...rest, time: NOW - 2000 };
+
+      const docs = [sharedDoc, docWithoutHostName, docWithoutInfrastructureContainer];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+        await PageObjects.svlCommonPage.login();
+      });
+
+      after('clean up DataStream', async () => {
+        await PageObjects.svlCommonPage.forceLogout();
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the infrastructure container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.existOrFail('logExplorerFlyoutHostName');
+        await testSubjects.existOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.existOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the infrastructure container even when 1 field is missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.missingOrFail('logExplorerFlyoutHostName');
+        await testSubjects.existOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.existOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the infrastructure container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 2 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionInfrastructure');
+        await testSubjects.missingOrFail('logExplorerFlyoutHostName');
+        await testSubjects.missingOrFail('logExplorerFlyoutClusterName');
+        await testSubjects.missingOrFail('logExplorerFlyoutResourceId');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Cloud container', () => {
+      const { cloudProvider, cloudInstanceId, cloudProjectId, cloudRegion, cloudAz, ...rest } =
+        sharedDoc;
+      const docWithoutCloudProviderAndInstanceId = {
+        ...rest,
+        cloudProjectId,
+        cloudRegion,
+        cloudAz,
+        time: NOW - 1000,
+      };
+      const docWithoutCloudContainer = { ...rest, time: NOW - 2000 };
+
+      const docs = [sharedDoc, docWithoutCloudProviderAndInstanceId, docWithoutCloudContainer];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+        await PageObjects.svlCommonPage.login();
+      });
+
+      after('clean up DataStream', async () => {
+        await PageObjects.svlCommonPage.forceLogout();
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the cloud container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionCloud');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProjectId');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudInstanceId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the cloud container even when some fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionCloud');
+
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudInstanceId');
+
+        await testSubjects.existOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.existOrFail('logExplorerFlyoutCloudProjectId');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should not load the cloud container if all fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 2 });
+        await testSubjects.missingOrFail('logExplorerFlyoutHighlightSectionCloud');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProvider');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudRegion');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudAz');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudProjectId');
+        await testSubjects.missingOrFail('logExplorerFlyoutCloudInstanceId');
+        await dataGrid.closeFlyout();
+      });
+    });
+
+    describe('Other container', () => {
+      const { logFilepath, agentName, ...rest } = sharedDoc;
+      const docWithoutLogPathAndAgentName = {
+        ...rest,
+        time: NOW - 1000,
+      };
+
+      const docs = [sharedDoc, docWithoutLogPathAndAgentName];
+      before('setup DataStream', async () => {
+        cleanupDataStreamSetup = await PageObjects.observabilityLogExplorer.setupDataStream(
+          DATASET_NAME,
+          NAMESPACE
+        );
+        await PageObjects.observabilityLogExplorer.ingestLogEntries(DATA_STREAM_NAME, docs);
+        await PageObjects.svlCommonPage.login();
+      });
+
+      after('clean up DataStream', async () => {
+        await PageObjects.svlCommonPage.forceLogout();
+        if (cleanupDataStreamSetup) {
+          await cleanupDataStreamSetup();
+        }
+      });
+
+      beforeEach(async () => {
+        await PageObjects.observabilityLogExplorer.navigateTo({
+          from: new Date(NOW - 60_000).toISOString(),
+          to: new Date(NOW + 60_000).toISOString(),
+        });
+      });
+
+      it('should load the other container with all fields', async () => {
+        await dataGrid.clickRowToggle();
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionOther');
+        await testSubjects.existOrFail('logExplorerFlyoutLogPathFile');
+        await testSubjects.existOrFail('logExplorerFlyoutNamespace');
+        await testSubjects.existOrFail('logExplorerFlyoutDataset');
+        await testSubjects.existOrFail('logExplorerFlyoutLogShipper');
+        await dataGrid.closeFlyout();
+      });
+
+      it('should load the other container even when some fields are missing', async () => {
+        await dataGrid.clickRowToggle({ rowIndex: 1 });
+        await testSubjects.existOrFail('logExplorerFlyoutHighlightSectionOther');
+
+        await testSubjects.missingOrFail('logExplorerFlyoutLogPathFile');
+        await testSubjects.missingOrFail('logExplorerFlyoutLogShipper');
+
+        await testSubjects.existOrFail('logExplorerFlyoutNamespace');
+        await testSubjects.existOrFail('logExplorerFlyoutDataset');
+        await dataGrid.closeFlyout();
+      });
+    });
+  });
+}
diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/index.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/index.ts
index 6e0b650869680..9f3d9b7e39c86 100644
--- a/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/index.ts
+++ b/x-pack/test_serverless/functional/test_suites/observability/observability_log_explorer/index.ts
@@ -16,5 +16,7 @@ export default function ({ loadTestFile }: FtrProviderContext) {
     loadTestFile(require.resolve('./filter_controls'));
     loadTestFile(require.resolve('./flyout'));
     loadTestFile(require.resolve('./header_menu'));
+    loadTestFile(require.resolve('./header_menu'));
+    loadTestFile(require.resolve('./flyout_highlights.ts'));
   });
 }

From 682600f01c5d7f7f7be5846e6f3906583544bfeb Mon Sep 17 00:00:00 2001
From: Konrad Szwarc <konrad.szwarc@elastic.co>
Date: Fri, 10 Nov 2023 19:56:42 +0100
Subject: [PATCH 108/147] [EDR Workflows] Protection updates latest date is
 capped at yesterday (#170932)

https://github.com/elastic/kibana/issues/170847

With this PR latest selectable date is set to yesterday.

Changes:
1. Datepicker start date is set to `today - 1 day`
2. Api adjusted to accept dates starting at `today - 1 day`
3. Tests aligned.


https://github.com/elastic/kibana/assets/29123534/ae2e8ac8-9d35-4cee-a47b-af39fa13485a
---
 .../cypress/e2e/policy/policy_details.cy.ts    | 10 +++++-----
 .../protection_updates_layout.tsx              | 18 ++++++++++--------
 .../fleet_integration.test.ts                  | 14 ++++++++++++--
 .../validate_endpoint_package_policy.ts        |  7 +++++--
 4 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts
index 3cfa2a5c9287d..ae79f3d47b4a5 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts
@@ -39,8 +39,8 @@ describe(
       describe('Renders and saves protection updates', () => {
         let indexedPolicy: IndexedFleetEndpointPolicyResponse;
         let policy: PolicyData;
-        const today = moment.utc();
-        const formattedToday = today.format('MMMM DD, YYYY');
+        const defaultDate = moment.utc().subtract(1, 'days');
+        const formattedDefaultDate = defaultDate.format('MMMM DD, YYYY');
 
         beforeEach(() => {
           login();
@@ -73,7 +73,7 @@ describe(
           cy.getByTestSubj('protection-updates-deployed-version').contains('latest');
           cy.getByTestSubj('protection-updates-manifest-name-version-to-deploy-title');
           cy.getByTestSubj('protection-updates-version-to-deploy-picker').within(() => {
-            cy.get('input').should('have.value', formattedToday);
+            cy.get('input').should('have.value', formattedDefaultDate);
           });
           cy.getByTestSubj('protection-updates-manifest-name-note-title');
           cy.getByTestSubj('protection-updates-manifest-note');
@@ -91,7 +91,7 @@ describe(
           cy.getByTestSubj('protectionUpdatesSaveButton').click();
           cy.wait('@policy').then(({ request, response }) => {
             expect(request.body.inputs[0].config.policy.value.global_manifest_version).to.equal(
-              today.format('YYYY-MM-DD')
+              defaultDate.format('YYYY-MM-DD')
             );
             expect(response?.statusCode).to.equal(200);
           });
@@ -102,7 +102,7 @@ describe(
           });
 
           cy.getByTestSubj('protectionUpdatesSuccessfulMessage');
-          cy.getByTestSubj('protection-updates-deployed-version').contains(formattedToday);
+          cy.getByTestSubj('protection-updates-deployed-version').contains(formattedDefaultDate);
           cy.getByTestSubj('protection-updates-manifest-note').contains(testNote);
           cy.getByTestSubj('protectionUpdatesSaveButton').should('be.disabled');
         });
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx
index cf7012f901974..dc260fdb6449d 100644
--- a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx
+++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx
@@ -73,7 +73,9 @@ export const ProtectionUpdatesLayout = React.memo<ProtectionUpdatesLayoutProps>(
     const [manifestVersion, setManifestVersion] = useState(deployedVersion);
 
     const today = moment.utc();
-    const [selectedDate, setSelectedDate] = useState<Moment>(today);
+    const defaultDate = today.clone().subtract(1, 'days');
+
+    const [selectedDate, setSelectedDate] = useState<Moment>(defaultDate);
 
     const { data: fetchedNote, isLoading: getNoteInProgress } = useGetProtectionUpdatesNote({
       packagePolicyId: _policy.id,
@@ -181,24 +183,24 @@ export const ProtectionUpdatesLayout = React.memo<ProtectionUpdatesLayoutProps>(
         if (checked && !automaticUpdatesEnabled) {
           setManifestVersion('latest');
           // Clear selected date on user enabling automatic updates
-          if (selectedDate !== today) {
-            setSelectedDate(today);
+          if (selectedDate !== defaultDate) {
+            setSelectedDate(defaultDate);
           }
         } else {
           setManifestVersion(selectedDate.format(internalDateFormat));
         }
       },
-      [automaticUpdatesEnabled, selectedDate, today]
+      [automaticUpdatesEnabled, selectedDate, defaultDate]
     );
 
     const updateDatepickerSelectedDate = useCallback(
       (date: Moment | null) => {
-        if (date?.isAfter(cutoffDate) && date?.isSameOrBefore(today)) {
-          setSelectedDate(date || today);
+        if (date?.isAfter(cutoffDate) && date?.isSameOrBefore(defaultDate)) {
+          setSelectedDate(date || defaultDate);
           setManifestVersion(date?.format(internalDateFormat) || 'latest');
         }
       },
-      [cutoffDate, today]
+      [cutoffDate, defaultDate]
     );
 
     const renderVersionToDeployPicker = () => {
@@ -224,7 +226,7 @@ export const ProtectionUpdatesLayout = React.memo<ProtectionUpdatesLayoutProps>(
                 popoverPlacement={'downCenter'}
                 dateFormat={displayDateFormat}
                 selected={selectedDate}
-                maxDate={today}
+                maxDate={defaultDate}
                 minDate={cutoffDate}
                 onChange={updateDatepickerSelectedDate}
               />
diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts
index 3d586d1dfab1a..7c861bf87f18f 100644
--- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts
+++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts
@@ -441,6 +441,8 @@ describe('ingest_integration tests ', () => {
       licenseEmitter.next(Enterprise); // set license level to enterprise
     });
 
+    const validDateYesterday = moment.utc().subtract(1, 'day');
+
     it.each([
       {
         date: 'invalid',
@@ -457,13 +459,21 @@ describe('ingest_integration tests ', () => {
       },
       {
         date: '2100-10-01',
-        message: 'Global manifest version cannot be in the future. UTC time.',
+        message: `Global manifest version cannot be in the future. Latest selectable date is ${validDateYesterday.format(
+          'MMMM DD, YYYY'
+        )} UTC time.`,
+      },
+      {
+        date: validDateYesterday.clone().add(1, 'day').format('YYYY-MM-DD'),
+        message: `Global manifest version cannot be in the future. Latest selectable date is ${validDateYesterday.format(
+          'MMMM DD, YYYY'
+        )} UTC time.`,
       },
       {
         date: 'latest',
       },
       {
-        date: moment.utc().subtract(1, 'day').format('YYYY-MM-DD'), // Correct date
+        date: validDateYesterday.format('YYYY-MM-DD'), // Correct date
       },
     ])(
       'should return bad request for invalid endpoint package policy global manifest values',
diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts b/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts
index d8f1a8afecd79..f63d07d890c2d 100644
--- a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts
+++ b/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts
@@ -29,9 +29,12 @@ export const validateEndpointPackagePolicy = (inputs: NewPackagePolicyInput[]) =
           'Global manifest version is too far in the past. Please use either "latest" or a date within the last 18 months. The earliest valid date is October 1, 2023, in UTC time.'
         );
       }
-      if (parsedDate.isAfter(moment.utc())) {
+      const minAllowedDate = moment.utc().subtract(1, 'day');
+      if (parsedDate.isAfter(minAllowedDate)) {
         throw createManifestVersionError(
-          'Global manifest version cannot be in the future. UTC time.'
+          `Global manifest version cannot be in the future. Latest selectable date is ${minAllowedDate.format(
+            'MMMM DD, YYYY'
+          )} UTC time.`
         );
       }
     }

From 4b55f11f450b684a6916dd01bfa39bcd762ce5dd Mon Sep 17 00:00:00 2001
From: Hannah Mudge <Heenawter@users.noreply.github.com>
Date: Fri, 10 Nov 2023 13:07:13 -0700
Subject: [PATCH 109/147] [Dashboard] Rename Dashboard to Dashboards (#170992)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes https://github.com/elastic/kibana/issues/163152

## Summary

This PR renames the "Dashboard" app to "Dashboards" in both the side
navigation and the breadcrumbs, like so:

| Before | After |
|--------|--------|
| <img width="344" alt="Screenshot 2023-11-10 at 10 53 37 AM"
src="https://github.com/elastic/kibana/assets/8698078/a8b821f6-925d-4589-a763-ca70950a5b8b">
| <img width="344" alt="Screenshot 2023-11-10 at 10 54 12 AM"
src="https://github.com/elastic/kibana/assets/8698078/0812627e-8cf4-48df-b9fc-8ce435b09dd0">
|
| <img width="508" alt="Screenshot 2023-11-10 at 10 57 51 AM"
src="https://github.com/elastic/kibana/assets/8698078/970636ab-c48a-4204-bb59-c0a6f50fb0f4">
| <img width="508" alt="Screenshot 2023-11-10 at 10 57 14 AM"
src="https://github.com/elastic/kibana/assets/8698078/48ceb444-38ec-4c6c-8885-8cc504eee2c5">
|

This is more consistent with Visualizations, Maps, etc., the dashboard
listing page, and dashboard URLs.


### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 .../public/dashboard_app/_dashboard_app_strings.ts          | 2 +-
 src/plugins/dashboard/public/plugin.tsx                     | 2 +-
 x-pack/plugins/translations/translations/fr-FR.json         | 1 -
 x-pack/plugins/translations/translations/ja-JP.json         | 1 -
 x-pack/plugins/translations/translations/zh-CN.json         | 1 -
 .../dashboard/group1/feature_controls/dashboard_security.ts | 6 +++---
 .../dashboard/group1/feature_controls/dashboard_spaces.ts   | 2 +-
 .../apps/management/feature_controls/management_security.ts | 2 +-
 8 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts b/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts
index 6fefffcc1d668..8e2f7b07d195a 100644
--- a/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts
+++ b/src/plugins/dashboard/public/dashboard_app/_dashboard_app_strings.ts
@@ -152,7 +152,7 @@ export const shareModalStrings = {
 */
 export const getDashboardBreadcrumb = () =>
   i18n.translate('dashboard.dashboardAppBreadcrumbsTitle', {
-    defaultMessage: 'Dashboard',
+    defaultMessage: 'Dashboards',
   });
 
 export const topNavStrings = {
diff --git a/src/plugins/dashboard/public/plugin.tsx b/src/plugins/dashboard/public/plugin.tsx
index 4d46b837da5ca..98af5088967f2 100644
--- a/src/plugins/dashboard/public/plugin.tsx
+++ b/src/plugins/dashboard/public/plugin.tsx
@@ -229,7 +229,7 @@ export class DashboardPlugin
 
     const app: App = {
       id: DASHBOARD_APP_ID,
-      title: 'Dashboard',
+      title: 'Dashboards',
       order: 2500,
       euiIconType: 'logoKibana',
       defaultPath: `#${LANDING_PAGE_PATH}`,
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 8edd2b48ce470..e40475d4aae3d 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -1204,7 +1204,6 @@
     "dashboard.createConfirmModal.continueButtonLabel": "Poursuivre les modifications",
     "dashboard.createConfirmModal.unsavedChangesSubtitle": "Poursuivez les modifications ou utilisez un tableau de bord vierge.",
     "dashboard.createConfirmModal.unsavedChangesTitle": "Nouveau tableau de bord déjà en cours",
-    "dashboard.dashboardAppBreadcrumbsTitle": "Tableau de bord",
     "dashboard.dashboardPageTitle": "Tableaux de bord",
     "dashboard.dashboardWasSavedSuccessMessage": "Le tableau de bord \"{dashTitle}\" a été enregistré.",
     "dashboard.deleteError.toastDescription": "Erreur rencontrée lors de la suppression du tableau de bord",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 0451262451432..8f58cdabe7785 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -1218,7 +1218,6 @@
     "dashboard.createConfirmModal.continueButtonLabel": "編集を続行",
     "dashboard.createConfirmModal.unsavedChangesSubtitle": "編集を続行するか、空のダッシュボードで始めてください。",
     "dashboard.createConfirmModal.unsavedChangesTitle": "新しいダッシュボードはすでに実行中です",
-    "dashboard.dashboardAppBreadcrumbsTitle": "ダッシュボード",
     "dashboard.dashboardPageTitle": "ダッシュボード",
     "dashboard.dashboardWasSavedSuccessMessage": "ダッシュボード「{dashTitle}」が保存されました。",
     "dashboard.deleteError.toastDescription": "ダッシュボードの削除中にエラーが発生しました",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 90a4ae742e05d..62084ac55eed6 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -1218,7 +1218,6 @@
     "dashboard.createConfirmModal.continueButtonLabel": "继续编辑",
     "dashboard.createConfirmModal.unsavedChangesSubtitle": "继续编辑或使用空白仪表板从头开始。",
     "dashboard.createConfirmModal.unsavedChangesTitle": "新仪表板已在创建中",
-    "dashboard.dashboardAppBreadcrumbsTitle": "仪表板",
     "dashboard.dashboardPageTitle": "仪表板",
     "dashboard.dashboardWasSavedSuccessMessage": "仪表板“{dashTitle}”已保存",
     "dashboard.deleteError.toastDescription": "删除仪表板时发生错误",
diff --git a/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts
index 584822a31161b..dc1cf432f8ca6 100644
--- a/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts
+++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_security.ts
@@ -96,7 +96,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
 
       it('only shows the dashboard navlink', async () => {
         const navLinks = await appsMenu.readLinks();
-        expect(navLinks.map((link) => link.text)).to.eql(['Dashboard', 'Stack Management']);
+        expect(navLinks.map((link) => link.text)).to.eql(['Dashboards', 'Stack Management']);
       });
 
       it(`landing page shows "Create new Dashboard" button`, async () => {
@@ -286,7 +286,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
 
       it('shows dashboard navlink', async () => {
         const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
-        expect(navLinks).to.eql(['Dashboard']);
+        expect(navLinks).to.eql(['Dashboards']);
       });
 
       it(`landing page doesn't show "Create new Dashboard" button`, async () => {
@@ -398,7 +398,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
 
       it('shows dashboard navlink', async () => {
         const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
-        expect(navLinks).to.eql(['Dashboard']);
+        expect(navLinks).to.eql(['Dashboards']);
       });
 
       it(`landing page doesn't show "Create new Dashboard" button`, async () => {
diff --git a/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts
index ef8c83ec667ba..2f04d12bdac6d 100644
--- a/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts
+++ b/x-pack/test/functional/apps/dashboard/group1/feature_controls/dashboard_spaces.ts
@@ -45,7 +45,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
           basePath: '/s/custom_space',
         });
         const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
-        expect(navLinks).to.contain('Dashboard');
+        expect(navLinks).to.contain('Dashboards');
       });
 
       it(`landing page shows "Create new Dashboard" button`, async () => {
diff --git a/x-pack/test/functional/apps/management/feature_controls/management_security.ts b/x-pack/test/functional/apps/management/feature_controls/management_security.ts
index d88e2fd8ebe7a..3706649418346 100644
--- a/x-pack/test/functional/apps/management/feature_controls/management_security.ts
+++ b/x-pack/test/functional/apps/management/feature_controls/management_security.ts
@@ -36,7 +36,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
 
       it('should not show the Stack Management nav link', async () => {
         const links = await appsMenu.readLinks();
-        expect(links.map((link) => link.text)).to.eql(['Dashboard']);
+        expect(links.map((link) => link.text)).to.eql(['Dashboards']);
       });
 
       it('should render the "application not found" view when navigating to management directly', async () => {

From b84881a29b37c8ffb68a53e6e2b6a8cf89c7001f Mon Sep 17 00:00:00 2001
From: Lukas Olson <lukas@elastic.co>
Date: Fri, 10 Nov 2023 13:36:40 -0700
Subject: [PATCH 110/147] [data.search.bsearch] Forward request abortSignal to
 search strategy (#170041)

## Summary

Attempt to resurrect #169041.

Previously flaky tests:
* group1:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3797
* group2:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3798
* group3:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3799
* group4:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3800

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../search/strategies/es_search/types.ts      |  3 +-
 .../data/server/search/routes/bsearch.ts      |  4 +-
 .../data/server/search/search_service.ts      | 14 +--
 .../eql_search/eql_search_strategy.test.ts    | 33 +++++++
 .../eql_search/eql_search_strategy.ts         | 20 +++-
 .../ese_search/ese_search_strategy.test.ts    | 94 +++++++++++++++++++
 .../ese_search/ese_search_strategy.ts         | 38 +++++---
 .../search/strategies/ese_search/types.ts     | 16 +++-
 .../sql_search/sql_search_strategy.test.ts    | 27 ++++++
 .../sql_search/sql_search_strategy.ts         | 25 +++--
 .../api_integration/apis/search/search.ts     | 65 +++++++++++++
 11 files changed, 302 insertions(+), 37 deletions(-)

diff --git a/src/plugins/data/common/search/strategies/es_search/types.ts b/src/plugins/data/common/search/strategies/es_search/types.ts
index 73bf7961fea9b..f8c3b73d995a9 100644
--- a/src/plugins/data/common/search/strategies/es_search/types.ts
+++ b/src/plugins/data/common/search/strategies/es_search/types.ts
@@ -15,7 +15,8 @@ export type ISearchRequestParams = {
   trackTotalHits?: boolean;
 } & estypes.SearchRequest;
 
-export interface IEsSearchRequest extends IKibanaSearchRequest<ISearchRequestParams> {
+export interface IEsSearchRequest<T extends ISearchRequestParams = ISearchRequestParams>
+  extends IKibanaSearchRequest<T> {
   indexType?: string;
 }
 
diff --git a/src/plugins/data/server/search/routes/bsearch.ts b/src/plugins/data/server/search/routes/bsearch.ts
index 8b65c5d8eb1dc..ee19c8cba30a3 100644
--- a/src/plugins/data/server/search/routes/bsearch.ts
+++ b/src/plugins/data/server/search/routes/bsearch.ts
@@ -11,6 +11,7 @@ import { catchError } from 'rxjs/operators';
 import { BfetchServerSetup } from '@kbn/bfetch-plugin/server';
 import type { ExecutionContextSetup } from '@kbn/core/server';
 import apm from 'elastic-apm-node';
+import { getRequestAbortedSignal } from '../..';
 import {
   IKibanaSearchRequest,
   IKibanaSearchResponse,
@@ -28,6 +29,7 @@ export function registerBsearchRoute(
     IKibanaSearchResponse
   >('/internal/bsearch', (request) => {
     const search = getScoped(request);
+    const abortSignal = getRequestAbortedSignal(request.events.aborted$);
     return {
       /**
        * @param requestOptions
@@ -39,7 +41,7 @@ export function registerBsearchRoute(
           apm.addLabels(executionContextService.getAsLabels());
 
           return firstValueFrom(
-            search.search(requestData, restOptions).pipe(
+            search.search(requestData, { ...restOptions, abortSignal }).pipe(
               catchError((err) => {
                 // Re-throw as object, to get attributes passed to the client
                 // eslint-disable-next-line no-throw-literal
diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts
index 71a335ce51592..188f853e6a2ce 100644
--- a/src/plugins/data/server/search/search_service.ts
+++ b/src/plugins/data/server/search/search_service.ts
@@ -437,11 +437,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> {
     }
   };
 
-  private cancel = async (
-    deps: SearchStrategyDependencies,
-    id: string,
-    options: ISearchOptions = {}
-  ) => {
+  private cancel = (deps: SearchStrategyDependencies, id: string, options: ISearchOptions = {}) => {
     const strategy = this.getSearchStrategy(options.strategy);
     if (!strategy.cancel) {
       throw new KbnServerError(
@@ -468,14 +464,18 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> {
   private cancelSessionSearches = async (deps: SearchStrategyDependencies, sessionId: string) => {
     const searchIdMapping = await deps.searchSessionsClient.getSearchIdMapping(sessionId);
     await Promise.allSettled(
-      Array.from(searchIdMapping).map(([searchId, strategyName]) => {
+      Array.from(searchIdMapping).map(async ([searchId, strategyName]) => {
         const searchOptions = {
           sessionId,
           strategy: strategyName,
           isStored: true,
         };
 
-        return this.cancel(deps, searchId, searchOptions);
+        try {
+          await this.cancel(deps, searchId, searchOptions);
+        } catch (e) {
+          this.logger.error(`cancelSessionSearches error: ${e.message}`);
+        }
       })
     );
   };
diff --git a/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.test.ts b/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.test.ts
index 6d61f62cc79ab..475c43a5daed6 100644
--- a/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.test.ts
+++ b/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.test.ts
@@ -15,6 +15,7 @@ import { getMockSearchConfig } from '../../../../config.mock';
 
 const getMockEqlResponse = () => ({
   body: {
+    id: 'my-search-id',
     is_partial: false,
     is_running: false,
     took: 162,
@@ -54,6 +55,7 @@ describe('EQL search strategy', () => {
   describe('search()', () => {
     let mockEqlSearch: jest.Mock;
     let mockEqlGet: jest.Mock;
+    let mockEqlDelete: jest.Mock;
     let mockDeps: SearchStrategyDependencies;
     let params: Required<EqlSearchStrategyRequest>['params'];
     let options: Required<EqlSearchStrategyRequest>['options'];
@@ -61,6 +63,8 @@ describe('EQL search strategy', () => {
     beforeEach(() => {
       mockEqlSearch = jest.fn().mockResolvedValueOnce(getMockEqlResponse());
       mockEqlGet = jest.fn().mockResolvedValueOnce(getMockEqlResponse());
+      mockEqlDelete = jest.fn();
+
       mockDeps = {
         uiSettingsClient: {
           get: jest.fn(),
@@ -70,6 +74,7 @@ describe('EQL search strategy', () => {
             eql: {
               get: mockEqlGet,
               search: mockEqlSearch,
+              delete: mockEqlDelete,
             },
           },
         },
@@ -124,6 +129,34 @@ describe('EQL search strategy', () => {
       });
     });
 
+    it('should delete when aborted', async () => {
+      const response = getMockEqlResponse();
+      mockEqlSearch.mockReset().mockResolvedValueOnce({
+        ...response,
+        body: {
+          ...response.body,
+          is_running: true,
+        },
+      });
+      const eqlSearch = await eqlSearchStrategyProvider(mockSearchConfig, mockLogger);
+      const abortController = new AbortController();
+      const abortSignal = abortController.signal;
+
+      // Abort after an incomplete first response is returned
+      setTimeout(() => abortController.abort(), 100);
+
+      let err: any;
+      try {
+        await eqlSearch.search({ options, params }, { abortSignal }, mockDeps).toPromise();
+      } catch (e) {
+        err = e;
+      }
+
+      expect(mockEqlSearch).toBeCalled();
+      expect(err).not.toBeUndefined();
+      expect(mockEqlDelete).toBeCalled();
+    });
+
     describe('arguments', () => {
       it('sends along async search options', async () => {
         const eqlSearch = await eqlSearchStrategyProvider(mockSearchConfig, mockLogger);
diff --git a/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.ts b/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.ts
index 9dd24e6791719..00b8cfdeb52e5 100644
--- a/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.ts
+++ b/src/plugins/data/server/search/strategies/eql_search/eql_search_strategy.ts
@@ -9,6 +9,7 @@
 import type { TransportResult } from '@elastic/elasticsearch';
 import { tap } from 'rxjs/operators';
 import type { IScopedClusterClient, Logger } from '@kbn/core/server';
+import { getKbnServerError } from '@kbn/kibana-utils-plugin/server';
 import { SearchConfigSchema } from '../../../../config';
 import {
   EqlSearchStrategyRequest,
@@ -27,15 +28,19 @@ export const eqlSearchStrategyProvider = (
   searchConfig: SearchConfigSchema,
   logger: Logger
 ): ISearchStrategy<EqlSearchStrategyRequest, EqlSearchStrategyResponse> => {
-  async function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
+  function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
     const client = esClient.asCurrentUser.eql;
-    await client.delete({ id });
+    return client.delete({ id });
   }
 
   return {
     cancel: async (id, options, { esClient }) => {
       logger.debug(`_eql/delete ${id}`);
-      await cancelAsyncSearch(id, esClient);
+      try {
+        await cancelAsyncSearch(id, esClient);
+      } catch (e) {
+        throw getKbnServerError(e);
+      }
     },
 
     search: ({ id, ...request }, options: IAsyncSearchOptions, { esClient, uiSettingsClient }) => {
@@ -85,8 +90,15 @@ export const eqlSearchStrategyProvider = (
       };
 
       const cancel = async () => {
-        if (id) {
+        if (!id) return;
+        try {
           await cancelAsyncSearch(id, esClient);
+        } catch (e) {
+          // A 404 means either this search request does not exist, or that it is already cancelled
+          if (e.meta?.statusCode === 404) return;
+
+          // Log all other (unexpected) error messages
+          logger.error(`cancelEqlSearch error: ${e.message}`);
         }
       };
 
diff --git a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.test.ts b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.test.ts
index 3b2c5e8e0e5c8..33987c09d88dd 100644
--- a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.test.ts
+++ b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.test.ts
@@ -136,6 +136,30 @@ describe('ES search strategy', () => {
         expect(request).toHaveProperty('keep_alive', '60000ms');
       });
 
+      it('allows overriding keep_alive and wait_for_completion_timeout', async () => {
+        mockGetCaller.mockResolvedValueOnce(mockAsyncResponse);
+
+        const params = {
+          index: 'logstash-*',
+          body: { query: {} },
+          wait_for_completion_timeout: '10s',
+          keep_alive: '5m',
+        };
+        const esSearch = await enhancedEsSearchStrategyProvider(
+          mockLegacyConfig$,
+          mockSearchConfig,
+          mockLogger
+        );
+
+        await esSearch.search({ id: 'foo', params }, {}, mockDeps).toPromise();
+
+        expect(mockGetCaller).toBeCalled();
+        const request = mockGetCaller.mock.calls[0][0];
+        expect(request.id).toEqual('foo');
+        expect(request).toHaveProperty('wait_for_completion_timeout', '10s');
+        expect(request).toHaveProperty('keep_alive', '5m');
+      });
+
       it('sets transport options on POST requests', async () => {
         const transportOptions = { maxRetries: 1 };
         mockSubmitCaller.mockResolvedValueOnce(mockAsyncResponse);
@@ -260,6 +284,38 @@ describe('ES search strategy', () => {
 
         expect(mockApiCaller).toBeCalledTimes(0);
       });
+
+      it('should delete when aborted', async () => {
+        mockSubmitCaller.mockResolvedValueOnce({
+          ...mockAsyncResponse,
+          body: {
+            ...mockAsyncResponse.body,
+            is_running: true,
+          },
+        });
+
+        const params = { index: 'logstash-*', body: { query: {} } };
+        const esSearch = await enhancedEsSearchStrategyProvider(
+          mockLegacyConfig$,
+          mockSearchConfig,
+          mockLogger
+        );
+        const abortController = new AbortController();
+        const abortSignal = abortController.signal;
+
+        // Abort after an incomplete first response is returned
+        setTimeout(() => abortController.abort(), 100);
+
+        let err: KbnServerError | undefined;
+        try {
+          await esSearch.search({ params }, { abortSignal }, mockDeps).toPromise();
+        } catch (e) {
+          err = e;
+        }
+        expect(mockSubmitCaller).toBeCalled();
+        expect(err).not.toBeUndefined();
+        expect(mockDeleteCaller).toBeCalled();
+      });
     });
 
     describe('with sessionId', () => {
@@ -367,6 +423,44 @@ describe('ES search strategy', () => {
         expect(request).toHaveProperty('wait_for_completion_timeout');
         expect(request).not.toHaveProperty('keep_alive');
       });
+
+      it('should not delete a saved session when aborted', async () => {
+        mockSubmitCaller.mockResolvedValueOnce({
+          ...mockAsyncResponse,
+          body: {
+            ...mockAsyncResponse.body,
+            is_running: true,
+          },
+        });
+
+        const params = { index: 'logstash-*', body: { query: {} } };
+        const esSearch = await enhancedEsSearchStrategyProvider(
+          mockLegacyConfig$,
+          mockSearchConfig,
+          mockLogger
+        );
+        const abortController = new AbortController();
+        const abortSignal = abortController.signal;
+
+        // Abort after an incomplete first response is returned
+        setTimeout(() => abortController.abort(), 100);
+
+        let err: KbnServerError | undefined;
+        try {
+          await esSearch
+            .search(
+              { params },
+              { abortSignal, sessionId: '1', isSearchStored: true, isStored: true },
+              mockDeps
+            )
+            .toPromise();
+        } catch (e) {
+          err = e;
+        }
+        expect(mockSubmitCaller).toBeCalled();
+        expect(err).not.toBeUndefined();
+        expect(mockDeleteCaller).not.toBeCalled();
+      });
     });
 
     it('throws normalized error if ResponseError is thrown', async () => {
diff --git a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
index 89699d7d58611..174f9924f1cc7 100644
--- a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
+++ b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts
@@ -12,6 +12,7 @@ import { catchError, tap } from 'rxjs/operators';
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import { firstValueFrom, from } from 'rxjs';
 import { getKbnServerError } from '@kbn/kibana-utils-plugin/server';
+import { IAsyncSearchRequestParams } from '../..';
 import { getKbnSearchError, KbnSearchError } from '../../report_search_error';
 import type { ISearchStrategy, SearchStrategyDependencies } from '../../types';
 import type {
@@ -43,18 +44,14 @@ export const enhancedEsSearchStrategyProvider = (
   logger: Logger,
   usage?: SearchUsage,
   useInternalUser: boolean = false
-): ISearchStrategy => {
-  async function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
-    try {
-      const client = useInternalUser ? esClient.asInternalUser : esClient.asCurrentUser;
-      await client.asyncSearch.delete({ id });
-    } catch (e) {
-      throw getKbnServerError(e);
-    }
+): ISearchStrategy<IEsSearchRequest<IAsyncSearchRequestParams>> => {
+  function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
+    const client = useInternalUser ? esClient.asInternalUser : esClient.asCurrentUser;
+    return client.asyncSearch.delete({ id });
   }
 
   function asyncSearch(
-    { id, ...request }: IEsSearchRequest,
+    { id, ...request }: IEsSearchRequest<IAsyncSearchRequestParams>,
     options: IAsyncSearchOptions,
     { esClient, uiSettingsClient }: SearchStrategyDependencies
   ) {
@@ -62,7 +59,13 @@ export const enhancedEsSearchStrategyProvider = (
 
     const search = async () => {
       const params = id
-        ? getDefaultAsyncGetParams(searchConfig, options)
+        ? {
+            ...getDefaultAsyncGetParams(searchConfig, options),
+            ...(request.params?.keep_alive ? { keep_alive: request.params.keep_alive } : {}),
+            ...(request.params?.wait_for_completion_timeout
+              ? { wait_for_completion_timeout: request.params.wait_for_completion_timeout }
+              : {}),
+          }
         : {
             ...(await getDefaultAsyncSubmitParams(uiSettingsClient, searchConfig, options)),
             ...request.params,
@@ -89,8 +92,15 @@ export const enhancedEsSearchStrategyProvider = (
     };
 
     const cancel = async () => {
-      if (id) {
+      if (!id || options.isStored) return;
+      try {
         await cancelAsyncSearch(id, esClient);
+      } catch (e) {
+        // A 404 means either this search request does not exist, or that it is already cancelled
+        if (e.meta?.statusCode === 404) return;
+
+        // Log all other (unexpected) error messages
+        logger.error(`cancelAsyncSearch error: ${e.message}`);
       }
     };
 
@@ -179,7 +189,11 @@ export const enhancedEsSearchStrategyProvider = (
      */
     cancel: async (id, options, { esClient }) => {
       logger.debug(`cancel ${id}`);
-      await cancelAsyncSearch(id, esClient);
+      try {
+        await cancelAsyncSearch(id, esClient);
+      } catch (e) {
+        throw getKbnServerError(e);
+      }
     },
     /**
      *
diff --git a/src/plugins/data/server/search/strategies/ese_search/types.ts b/src/plugins/data/server/search/strategies/ese_search/types.ts
index 4116aa4380339..5ff324e1c2e4f 100644
--- a/src/plugins/data/server/search/strategies/ese_search/types.ts
+++ b/src/plugins/data/server/search/strategies/ese_search/types.ts
@@ -6,11 +6,21 @@
  * Side Public License, v 1.
  */
 
-import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import type {
+  AsyncSearchGetRequest,
+  SearchResponse,
+  ShardStatistics,
+} from '@elastic/elasticsearch/lib/api/types';
+import { ISearchRequestParams } from '../../../../common';
+
+export interface IAsyncSearchRequestParams extends ISearchRequestParams {
+  keep_alive?: AsyncSearchGetRequest['keep_alive'];
+  wait_for_completion_timeout?: AsyncSearchGetRequest['wait_for_completion_timeout'];
+}
 
 export interface AsyncSearchResponse<T = unknown> {
   id?: string;
-  response: estypes.SearchResponse<T>;
+  response: SearchResponse<T>;
   start_time_in_millis: number;
   expiration_time_in_millis: number;
   is_partial: boolean;
@@ -18,5 +28,5 @@ export interface AsyncSearchResponse<T = unknown> {
 }
 export interface AsyncSearchStatusResponse extends Omit<AsyncSearchResponse, 'response'> {
   completion_status: number;
-  _shards: estypes.ShardStatistics;
+  _shards: ShardStatistics;
 }
diff --git a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.test.ts b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.test.ts
index 700c658de10c0..36fb43a34894f 100644
--- a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.test.ts
+++ b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.test.ts
@@ -124,6 +124,33 @@ describe('SQL search strategy', () => {
           signal: undefined,
         });
       });
+
+      it('should delete when aborted', async () => {
+        mockSqlQuery.mockResolvedValueOnce({
+          ...mockSqlResponse,
+          body: {
+            ...mockSqlResponse.body,
+            is_running: true,
+          },
+        });
+        const esSearch = await sqlSearchStrategyProvider(mockSearchConfig, mockLogger);
+        const abortController = new AbortController();
+        const abortSignal = abortController.signal;
+
+        // Abort after an incomplete first response is returned
+        setTimeout(() => abortController.abort(), 100);
+
+        let err: any;
+        try {
+          await esSearch.search({ params: {} }, { abortSignal }, mockDeps).toPromise();
+        } catch (e) {
+          err = e;
+        }
+
+        expect(mockSqlQuery).toBeCalled();
+        expect(err).not.toBeUndefined();
+        expect(mockSqlDelete).toBeCalled();
+      });
     });
 
     // skip until full search session support https://github.com/elastic/kibana/issues/127880
diff --git a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts
index 87b29f5438efb..9e04675d12247 100644
--- a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts
+++ b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts
@@ -29,13 +29,9 @@ export const sqlSearchStrategyProvider = (
   logger: Logger,
   useInternalUser: boolean = false
 ): ISearchStrategy<SqlSearchStrategyRequest, SqlSearchStrategyResponse> => {
-  async function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
-    try {
-      const client = useInternalUser ? esClient.asInternalUser : esClient.asCurrentUser;
-      await client.sql.deleteAsync({ id });
-    } catch (e) {
-      throw getKbnServerError(e);
-    }
+  function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) {
+    const client = useInternalUser ? esClient.asInternalUser : esClient.asCurrentUser;
+    return client.sql.deleteAsync({ id });
   }
 
   function asyncSearch(
@@ -92,8 +88,15 @@ export const sqlSearchStrategyProvider = (
     };
 
     const cancel = async () => {
-      if (id) {
+      if (!id) return;
+      try {
         await cancelAsyncSearch(id, esClient);
+      } catch (e) {
+        // A 404 means either this search request does not exist, or that it is already cancelled
+        if (e.meta?.statusCode === 404) return;
+
+        // Log all other (unexpected) error messages
+        logger.error(`cancelSqlSearch error: ${e.message}`);
       }
     };
 
@@ -130,7 +133,11 @@ export const sqlSearchStrategyProvider = (
      */
     cancel: async (id, options, { esClient }) => {
       logger.debug(`sql search: cancel async_search_id=${id}`);
-      await cancelAsyncSearch(id, esClient);
+      try {
+        await cancelAsyncSearch(id, esClient);
+      } catch (e) {
+        throw getKbnServerError(e);
+      }
     },
     /**
      *
diff --git a/x-pack/test/api_integration/apis/search/search.ts b/x-pack/test/api_integration/apis/search/search.ts
index 391923601d7c5..15c774eef34ef 100644
--- a/x-pack/test/api_integration/apis/search/search.ts
+++ b/x-pack/test/api_integration/apis/search/search.ts
@@ -186,6 +186,71 @@ export default function ({ getService }: FtrProviderContext) {
         expect(resp2.body.isRunning).to.be(true);
       });
 
+      it('should cancel an async search without server crash', async function () {
+        await markRequiresShardDelayAgg(this);
+
+        const resp = await supertest
+          .post(`/internal/search/ese`)
+          .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+          .set('kbn-xsrf', 'foo')
+          .send({
+            params: {
+              body: {
+                query: {
+                  match_all: {},
+                },
+                ...shardDelayAgg('10s'),
+              },
+              wait_for_completion_timeout: '1ms',
+            },
+          })
+          .expect(200);
+
+        const { id } = resp.body;
+        expect(id).not.to.be(undefined);
+        expect(resp.body.isPartial).to.be(true);
+        expect(resp.body.isRunning).to.be(true);
+
+        // Send a follow-up request that waits up to 10s for completion
+        const req = supertest
+          .post(`/internal/search/ese/${id}`)
+          .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+          .set('kbn-xsrf', 'foo')
+          .send({ params: { wait_for_completion_timeout: '10s' } })
+          .expect(200);
+
+        // After 2s, abort and send the cancellation (to result in a race towards cancellation)
+        // This should be swallowed and not kill the Kibana server
+        await new Promise((resolve) =>
+          setTimeout(() => {
+            req.abort();
+            resolve(null);
+          }, 2000)
+        );
+        await supertest
+          .delete(`/internal/search/ese/${id}`)
+          .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+          .set('kbn-xsrf', 'foo')
+          .expect(200);
+
+        let err: Error | undefined;
+        try {
+          await req;
+        } catch (e) {
+          err = e;
+        }
+
+        expect(err).not.to.be(undefined);
+
+        // Ensure the search was succesfully cancelled
+        await supertest
+          .post(`/internal/search/ese/${id}`)
+          .set(ELASTIC_HTTP_VERSION_HEADER, '1')
+          .set('kbn-xsrf', 'foo')
+          .send({})
+          .expect(404);
+      });
+
       it('should fail without kbn-xref header', async () => {
         const resp = await supertest
           .post(`/internal/search/ese`)

From fa489d6a9303cadf2aad1a47c8b43dd5b07aac92 Mon Sep 17 00:00:00 2001
From: Lisa Cawley <lcawley@elastic.co>
Date: Fri, 10 Nov 2023 18:11:20 -0800
Subject: [PATCH 111/147] [OAS] Add examples for running an email connector
 (#170819)

---
 .../actions-and-connectors/execute.asciidoc   |  26 ++++
 .../plugins/actions/docs/openapi/bundled.json | 121 +++++++++++++++++-
 .../plugins/actions/docs/openapi/bundled.yaml |  89 ++++++++++++-
 .../examples/run_email_connector_request.yaml |  12 ++
 .../run_email_connector_response.yaml         |  23 ++++
 .../run_connector_params_message_email.yaml   |  37 ++++++
 ...n_connector_params_message_serverlog.yaml} |   0
 .../schemas/run_connector_request.yaml        |   3 +-
 ...ions@connector@{connectorid}@_execute.yaml |   4 +
 9 files changed, 310 insertions(+), 5 deletions(-)
 create mode 100644 x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_request.yaml
 create mode 100644 x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_response.yaml
 create mode 100644 x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_email.yaml
 rename x-pack/plugins/actions/docs/openapi/components/schemas/{run_connector_params_level_message.yaml => run_connector_params_message_serverlog.yaml} (100%)

diff --git a/docs/api/actions-and-connectors/execute.asciidoc b/docs/api/actions-and-connectors/execute.asciidoc
index 1f241202b4adc..aa04a0d6ef9b6 100644
--- a/docs/api/actions-and-connectors/execute.asciidoc
+++ b/docs/api/actions-and-connectors/execute.asciidoc
@@ -60,6 +60,32 @@ refer to <<action-types>>.
 [%collapsible%open]
 ====
 
+.Email connectors
+[%collapsible%open]
+=====
+`bcc`::
+(Optional, array of strings) A list of "blind carbon copy" email addresses.
+Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.
+
+`cc`::
+(Optional, array of strings) A list of "carbon copy" email addresses.
+Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.
+
+`message`::
+(Required, string) The email message text. Markdown format is supported.
+
+`subject`::
+(Required, string) The subject line of the email.
+
+`to`::
+(Required^*^, array of strings)
+A list of email addresses.
+Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.
+There must be at least one recipient in `to`, `cc`, or `bcc`.
+
+For more information, refer to <<email-action-type>>.
+=====
+
 .Index connectors
 [%collapsible%open]
 =====
diff --git a/x-pack/plugins/actions/docs/openapi/bundled.json b/x-pack/plugins/actions/docs/openapi/bundled.json
index 1508ff2c1e077..2f8bbf898efee 100644
--- a/x-pack/plugins/actions/docs/openapi/bundled.json
+++ b/x-pack/plugins/actions/docs/openapi/bundled.json
@@ -294,6 +294,9 @@
                 "$ref": "#/components/schemas/run_connector_request"
               },
               "examples": {
+                "runEmailConnectorRequest": {
+                  "$ref": "#/components/examples/run_email_connector_request"
+                },
                 "runIndexConnectorRequest": {
                   "$ref": "#/components/examples/run_index_connector_request"
                 },
@@ -356,6 +359,9 @@
                   }
                 },
                 "examples": {
+                  "runEmailConnectorResponse": {
+                    "$ref": "#/components/examples/run_email_connector_response"
+                  },
                   "runIndexConnectorResponse": {
                     "$ref": "#/components/examples/run_index_connector_response"
                   },
@@ -4770,7 +4776,66 @@
           }
         }
       },
-      "run_connector_params_level_message": {
+      "run_connector_params_message_email": {
+        "title": "Email connector parameters",
+        "description": "Test an action that sends an email message. There must be at least one recipient in `to`, `cc`, or `bcc`.\n",
+        "type": "object",
+        "anyOf": [
+          {
+            "required": [
+              "bcc",
+              "message",
+              "subject"
+            ]
+          },
+          {
+            "required": [
+              "cc",
+              "message",
+              "subject"
+            ]
+          },
+          {
+            "required": [
+              "to",
+              "message",
+              "subject"
+            ]
+          }
+        ],
+        "properties": {
+          "bcc": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "A list of \"blind carbon copy\" email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format\n"
+          },
+          "cc": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "A list of \"carbon copy\" email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format \n"
+          },
+          "message": {
+            "type": "string",
+            "description": "The email message text. Markdown format is supported."
+          },
+          "subject": {
+            "type": "string",
+            "description": "The subject line of the email."
+          },
+          "to": {
+            "type": "array",
+            "description": "A list of email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.\n",
+            "items": {
+              "type": "string"
+            }
+          }
+        }
+      },
+      "run_connector_params_message_serverlog": {
         "title": "Server log connector parameters",
         "description": "Test an action that writes an entry to the Kibana server log.",
         "type": "object",
@@ -5448,7 +5513,10 @@
                 "$ref": "#/components/schemas/run_connector_params_documents"
               },
               {
-                "$ref": "#/components/schemas/run_connector_params_level_message"
+                "$ref": "#/components/schemas/run_connector_params_message_email"
+              },
+              {
+                "$ref": "#/components/schemas/run_connector_params_message_serverlog"
               },
               {
                 "title": "Subaction parameters",
@@ -5729,6 +5797,25 @@
           }
         }
       },
+      "run_email_connector_request": {
+        "summary": "Send an email message from an email connector.",
+        "value": {
+          "params": {
+            "bcc": [
+              "user1@example.com"
+            ],
+            "cc": [
+              "user2@example.com",
+              "user3@example.com"
+            ],
+            "message": "Test email message.",
+            "subject": "Test message subject",
+            "to": [
+              "user4@example.com"
+            ]
+          }
+        }
+      },
       "run_index_connector_request": {
         "summary": "Run an index connector.",
         "value": {
@@ -5795,6 +5882,36 @@
           }
         }
       },
+      "run_email_connector_response": {
+        "summary": "Response for sending a message from an email connector.",
+        "value": {
+          "connector_id": "7fc7b9a0-ecc9-11ec-8736-e7d63118c907",
+          "data": {
+            "accepted": [
+              "user1@example.com",
+              "user2@example.com",
+              "user3@example.com",
+              "user4@example.com"
+            ],
+            "envelope": {
+              "from": "tester@example.com",
+              "to": [
+                "user1@example.com",
+                "user2@example.com",
+                "user3@example.com",
+                "user4@example.com"
+              ]
+            },
+            "envelopeTime": 8,
+            "messageTime": 3,
+            "messageSize": 729,
+            "response": "250 Message queued as QzEXKcGJ",
+            "messageId": "<08a92d29-642a-0706-750c-de5996bd5cf3@example.com>",
+            "rejected": []
+          },
+          "status": "ok"
+        }
+      },
       "run_index_connector_response": {
         "summary": "Response from running an index connector.",
         "value": {
diff --git a/x-pack/plugins/actions/docs/openapi/bundled.yaml b/x-pack/plugins/actions/docs/openapi/bundled.yaml
index 9f5dd7e1107e2..481d0f0a7ec42 100644
--- a/x-pack/plugins/actions/docs/openapi/bundled.yaml
+++ b/x-pack/plugins/actions/docs/openapi/bundled.yaml
@@ -179,6 +179,8 @@ paths:
             schema:
               $ref: '#/components/schemas/run_connector_request'
             examples:
+              runEmailConnectorRequest:
+                $ref: '#/components/examples/run_email_connector_request'
               runIndexConnectorRequest:
                 $ref: '#/components/examples/run_index_connector_request'
               runJiraConnectorRequest:
@@ -219,6 +221,8 @@ paths:
                       - error
                       - ok
               examples:
+                runEmailConnectorResponse:
+                  $ref: '#/components/examples/run_email_connector_response'
                 runIndexConnectorResponse:
                   $ref: '#/components/examples/run_index_connector_response'
                 runJiraConnectorResponse:
@@ -3345,7 +3349,50 @@ components:
           items:
             type: object
             additionalProperties: true
-    run_connector_params_level_message:
+    run_connector_params_message_email:
+      title: Email connector parameters
+      description: |
+        Test an action that sends an email message. There must be at least one recipient in `to`, `cc`, or `bcc`.
+      type: object
+      anyOf:
+        - required:
+            - bcc
+            - message
+            - subject
+        - required:
+            - cc
+            - message
+            - subject
+        - required:
+            - to
+            - message
+            - subject
+      properties:
+        bcc:
+          type: array
+          items:
+            type: string
+          description: |
+            A list of "blind carbon copy" email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format
+        cc:
+          type: array
+          items:
+            type: string
+          description: |
+            A list of "carbon copy" email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format 
+        message:
+          type: string
+          description: The email message text. Markdown format is supported.
+        subject:
+          type: string
+          description: The subject line of the email.
+        to:
+          type: array
+          description: |
+            A list of email addresses. Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.
+          items:
+            type: string
+    run_connector_params_message_serverlog:
       title: Server log connector parameters
       description: Test an action that writes an entry to the Kibana server log.
       type: object
@@ -3831,7 +3878,8 @@ components:
         params:
           oneOf:
             - $ref: '#/components/schemas/run_connector_params_documents'
-            - $ref: '#/components/schemas/run_connector_params_level_message'
+            - $ref: '#/components/schemas/run_connector_params_message_email'
+            - $ref: '#/components/schemas/run_connector_params_message_serverlog'
             - title: Subaction parameters
               description: Test an action that involves a subaction.
               oneOf:
@@ -4036,6 +4084,19 @@ components:
         name: updated-connector
         config:
           index: updated-index
+    run_email_connector_request:
+      summary: Send an email message from an email connector.
+      value:
+        params:
+          bcc:
+            - user1@example.com
+          cc:
+            - user2@example.com
+            - user3@example.com
+          message: Test email message.
+          subject: Test message subject
+          to:
+            - user4@example.com
     run_index_connector_request:
       summary: Run an index connector.
       value:
@@ -4077,6 +4138,30 @@ components:
               caseId: '1000'
               caseName: Case name
               description: Description of the incident.
+    run_email_connector_response:
+      summary: Response for sending a message from an email connector.
+      value:
+        connector_id: 7fc7b9a0-ecc9-11ec-8736-e7d63118c907
+        data:
+          accepted:
+            - user1@example.com
+            - user2@example.com
+            - user3@example.com
+            - user4@example.com
+          envelope:
+            from: tester@example.com
+            to:
+              - user1@example.com
+              - user2@example.com
+              - user3@example.com
+              - user4@example.com
+          envelopeTime: 8
+          messageTime: 3
+          messageSize: 729
+          response: 250 Message queued as QzEXKcGJ
+          messageId: <08a92d29-642a-0706-750c-de5996bd5cf3@example.com>
+          rejected: []
+        status: ok
     run_index_connector_response:
       summary: Response from running an index connector.
       value:
diff --git a/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_request.yaml b/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_request.yaml
new file mode 100644
index 0000000000000..72b5e36567b02
--- /dev/null
+++ b/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_request.yaml
@@ -0,0 +1,12 @@
+summary: Send an email message from an email connector.
+value:
+  params:
+    bcc:
+      - user1@example.com
+    cc:
+      - user2@example.com
+      - user3@example.com 
+    message: Test email message.
+    subject: Test message subject
+    to:
+      - user4@example.com 
\ No newline at end of file
diff --git a/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_response.yaml b/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_response.yaml
new file mode 100644
index 0000000000000..af0d2cf2d57db
--- /dev/null
+++ b/x-pack/plugins/actions/docs/openapi/components/examples/run_email_connector_response.yaml
@@ -0,0 +1,23 @@
+summary: Response for sending a message from an email connector.
+value:
+  connector_id: 7fc7b9a0-ecc9-11ec-8736-e7d63118c907
+  data:
+    accepted:
+      - user1@example.com
+      - user2@example.com
+      - user3@example.com
+      - user4@example.com
+    envelope:
+      from: tester@example.com
+      to:
+        - user1@example.com
+        - user2@example.com
+        - user3@example.com
+        - user4@example.com
+    envelopeTime: 8
+    messageTime: 3
+    messageSize: 729
+    response: "250 Message queued as QzEXKcGJ"
+    messageId: "<08a92d29-642a-0706-750c-de5996bd5cf3@example.com>"
+    rejected: []
+  status: ok
diff --git a/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_email.yaml b/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_email.yaml
new file mode 100644
index 0000000000000..3ab895c4ff5fe
--- /dev/null
+++ b/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_email.yaml
@@ -0,0 +1,37 @@
+title: Email connector parameters
+description: >
+  Test an action that sends an email message.
+  There must be at least one recipient in `to`, `cc`, or `bcc`.
+type: object
+anyOf:
+  - required: [ bcc, message, subject ]
+  - required: [ cc, message, subject ]
+  - required: [ to, message, subject ]
+properties:
+  bcc:
+    type: array
+    items:
+      type: string
+    description: >
+      A list of "blind carbon copy" email addresses.
+      Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format
+  cc:
+    type: array
+    items:
+      type: string
+    description: >
+      A list of "carbon copy" email addresses.
+      Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format 
+  message:
+    type: string
+    description: The email message text. Markdown format is supported.
+  subject:
+    type: string
+    description: The subject line of the email.
+  to:
+    type: array
+    description: >
+      A list of email addresses.
+      Addresses can be specified in `user@host-name` format or in name `<user@host-name>` format.
+    items:
+      type: string
diff --git a/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_level_message.yaml b/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_serverlog.yaml
similarity index 100%
rename from x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_level_message.yaml
rename to x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_params_message_serverlog.yaml
diff --git a/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_request.yaml b/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_request.yaml
index a313de571b501..7602693cebe50 100644
--- a/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_request.yaml
+++ b/x-pack/plugins/actions/docs/openapi/components/schemas/run_connector_request.yaml
@@ -7,7 +7,8 @@ properties:
   params:
     oneOf:
       - $ref: 'run_connector_params_documents.yaml'
-      - $ref: 'run_connector_params_level_message.yaml'
+      - $ref: 'run_connector_params_message_email.yaml'
+      - $ref: 'run_connector_params_message_serverlog.yaml'
       - title: Subaction parameters
         description: Test an action that involves a subaction.
         oneOf:
diff --git a/x-pack/plugins/actions/docs/openapi/paths/api@actions@connector@{connectorid}@_execute.yaml b/x-pack/plugins/actions/docs/openapi/paths/api@actions@connector@{connectorid}@_execute.yaml
index 7e7d0b8956853..577a57fbb5d96 100644
--- a/x-pack/plugins/actions/docs/openapi/paths/api@actions@connector@{connectorid}@_execute.yaml
+++ b/x-pack/plugins/actions/docs/openapi/paths/api@actions@connector@{connectorid}@_execute.yaml
@@ -17,6 +17,8 @@ post:
         schema:
           $ref: '../components/schemas/run_connector_request.yaml'
         examples:
+          runEmailConnectorRequest:
+            $ref: '../components/examples/run_email_connector_request.yaml'
           runIndexConnectorRequest:
             $ref: '../components/examples/run_index_connector_request.yaml'
           runJiraConnectorRequest:
@@ -57,6 +59,8 @@ post:
                   - error
                   - ok
           examples:
+            runEmailConnectorResponse:
+              $ref: '../components/examples/run_email_connector_response.yaml'
             runIndexConnectorResponse:
               $ref: '../components/examples/run_index_connector_response.yaml'
             runJiraConnectorResponse:

From b704db840f092cbe0aaa181aba63ab470b6f94d3 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Sat, 11 Nov 2023 00:58:17 -0500
Subject: [PATCH 112/147] [api-docs] 2023-11-11 Daily api_docs build (#171066)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/518
---
 api_docs/actions.mdx                          |   2 +-
 api_docs/advanced_settings.mdx                |   2 +-
 api_docs/aiops.devdocs.json                   |  16 +-
 api_docs/aiops.mdx                            |   2 +-
 api_docs/alerting.mdx                         |   2 +-
 api_docs/apm.mdx                              |   2 +-
 api_docs/apm_data_access.mdx                  |   2 +-
 api_docs/asset_manager.mdx                    |   2 +-
 api_docs/banners.mdx                          |   2 +-
 api_docs/bfetch.mdx                           |   2 +-
 api_docs/canvas.mdx                           |   2 +-
 api_docs/cases.mdx                            |   2 +-
 api_docs/charts.mdx                           |   2 +-
 api_docs/cloud.mdx                            |   2 +-
 api_docs/cloud_data_migration.mdx             |   2 +-
 api_docs/cloud_defend.mdx                     |   2 +-
 api_docs/cloud_experiments.mdx                |   2 +-
 api_docs/cloud_security_posture.mdx           |   2 +-
 api_docs/console.mdx                          |   2 +-
 api_docs/content_management.mdx               |   2 +-
 api_docs/controls.mdx                         |   2 +-
 api_docs/custom_integrations.mdx              |   2 +-
 api_docs/dashboard.mdx                        |   2 +-
 api_docs/dashboard_enhanced.mdx               |   2 +-
 api_docs/data.devdocs.json                    |  54 ++--
 api_docs/data.mdx                             |   2 +-
 api_docs/data_query.mdx                       |   2 +-
 api_docs/data_search.devdocs.json             |  52 +++-
 api_docs/data_search.mdx                      |   2 +-
 api_docs/data_view_editor.mdx                 |   2 +-
 api_docs/data_view_field_editor.mdx           |   2 +-
 api_docs/data_view_management.mdx             |   2 +-
 api_docs/data_views.mdx                       |   2 +-
 api_docs/data_visualizer.mdx                  |   2 +-
 api_docs/dataset_quality.devdocs.json         |  69 +++++
 api_docs/dataset_quality.mdx                  |  38 +++
 api_docs/deprecations_by_api.mdx              |   2 +-
 api_docs/deprecations_by_plugin.mdx           |   2 +-
 api_docs/deprecations_by_team.mdx             |   2 +-
 api_docs/dev_tools.mdx                        |   2 +-
 api_docs/discover.mdx                         |   2 +-
 api_docs/discover_enhanced.mdx                |   2 +-
 api_docs/ecs_data_quality_dashboard.mdx       |   2 +-
 api_docs/elastic_assistant.mdx                |   2 +-
 api_docs/embeddable.mdx                       |   2 +-
 api_docs/embeddable_enhanced.mdx              |   2 +-
 api_docs/encrypted_saved_objects.mdx          |   2 +-
 api_docs/enterprise_search.mdx                |   2 +-
 api_docs/es_ui_shared.mdx                     |   2 +-
 api_docs/event_annotation.mdx                 |   2 +-
 api_docs/event_annotation_listing.mdx         |   2 +-
 api_docs/event_log.mdx                        |   2 +-
 api_docs/exploratory_view.mdx                 |   2 +-
 api_docs/expression_error.mdx                 |   2 +-
 api_docs/expression_gauge.mdx                 |   2 +-
 api_docs/expression_heatmap.mdx               |   2 +-
 api_docs/expression_image.mdx                 |   2 +-
 api_docs/expression_legacy_metric_vis.mdx     |   2 +-
 api_docs/expression_metric.mdx                |   2 +-
 api_docs/expression_metric_vis.mdx            |   2 +-
 api_docs/expression_partition_vis.mdx         |   2 +-
 api_docs/expression_repeat_image.mdx          |   2 +-
 api_docs/expression_reveal_image.mdx          |   2 +-
 api_docs/expression_shape.mdx                 |   2 +-
 api_docs/expression_tagcloud.mdx              |   2 +-
 api_docs/expression_x_y.mdx                   |   2 +-
 api_docs/expressions.mdx                      |   2 +-
 api_docs/features.mdx                         |   2 +-
 api_docs/field_formats.mdx                    |   2 +-
 api_docs/file_upload.mdx                      |   2 +-
 api_docs/files.devdocs.json                   |  16 ++
 api_docs/files.mdx                            |   4 +-
 api_docs/files_management.mdx                 |   2 +-
 api_docs/fleet.mdx                            |   2 +-
 api_docs/global_search.mdx                    |   2 +-
 api_docs/guided_onboarding.mdx                |   2 +-
 api_docs/home.mdx                             |   2 +-
 api_docs/image_embeddable.mdx                 |   2 +-
 api_docs/index_lifecycle_management.mdx       |   2 +-
 api_docs/index_management.devdocs.json        | 145 +++++++++-
 api_docs/index_management.mdx                 |   4 +-
 api_docs/infra.mdx                            |   2 +-
 api_docs/inspector.mdx                        |   2 +-
 api_docs/interactive_setup.mdx                |   2 +-
 api_docs/kbn_ace.mdx                          |   2 +-
 api_docs/kbn_aiops_components.mdx             |   2 +-
 api_docs/kbn_aiops_utils.mdx                  |   2 +-
 .../kbn_alerting_api_integration_helpers.mdx  |   2 +-
 api_docs/kbn_alerting_state_types.mdx         |   2 +-
 api_docs/kbn_alerts_as_data_utils.mdx         |   2 +-
 api_docs/kbn_alerts_ui_shared.mdx             |   2 +-
 api_docs/kbn_analytics.mdx                    |   2 +-
 api_docs/kbn_analytics_client.mdx             |   2 +-
 ..._analytics_shippers_elastic_v3_browser.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_common.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_server.mdx |   2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx |   2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx |   2 +-
 api_docs/kbn_apm_config_loader.mdx            |   2 +-
 api_docs/kbn_apm_synthtrace.mdx               |   2 +-
 api_docs/kbn_apm_synthtrace_client.mdx        |   2 +-
 api_docs/kbn_apm_utils.mdx                    |   2 +-
 api_docs/kbn_axe_config.mdx                   |   2 +-
 api_docs/kbn_cases_components.mdx             |   2 +-
 api_docs/kbn_cell_actions.mdx                 |   2 +-
 api_docs/kbn_chart_expressions_common.mdx     |   2 +-
 api_docs/kbn_chart_icons.mdx                  |   2 +-
 api_docs/kbn_ci_stats_core.mdx                |   2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx |   2 +-
 api_docs/kbn_ci_stats_reporter.mdx            |   2 +-
 api_docs/kbn_cli_dev_mode.mdx                 |   2 +-
 api_docs/kbn_code_editor.mdx                  |   2 +-
 api_docs/kbn_coloring.mdx                     |   2 +-
 api_docs/kbn_config.mdx                       |   2 +-
 api_docs/kbn_config_mocks.mdx                 |   2 +-
 api_docs/kbn_config_schema.mdx                |   2 +-
 .../kbn_content_management_content_editor.mdx |   2 +-
 ...tent_management_tabbed_table_list_view.mdx |   2 +-
 ...kbn_content_management_table_list_view.mdx |   2 +-
 ...ntent_management_table_list_view_table.mdx |   2 +-
 api_docs/kbn_content_management_utils.mdx     |   2 +-
 api_docs/kbn_core_analytics_browser.mdx       |   2 +-
 .../kbn_core_analytics_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_analytics_server.mdx        |   2 +-
 .../kbn_core_analytics_server_internal.mdx    |   2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_application_browser.mdx     |   2 +-
 .../kbn_core_application_browser_internal.mdx |   2 +-
 .../kbn_core_application_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_application_common.mdx      |   2 +-
 api_docs/kbn_core_apps_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_apps_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_base_common.mdx             |   2 +-
 api_docs/kbn_core_base_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_server_mocks.mdx       |   2 +-
 .../kbn_core_capabilities_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_capabilities_common.mdx     |   2 +-
 api_docs/kbn_core_capabilities_server.mdx     |   2 +-
 .../kbn_core_capabilities_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_chrome_browser.mdx          |   2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_config_server_internal.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_browser.mdx |   2 +-
 ..._core_custom_branding_browser_internal.mdx |   2 +-
 ...kbn_core_custom_branding_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_custom_branding_common.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_server.mdx  |   2 +-
 ...n_core_custom_branding_server_internal.mdx |   2 +-
 .../kbn_core_custom_branding_server_mocks.mdx |   2 +-
 api_docs/kbn_core_deprecations_browser.mdx    |   2 +-
 ...kbn_core_deprecations_browser_internal.mdx |   2 +-
 .../kbn_core_deprecations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_deprecations_common.mdx     |   2 +-
 api_docs/kbn_core_deprecations_server.mdx     |   2 +-
 .../kbn_core_deprecations_server_internal.mdx |   2 +-
 .../kbn_core_deprecations_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_doc_links_browser.mdx       |   2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_doc_links_server.mdx        |   2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx  |   2 +-
 ...e_elasticsearch_client_server_internal.mdx |   2 +-
 ...core_elasticsearch_client_server_mocks.mdx |   2 +-
 api_docs/kbn_core_elasticsearch_server.mdx    |   2 +-
 ...kbn_core_elasticsearch_server_internal.mdx |   2 +-
 .../kbn_core_elasticsearch_server_mocks.mdx   |   2 +-
 .../kbn_core_environment_server_internal.mdx  |   2 +-
 .../kbn_core_environment_server_mocks.mdx     |   2 +-
 .../kbn_core_execution_context_browser.mdx    |   2 +-
 ...ore_execution_context_browser_internal.mdx |   2 +-
 ...n_core_execution_context_browser_mocks.mdx |   2 +-
 .../kbn_core_execution_context_common.mdx     |   2 +-
 .../kbn_core_execution_context_server.mdx     |   2 +-
 ...core_execution_context_server_internal.mdx |   2 +-
 ...bn_core_execution_context_server_mocks.mdx |   2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx    |   2 +-
 .../kbn_core_fatal_errors_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_http_browser.mdx            |   2 +-
 api_docs/kbn_core_http_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_http_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_http_common.mdx             |   2 +-
 .../kbn_core_http_context_server_mocks.mdx    |   2 +-
 ...re_http_request_handler_context_server.mdx |   2 +-
 api_docs/kbn_core_http_resources_server.mdx   |   2 +-
 ...bn_core_http_resources_server_internal.mdx |   2 +-
 .../kbn_core_http_resources_server_mocks.mdx  |   2 +-
 .../kbn_core_http_router_server_internal.mdx  |   2 +-
 .../kbn_core_http_router_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_http_server.mdx             |   2 +-
 api_docs/kbn_core_http_server_internal.mdx    |   2 +-
 api_docs/kbn_core_http_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_i18n_browser.mdx            |   2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_i18n_server.mdx             |   2 +-
 api_docs/kbn_core_i18n_server_internal.mdx    |   2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx       |   2 +-
 ...n_core_injected_metadata_browser_mocks.mdx |   2 +-
 ...kbn_core_integrations_browser_internal.mdx |   2 +-
 .../kbn_core_integrations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_lifecycle_browser.mdx       |   2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_lifecycle_server.mdx        |   2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_logging_common_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server.mdx          |   2 +-
 api_docs/kbn_core_logging_server_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server_mocks.mdx    |   2 +-
 ...ore_metrics_collectors_server_internal.mdx |   2 +-
 ...n_core_metrics_collectors_server_mocks.mdx |   2 +-
 api_docs/kbn_core_metrics_server.mdx          |   2 +-
 api_docs/kbn_core_metrics_server_internal.mdx |   2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_mount_utils_browser.mdx     |   2 +-
 api_docs/kbn_core_node_server.mdx             |   2 +-
 api_docs/kbn_core_node_server_internal.mdx    |   2 +-
 api_docs/kbn_core_node_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_notifications_browser.mdx   |   2 +-
 ...bn_core_notifications_browser_internal.mdx |   2 +-
 .../kbn_core_notifications_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_overlays_browser.mdx        |   2 +-
 .../kbn_core_overlays_browser_internal.mdx    |   2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_plugins_browser.mdx         |   2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx   |   2 +-
 .../kbn_core_plugins_contracts_browser.mdx    |   2 +-
 .../kbn_core_plugins_contracts_server.mdx     |   2 +-
 api_docs/kbn_core_plugins_server.mdx          |   2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_preboot_server.mdx          |   2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx |   2 +-
 .../kbn_core_rendering_server_internal.mdx    |   2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_root_server_internal.mdx    |   2 +-
 .../kbn_core_saved_objects_api_browser.mdx    |   2 +-
 .../kbn_core_saved_objects_api_server.mdx     |   2 +-
 ...bn_core_saved_objects_api_server_mocks.mdx |   2 +-
 ...ore_saved_objects_base_server_internal.mdx |   2 +-
 ...n_core_saved_objects_base_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_browser.mdx   |   2 +-
 ...bn_core_saved_objects_browser_internal.mdx |   2 +-
 .../kbn_core_saved_objects_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_saved_objects_common.mdx    |   2 +-
 ..._objects_import_export_server_internal.mdx |   2 +-
 ...ved_objects_import_export_server_mocks.mdx |   2 +-
 ...aved_objects_migration_server_internal.mdx |   2 +-
 ...e_saved_objects_migration_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_server.mdx    |   2 +-
 ...kbn_core_saved_objects_server_internal.mdx |   2 +-
 .../kbn_core_saved_objects_server_mocks.mdx   |   2 +-
 .../kbn_core_saved_objects_utils_server.mdx   |   2 +-
 api_docs/kbn_core_status_common.mdx           |   2 +-
 api_docs/kbn_core_status_common_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server.mdx           |   2 +-
 api_docs/kbn_core_status_server_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server_mocks.mdx     |   2 +-
 ...core_test_helpers_deprecations_getters.mdx |   2 +-
 ...n_core_test_helpers_http_setup_browser.mdx |   2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx |   2 +-
 .../kbn_core_test_helpers_model_versions.mdx  |   2 +-
 ...n_core_test_helpers_so_type_serializer.mdx |   2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx |   2 +-
 api_docs/kbn_core_theme_browser.mdx           |   2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx     |   2 +-
 api_docs/kbn_core_ui_settings_browser.mdx     |   2 +-
 .../kbn_core_ui_settings_browser_internal.mdx |   2 +-
 .../kbn_core_ui_settings_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_ui_settings_common.mdx      |   2 +-
 api_docs/kbn_core_ui_settings_server.mdx      |   2 +-
 .../kbn_core_ui_settings_server_internal.mdx  |   2 +-
 .../kbn_core_ui_settings_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_usage_data_server.mdx       |   2 +-
 .../kbn_core_usage_data_server_internal.mdx   |   2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx |   2 +-
 api_docs/kbn_core_user_settings_server.mdx    |   2 +-
 ...kbn_core_user_settings_server_internal.mdx |   2 +-
 .../kbn_core_user_settings_server_mocks.mdx   |   2 +-
 api_docs/kbn_crypto.mdx                       |   2 +-
 api_docs/kbn_crypto_browser.mdx               |   2 +-
 api_docs/kbn_custom_integrations.mdx          |   2 +-
 api_docs/kbn_cypress_config.mdx               |   2 +-
 api_docs/kbn_data_service.mdx                 |   2 +-
 api_docs/kbn_datemath.mdx                     |   2 +-
 api_docs/kbn_deeplinks_analytics.mdx          |   2 +-
 api_docs/kbn_deeplinks_devtools.mdx           |   2 +-
 api_docs/kbn_deeplinks_management.mdx         |   2 +-
 api_docs/kbn_deeplinks_ml.mdx                 |   2 +-
 api_docs/kbn_deeplinks_observability.mdx      |   2 +-
 api_docs/kbn_deeplinks_search.mdx             |   2 +-
 api_docs/kbn_default_nav_analytics.mdx        |   2 +-
 api_docs/kbn_default_nav_devtools.mdx         |   2 +-
 api_docs/kbn_default_nav_management.mdx       |   2 +-
 api_docs/kbn_default_nav_ml.mdx               |   2 +-
 api_docs/kbn_dev_cli_errors.mdx               |   2 +-
 api_docs/kbn_dev_cli_runner.mdx               |   2 +-
 api_docs/kbn_dev_proc_runner.mdx              |   2 +-
 api_docs/kbn_dev_utils.mdx                    |   2 +-
 api_docs/kbn_discover_utils.mdx               |   2 +-
 api_docs/kbn_doc_links.mdx                    |   2 +-
 api_docs/kbn_docs_utils.mdx                   |   2 +-
 api_docs/kbn_dom_drag_drop.mdx                |   2 +-
 api_docs/kbn_ebt_tools.mdx                    |   2 +-
 api_docs/kbn_ecs.mdx                          |   2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx   |   2 +-
 api_docs/kbn_elastic_assistant.mdx            |   2 +-
 api_docs/kbn_es.mdx                           |   2 +-
 api_docs/kbn_es_archiver.mdx                  |   2 +-
 api_docs/kbn_es_errors.mdx                    |   2 +-
 api_docs/kbn_es_query.mdx                     |   2 +-
 api_docs/kbn_es_types.mdx                     |   2 +-
 api_docs/kbn_eslint_plugin_imports.mdx        |   2 +-
 api_docs/kbn_event_annotation_common.mdx      |   2 +-
 api_docs/kbn_event_annotation_components.mdx  |   2 +-
 api_docs/kbn_expandable_flyout.mdx            |   2 +-
 api_docs/kbn_field_types.mdx                  |   2 +-
 api_docs/kbn_field_utils.mdx                  |   2 +-
 api_docs/kbn_find_used_node_modules.mdx       |   2 +-
 .../kbn_ftr_common_functional_services.mdx    |   2 +-
 api_docs/kbn_generate.mdx                     |   2 +-
 api_docs/kbn_generate_console_definitions.mdx |   2 +-
 api_docs/kbn_generate_csv.mdx                 |   2 +-
 api_docs/kbn_generate_csv_types.mdx           |   2 +-
 api_docs/kbn_guided_onboarding.mdx            |   2 +-
 api_docs/kbn_handlebars.mdx                   |   2 +-
 api_docs/kbn_hapi_mocks.mdx                   |   2 +-
 api_docs/kbn_health_gateway_server.mdx        |   2 +-
 api_docs/kbn_home_sample_data_card.mdx        |   2 +-
 api_docs/kbn_home_sample_data_tab.mdx         |   2 +-
 api_docs/kbn_i18n.mdx                         |   2 +-
 api_docs/kbn_i18n_react.mdx                   |   2 +-
 api_docs/kbn_import_resolver.mdx              |   2 +-
 api_docs/kbn_infra_forge.mdx                  |   2 +-
 api_docs/kbn_interpreter.mdx                  |   2 +-
 api_docs/kbn_io_ts_utils.mdx                  |   2 +-
 api_docs/kbn_jest_serializers.mdx             |   2 +-
 api_docs/kbn_journeys.mdx                     |   2 +-
 api_docs/kbn_json_ast.mdx                     |   2 +-
 api_docs/kbn_kibana_manifest_schema.mdx       |   2 +-
 .../kbn_language_documentation_popover.mdx    |   2 +-
 api_docs/kbn_lens_embeddable_utils.mdx        |   2 +-
 api_docs/kbn_logging.mdx                      |   2 +-
 api_docs/kbn_logging_mocks.mdx                |   2 +-
 api_docs/kbn_managed_vscode_config.mdx        |   2 +-
 api_docs/kbn_management_cards_navigation.mdx  |   2 +-
 .../kbn_management_settings_application.mdx   |   2 +-
 ...ent_settings_components_field_category.mdx |   2 +-
 ...gement_settings_components_field_input.mdx |   2 +-
 ...nagement_settings_components_field_row.mdx |   2 +-
 ...bn_management_settings_components_form.mdx |   2 +-
 ...n_management_settings_field_definition.mdx |   2 +-
 api_docs/kbn_management_settings_ids.mdx      |   2 +-
 ...n_management_settings_section_registry.mdx |   2 +-
 api_docs/kbn_management_settings_types.mdx    |   2 +-
 .../kbn_management_settings_utilities.mdx     |   2 +-
 api_docs/kbn_management_storybook_config.mdx  |   2 +-
 api_docs/kbn_mapbox_gl.mdx                    |   2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx       |   2 +-
 api_docs/kbn_ml_agg_utils.devdocs.json        | 249 +++++++-----------
 api_docs/kbn_ml_agg_utils.mdx                 |   4 +-
 api_docs/kbn_ml_anomaly_utils.mdx             |   2 +-
 api_docs/kbn_ml_category_validator.mdx        |   2 +-
 api_docs/kbn_ml_chi2test.mdx                  |   2 +-
 .../kbn_ml_data_frame_analytics_utils.mdx     |   2 +-
 api_docs/kbn_ml_data_grid.mdx                 |   2 +-
 api_docs/kbn_ml_date_picker.mdx               |   2 +-
 api_docs/kbn_ml_date_utils.mdx                |   2 +-
 api_docs/kbn_ml_error_utils.mdx               |   2 +-
 api_docs/kbn_ml_in_memory_table.mdx           |   2 +-
 api_docs/kbn_ml_is_defined.mdx                |   2 +-
 api_docs/kbn_ml_is_populated_object.mdx       |   2 +-
 api_docs/kbn_ml_kibana_theme.mdx              |   2 +-
 api_docs/kbn_ml_local_storage.mdx             |   2 +-
 api_docs/kbn_ml_nested_property.mdx           |   2 +-
 api_docs/kbn_ml_number_utils.mdx              |   2 +-
 api_docs/kbn_ml_query_utils.mdx               |   2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx      |   2 +-
 api_docs/kbn_ml_route_utils.mdx               |   2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx       |   2 +-
 api_docs/kbn_ml_string_hash.mdx               |   2 +-
 api_docs/kbn_ml_trained_models_utils.mdx      |   2 +-
 api_docs/kbn_ml_url_state.mdx                 |   2 +-
 api_docs/kbn_monaco.mdx                       |   2 +-
 api_docs/kbn_object_versioning.mdx            |   2 +-
 api_docs/kbn_observability_alert_details.mdx  |   2 +-
 .../kbn_observability_alerting_test_data.mdx  |   2 +-
 api_docs/kbn_openapi_generator.mdx            |   2 +-
 api_docs/kbn_optimizer.mdx                    |   2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx    |   2 +-
 api_docs/kbn_osquery_io_ts_types.mdx          |   2 +-
 ..._performance_testing_dataset_extractor.mdx |   2 +-
 api_docs/kbn_plugin_generator.mdx             |   2 +-
 api_docs/kbn_plugin_helpers.mdx               |   2 +-
 api_docs/kbn_profiling_utils.mdx              |   2 +-
 api_docs/kbn_random_sampling.mdx              |   2 +-
 api_docs/kbn_react_field.mdx                  |   2 +-
 api_docs/kbn_react_kibana_context_common.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_render.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_root.mdx    |   2 +-
 api_docs/kbn_react_kibana_context_styled.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_theme.mdx   |   2 +-
 api_docs/kbn_react_kibana_mount.mdx           |   2 +-
 api_docs/kbn_repo_file_maps.mdx               |   2 +-
 api_docs/kbn_repo_linter.mdx                  |   2 +-
 api_docs/kbn_repo_path.mdx                    |   2 +-
 api_docs/kbn_repo_source_classifier.mdx       |   2 +-
 api_docs/kbn_reporting_common.mdx             |   2 +-
 api_docs/kbn_resizable_layout.mdx             |   2 +-
 api_docs/kbn_rison.mdx                        |   2 +-
 api_docs/kbn_rrule.mdx                        |   2 +-
 api_docs/kbn_rule_data_utils.devdocs.json     |   6 +-
 api_docs/kbn_rule_data_utils.mdx              |   2 +-
 api_docs/kbn_saved_objects_settings.mdx       |   2 +-
 api_docs/kbn_search_api_panels.mdx            |   2 +-
 api_docs/kbn_search_connectors.mdx            |   2 +-
 api_docs/kbn_search_response_warnings.mdx     |   2 +-
 api_docs/kbn_security_solution_features.mdx   |   2 +-
 api_docs/kbn_security_solution_navigation.mdx |   2 +-
 api_docs/kbn_security_solution_side_nav.mdx   |   2 +-
 ...kbn_security_solution_storybook_config.mdx |   2 +-
 .../kbn_securitysolution_autocomplete.mdx     |   2 +-
 api_docs/kbn_securitysolution_data_table.mdx  |   2 +-
 api_docs/kbn_securitysolution_ecs.mdx         |   2 +-
 api_docs/kbn_securitysolution_es_utils.mdx    |   2 +-
 ...ritysolution_exception_list_components.mdx |   2 +-
 api_docs/kbn_securitysolution_grouping.mdx    |   2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx  |   2 +-
 ..._securitysolution_io_ts_alerting_types.mdx |   2 +-
 .../kbn_securitysolution_io_ts_list_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx |   2 +-
 api_docs/kbn_securitysolution_list_api.mdx    |   2 +-
 .../kbn_securitysolution_list_constants.mdx   |   2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx  |   2 +-
 api_docs/kbn_securitysolution_list_utils.mdx  |   2 +-
 api_docs/kbn_securitysolution_rules.mdx       |   2 +-
 api_docs/kbn_securitysolution_t_grid.mdx      |   2 +-
 api_docs/kbn_securitysolution_utils.mdx       |   2 +-
 api_docs/kbn_server_http_tools.mdx            |   2 +-
 api_docs/kbn_server_route_repository.mdx      |   2 +-
 api_docs/kbn_serverless_common_settings.mdx   |   2 +-
 .../kbn_serverless_observability_settings.mdx |   2 +-
 api_docs/kbn_serverless_project_switcher.mdx  |   2 +-
 api_docs/kbn_serverless_search_settings.mdx   |   2 +-
 api_docs/kbn_serverless_security_settings.mdx |   2 +-
 api_docs/kbn_serverless_storybook_config.mdx  |   2 +-
 api_docs/kbn_shared_svg.mdx                   |   2 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx    |   2 +-
 .../kbn_shared_ux_button_exit_full_screen.mdx |   2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx     |   2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx       |   2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx  |   2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx     |   2 +-
 api_docs/kbn_shared_ux_file_context.mdx       |   2 +-
 api_docs/kbn_shared_ux_file_image.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx   |   2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_picker.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_types.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_upload.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_util.mdx          |   2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx  |   2 +-
 .../kbn_shared_ux_link_redirect_app_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_markdown.mdx           |   2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx     |   2 +-
 .../kbn_shared_ux_page_analytics_no_data.mdx  |   2 +-
 ...shared_ux_page_analytics_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_no_data.mdx     |   2 +-
 ...bn_shared_ux_page_kibana_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_template.mdx    |   2 +-
 ...n_shared_ux_page_kibana_template_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx       |   2 +-
 .../kbn_shared_ux_page_no_data_config.mdx     |   2 +-
 ...bn_shared_ux_page_no_data_config_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx  |   2 +-
 .../kbn_shared_ux_prompt_no_data_views.mdx    |   2 +-
 ...n_shared_ux_prompt_no_data_views_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx   |   2 +-
 api_docs/kbn_shared_ux_router.mdx             |   2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx       |   2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx   |   2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx     |   2 +-
 api_docs/kbn_shared_ux_utility.mdx            |   2 +-
 api_docs/kbn_slo_schema.mdx                   |   2 +-
 api_docs/kbn_some_dev_log.mdx                 |   2 +-
 api_docs/kbn_std.mdx                          |   2 +-
 api_docs/kbn_stdio_dev_helpers.mdx            |   2 +-
 api_docs/kbn_storybook.mdx                    |   2 +-
 api_docs/kbn_subscription_tracking.mdx        |   2 +-
 api_docs/kbn_telemetry_tools.mdx              |   2 +-
 api_docs/kbn_test.mdx                         |   2 +-
 api_docs/kbn_test_jest_helpers.mdx            |   2 +-
 api_docs/kbn_test_subj_selector.mdx           |   2 +-
 api_docs/kbn_text_based_editor.mdx            |   2 +-
 api_docs/kbn_tooling_log.mdx                  |   2 +-
 api_docs/kbn_ts_projects.mdx                  |   2 +-
 api_docs/kbn_typed_react_router_config.mdx    |   2 +-
 api_docs/kbn_ui_actions_browser.mdx           |   2 +-
 api_docs/kbn_ui_shared_deps_src.mdx           |   2 +-
 api_docs/kbn_ui_theme.mdx                     |   2 +-
 api_docs/kbn_unified_data_table.mdx           |   2 +-
 api_docs/kbn_unified_doc_viewer.mdx           |   2 +-
 api_docs/kbn_unified_field_list.mdx           |   2 +-
 api_docs/kbn_url_state.mdx                    |   2 +-
 api_docs/kbn_use_tracked_promise.mdx          |   2 +-
 api_docs/kbn_user_profile_components.mdx      |   2 +-
 api_docs/kbn_utility_types.mdx                |   2 +-
 api_docs/kbn_utility_types_jest.mdx           |   2 +-
 api_docs/kbn_utils.mdx                        |   2 +-
 api_docs/kbn_visualization_ui_components.mdx  |   2 +-
 api_docs/kbn_xstate_utils.mdx                 |   2 +-
 api_docs/kbn_yarn_lock_validator.mdx          |   2 +-
 api_docs/kbn_zod_helpers.mdx                  |   2 +-
 api_docs/kibana_overview.mdx                  |   2 +-
 api_docs/kibana_react.mdx                     |   2 +-
 api_docs/kibana_utils.mdx                     |   2 +-
 api_docs/kubernetes_security.mdx              |   2 +-
 api_docs/lens.mdx                             |   2 +-
 api_docs/license_api_guard.mdx                |   2 +-
 api_docs/license_management.mdx               |   2 +-
 api_docs/licensing.mdx                        |   2 +-
 api_docs/links.mdx                            |   2 +-
 api_docs/lists.mdx                            |   2 +-
 api_docs/log_explorer.mdx                     |   2 +-
 api_docs/logs_shared.mdx                      |   2 +-
 api_docs/management.mdx                       |   2 +-
 api_docs/maps.mdx                             |   2 +-
 api_docs/maps_ems.mdx                         |   2 +-
 api_docs/metrics_data_access.mdx              |   2 +-
 api_docs/ml.mdx                               |   2 +-
 api_docs/monitoring.mdx                       |   2 +-
 api_docs/monitoring_collection.mdx            |   2 +-
 api_docs/navigation.mdx                       |   2 +-
 api_docs/newsfeed.mdx                         |   2 +-
 api_docs/no_data_page.mdx                     |   2 +-
 api_docs/notifications.mdx                    |   2 +-
 api_docs/observability.mdx                    |   2 +-
 api_docs/observability_a_i_assistant.mdx      |   2 +-
 api_docs/observability_log_explorer.mdx       |   2 +-
 api_docs/observability_onboarding.mdx         |   2 +-
 api_docs/observability_shared.mdx             |   2 +-
 api_docs/osquery.mdx                          |   2 +-
 api_docs/painless_lab.mdx                     |   2 +-
 api_docs/plugin_directory.mdx                 |  13 +-
 api_docs/presentation_util.mdx                |   2 +-
 api_docs/profiling.mdx                        |   2 +-
 api_docs/profiling_data_access.mdx            |   2 +-
 api_docs/remote_clusters.mdx                  |   2 +-
 api_docs/reporting.mdx                        |   2 +-
 api_docs/rollup.mdx                           |   2 +-
 api_docs/rule_registry.devdocs.json           |  12 +-
 api_docs/rule_registry.mdx                    |   2 +-
 api_docs/runtime_fields.mdx                   |   2 +-
 api_docs/saved_objects.mdx                    |   2 +-
 api_docs/saved_objects_finder.mdx             |   2 +-
 api_docs/saved_objects_management.mdx         |   2 +-
 api_docs/saved_objects_tagging.mdx            |   2 +-
 api_docs/saved_objects_tagging_oss.mdx        |   2 +-
 api_docs/saved_search.mdx                     |   2 +-
 api_docs/screenshot_mode.mdx                  |   2 +-
 api_docs/screenshotting.mdx                   |   2 +-
 api_docs/security.mdx                         |   2 +-
 api_docs/security_solution.mdx                |   2 +-
 api_docs/security_solution_ess.mdx            |   2 +-
 api_docs/security_solution_serverless.mdx     |   2 +-
 api_docs/serverless.mdx                       |   2 +-
 api_docs/serverless_observability.mdx         |   2 +-
 api_docs/serverless_search.mdx                |   2 +-
 api_docs/session_view.mdx                     |   2 +-
 api_docs/share.mdx                            |   2 +-
 api_docs/snapshot_restore.mdx                 |   2 +-
 api_docs/spaces.mdx                           |   2 +-
 api_docs/stack_alerts.mdx                     |   2 +-
 api_docs/stack_connectors.mdx                 |   2 +-
 api_docs/task_manager.mdx                     |   2 +-
 api_docs/telemetry.mdx                        |   2 +-
 api_docs/telemetry_collection_manager.mdx     |   2 +-
 api_docs/telemetry_collection_xpack.mdx       |   2 +-
 api_docs/telemetry_management_section.mdx     |   2 +-
 api_docs/text_based_languages.mdx             |   2 +-
 api_docs/threat_intelligence.mdx              |   2 +-
 api_docs/timelines.mdx                        |   2 +-
 api_docs/transform.mdx                        |   2 +-
 api_docs/triggers_actions_ui.mdx              |   2 +-
 api_docs/ui_actions.mdx                       |   2 +-
 api_docs/ui_actions_enhanced.mdx              |   2 +-
 api_docs/unified_doc_viewer.mdx               |   2 +-
 api_docs/unified_histogram.mdx                |   2 +-
 api_docs/unified_search.mdx                   |   2 +-
 api_docs/unified_search_autocomplete.mdx      |   2 +-
 api_docs/uptime.mdx                           |   2 +-
 api_docs/url_forwarding.mdx                   |   2 +-
 api_docs/usage_collection.mdx                 |   2 +-
 api_docs/ux.mdx                               |   2 +-
 api_docs/vis_default_editor.mdx               |   2 +-
 api_docs/vis_type_gauge.mdx                   |   2 +-
 api_docs/vis_type_heatmap.mdx                 |   2 +-
 api_docs/vis_type_pie.mdx                     |   2 +-
 api_docs/vis_type_table.mdx                   |   2 +-
 api_docs/vis_type_timelion.mdx                |   2 +-
 api_docs/vis_type_timeseries.mdx              |   2 +-
 api_docs/vis_type_vega.mdx                    |   2 +-
 api_docs/vis_type_vislib.mdx                  |   2 +-
 api_docs/vis_type_xy.mdx                      |   2 +-
 api_docs/visualizations.mdx                   |   2 +-
 609 files changed, 1062 insertions(+), 810 deletions(-)
 create mode 100644 api_docs/dataset_quality.devdocs.json
 create mode 100644 api_docs/dataset_quality.mdx

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index cfe971c8e01be..988678c710766 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index 7c724461a9e3e..b3f9a9145def8 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.devdocs.json b/api_docs/aiops.devdocs.json
index 85b78d1efc482..4a976c737c794 100644
--- a/api_docs/aiops.devdocs.json
+++ b/api_docs/aiops.devdocs.json
@@ -1337,10 +1337,10 @@
           },
           {
             "parentPluginId": "aiops",
-            "id": "def-public.LogRateAnalysisResultsData.significantTerms",
+            "id": "def-public.LogRateAnalysisResultsData.significantItems",
             "type": "Array",
             "tags": [],
-            "label": "significantTerms",
+            "label": "significantItems",
             "description": [
               "Statistically significant field/value items."
             ],
@@ -1349,8 +1349,8 @@
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTerm",
-                "text": "SignificantTerm"
+                "section": "def-common.SignificantItem",
+                "text": "SignificantItem"
               },
               "[]"
             ],
@@ -1360,10 +1360,10 @@
           },
           {
             "parentPluginId": "aiops",
-            "id": "def-public.LogRateAnalysisResultsData.significantTermsGroups",
+            "id": "def-public.LogRateAnalysisResultsData.significantItemsGroups",
             "type": "Array",
             "tags": [],
-            "label": "significantTermsGroups",
+            "label": "significantItemsGroups",
             "description": [
               "Statistically significant groups of field/value items."
             ],
@@ -1372,8 +1372,8 @@
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermGroup",
-                "text": "SignificantTermGroup"
+                "section": "def-common.SignificantItemGroup",
+                "text": "SignificantItemGroup"
               },
               "[]"
             ],
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index 354011bbf232e..2003d18408ab3 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index 46fcda0e2c7ce..1dfa92f584bb0 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 35ca4197656a2..5f2ffbc4ef342 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 2b0e99da57c3f..4727ddd91d6b3 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index df03fe9929c53..64ee2370c0df8 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index 8ad89dcc15273..c1d190397742a 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index 8d55782e5e45d..c324be1cfc800 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index 7de5bd76bdd44..dbf27a6fa404b 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index 8efe25d7afca9..bc5f4659d2100 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index cc578932d279f..b20289c658601 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index ba8c180b3c6ec..28d4098c5317a 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index 1b8c2248a5190..c11fbc16238c0 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 6a65f733471f3..7421ee1c48b6e 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index df453622062a9..b848f07749d1a 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index 198f9b4c75c7a..317fede1ff967 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index de571179a25c4..d564a20bf5fbd 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index bd57fd4ca7cd2..7329a4009b010 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index 3de4ebbf9f68f..4f0424cc613c0 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index e9d35f1e18a95..ecd0b03385759 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index 94b24cd8ddbe0..c34bd7679590b 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 669ff705a81de..1ee2f3cfed9a4 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json
index 77cfa0b7d09c8..cb6db36399917 100644
--- a/api_docs/data.devdocs.json
+++ b/api_docs/data.devdocs.json
@@ -7809,7 +7809,7 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          " extends ",
+          "<T> extends ",
           {
             "pluginId": "data",
             "scope": "common",
@@ -7817,15 +7817,7 @@
             "section": "def-common.IKibanaSearchRequest",
             "text": "IKibanaSearchRequest"
           },
-          "<",
-          {
-            "pluginId": "data",
-            "scope": "common",
-            "docId": "kibDataSearchPluginApi",
-            "section": "def-common.ISearchRequestParams",
-            "text": "ISearchRequestParams"
-          },
-          ">"
+          "<T>"
         ],
         "path": "src/plugins/data/common/search/strategies/es_search/types.ts",
         "deprecated": false,
@@ -10365,7 +10357,15 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          ", SearchStrategyResponse extends ",
+          "<",
+          {
+            "pluginId": "data",
+            "scope": "common",
+            "docId": "kibDataSearchPluginApi",
+            "section": "def-common.ISearchRequestParams",
+            "text": "ISearchRequestParams"
+          },
+          ">, SearchStrategyResponse extends ",
           {
             "pluginId": "data",
             "scope": "common",
@@ -12961,7 +12961,15 @@
                 "section": "def-common.IEsSearchRequest",
                 "text": "IEsSearchRequest"
               },
-              ", ",
+              "<",
+              {
+                "pluginId": "data",
+                "scope": "common",
+                "docId": "kibDataSearchPluginApi",
+                "section": "def-common.ISearchRequestParams",
+                "text": "ISearchRequestParams"
+              },
+              ">, ",
               {
                 "pluginId": "data",
                 "scope": "common",
@@ -17615,7 +17623,7 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          " extends ",
+          "<T> extends ",
           {
             "pluginId": "data",
             "scope": "common",
@@ -17623,15 +17631,7 @@
             "section": "def-common.IKibanaSearchRequest",
             "text": "IKibanaSearchRequest"
           },
-          "<",
-          {
-            "pluginId": "data",
-            "scope": "common",
-            "docId": "kibDataSearchPluginApi",
-            "section": "def-common.ISearchRequestParams",
-            "text": "ISearchRequestParams"
-          },
-          ">"
+          "<T>"
         ],
         "path": "src/plugins/data/common/search/strategies/es_search/types.ts",
         "deprecated": false,
@@ -18337,7 +18337,15 @@
               "section": "def-common.IEsSearchRequest",
               "text": "IEsSearchRequest"
             },
-            ", ",
+            "<",
+            {
+              "pluginId": "data",
+              "scope": "common",
+              "docId": "kibDataSearchPluginApi",
+              "section": "def-common.ISearchRequestParams",
+              "text": "ISearchRequestParams"
+            },
+            ">, ",
             {
               "pluginId": "data",
               "scope": "common",
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index 67837e8e89bef..aacd931c1cdf2 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index 6d3f601824fae..74be893e3c4f6 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json
index 231c59c5051c8..ba37cd5797eb7 100644
--- a/api_docs/data_search.devdocs.json
+++ b/api_docs/data_search.devdocs.json
@@ -497,7 +497,15 @@
                 "section": "def-common.IEsSearchRequest",
                 "text": "IEsSearchRequest"
               },
-              ", SearchStrategyResponse extends ",
+              "<",
+              {
+                "pluginId": "data",
+                "scope": "common",
+                "docId": "kibDataSearchPluginApi",
+                "section": "def-common.ISearchRequestParams",
+                "text": "ISearchRequestParams"
+              },
+              ">, SearchStrategyResponse extends ",
               {
                 "pluginId": "data",
                 "scope": "common",
@@ -27595,7 +27603,7 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          " extends ",
+          "<T> extends ",
           {
             "pluginId": "data",
             "scope": "common",
@@ -27603,15 +27611,7 @@
             "section": "def-common.IKibanaSearchRequest",
             "text": "IKibanaSearchRequest"
           },
-          "<",
-          {
-            "pluginId": "data",
-            "scope": "common",
-            "docId": "kibDataSearchPluginApi",
-            "section": "def-common.ISearchRequestParams",
-            "text": "ISearchRequestParams"
-          },
-          ">"
+          "<T>"
         ],
         "path": "src/plugins/data/common/search/strategies/es_search/types.ts",
         "deprecated": false,
@@ -28084,7 +28084,15 @@
                 "section": "def-common.IEsSearchRequest",
                 "text": "IEsSearchRequest"
               },
-              ", SearchStrategyResponse extends ",
+              "<",
+              {
+                "pluginId": "data",
+                "scope": "common",
+                "docId": "kibDataSearchPluginApi",
+                "section": "def-common.ISearchRequestParams",
+                "text": "ISearchRequestParams"
+              },
+              ">, SearchStrategyResponse extends ",
               {
                 "pluginId": "data",
                 "scope": "common",
@@ -30034,7 +30042,15 @@
                 "section": "def-common.IEsSearchRequest",
                 "text": "IEsSearchRequest"
               },
-              ", SearchStrategyResponse extends ",
+              "<",
+              {
+                "pluginId": "data",
+                "scope": "common",
+                "docId": "kibDataSearchPluginApi",
+                "section": "def-common.ISearchRequestParams",
+                "text": "ISearchRequestParams"
+              },
+              ">, SearchStrategyResponse extends ",
               {
                 "pluginId": "data",
                 "scope": "common",
@@ -34106,7 +34122,15 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          ", SearchStrategyResponse extends ",
+          "<",
+          {
+            "pluginId": "data",
+            "scope": "common",
+            "docId": "kibDataSearchPluginApi",
+            "section": "def-common.ISearchRequestParams",
+            "text": "ISearchRequestParams"
+          },
+          ">, SearchStrategyResponse extends ",
           {
             "pluginId": "data",
             "scope": "common",
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index 44d105910a231..b14b1fae66774 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index ad68e4efd36b6..e783124a1e176 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index 78443ee9661b8..fff017ba5e85b 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index ef6968f88252e..08e446a0c62c9 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index b7ab9bebaefdc..4822c34a3d2c1 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index a99330414e810..c59abbd3fe7a3 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/dataset_quality.devdocs.json b/api_docs/dataset_quality.devdocs.json
new file mode 100644
index 0000000000000..d1a6ce1df8d6d
--- /dev/null
+++ b/api_docs/dataset_quality.devdocs.json
@@ -0,0 +1,69 @@
+{
+  "id": "datasetQuality",
+  "client": {
+    "classes": [],
+    "functions": [],
+    "interfaces": [],
+    "enums": [],
+    "misc": [],
+    "objects": [],
+    "setup": {
+      "parentPluginId": "datasetQuality",
+      "id": "def-public.DatasetQualityPluginSetup",
+      "type": "Interface",
+      "tags": [],
+      "label": "DatasetQualityPluginSetup",
+      "description": [],
+      "path": "x-pack/plugins/dataset_quality/public/types.ts",
+      "deprecated": false,
+      "trackAdoption": false,
+      "children": [],
+      "lifecycle": "setup",
+      "initialIsOpen": true
+    },
+    "start": {
+      "parentPluginId": "datasetQuality",
+      "id": "def-public.DatasetQualityPluginStart",
+      "type": "Interface",
+      "tags": [],
+      "label": "DatasetQualityPluginStart",
+      "description": [],
+      "path": "x-pack/plugins/dataset_quality/public/types.ts",
+      "deprecated": false,
+      "trackAdoption": false,
+      "children": [],
+      "lifecycle": "start",
+      "initialIsOpen": true
+    }
+  },
+  "server": {
+    "classes": [],
+    "functions": [],
+    "interfaces": [],
+    "enums": [],
+    "misc": [],
+    "objects": []
+  },
+  "common": {
+    "classes": [],
+    "functions": [],
+    "interfaces": [
+      {
+        "parentPluginId": "datasetQuality",
+        "id": "def-common.DatasetQualityConfig",
+        "type": "Interface",
+        "tags": [],
+        "label": "DatasetQualityConfig",
+        "description": [],
+        "path": "x-pack/plugins/dataset_quality/common/plugin_config.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [],
+        "initialIsOpen": false
+      }
+    ],
+    "enums": [],
+    "misc": [],
+    "objects": []
+  }
+}
\ No newline at end of file
diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx
new file mode 100644
index 0000000000000..585e3f4af50de
--- /dev/null
+++ b/api_docs/dataset_quality.mdx
@@ -0,0 +1,38 @@
+---
+####
+#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system.
+#### Reach out in #docs-engineering for more info.
+####
+id: kibDatasetQualityPluginApi
+slug: /kibana-dev-docs/api/datasetQuality
+title: "datasetQuality"
+image: https://source.unsplash.com/400x175/?github
+description: API docs for the datasetQuality plugin
+date: 2023-11-11
+tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality']
+---
+import datasetQualityObj from './dataset_quality.devdocs.json';
+
+This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have.
+
+Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) for questions regarding this plugin.
+
+**Code health stats**
+
+| Public API count  | Any count | Items lacking comments | Missing exports |
+|-------------------|-----------|------------------------|-----------------|
+| 3 | 0 | 3 | 0 |
+
+## Client
+
+### Setup
+<DocDefinitionList data={[datasetQualityObj.client.setup]}/>
+
+### Start
+<DocDefinitionList data={[datasetQualityObj.client.start]}/>
+
+## Common
+
+### Interfaces
+<DocDefinitionList data={datasetQualityObj.common.interfaces}/>
+
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 540826fdd6105..1e0be76707763 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index 040f6fbead292..2e5732b1ac634 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index 763c598f167b7..eeb65bd054461 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index fcd8246f50352..9cb1f4c4e5fd6 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 7399ac8d10609..72e14f05454b2 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index 2560ceff5721a..f8c7643c44551 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index 4406ce8e35431..a9a26e908a939 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index 389118ca73ba8..aea2b81b8fb59 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 69ff45a1b76f4..0dba942af27ec 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 3814474a19718..394ca70793c5b 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index 683f865c62335..f4169030d3250 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index d4ead5258f45c..eaf7c20b72b70 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index b778008638278..a11bc5628abc4 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index cb2c5f6afd86b..4c44550e090a2 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 67a44e81e21a6..4b42e52721c88 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index 215034cef5227..7fd7a075d93c9 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index 275cde683ddb8..0c73d2a28e9e3 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index 4826fc43a0cb1..c8849cdd60c16 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index 73f21468f7967..db6d163730391 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index fbe776832cee1..d13fe297cfa21 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index 7df7e492abf66..34877d4c59de9 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index d65cad5852ba5..ffd28002705cd 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index eb996bf5f6dbb..2ec738b293474 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index b20e31573ce0f..65ebf4f31808b 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index 6a35064c2b9e0..df1d3ae93e5a2 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index b3bd8d94787b2..8725508856032 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index bb7d4e54b665a..8f00418cf826b 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index ce33700ad9eae..4cee2a27cdb0c 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 2abc263bab12a..7df7360570d7c 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index 3bfc54bff9421..9610dd8033f67 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index c098590e8f3aa..72e0435996146 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index 940bf4813eb0f..efb0db907e4ac 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index 1acfc95029346..f87444839b0ca 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index bf46c5e775d3b..ed298927a7f6b 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json
index e361a3c2a6336..12fa5d46818a4 100644
--- a/api_docs/files.devdocs.json
+++ b/api_docs/files.devdocs.json
@@ -6245,6 +6245,22 @@
             "path": "src/plugins/files/common/types.ts",
             "deprecated": false,
             "trackAdoption": false
+          },
+          {
+            "parentPluginId": "files",
+            "id": "def-common.FileKind.hashes",
+            "type": "Array",
+            "tags": [],
+            "label": "hashes",
+            "description": [
+              "\nA list of hashes to compute for this file kind. The hashes will be computed\nduring the file upload process and stored in the file metadata."
+            ],
+            "signature": [
+              "(\"sha256\" | \"md5\" | \"sha1\" | \"sha512\")[] | undefined"
+            ],
+            "path": "src/plugins/files/common/types.ts",
+            "deprecated": false,
+            "trackAdoption": false
           }
         ],
         "initialIsOpen": false
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index cc2a4f021dc33..cd66cf4d216ca 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 239 | 0 | 24 | 9 |
+| 240 | 0 | 24 | 9 |
 
 ## Client
 
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index e5e76deedd669..dff5d717079f1 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index 76ace056690af..d80cb059531bc 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 8b01ecbd24e89..3848c9d6d01a3 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index 8a8529e5ac1d2..d272ef17e2a31 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index 92a80f07a1cbf..57b1f31f07139 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 2b3334256a6a6..5eee7b1e65e24 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index bcf41cc278360..86761fe3df5d3 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.devdocs.json b/api_docs/index_management.devdocs.json
index b5ba6df118a22..f3af751475dc7 100644
--- a/api_docs/index_management.devdocs.json
+++ b/api_docs/index_management.devdocs.json
@@ -388,6 +388,34 @@
           }
         ],
         "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "indexManagement",
+        "id": "def-public.IndexManagementPluginStart",
+        "type": "Interface",
+        "tags": [],
+        "label": "IndexManagementPluginStart",
+        "description": [],
+        "path": "x-pack/plugins/index_management/public/types.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-public.IndexManagementPluginStart.extensionsService",
+            "type": "Object",
+            "tags": [],
+            "label": "extensionsService",
+            "description": [],
+            "signature": [
+              "ExtensionsSetup"
+            ],
+            "path": "x-pack/plugins/index_management/public/types.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
       }
     ],
     "enums": [],
@@ -1298,7 +1326,9 @@
                 "section": "def-common.Mappings",
                 "text": "Mappings"
               },
-              " | undefined; }"
+              " | undefined; lifecycle?: (",
+              "IndicesDataLifecycleWithRollover",
+              " & { enabled?: boolean | undefined; }) | undefined; }"
             ],
             "path": "x-pack/plugins/index_management/common/types/component_templates.ts",
             "deprecated": false,
@@ -1331,6 +1361,94 @@
             "path": "x-pack/plugins/index_management/common/types/component_templates.ts",
             "deprecated": false,
             "trackAdoption": false
+          },
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.ComponentTemplateSerialized.lifecycle",
+            "type": "Object",
+            "tags": [],
+            "label": "lifecycle",
+            "description": [],
+            "signature": [
+              {
+                "pluginId": "indexManagement",
+                "scope": "common",
+                "docId": "kibIndexManagementPluginApi",
+                "section": "def-common.DataRetention",
+                "text": "DataRetention"
+              },
+              " | undefined"
+            ],
+            "path": "x-pack/plugins/index_management/common/types/component_templates.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "indexManagement",
+        "id": "def-common.DataRetention",
+        "type": "Interface",
+        "tags": [],
+        "label": "DataRetention",
+        "description": [],
+        "path": "x-pack/plugins/index_management/common/types/data_streams.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.DataRetention.enabled",
+            "type": "boolean",
+            "tags": [],
+            "label": "enabled",
+            "description": [],
+            "path": "x-pack/plugins/index_management/common/types/data_streams.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.DataRetention.infiniteDataRetention",
+            "type": "CompoundType",
+            "tags": [],
+            "label": "infiniteDataRetention",
+            "description": [],
+            "signature": [
+              "boolean | undefined"
+            ],
+            "path": "x-pack/plugins/index_management/common/types/data_streams.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.DataRetention.value",
+            "type": "number",
+            "tags": [],
+            "label": "value",
+            "description": [],
+            "signature": [
+              "number | undefined"
+            ],
+            "path": "x-pack/plugins/index_management/common/types/data_streams.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.DataRetention.unit",
+            "type": "string",
+            "tags": [],
+            "label": "unit",
+            "description": [],
+            "signature": [
+              "string | undefined"
+            ],
+            "path": "x-pack/plugins/index_management/common/types/data_streams.ts",
+            "deprecated": false,
+            "trackAdoption": false
           }
         ],
         "initialIsOpen": false
@@ -2543,6 +2661,27 @@
             "deprecated": false,
             "trackAdoption": false
           },
+          {
+            "parentPluginId": "indexManagement",
+            "id": "def-common.TemplateDeserialized.lifecycle",
+            "type": "Object",
+            "tags": [],
+            "label": "lifecycle",
+            "description": [],
+            "signature": [
+              {
+                "pluginId": "indexManagement",
+                "scope": "common",
+                "docId": "kibIndexManagementPluginApi",
+                "section": "def-common.DataRetention",
+                "text": "DataRetention"
+              },
+              " | undefined"
+            ],
+            "path": "x-pack/plugins/index_management/common/types/templates.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
           {
             "parentPluginId": "indexManagement",
             "id": "def-common.TemplateDeserialized.composedOf",
@@ -2936,7 +3075,9 @@
                 "section": "def-common.Mappings",
                 "text": "Mappings"
               },
-              " | undefined; } | undefined"
+              " | undefined; lifecycle?: (",
+              "IndicesDataLifecycleWithRollover",
+              " & { enabled?: boolean | undefined; }) | undefined; } | undefined"
             ],
             "path": "x-pack/plugins/index_management/common/types/templates.ts",
             "deprecated": false,
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index 663fa0cd35267..24c19929110b1 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/platform-deployment-management](https://github.com/orgs/elasti
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 206 | 0 | 201 | 4 |
+| 215 | 0 | 210 | 4 |
 
 ## Client
 
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 8a9e88cf2db65..60bb21608e220 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index 0b1e5ae24f771..f28b67a8ed218 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index 4c43e51e2d2ce..36b3c13ff5b18 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index 8febe841d8e0c..93a61ff576261 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index 94e5c48c4496c..f612236151188 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index 5349f3af5fc60..26002f3e49e4e 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index 39ef4801b139c..936ee2439a7e3 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index decbf54016491..40e91f8f0eadb 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index a5d117d572322..43312a9df46de 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index ebbdbca8a9aaa..da725deac1eb8 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index 0b7dd80b3b3a9..6c185e1669e8b 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index 7683e2bcb0267..8c4fc58836597 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index 09c2b17d706d9..bd002bc6023ef 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index b4541ac4a4ad9..c39eba7aae3cf 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index a40c3f4219596..cfcb6ddaf4de5 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index ca5f113a75fab..6afec0e1a6bf1 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index 2df958d49823a..f106b8c90737d 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index de4b1ddda4dd5..2bb73953496df 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index b589198be82c3..335b3c03f8c19 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index 0b9ee3691bb01..0b6b26f8acbe6 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index 774ed2b89f517..02e26f02c079e 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index db125a6ec32dd..b16c356f03215 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 265aef6cd1063..8438838328f3b 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index f7bff70376d92..19f7978ae86c8 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 9b3ade541eba7..c7989a1feaef5 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index eb5afd131b328..7a0c2dce512ee 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index da16197e01961..60a4046e796bf 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 683d382f170e7..890ff3930fb63 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index 7e4341104281c..a5395e978e437 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index 99384e0790712..bb4798d4176c7 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 35ad1eedf78c0..13e5e17904d86 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index 9e51888259b4f..cfb154c4c634e 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index 4f8985db93a7f..3830c1f264dcd 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index eff87cb5f2844..f3cc8bdd1fd6b 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index cbd8024253a41..003b6c7127d8a 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index 1a35d390f9a61..44cdf7220a957 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index e6c1a5458e2b5..ac3239979696b 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index ec4e5269bcf64..d24f6bbe20c37 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index b10cae22d456a..c6fb35a28699b 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 1469e133d487b..7b6269b24cb02 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index f712106cf8f09..325a0c5fc1a3c 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index 6d359fc8194b8..fc836cfbf6900 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index d3d0d35c6e692..589568cbf5cb1 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index d35a823e2c64e..d47ccf36301aa 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 9512f6077cc79..845defb67875c 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index f968a4405c741..7903d094a0b6d 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index cbcf773c9d7bb..9ff19d8dba7a9 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 20baf5fda9507..0da30ad69c143 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index 9e7dcdcc5b9db..7847853a7861c 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index b74d90504b20c..b16a7be370040 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index 8b2967a3980ff..ccd08428930cb 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index 738471d252a26..81ccad3eed414 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index 1c90a4d719469..a0dc055f56473 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index c65cf3f6c3ace..7999884ff9e3d 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index 91d45dcd403bd..4c67a8f23bb8c 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index aad01347e34dd..1555783986c83 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index 346f7ae0cdf13..01bf6514d3056 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index 4b66e271eb6e9..2901c4a7ccd82 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index 8c67aaf07c0c2..5b52e2b39f387 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index 0cc75d1b69d90..74be68213c826 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index 820464c9b28aa..1e5db1a11bda3 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index 89a72cbb0cfa8..896d389e9ac23 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index 0fa1b61f658da..b73c6ae6cce29 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index aaab43682fe35..8797a5c906040 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 68a60606dcd27..9ad20671a1e95 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 44cc5278fd53b..340ff932f603d 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index 3608be1d96e46..ae291a272225b 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index 9997ac0c27a7c..2d27d504231e4 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index 394ac4e44941d..21f1dfd9a6c45 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index 30ee602f5fd7b..a3e836577fd01 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 2202c66110f4c..768c705dc15ff 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index e6b20f63b2074..931f1f371cc08 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index 78ad726dad015..9341c24b99aac 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index 2af0d1fde963c..80ab78d2e62ff 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index bf788ba7abf12..5c53af75bf8dc 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index 464fb71e20fe8..f80d738074551 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index 3f7a9d7414ed7..a3e1b8cd8b5f7 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index b045cd749cabb..7c297dfcb2733 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index 0be92f2766113..c686e3af93d01 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index f4774a5a75447..221cc6a874034 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index 3d93b32ce0017..a9eb48e165d07 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index d0c3624f10f6a..564e890b404a1 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 9d7fb20dc9e27..9e0659c9d9868 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index ca3a588fff62a..79989df639fc6 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index 0315f579853c6..0d399eb5615d3 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index 2c48581f0b683..adbd1853147f6 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 109b228419c35..4f3c87e71d3e4 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index f46045bcdf1aa..a2936d99fa337 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index ed746cb511d11..88af1943497a7 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index a280d52377d60..cfc4c155dc011 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index 1e527a1aa7a94..1149e6e8070a1 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index 0d3e541882929..d0b3af0c3c3a5 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index 6b74411a76b27..a76fe8ae1d180 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 47ab866be2215..dc8a89e4fe94d 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index 2cafb5f2afa49..eda03f3aa7471 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index 92637b63638df..19a8036aff2fb 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index 636d191bd921d..ffa5d2341107f 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index 4abfa985ba28e..78ffde8e65535 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index 958c1086e2672..6c0e4c880bdde 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index fd5258e49d831..7680b750abbb1 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index 788743a3aedd4..06b4723edcccf 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index 2bfde8199d4af..9343ed35beb82 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index 14e0ba6c45aae..55ba149693f36 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index 67cf62397ce85..9ee9e842efe21 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index 4d5ad2996daf2..c2150b69bb4e3 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index 753a7d5f550df..bd898389c4a80 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index 8ccbc2e1c91f7..d8241e20afd5d 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index c9d6ae227fb9c..9fafeace0f8e5 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index c5166c225b4b0..fcca41ba06b3a 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index a2c5bb67042a2..6d593a60f9fda 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index dd9452034c3bb..608a505abb866 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index a8db8d4b21063..dc6bb558b02df 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index 4e787a04108be..a10ba94d123bd 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 467a4d2d7775b..888c307014f2b 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index f1956673ae7dd..8cc486d4c1635 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index fb3584a8f3fd3..658a1f94e52af 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 1bffca1a004ab..80351d125860c 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index 2b66e8eea0274..0e7926ea70924 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index f5623c603bd32..e0e007e6b1c2d 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index 502f2a91308d0..2970f66ef2f72 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index 2b71abfc1ea8a..f0df954c6893d 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 9ca5ba14fbd83..c686f24b938e3 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index e1df7f4daea4b..a827b98e94b73 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index b82e8a97c2d3a..549c23e18bc38 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index df33f5414b56c..d2a7ed1a7851b 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index 2719840e0362d..4e77703e67f0f 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index 65c9b911db15a..da522767dbe94 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index 2e1b08ebff16d..0c55de784187e 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index 9381b0609991f..1409d54d45764 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index 0ed40f70fa83d..e426022478a35 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index f2b43f07cf11a..5dad708544cc2 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index c184d56ab961f..ddbc6f2761354 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index e690a1a81c64e..f17d033280a3a 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index 57cfb003b4051..bbd200681025e 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index 037f00fc1f2d4..9a4836eeb27bd 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index e95d84d0fd7b1..79a5c6cdfb1ad 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index b59392aaeab6d..32461a4e233df 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index 356d844323c81..fef2578960acf 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index 6ee83a5d07fc1..24946b8bf3d7a 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index b9eda3aeff037..cbd347edc2ea2 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index 304696001866f..ca4c6b3704567 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 085e40c56353a..a954539f604dc 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 3dd4adf128eb0..47024e2b2a142 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index 8208fd34bcb45..716882fa0db86 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index 1602a02dcea98..04a265beea117 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index 46a90d1cfcb72..a842aea4a47fa 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index a967dab339293..a94a612bc3e22 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index 90d1e2f22fe49..1f17474b01a7b 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index dd5d2d6b365bc..bce17abb14460 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index f0978ccf5b1ea..555bc03aa9c85 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index afdb69e301635..4d4fb99028a8e 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 06b9e164301cb..0348639e82656 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index 588f6037cd1c6..71c7760840502 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 77eea817ce0c5..6440b28efd900 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 8513fdbbcad6e..68c9c2b8db5b1 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index e2bedb048a9f8..c81c841ac1c38 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index 181855a71a163..abced9e7849e3 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index bb591388bd00b..cebbbff02c176 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index 8c8a4b5806f76..b33e002ed1c4c 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 32ed91ad28a58..785dcf609e419 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index 658783e787c8f..27690726ed14d 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index c4ea045c5d3ee..8366aadb3553c 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 42c46012ed39d..0590349cfb5a4 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index a9c52995de521..d5a6ab97b525c 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index 8c2d3b9195109..fe63dd555bc9c 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index c37f9837a5166..a6fd72dac26d6 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index 5d8322dd56ccc..27eea61b4dfee 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index 3ffd7a95e8d43..38b741ab2edf6 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 912efca92b422..8bec255a5335a 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index d6ac3fd90180a..3b9f46139b025 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index 1d08581d41ead..1fcbd7c700c7c 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index c56345a83ea35..114e05565c196 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index 48b5572776339..cd62b723a061b 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index abe953e28d4a0..10b3414582ae1 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index 23392fefa6849..c06d018a39002 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index 74130005e0b64..309e6d2079f76 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 2405cae42ef0c..255e636f9e476 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 9a830bc84f884..5676e83f7a75b 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index c44712e5ae99a..442f726196996 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index d57a951dc1236..d97690ec056f1 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 370cc73d276c0..8943c9b465bd8 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index e6b5c40790fcb..31a4d9cb74856 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index cb5f59e90c280..560db706a1f7b 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index e818714e9c4f0..7462e8128ba94 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index cb33695a1bf1b..01225ad841ffd 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index 3eb2726ff8dff..b42dbc7985543 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 0f9136192ab62..32641b6ae27ab 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index ff557a6ee5c84..92932afe5dc75 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index 2437e23b3b063..cb7e8075e5aca 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index 589502a6c70fb..0fce60357fe36 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index 695476f91b912..41392b307d134 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index b4c5a99ac8c7c..99a342d15c71a 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index 81e05e971d7b9..c99731bca3c7e 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index 0aaf205f33fbd..f9a4fb43047d5 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index f325a7cd1500f..7941a640f2e40 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index 65f3204acdfcb..21501d8040dc7 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index 036325e5cc1fe..ef5e595f3f2bc 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index c5c0450197241..729740b85cf86 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 8c6fa7792422a..57b4b61cfa412 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 3557220b3b2a6..eabaa8b0b99f1 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index 6790f3501e4ad..f626da347e705 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 14801203ee2e8..4b4248ac1b13e 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 806ddd39465f0..8ff084e90dc03 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index 7cf005cbc2809..c032e5584e13c 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index 563687e0ec1ed..9a95294e14a43 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index 45c0fa05d081c..94b8c2095aecd 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index f804a844ff8e1..076bc3aa9280d 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 4f92dbe05e00b..abbb8b85e92b4 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 7c1d93f0b18f8..5aa7d7c068e1a 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index b942771d9a391..4263db1070ea6 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index 968890a199026..9019c7e6e4d3b 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index bf90f6f8018c1..50ac1c1c8d888 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index 55cdf9fb776c7..7d810a4af1ae1 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index 05484e1161112..6e6224cd2c152 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index a45fdbc62116c..bcee903f9d31c 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index c70a020354634..34072a70afce6 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index 6516a520cf45b..33455d8393491 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index 422ea43ace47c..e2c8caa66d904 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 8a1e67a87ccd6..2a55e3fd27008 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index 9f15d474a0cb7..7a49dcf6ba60b 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index d132a523f673e..d79c7dde0820b 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index 1435adc05aa9a..4be92e6f4d299 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index cf006d20f611a..2629a7c578ea5 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 1dd79a773c680..9b75de4308fa9 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index ac42a93c6248f..7e88120344856 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 655633477010a..8d8c9273fd09e 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 8c64e7d276b93..7b59331bd008d 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index 9b6899d046e79..10ea87f86790f 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index cfde8f5132094..0f0d45c5747ef 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index ee15d944ea53f..9ec61c28de630 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index a54cfc339e5e1..5f92747edbe09 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index 2b438ddf0fc73..d69a0d90f022a 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 7ac64671251ed..3dc0b93f5655e 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index 98447ee7d00e8..ab7b8c9819f25 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index d9d7f28c77183..618c1b514d7a6 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 282dcd8a40ce0..86f096f72cc9e 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 444f905a6ad60..ad49831154d87 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index 4af2dd125e418..af209c8714a1c 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index 677aeb3cda9a9..0f0e4825c5b7d 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index 938d20fe119a1..ab43e8f15eb16 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 5802e421aab20..2e47b10e55f82 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index cc00c519f6843..78f6b8e68d7ba 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 1f6af6e0ce386..01fa286e3bd7a 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index a4127854b3fc9..ea4a3c872ec1c 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 7ca43517a7058..28ec4317effd6 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index 4d30fb27efc6f..1cf22ca8087e7 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index c274bb3eb113a..27c0674b1ebc6 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index ff88c770f0a92..f03c117ac0e38 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index 73fec5b9715f9..ef9da0978181a 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index 74724f71aac4a..9768a0b86bc40 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index 316a26ab2987b..f332328824e43 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index 152f7990d01f5..b8c5343b41454 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index c8d453d363af0..f660f407f3c5e 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index c80ba436eedca..529cb63fc1640 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index f7678f9890fc6..f85b22c626c12 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index 010c1ade34cb4..df4497bdd1d7f 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index 6f153c672e7eb..8ba90f48f7276 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index 21be3675a11aa..2e645934335af 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index ef11a7da0bf96..3acf4c1eda708 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index 5de6d034f507d..e32b720fca61f 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 45dac88195793..d070eb2f99036 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 2f58d6fea986c..992ab9c69a1f7 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index d4d5fbe85d793..080dc9478cedc 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 59f4fb2b93434..3dabe53ec9e98 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 64dd616d28ddc..984a0def47d21 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index f6a0840ccf9bf..93827fe74158d 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index 68b3e804e6e35..ec4d29ff39af0 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index 1e8fb3e17c2b9..e4246475acd1a 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index f7f0e50d49260..7c48ab6974dc6 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index 634dc16c0ca57..6f55be2ee719c 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index f2c8b1117eb52..1f2839f8ee35e 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index bbaf9cfa3fd3d..8e2430f1da5b8 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 4362d975e2b02..c6551d143d600 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index e3c5f1d14528f..5ae50299bbad9 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index 32919445c9ada..c19b47f38e14b 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index 18f31e9ba6584..e71a659a39eb8 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index be0b3dc7d5831..e5585b10979ef 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index dc43329b36e4d..54161c510e5cc 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index 2393fa9c52e42..8336be94e2742 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.devdocs.json b/api_docs/kbn_ml_agg_utils.devdocs.json
index 950d7c821d368..27c02edf9fc00 100644
--- a/api_docs/kbn_ml_agg_utils.devdocs.json
+++ b/api_docs/kbn_ml_agg_utils.devdocs.json
@@ -698,12 +698,12 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.isSignificantTerm",
+        "id": "def-common.isSignificantItem",
         "type": "Function",
         "tags": [],
-        "label": "isSignificantTerm",
+        "label": "isSignificantItem",
         "description": [
-          "\nType guard for a significant term.\nNote this is used as a custom type within Log Rate Analysis\nfor a p-value based variant, not a generic significant terms\naggregation type."
+          "\nType guard for a significant item.\nNote this is used as a custom type within Log Rate Analysis\nfor a p-value based variant, not a generic significant terms\naggregation type."
         ],
         "signature": [
           "(arg: unknown) => boolean"
@@ -714,7 +714,7 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.isSignificantTerm.$1",
+            "id": "def-common.isSignificantItem.$1",
             "type": "Unknown",
             "tags": [],
             "label": "arg",
@@ -731,7 +731,7 @@
           }
         ],
         "returnComment": [
-          "whether arg is of type SignificantTerm"
+          "whether arg is of type SignificantItem"
         ],
         "initialIsOpen": false
       },
@@ -1191,23 +1191,23 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTerm",
+        "id": "def-common.SignificantItem",
         "type": "Interface",
         "tags": [
           "interface",
           "extends"
         ],
-        "label": "SignificantTerm",
+        "label": "SignificantItem",
         "description": [
-          "\nRepresents significant term metadata for a field/value pair.\nThis interface is used as a custom type within Log Rate Analysis\nfor a p-value based variant, not related to the generic\nsignificant terms aggregation type.\n"
+          "\nRepresents significant item metadata for a field/value pair.\nThis interface is used as a custom type within Log Rate Analysis\nfor a p-value based variant, not related to the generic\nsignificant terms aggregation type.\n"
         ],
         "signature": [
           {
             "pluginId": "@kbn/ml-agg-utils",
             "scope": "common",
             "docId": "kibKbnMlAggUtilsPluginApi",
-            "section": "def-common.SignificantTerm",
-            "text": "SignificantTerm"
+            "section": "def-common.SignificantItem",
+            "text": "SignificantItem"
           },
           " extends ",
           {
@@ -1224,12 +1224,12 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.key",
+            "id": "def-common.SignificantItem.key",
             "type": "string",
             "tags": [],
             "label": "key",
             "description": [
-              "The key associated with the significant term."
+              "The key associated with the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1237,12 +1237,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.type",
+            "id": "def-common.SignificantItem.type",
             "type": "CompoundType",
             "tags": [],
             "label": "type",
             "description": [
-              "The type of the significant term."
+              "The type of the significant item."
             ],
             "signature": [
               "\"keyword\" | \"log_pattern\""
@@ -1253,12 +1253,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.doc_count",
+            "id": "def-common.SignificantItem.doc_count",
             "type": "number",
             "tags": [],
             "label": "doc_count",
             "description": [
-              "The document count for the significant term."
+              "The document count for the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1266,12 +1266,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.bg_count",
+            "id": "def-common.SignificantItem.bg_count",
             "type": "number",
             "tags": [],
             "label": "bg_count",
             "description": [
-              "The background count for the significant term."
+              "The background count for the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1279,12 +1279,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.total_doc_count",
+            "id": "def-common.SignificantItem.total_doc_count",
             "type": "number",
             "tags": [],
             "label": "total_doc_count",
             "description": [
-              "The total document count for all terms."
+              "The total document count for all items."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1292,12 +1292,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.total_bg_count",
+            "id": "def-common.SignificantItem.total_bg_count",
             "type": "number",
             "tags": [],
             "label": "total_bg_count",
             "description": [
-              "The total background count for all terms."
+              "The total background count for all items."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1305,12 +1305,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.score",
+            "id": "def-common.SignificantItem.score",
             "type": "number",
             "tags": [],
             "label": "score",
             "description": [
-              "The score associated with the significant term."
+              "The score associated with the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1318,12 +1318,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.pValue",
+            "id": "def-common.SignificantItem.pValue",
             "type": "CompoundType",
             "tags": [],
             "label": "pValue",
             "description": [
-              "The p-value for the significant term, or null if not available."
+              "The p-value for the significant item, or null if not available."
             ],
             "signature": [
               "number | null"
@@ -1334,12 +1334,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.normalizedScore",
+            "id": "def-common.SignificantItem.normalizedScore",
             "type": "number",
             "tags": [],
             "label": "normalizedScore",
             "description": [
-              "The normalized score for the significant term."
+              "The normalized score for the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1347,20 +1347,20 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.histogram",
+            "id": "def-common.SignificantItem.histogram",
             "type": "Array",
             "tags": [],
             "label": "histogram",
             "description": [
-              "An optional histogram of significant term items."
+              "An optional histogram for the significant item."
             ],
             "signature": [
               {
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermHistogramItem",
-                "text": "SignificantTermHistogramItem"
+                "section": "def-common.SignificantItemHistogramItem",
+                "text": "SignificantItemHistogramItem"
               },
               "[] | undefined"
             ],
@@ -1370,12 +1370,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTerm.unique",
+            "id": "def-common.SignificantItem.unique",
             "type": "CompoundType",
             "tags": [],
             "label": "unique",
             "description": [
-              "Indicates if the significant term is unique within a group."
+              "Indicates if the significant item is unique within a group."
             ],
             "signature": [
               "boolean | undefined"
@@ -1389,14 +1389,14 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermGroup",
+        "id": "def-common.SignificantItemGroup",
         "type": "Interface",
         "tags": [
           "interface"
         ],
-        "label": "SignificantTermGroup",
+        "label": "SignificantItemGroup",
         "description": [
-          "\nRepresents a significant term group."
+          "\nRepresents a significant item group."
         ],
         "path": "x-pack/packages/ml/agg_utils/src/types.ts",
         "deprecated": false,
@@ -1404,7 +1404,7 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroup.id",
+            "id": "def-common.SignificantItemGroup.id",
             "type": "string",
             "tags": [],
             "label": "id",
@@ -1417,20 +1417,20 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroup.group",
+            "id": "def-common.SignificantItemGroup.group",
             "type": "Array",
             "tags": [],
             "label": "group",
             "description": [
-              "An array of significant term group items."
+              "An array of significant item group items."
             ],
             "signature": [
               {
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermGroupItem",
-                "text": "SignificantTermGroupItem"
+                "section": "def-common.SignificantItemGroupItem",
+                "text": "SignificantItemGroupItem"
               },
               "[]"
             ],
@@ -1440,7 +1440,7 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroup.docCount",
+            "id": "def-common.SignificantItemGroup.docCount",
             "type": "number",
             "tags": [],
             "label": "docCount",
@@ -1453,7 +1453,7 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroup.pValue",
+            "id": "def-common.SignificantItemGroup.pValue",
             "type": "CompoundType",
             "tags": [],
             "label": "pValue",
@@ -1469,20 +1469,20 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroup.histogram",
+            "id": "def-common.SignificantItemGroup.histogram",
             "type": "Array",
             "tags": [],
             "label": "histogram",
             "description": [
-              "An optional array of significant term histogram items."
+              "An optional array of significant item histogram items."
             ],
             "signature": [
               {
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermHistogramItem",
-                "text": "SignificantTermHistogramItem"
+                "section": "def-common.SignificantItemHistogramItem",
+                "text": "SignificantItemHistogramItem"
               },
               "[] | undefined"
             ],
@@ -1495,12 +1495,12 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermGroupHistogram",
+        "id": "def-common.SignificantItemGroupHistogram",
         "type": "Interface",
         "tags": [
           "interface"
         ],
-        "label": "SignificantTermGroupHistogram",
+        "label": "SignificantItemGroupHistogram",
         "description": [
           "\nRepresents histogram data for a group of field/value pairs."
         ],
@@ -1510,7 +1510,7 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupHistogram.id",
+            "id": "def-common.SignificantItemGroupHistogram.id",
             "type": "string",
             "tags": [],
             "label": "id",
@@ -1523,20 +1523,20 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupHistogram.histogram",
+            "id": "def-common.SignificantItemGroupHistogram.histogram",
             "type": "Array",
             "tags": [],
             "label": "histogram",
             "description": [
-              "An array of significant term histogram items."
+              "An array of significant item histogram items."
             ],
             "signature": [
               {
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermHistogramItem",
-                "text": "SignificantTermHistogramItem"
+                "section": "def-common.SignificantItemHistogramItem",
+                "text": "SignificantItemHistogramItem"
               },
               "[]"
             ],
@@ -1549,22 +1549,22 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermGroupItem",
+        "id": "def-common.SignificantItemGroupItem",
         "type": "Interface",
         "tags": [
           "interface"
         ],
-        "label": "SignificantTermGroupItem",
+        "label": "SignificantItemGroupItem",
         "description": [
-          "\nRepresents an item in a significant term group."
+          "\nRepresents an item in a significant item group."
         ],
         "signature": [
           {
             "pluginId": "@kbn/ml-agg-utils",
             "scope": "common",
             "docId": "kibKbnMlAggUtilsPluginApi",
-            "section": "def-common.SignificantTermGroupItem",
-            "text": "SignificantTermGroupItem"
+            "section": "def-common.SignificantItemGroupItem",
+            "text": "SignificantItemGroupItem"
           },
           " extends ",
           {
@@ -1581,12 +1581,12 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupItem.key",
+            "id": "def-common.SignificantItemGroupItem.key",
             "type": "string",
             "tags": [],
             "label": "key",
             "description": [
-              "The key associated with the significant term."
+              "The key associated with the significant item."
             ],
             "path": "x-pack/packages/ml/agg_utils/src/types.ts",
             "deprecated": false,
@@ -1594,12 +1594,12 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupItem.type",
+            "id": "def-common.SignificantItemGroupItem.type",
             "type": "CompoundType",
             "tags": [],
             "label": "type",
             "description": [
-              "The type of the significant term."
+              "The type of the significant item."
             ],
             "signature": [
               "\"keyword\" | \"log_pattern\""
@@ -1610,7 +1610,7 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupItem.docCount",
+            "id": "def-common.SignificantItemGroupItem.docCount",
             "type": "number",
             "tags": [],
             "label": "docCount",
@@ -1623,7 +1623,7 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupItem.pValue",
+            "id": "def-common.SignificantItemGroupItem.pValue",
             "type": "CompoundType",
             "tags": [],
             "label": "pValue",
@@ -1639,7 +1639,7 @@
           },
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermGroupItem.duplicate",
+            "id": "def-common.SignificantItemGroupItem.duplicate",
             "type": "number",
             "tags": [],
             "label": "duplicate",
@@ -1658,12 +1658,12 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermHistogram",
+        "id": "def-common.SignificantItemHistogram",
         "type": "Interface",
         "tags": [
           "interface"
         ],
-        "label": "SignificantTermHistogram",
+        "label": "SignificantItemHistogram",
         "description": [
           "\nRepresents histogram data for a field/value pair."
         ],
@@ -1672,8 +1672,8 @@
             "pluginId": "@kbn/ml-agg-utils",
             "scope": "common",
             "docId": "kibKbnMlAggUtilsPluginApi",
-            "section": "def-common.SignificantTermHistogram",
-            "text": "SignificantTermHistogram"
+            "section": "def-common.SignificantItemHistogram",
+            "text": "SignificantItemHistogram"
           },
           " extends ",
           {
@@ -1690,20 +1690,20 @@
         "children": [
           {
             "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermHistogram.histogram",
+            "id": "def-common.SignificantItemHistogram.histogram",
             "type": "Array",
             "tags": [],
             "label": "histogram",
             "description": [
-              "An array of significant term histogram items."
+              "An array of significant item histogram items."
             ],
             "signature": [
               {
                 "pluginId": "@kbn/ml-agg-utils",
                 "scope": "common",
                 "docId": "kibKbnMlAggUtilsPluginApi",
-                "section": "def-common.SignificantTermHistogramItem",
-                "text": "SignificantTermHistogramItem"
+                "section": "def-common.SignificantItemHistogramItem",
+                "text": "SignificantItemHistogramItem"
               },
               "[]"
             ],
@@ -1713,76 +1713,6 @@
           }
         ],
         "initialIsOpen": false
-      },
-      {
-        "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermHistogramItem",
-        "type": "Interface",
-        "tags": [
-          "interface"
-        ],
-        "label": "SignificantTermHistogramItem",
-        "description": [
-          "\nRepresents a data item in a significant term histogram."
-        ],
-        "path": "x-pack/packages/ml/agg_utils/src/types.ts",
-        "deprecated": false,
-        "trackAdoption": false,
-        "children": [
-          {
-            "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermHistogramItem.doc_count_overall",
-            "type": "number",
-            "tags": [],
-            "label": "doc_count_overall",
-            "description": [
-              "The document count for this item in the overall context."
-            ],
-            "path": "x-pack/packages/ml/agg_utils/src/types.ts",
-            "deprecated": false,
-            "trackAdoption": false
-          },
-          {
-            "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermHistogramItem.doc_count_significant_term",
-            "type": "number",
-            "tags": [],
-            "label": "doc_count_significant_term",
-            "description": [
-              "The document count for this item in the significant term context."
-            ],
-            "path": "x-pack/packages/ml/agg_utils/src/types.ts",
-            "deprecated": false,
-            "trackAdoption": false
-          },
-          {
-            "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermHistogramItem.key",
-            "type": "number",
-            "tags": [],
-            "label": "key",
-            "description": [
-              "The numeric key associated with this item."
-            ],
-            "path": "x-pack/packages/ml/agg_utils/src/types.ts",
-            "deprecated": false,
-            "trackAdoption": false
-          },
-          {
-            "parentPluginId": "@kbn/ml-agg-utils",
-            "id": "def-common.SignificantTermHistogramItem.key_as_string",
-            "type": "string",
-            "tags": [],
-            "label": "key_as_string",
-            "description": [
-              "The string representation of the key."
-            ],
-            "path": "x-pack/packages/ml/agg_utils/src/types.ts",
-            "deprecated": false,
-            "trackAdoption": false
-          }
-        ],
-        "initialIsOpen": false
       }
     ],
     "enums": [
@@ -1871,12 +1801,29 @@
       },
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SignificantTermType",
+        "id": "def-common.SignificantItemHistogramItem",
+        "type": "Type",
+        "tags": [],
+        "label": "SignificantItemHistogramItem",
+        "description": [
+          "\nRepresents a data item in a significant term histogram."
+        ],
+        "signature": [
+          "SignificantItemHistogramItemV1 | SignificantItemHistogramItemV2"
+        ],
+        "path": "x-pack/packages/ml/agg_utils/src/types.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/ml-agg-utils",
+        "id": "def-common.SignificantItemType",
         "type": "Type",
         "tags": [],
-        "label": "SignificantTermType",
+        "label": "SignificantItemType",
         "description": [
-          "\nRepresents the type of significant term as determined by the SIGNIFICANT_TERM_TYPE enumeration."
+          "\nRepresents the type of significant item as determined by the SIGNIFICANT_ITEM_TYPE enumeration."
         ],
         "signature": [
           "\"keyword\" | \"log_pattern\""
@@ -1890,12 +1837,12 @@
     "objects": [
       {
         "parentPluginId": "@kbn/ml-agg-utils",
-        "id": "def-common.SIGNIFICANT_TERM_TYPE",
+        "id": "def-common.SIGNIFICANT_ITEM_TYPE",
         "type": "Object",
         "tags": [],
-        "label": "SIGNIFICANT_TERM_TYPE",
+        "label": "SIGNIFICANT_ITEM_TYPE",
         "description": [
-          "\nEnumeration of significant term types."
+          "\nEnumeration of significant item types."
         ],
         "signature": [
           "{ readonly KEYWORD: \"keyword\"; readonly LOG_PATTERN: \"log_pattern\"; }"
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index bd992efab920d..f8093b5d72790 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 99 | 2 | 0 | 0 |
+| 95 | 2 | 0 | 0 |
 
 ## Common
 
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 55f2e0a8ec191..9b0f32149536f 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index a8d1ad72fc615..e16fc56e220fb 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index a44266c0f9a62..5bd6546de2568 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index 1b24bb55f21a1..7857b48908d7a 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index 676f7d5cf674e..668b962e62986 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index a335e71c63b84..c301cfa4d2e0a 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index 3aaa696572ec0..64e55947f901a 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index c591337628e1e..f479565f1c2b9 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index 541335f302c89..0bc665d355ddc 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index d52bbbf3cfc6d..b9c9be79af681 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index 3a2a11db262c2..832cd109edbcb 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index 70ebaf2191303..270949d64076c 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index 16b14fc2224ec..f0794d25bb65d 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index a7229680877ce..ecf173ac1b37b 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index bac5531a272e4..159056dceed6e 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index 023a1b30198f1..c56ea6d36718f 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index 2d5dac3d22477..d6de3fa1c262a 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index ab284617e9736..3853fc76674ba 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index ca8be667ad077..afdec64a98898 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index e9aa70d134298..d59377be84002 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index dcc416aefcd29..4225cd7309c1f 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index d9326f42d3ab3..c34e66e7815c0 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 50bb7fd91029f..7583a5eb78ec8 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index adff97b496ef4..5a0529c50a454 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index 8be4d3ec13e90..5cb3c2c650ce2 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 4f4dcef65b1b0..82b65497e0b70 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index 1fb54e33a0544..52708dbd87f0f 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index fb50d3d530346..c61617e5bd890 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index 2de86998a5a02..9e843a4b98444 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index be21d9b580363..b94f022c3168e 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 31b082132154b..1e47a044daef3 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index a0adee613bde5..b5cf673fbeb56 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index 3e310269ff7a5..a282a27a299ee 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 7909bb48bfb9c..0057e9e7eeb96 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index 13b5ef7fe02b3..cb3d626a62352 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index f3a6766d9463c..b1dd13cb88dc5 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 37a673eae009e..0270b9bd05b26 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index 8ad0ff5e2160d..ca62c05bc2bad 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index f10e288cb222d..a4259c148fa20 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 73705ad455a5c..6deaa62dabb38 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index 5a1e5cf59dfb8..197970d9fdd24 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index 6672d274d7393..d7a63719658d8 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index 0d340875a75f8..792c04970dbad 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index 8856e45524404..94130801523d4 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index 67879dd6e0765..2ac9ded3c5937 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index ce39596ea601c..067a499634f0f 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index b5c319501040a..8fb665d021cf2 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index ce646a218bec6..e87709eaf0e15 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 6675f7b7a2676..9c696a07e9fd9 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index abc9f781b2569..f891b44aeb302 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.devdocs.json b/api_docs/kbn_rule_data_utils.devdocs.json
index f721e756a60e2..9cebd966126b8 100644
--- a/api_docs/kbn_rule_data_utils.devdocs.json
+++ b/api_docs/kbn_rule_data_utils.devdocs.json
@@ -1429,7 +1429,7 @@
         "label": "AlertConsumers",
         "description": [],
         "signature": [
-          "\"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
+          "\"ml\" | \"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
         ],
         "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts",
         "deprecated": false,
@@ -1744,7 +1744,7 @@
         "label": "ValidFeatureId",
         "description": [],
         "signature": [
-          "\"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
+          "\"ml\" | \"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
         ],
         "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts",
         "deprecated": false,
@@ -1793,7 +1793,7 @@
           "\nregistering a new instance of the rule data client\nin a new plugin will require updating the below data structure\nto include the index name where the alerts as data will be written to."
         ],
         "signature": [
-          "{ readonly APM: \"apm\"; readonly LOGS: \"logs\"; readonly INFRASTRUCTURE: \"infrastructure\"; readonly OBSERVABILITY: \"observability\"; readonly SLO: \"slo\"; readonly SIEM: \"siem\"; readonly UPTIME: \"uptime\"; }"
+          "{ readonly APM: \"apm\"; readonly LOGS: \"logs\"; readonly INFRASTRUCTURE: \"infrastructure\"; readonly OBSERVABILITY: \"observability\"; readonly SLO: \"slo\"; readonly SIEM: \"siem\"; readonly UPTIME: \"uptime\"; readonly ML: \"ml\"; }"
         ],
         "path": "packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts",
         "deprecated": false,
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index 57322a84712a5..dd7b513a9135d 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index f8812a5f99a07..f268e41ff83d9 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index 4d5bb7c6ee285..be8aa01ebe902 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index b54f6751fc94f..008da5f9de2b2 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index 717727a6f8aba..db550fd8b15ff 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 40f2ec9326b91..50599cb2b7639 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index f1ea786251d02..1b17cf2458969 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index f6a85eb1b22b0..26763e0e522ea 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index c2a939ccbcad7..4a2ef362fe140 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index ffdcdf056987a..6972cfe591ab6 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index 1190ca7644821..fc6bde75c9c6c 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index 0cbeffbcdff27..fb6ee13864a0b 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index 323c13e48fb53..fc0bedb802cd8 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 1c7d1357c0449..8a0f233a667e4 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index 35b71a8f9af68..2a6febfee5c32 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index 77957415ef3ed..7d7e622535d36 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index 3f48ae66fbb0e..653b35fb6e217 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index 918cb773c4e87..ef387b7ef842f 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 6e30d2c48b41e..3aadbbf59b4f8 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 246a043063f7f..aa7af580417d8 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index 4e488db5b3290..59a67e222ed08 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index 84080bd421236..2c18ae33e2261 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index 31d83b7b41778..5819fe6924a60 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 512c6a09d094b..b8f6b66ecbac3 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 719cba8a9b6d0..25ac916c83faf 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index 4e03cdf5b73c0..b28bedf4b892d 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index c8457990219b9..59a19aa118a16 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index e9b483fb89180..24398ce9d828c 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index e3b44fd839da4..1aa389af56fa1 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index db838d30b6ba3..5c0d16a9c8380 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index 819abbf3430c1..8e29e8158b961 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 25ade2bc4c5ff..c29b09a8f399d 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index 1f12da911ce27..e271f8dbee680 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index a55c03c341224..b10c5ac8e4551 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index d0a65c9583006..ba782534616f8 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index 7e629bb13419c..4c58827e27df8 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 8a53913f9f7e7..6eb2f04961423 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index d085adbf782b6..53fb2baa31cb5 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 4160c23c49864..cd902f6b53dbb 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index 2abf35b050f9d..2940527e424cf 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index 358782c8b7005..fba771c2fe60d 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index f9ecbe1644a96..660236a453a9f 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 8e4e4c25d8f09..36b94b70325f7 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index 3c539c58424ff..f983075d88ada 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index b132bde96a8e3..12248beb9deb4 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index f87049da34650..6e71d052f34b4 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index 80ab3fa803ebe..fd5839aa671ab 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index 0133656dffbad..49c5ca710db1a 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index f05164714efb5..36b7777f07ebb 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index df743198d5eeb..5cc3a99d44901 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index 2dc3ad597bde2..757a4811ecbe8 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index 533dda0f6af2d..cbe9cbeb1ebe4 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index 482c09f26df62..f7386ca4f47bb 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 13549825dc01f..7bd7b997de448 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index 6a4b750516e03..4db920ed7b332 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index 4100d9f348c0f..8f15ac6920470 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index bceeca64e0636..99fc611b16456 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index c492e180e625e..43aba49306629 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index aebc621b8120b..dcfa3651aaef7 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index 0afac69e5cc6a..e0fd4490619d4 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index cdcdf4ec9c98c..aa397a5125648 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index 0b02f9e7ba2ee..2e3a5ed8e9be0 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 052729a9704f6..e9cdc7bdf3276 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index d534d9cbce8b6..aa98bd8ff6447 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index 2fc85cb04f0e4..4436dc427b06c 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index 2865602f3f3cf..449bb4a309cc5 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index f9b1d12110871..c2db1c22b2538 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index 05246fe66de3a..375b7d66920ec 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 634779f091cb0..07e25cde374b9 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index 15cac9a77a8a0..afe3b86374796 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index 68e84be049f44..f5007b4d7cce7 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 48a8e9b21915a..21f9a2cab2679 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index 59e3d93307721..2aa5550689c41 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index cc9ffc9b40385..440605f1f4584 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index de3cbf08d0c98..177c219cfca38 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index d847191cad35b..cb2a351059cdd 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index 6ccf9c1225983..302875514521c 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index dad5ae36ef322..58b66eaa7ef86 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index d26aa25b18068..e75ad64f17b0d 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index aec338d9e3243..9318c1bd982e9 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index f135c68fd82e8..c64d3541cae75 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index f4c516a7b72c1..43b4780119fed 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index e8192760ab8c4..25a71e702baf7 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index 75a62bafb9c3c..42b6d8b33355c 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index 14dc22301d438..775d0eeb6fd6d 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index bce266d5e3d05..2e0c343d8a105 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index 9adb1fd506d4c..60c14f88a5f7c 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index 920bdacfc5822..8015022c70fd6 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index ae156a3f67df1..d75ff0227fde5 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 3aed0337f2875..1c5e0c61e7a44 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index 33e8784499ade..7f3981778e6da 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 02e6afdcfb395..57eb367704d26 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index f5e9c9d1f06bd..461616e6d47d1 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index ab60706a182c7..5c96020805e15 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index c8b7c990839ed..680016f84f6d1 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 45233fbc1cedb..af50f4ccf6d81 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index 22ca484767fad..116ec3cb2ec2d 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index 58719f00482f7..df9ea95fda5d2 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index 6646d78632b75..70c605c3826ba 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index f0758e421a49a..936b452090233 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 2ea082493eb7b..9d8395c7b3148 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index b3047a5ff7a35..555a34860d52d 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index b5c7c8d40499e..75cc4975a43c2 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 3f2411d31c72f..3caaa786d8aac 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index 2cee78c2e41e9..da808e02c1c9c 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index 22882b08c02f8..b2b439c89f804 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index 505cd1eb8ac16..a282084a3b217 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index 810752c805ff3..ef492dfe515b6 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index c2f0248c6aa2f..82ec941035493 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index b1ccd2542831f..92201504c3a33 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 4c76a1a3e2ee4..0290055d7ae93 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index 7521a9dc4ac28..4e9b16675ad9a 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index ac1a861627109..420370316fa98 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index c19ec2587da2e..5ed6e3c68fa79 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index f8dc452b80c8f..0d9d5b7f8f1fe 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index 1bcc3fe34feec..e053932b09dac 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index aa783f0036d36..bc3f006d1597b 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index f5d502d0bf5a5..b2ccc29eda9a1 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index f007519399b52..c866cba80fab7 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index 7852488e4c394..ac11013acbb37 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index 4777f154c8204..f4ec889957d94 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index 74f95298cc6d2..b5421fcb30194 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index d96d48b661d55..0372e20a79388 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index 238e7abab807a..e14e0b73884f3 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index c09b5ff9ce8ba..66f55c3a3b9e7 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index d324fbaf4638f..0cd9aa6888b30 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 9be02bb30098e..ff1cdb05f8c65 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 3628c75b6ceed..ea3f1dc1f6c0a 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index 3af073c1f66f0..d6851833b7cad 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index 156ff2060adf6..9b67ccc07ac1d 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index 395daffaed93d..1582479a963f9 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index 49b4b7060b8f7..dc6f2b76bf353 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index 48b66b1e51692..5ec672aafea6a 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index 57e905be4b5af..c8c4bfda13509 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index 898241c4b1413..f4b072bded1f6 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Count | Plugins or Packages with a <br /> public API | Number of teams |
 |--------------|----------|------------------------|
-| 700 | 592 | 41 |
+| 701 | 593 | 41 |
 
 ### Public API health stats
 
 | API Count | Any Count | Missing comments | Missing exports |
 |--------------|----------|-----------------|--------|
-| 76089 | 233 | 65049 | 1597 |
+| 76098 | 233 | 65061 | 1597 |
 
 ## Plugin Directory
 
@@ -62,6 +62,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibDataViewManagementPluginApi" text="dataViewManagement"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 |
 | <DocLink id="kibDataViewsPluginApi" text="dataViews"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 918 | 0 | 255 | 4 |
 | <DocLink id="kibDataVisualizerPluginApi" text="dataVisualizer"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 |
+| <DocLink id="kibDatasetQualityPluginApi" text="datasetQuality"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have. | 3 | 0 | 3 | 0 |
 | <DocLink id="kibDevToolsPluginApi" text="devTools"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 |
 | <DocLink id="kibDiscoverPluginApi" text="discover"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 130 | 0 | 87 | 18 |
 | <DocLink id="kibDiscoverEnhancedPluginApi" text="discoverEnhanced"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 |
@@ -93,7 +94,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibFeaturesPluginApi" text="features"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 235 | 0 | 99 | 2 |
 | <DocLink id="kibFieldFormatsPluginApi" text="fieldFormats"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 292 | 5 | 253 | 3 |
 | <DocLink id="kibFileUploadPluginApi" text="fileUpload"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 59 | 0 | 59 | 2 |
-| <DocLink id="kibFilesPluginApi" text="files"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 239 | 0 | 24 | 9 |
+| <DocLink id="kibFilesPluginApi" text="files"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 |
 | <DocLink id="kibFilesManagementPluginApi" text="filesManagement"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 0 | 2 | 0 |
 | <DocLink id="kibFleetPluginApi" text="fleet"/> | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1212 | 3 | 1094 | 46 |
 | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 |
@@ -106,7 +107,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibHomePluginApi" text="home"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 149 | 0 | 109 | 0 |
 | <DocLink id="kibImageEmbeddablePluginApi" text="imageEmbeddable"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Image embeddable | 3 | 0 | 3 | 1 |
 | <DocLink id="kibIndexLifecycleManagementPluginApi" text="indexLifecycleManagement"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 0 |
-| <DocLink id="kibIndexManagementPluginApi" text="indexManagement"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 206 | 0 | 201 | 4 |
+| <DocLink id="kibIndexManagementPluginApi" text="indexManagement"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 215 | 0 | 210 | 4 |
 | <DocLink id="kibInfraPluginApi" text="infra"/> | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions | 32 | 0 | 29 | 8 |
 | ingestPipelines | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 |
 | inputControlVis | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Input Control visualization to Kibana | 0 | 0 | 0 | 0 |
@@ -493,7 +494,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnManagementStorybookConfigPluginApi" text="@kbn/management-storybook-config"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 2 | 0 | 0 | 0 |
 | <DocLink id="kibKbnMapboxGlPluginApi" text="@kbn/mapbox-gl"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 592 | 1 | 1 | 0 |
 | <DocLink id="kibKbnMapsVectorTileUtilsPluginApi" text="@kbn/maps-vector-tile-utils"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 2 | 0 | 2 | 0 |
-| <DocLink id="kibKbnMlAggUtilsPluginApi" text="@kbn/ml-agg-utils"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 99 | 2 | 0 | 0 |
+| <DocLink id="kibKbnMlAggUtilsPluginApi" text="@kbn/ml-agg-utils"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 95 | 2 | 0 | 0 |
 | <DocLink id="kibKbnMlAnomalyUtilsPluginApi" text="@kbn/ml-anomaly-utils"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 206 | 3 | 1 | 0 |
 | <DocLink id="kibKbnMlCategoryValidatorPluginApi" text="@kbn/ml-category-validator"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 |
 | <DocLink id="kibKbnMlChi2testPluginApi" text="@kbn/ml-chi2test"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 |
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index f58a021c502b5..f5ffd2a8d7b2f 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index cd7539fc60ab3..a2ca2c72a346c 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index 9e484291281bf..c90c6f14881ef 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index 122eb47b5f108..1560027bc69b3 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index 7218c2d384f9a..eeb401005ef41 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index 80f6f81edc01a..e66dd1cfba1ab 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.devdocs.json b/api_docs/rule_registry.devdocs.json
index 906b1e98dd57f..ecf162186c995 100644
--- a/api_docs/rule_registry.devdocs.json
+++ b/api_docs/rule_registry.devdocs.json
@@ -2285,7 +2285,7 @@
               "\nID of the Kibana feature associated with the index.\nUsed by alerts-as-data RBAC.\n\nNote from @dhurley14\nThe purpose of the `feature` param is to force the user to update\nthe data structure which contains the mapping of consumers to alerts\nas data indices. The idea is it is typed such that it forces the\nuser to go to the code and modify it. At least until a better system\nis put in place or we move the alerts as data client out of rule registry.\n"
             ],
             "signature": [
-              "\"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
+              "\"ml\" | \"uptime\" | \"siem\" | \"observability\" | \"apm\" | \"logs\" | \"infrastructure\" | \"slo\""
             ],
             "path": "x-pack/plugins/rule_registry/server/rule_data_plugin_service/index_options.ts",
             "deprecated": false,
@@ -5150,7 +5150,15 @@
             "section": "def-common.IEsSearchRequest",
             "text": "IEsSearchRequest"
           },
-          " & { featureIds: ",
+          "<",
+          {
+            "pluginId": "data",
+            "scope": "common",
+            "docId": "kibDataSearchPluginApi",
+            "section": "def-common.ISearchRequestParams",
+            "text": "ISearchRequestParams"
+          },
+          "> & { featureIds: ",
           {
             "pluginId": "@kbn/rule-data-utils",
             "scope": "common",
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index 2484623c379ea..9ca65f04def1e 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index 73f40c7ef02bb..b9f554ff33ab8 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index 787d563cf833f..c408211374d08 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index fe075a2d14aef..566c283d550aa 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index f9535fb570137..399ce177dedb6 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index b176edd0697b3..25c30a6d07a0a 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index dfed121fe9d03..237f2c79d06a4 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index 498512acef634..d5baa27e4a9b2 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 04d8a5f1f47be..416ca839855db 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 2f152b467d568..bcda657dc7453 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index bc227e0d57c92..c1de9a403d703 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 56233e694a44a..84b0b144ddf3e 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index d27a0e8a6a917..9671da2531818 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index 74f1db94af42b..50a3315ba1ead 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index 3da87901fd716..ecc7d84ca68e2 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 77380a3af0bb0..137bd65a0b3a2 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index c31e05f44e48a..7843e5f1195fd 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index 124a0266a746d..bf2ffd33cd4cf 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index e8f6e5bcc84b7..7acae69ef05e2 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index 659e64e03c94c..7f9f8caaa5194 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 65f8b144fd5bd..3a9519cadfd97 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index afb734134ec30..e73c495395055 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index 72008768874e1..6cbf1f8de4936 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 57e274d294d3c..3a7ceb62186c1 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index 80b7e4ae53110..7ecb56263a819 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 1fcb29570c40b..619a13492b53a 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index cd97d832161f5..42df6c89dbf8a 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 7a5a7677b71c4..23a2b28e561cb 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 34df0015bac47..8923bc91e0f94 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 98999fd7710b6..7aa79aee514cc 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index 819609450dcd6..e6f57fe9a029b 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index 89c3394ff9228..a68f4760ca753 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 8c73bb0d5aa73..8a8026167aab1 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index 09ea8571e5e37..b2af92e23e169 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index ab66378e46af6..92d93ab01cee1 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index 97b7dd9ecef17..792c82b1c9fa8 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index e387084a28c5a..3b4395bb90dbc 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index a5485bf130a5d..bf0af5ae96f13 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index ce1b8e55bbcab..03eeb0e205e02 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index a2218269f4ce5..f5c976a84e135 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index b1a9193a7fae2..1ea7b53697ef8 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index 17cb54fde2442..cfe42d9e27434 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index adc6a59bc27d4..566df4f2f574a 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index 5d83a164601eb..610e2fa8a3a7b 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 0c10deb217431..9469017d9c9c2 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index c532426fb7916..7c6cd8aba1230 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index a8635835c673a..0688ddd615e13 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index 65cc4d4adacb9..222e97bb6aaa2 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 4855114b873fe..0998137134d0d 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index d32b566d45383..16965e85a4fbb 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 6ccc3abe170cf..804395c8c5a92 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index 00f2ea78e7d66..07459ef9bc679 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 7df847499812f..54c8c353a7f46 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index 3d9c01a701c3a..8feee23fbad0d 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-10
+date: 2023-11-11
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From 7923a96132a16384a6120d37960933af9dcc08b1 Mon Sep 17 00:00:00 2001
From: Chris Cowan <chris@elastic.co>
Date: Sat, 11 Nov 2023 14:45:29 -0700
Subject: [PATCH 113/147] [SLO] Allow users to define burn rate windows using
 budget consumed (#170996)

## Summary

This PR fixes #170854 and
https://github.com/elastic/kibana/issues/170859 by allowing the user to
define the burn rate windows using either a burn rate threshold or the %
of budget consumed by the time the alert triggers. This PR also adds the
budget consumed to the help text below the burn rate window definition.
I also changed the behavior to hide the window definitions until the
Selected SLO is chosen since we need the SLO for the calculations.


https://github.com/elastic/kibana/assets/41702/26f795f3-47cb-45c6-8ba3-528c2d9c4094
---
 .../burn_rate_rule_editor/budget_consumed.tsx |  69 ++++++++
 .../burn_rate_rule_editor/burn_rate.tsx       |   8 +-
 .../burn_rate_rule_editor.tsx                 |  23 +--
 .../burn_rate_rule_editor/validation.test.ts  |   4 +-
 .../burn_rate_rule_editor/validation.ts       |   4 +-
 .../burn_rate_rule_editor/windows.tsx         | 148 ++++++++++++++----
 .../translations/translations/fr-FR.json      |   1 -
 .../translations/translations/ja-JP.json      |   1 -
 .../translations/translations/zh-CN.json      |   1 -
 9 files changed, 199 insertions(+), 60 deletions(-)
 create mode 100644 x-pack/plugins/observability/public/components/burn_rate_rule_editor/budget_consumed.tsx

diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/budget_consumed.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/budget_consumed.tsx
new file mode 100644
index 0000000000000..85806a8b8d4f5
--- /dev/null
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/budget_consumed.tsx
@@ -0,0 +1,69 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { EuiFieldNumber, EuiFormRow, EuiIconTip } from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+import React, { ChangeEvent, useState } from 'react';
+import numeral from '@elastic/numeral';
+
+interface Props {
+  initialBurnRate?: number;
+  errors?: string[];
+  onChange: (burnRate: number) => void;
+  longLookbackWindowInHours: number;
+  sloTimeWindowInHours: number;
+}
+
+export function BudgetConsumed({
+  onChange,
+  initialBurnRate = 1,
+  longLookbackWindowInHours,
+  sloTimeWindowInHours,
+  errors,
+}: Props) {
+  const [budgetConsumed, setBudgetConsumed] = useState<number>(
+    ((initialBurnRate * longLookbackWindowInHours) / sloTimeWindowInHours) * 100
+  );
+  const hasError = errors !== undefined && errors.length > 0;
+
+  const onBudgetConsumedChanged = (event: ChangeEvent<HTMLInputElement>) => {
+    const value = Number(event.target.value);
+    setBudgetConsumed(value);
+    const burnRate = sloTimeWindowInHours * (value / 100 / longLookbackWindowInHours);
+    onChange(burnRate);
+  };
+
+  return (
+    <EuiFormRow
+      label={
+        <>
+          {i18n.translate('xpack.observability.slo.rules.budgetConsumed.rowLabel', {
+            defaultMessage: '% Budget consumed',
+          })}{' '}
+          <EuiIconTip
+            position="top"
+            content={i18n.translate('xpack.observability.slo.rules.budgetConsumed.tooltip', {
+              defaultMessage: 'How much budget is consumed before the first alert is fired.',
+            })}
+          />
+        </>
+      }
+      fullWidth
+      isInvalid={hasError}
+    >
+      <EuiFieldNumber
+        fullWidth
+        step={0.01}
+        min={0.01}
+        max={100}
+        value={numeral(budgetConsumed).format('0[.0]')}
+        onChange={(event) => onBudgetConsumedChanged(event)}
+        data-test-subj="budgetConsumed"
+      />
+    </EuiFormRow>
+  );
+}
diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate.tsx
index 1dd225191cb85..ac7b92950fc96 100644
--- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate.tsx
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate.tsx
@@ -8,13 +8,13 @@
 import { EuiFieldNumber, EuiFormRow, EuiIconTip } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import React, { ChangeEvent, useState } from 'react';
+import numeral from '@elastic/numeral';
 
 interface Props {
   initialBurnRate?: number;
   maxBurnRate: number;
   errors?: string[];
   onChange: (burnRate: number) => void;
-  helpText?: string;
 }
 
 export function BurnRate({ onChange, initialBurnRate = 1, maxBurnRate, errors }: Props) {
@@ -48,10 +48,10 @@ export function BurnRate({ onChange, initialBurnRate = 1, maxBurnRate, errors }:
     >
       <EuiFieldNumber
         fullWidth
-        step={0.1}
-        min={1}
+        step={0.01}
+        min={0.01}
         max={maxBurnRate}
-        value={String(burnRate)}
+        value={numeral(burnRate).format('0[.0]')}
         onChange={(event) => onBurnRateChange(event)}
         data-test-subj="burnRate"
       />
diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx
index fc3e0bf71452b..e1e858df495a3 100644
--- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx
@@ -118,21 +118,14 @@ export function BurnRateRuleEditor(props: Props) {
         </>
       )}
       <EuiSpacer size="l" />
-      <EuiTitle size="xs">
-        <h5>
-          {i18n.translate('xpack.observability.burnRateRuleEditor.h5.defineMultipleBurnRateLabel', {
-            defaultMessage: 'Define multiple burn rate windows',
-          })}
-        </h5>
-      </EuiTitle>
-      <EuiSpacer size="s" />
-      <Windows
-        slo={selectedSlo}
-        windows={windowDefs}
-        onChange={setWindowDefs}
-        errors={errors.windows}
-      />
-      <EuiSpacer size="m" />
+      {selectedSlo && (
+        <Windows
+          slo={selectedSlo}
+          windows={windowDefs}
+          onChange={setWindowDefs}
+          errors={errors.windows}
+        />
+      )}
     </>
   );
 }
diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.test.ts b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.test.ts
index d351a2555f6b5..4e4d7fbc66556 100644
--- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.test.ts
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.test.ts
@@ -44,7 +44,7 @@ describe('ValidateBurnRateRule', () => {
     expect(errors.windows[0].burnRateThreshold).toHaveLength(1);
   });
 
-  it('validates burnRateThreshold is between 1 and maxBurnRateThreshold', () => {
+  it('validates burnRateThreshold is between 0.01 and maxBurnRateThreshold', () => {
     expect(
       validateBurnRateRule(
         createTestParams({
@@ -55,7 +55,7 @@ describe('ValidateBurnRateRule', () => {
     ).toHaveLength(1);
 
     expect(
-      validateBurnRateRule(createTestParams({ burnRateThreshold: 0.99 })).errors.windows[0]
+      validateBurnRateRule(createTestParams({ burnRateThreshold: 0.001 })).errors.windows[0]
         .burnRateThreshold
     ).toHaveLength(1);
 
diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.ts b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.ts
index 20920350f5920..c184a8fb5c445 100644
--- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.ts
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/validation.ts
@@ -46,7 +46,7 @@ export function validateBurnRateRule(
       const result = { longWindow: new Array<string>(), burnRateThreshold: new Array<string>() };
       if (burnRateThreshold === undefined || maxBurnRateThreshold === undefined) {
         result.burnRateThreshold.push(BURN_RATE_THRESHOLD_REQUIRED);
-      } else if (sloId && (burnRateThreshold < 1 || burnRateThreshold > maxBurnRateThreshold)) {
+      } else if (sloId && (burnRateThreshold < 0.01 || burnRateThreshold > maxBurnRateThreshold)) {
         result.burnRateThreshold.push(getInvalidThresholdValueError(maxBurnRateThreshold));
       }
       if (longWindow === undefined) {
@@ -89,6 +89,6 @@ const BURN_RATE_THRESHOLD_REQUIRED = i18n.translate(
 
 const getInvalidThresholdValueError = (maxBurnRate: number) =>
   i18n.translate('xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue', {
-    defaultMessage: 'Burn rate threshold must be between 1 and {maxBurnRate}.',
+    defaultMessage: 'Burn rate threshold must be between 0.01 and {maxBurnRate}.',
     values: { maxBurnRate },
   });
diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/windows.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/windows.tsx
index 3f468e21c6479..d4eb6e4627c29 100644
--- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/windows.tsx
+++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/windows.tsx
@@ -4,7 +4,7 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-import React from 'react';
+import React, { useState } from 'react';
 import {
   EuiFlexGroup,
   EuiFlexItem,
@@ -14,6 +14,8 @@ import {
   EuiSelect,
   EuiFormRow,
   EuiText,
+  EuiTitle,
+  EuiSwitch,
 } from '@elastic/eui';
 import { SLOResponse } from '@kbn/slo-schema';
 import { i18n } from '@kbn/i18n';
@@ -31,6 +33,7 @@ import {
   MEDIUM_PRIORITY_ACTION,
 } from '../../../common/constants';
 import { WindowResult } from './validation';
+import { BudgetConsumed } from './budget_consumed';
 
 interface WindowProps extends WindowSchema {
   slo?: SLOResponse;
@@ -38,6 +41,7 @@ interface WindowProps extends WindowSchema {
   onDelete: (id: string) => void;
   disableDelete: boolean;
   errors: WindowResult;
+  budgetMode: boolean;
 }
 
 const ACTION_GROUP_OPTIONS = [
@@ -65,6 +69,7 @@ function Window({
   onDelete,
   errors,
   disableDelete,
+  budgetMode = false,
 }: WindowProps) {
   const onLongWindowDurationChange = (duration: Duration) => {
     const longWindowDurationInMinutes = toMinutes(duration);
@@ -112,6 +117,17 @@ function Window({
     return 'N/A';
   };
 
+  const sloTimeWindowInHours = Math.round(
+    toMinutes(toDuration(slo?.timeWindow.duration ?? '30d')) / 60
+  );
+
+  const computeBudgetConsumed = () => {
+    if (slo && longWindow.value > 0 && burnRateThreshold > 0) {
+      return (burnRateThreshold * longWindow.value) / sloTimeWindowInHours;
+    }
+    return 0;
+  };
+
   const allErrors = [...errors.longWindow, ...errors.burnRateThreshold];
 
   return (
@@ -125,15 +141,27 @@ function Window({
             errors={errors.longWindow}
           />
         </EuiFlexItem>
-        <EuiFlexItem>
-          <BurnRate
-            initialBurnRate={burnRateThreshold}
-            maxBurnRate={maxBurnRateThreshold}
-            onChange={onBurnRateChange}
-            errors={errors.burnRateThreshold}
-            helpText={getErrorBudgetExhaustionText(computeErrorBudgetExhaustionInHours())}
-          />
-        </EuiFlexItem>
+        {!budgetMode && (
+          <EuiFlexItem>
+            <BurnRate
+              initialBurnRate={burnRateThreshold}
+              maxBurnRate={maxBurnRateThreshold}
+              onChange={onBurnRateChange}
+              errors={errors.burnRateThreshold}
+            />
+          </EuiFlexItem>
+        )}
+        {budgetMode && (
+          <EuiFlexItem>
+            <BudgetConsumed
+              initialBurnRate={burnRateThreshold}
+              onChange={onBurnRateChange}
+              errors={errors.burnRateThreshold}
+              sloTimeWindowInHours={sloTimeWindowInHours}
+              longLookbackWindowInHours={longWindow.value}
+            />
+          </EuiFlexItem>
+        )}
         <EuiFlexItem>
           <EuiFormRow
             label={i18n.translate('xpack.observability.slo.rules.actionGroupSelectorLabel', {
@@ -177,20 +205,43 @@ function Window({
         </EuiText>
       )}
       <EuiText color="subdued" size="xs">
-        <p>{getErrorBudgetExhaustionText(computeErrorBudgetExhaustionInHours())}</p>
+        <p>
+          {getErrorBudgetExhaustionText(
+            computeErrorBudgetExhaustionInHours(),
+            computeBudgetConsumed(),
+            burnRateThreshold,
+            budgetMode
+          )}
+        </p>
       </EuiText>
       <EuiSpacer size="s" />
     </>
   );
 }
 
-const getErrorBudgetExhaustionText = (formattedHours: string) =>
-  i18n.translate('xpack.observability.slo.rules.errorBudgetExhaustion.text', {
-    defaultMessage: '{formatedHours} hours until error budget exhaustion.',
-    values: {
-      formatedHours: formattedHours,
-    },
-  });
+const getErrorBudgetExhaustionText = (
+  formattedHours: string,
+  budgetConsumed: number,
+  burnRateThreshold: number,
+  budgetMode = false
+) =>
+  budgetMode
+    ? i18n.translate('xpack.observability.slo.rules.errorBudgetExhaustion.budgetMode.text', {
+        defaultMessage:
+          '{formatedHours} hours until error budget exhaustion. The burn rate threshold is {burnRateThreshold}x.',
+        values: {
+          formatedHours: formattedHours,
+          burnRateThreshold: numeral(burnRateThreshold).format('0[.0]'),
+        },
+      })
+    : i18n.translate('xpack.observability.slo.rules.errorBudgetExhaustion.burnRateMode.text', {
+        defaultMessage:
+          '{formatedHours} hours until error budget exhaustion. {budgetConsumed} budget consumed before first alert.',
+        values: {
+          formatedHours: formattedHours,
+          budgetConsumed: numeral(budgetConsumed).format('0.00%'),
+        },
+      });
 
 export const createNewWindow = (
   slo?: SLOResponse,
@@ -217,6 +268,7 @@ interface WindowsProps {
 }
 
 export function Windows({ slo, windows, errors, onChange, totalNumberOfWindows }: WindowsProps) {
+  const [budgetMode, setBudgetMode] = useState<boolean>(false);
   const handleWindowChange = (windowDef: WindowSchema) => {
     onChange(windows.map((def) => (windowDef.id === def.id ? windowDef : def)));
   };
@@ -229,8 +281,20 @@ export function Windows({ slo, windows, errors, onChange, totalNumberOfWindows }
     onChange([...windows, createNewWindow()]);
   };
 
+  const handleModeChange = () => {
+    setBudgetMode((previous) => !previous);
+  };
+
   return (
     <>
+      <EuiTitle size="xs">
+        <h5>
+          {i18n.translate('xpack.observability.burnRateRuleEditor.h5.defineMultipleBurnRateLabel', {
+            defaultMessage: 'Define multiple burn rate windows',
+          })}
+        </h5>
+      </EuiTitle>
+      <EuiSpacer size="s" />
       {windows.map((windowDef, index) => {
         const windowErrors = errors[index] || {
           longWindow: new Array<string>(),
@@ -245,25 +309,41 @@ export function Windows({ slo, windows, errors, onChange, totalNumberOfWindows }
             onChange={handleWindowChange}
             onDelete={handleWindowDelete}
             disableDelete={windows.length === 1}
+            budgetMode={budgetMode}
           />
         );
       })}
-      <EuiButtonEmpty
-        data-test-subj="sloBurnRateRuleAddWindowButton"
-        color={'primary'}
-        size="xs"
-        iconType={'plusInCircleFilled'}
-        onClick={handleAddWindow}
-        isDisabled={windows.length === (totalNumberOfWindows || 4)}
-        aria-label={i18n.translate('xpack.observability.slo.rules.addWindowAriaLabel', {
-          defaultMessage: 'Add window',
-        })}
-      >
-        <FormattedMessage
-          id="xpack.observability.slo.rules.addWIndowLabel"
-          defaultMessage="Add window"
-        />
-      </EuiButtonEmpty>
+      <EuiFlexGroup justifyContent="spaceBetween" alignItems="center">
+        <EuiFlexItem grow={0}>
+          <EuiButtonEmpty
+            data-test-subj="sloBurnRateRuleAddWindowButton"
+            color={'primary'}
+            size="s"
+            iconType={'plusInCircleFilled'}
+            onClick={handleAddWindow}
+            isDisabled={windows.length === (totalNumberOfWindows || 4)}
+            aria-label={i18n.translate('xpack.observability.slo.rules.addWindowAriaLabel', {
+              defaultMessage: 'Add window',
+            })}
+          >
+            <FormattedMessage
+              id="xpack.observability.slo.rules.addWIndowLabel"
+              defaultMessage="Add window"
+            />
+          </EuiButtonEmpty>
+        </EuiFlexItem>
+        <EuiFlexItem grow={0}>
+          <EuiSwitch
+            compressed
+            onChange={handleModeChange}
+            checked={budgetMode}
+            label={i18n.translate('xpack.observability.slo.rules.useBudgetConsumedModeLabel', {
+              defaultMessage: 'Budget consumed mode',
+            })}
+          />
+        </EuiFlexItem>
+      </EuiFlexGroup>
+      <EuiSpacer size="m" />
     </>
   );
 }
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index e40475d4aae3d..2ec1a295cc065 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -29135,7 +29135,6 @@
     "xpack.observability.slo.list.sortByType": "Trier par {type}",
     "xpack.observability.slo.partitionByBadge": "Partition par {partitionKey}",
     "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "Le seuil du taux d'avancement doit être compris entre 1 et {maxBurnRate}.",
-    "xpack.observability.slo.rules.errorBudgetExhaustion.text": "{formatedHours} heures restantes avant l'épuisement du budget d'erreurs.",
     "xpack.observability.slo.rules.groupByMessage": "Le SLO que vous avez sélectionné a été créé avec une partition sur \"{groupByField}\". Cette règle surveille et génère une alerte pour chaque instance trouvée dans le champ de partition.",
     "xpack.observability.slo.rules.longWindowDuration.tooltip": "Période historique sur laquelle le taux d'avancement est calculé. Une période historique plus courte de {shortWindowDuration} minutes (1/12 de la période historique) sera utilisée pour une récupération plus rapide",
     "xpack.observability.slo.slo.activeAlertsBadge.label": "{count, plural, one {# alerte} many {# alertes} other {Alertes #}}",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 8f58cdabe7785..626dabd7c69e6 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -29134,7 +29134,6 @@
     "xpack.observability.slo.list.sortByType": "{type}で並べ替え",
     "xpack.observability.slo.partitionByBadge": "{partitionKey}でパーティション",
     "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "バーンレートしきい値は1以上{maxBurnRate}以下でなければなりません。",
-    "xpack.observability.slo.rules.errorBudgetExhaustion.text": "予算オーバーエラーまで{formatedHours}時間。",
     "xpack.observability.slo.rules.groupByMessage": "選択したSLOは\"{groupByField}\"にパーティションが作成されました。このルールは、パーティションフィールドで見つかったすべてのインスタンスを監視し、アラートを生成します。",
     "xpack.observability.slo.rules.longWindowDuration.tooltip": "バーンレートが計算されるルックバック期間。ルックバック期間を{shortWindowDuration}分(ルックバック期間の1/12)と短くすることで、より高速な復帰が可能になります",
     "xpack.observability.slo.slo.activeAlertsBadge.label": "{count, plural, other {#件のアラート}}",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 62084ac55eed6..6c9c7e2d37e7f 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -29132,7 +29132,6 @@
     "xpack.observability.slo.list.sortByType": "按 {type} 排序",
     "xpack.observability.slo.partitionByBadge": "按 {partitionKey} 分区",
     "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "消耗速度阈值必须介于 1 和 {maxBurnRate} 之间。",
-    "xpack.observability.slo.rules.errorBudgetExhaustion.text": "{formatedHours} 小时,直到错误预算耗尽。",
     "xpack.observability.slo.rules.groupByMessage": "已使用分区在“{groupByField}”上创建您选定的 SLO。此规则将监测在分区字段中发现的每个实例并为其生成告警。",
     "xpack.observability.slo.rules.longWindowDuration.tooltip": "在其间计算消耗速度的回顾期。将使用 {shortWindowDuration} 分钟的较短回顾期(1/12 的回顾期)以便更快恢复",
     "xpack.observability.slo.slo.activeAlertsBadge.label": "{count, plural, other {# 个告警}}",

From d86931cd504579155ec2850bf024af3f3f13e511 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Sun, 12 Nov 2023 00:57:47 -0500
Subject: [PATCH 114/147] [api-docs] 2023-11-12 Daily api_docs build (#171068)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/519
---
 api_docs/actions.mdx                                            | 2 +-
 api_docs/advanced_settings.mdx                                  | 2 +-
 api_docs/aiops.mdx                                              | 2 +-
 api_docs/alerting.mdx                                           | 2 +-
 api_docs/apm.mdx                                                | 2 +-
 api_docs/apm_data_access.mdx                                    | 2 +-
 api_docs/asset_manager.mdx                                      | 2 +-
 api_docs/banners.mdx                                            | 2 +-
 api_docs/bfetch.mdx                                             | 2 +-
 api_docs/canvas.mdx                                             | 2 +-
 api_docs/cases.mdx                                              | 2 +-
 api_docs/charts.mdx                                             | 2 +-
 api_docs/cloud.mdx                                              | 2 +-
 api_docs/cloud_data_migration.mdx                               | 2 +-
 api_docs/cloud_defend.mdx                                       | 2 +-
 api_docs/cloud_experiments.mdx                                  | 2 +-
 api_docs/cloud_security_posture.mdx                             | 2 +-
 api_docs/console.mdx                                            | 2 +-
 api_docs/content_management.mdx                                 | 2 +-
 api_docs/controls.mdx                                           | 2 +-
 api_docs/custom_integrations.mdx                                | 2 +-
 api_docs/dashboard.mdx                                          | 2 +-
 api_docs/dashboard_enhanced.mdx                                 | 2 +-
 api_docs/data.mdx                                               | 2 +-
 api_docs/data_query.mdx                                         | 2 +-
 api_docs/data_search.mdx                                        | 2 +-
 api_docs/data_view_editor.mdx                                   | 2 +-
 api_docs/data_view_field_editor.mdx                             | 2 +-
 api_docs/data_view_management.mdx                               | 2 +-
 api_docs/data_views.mdx                                         | 2 +-
 api_docs/data_visualizer.mdx                                    | 2 +-
 api_docs/dataset_quality.mdx                                    | 2 +-
 api_docs/deprecations_by_api.mdx                                | 2 +-
 api_docs/deprecations_by_plugin.mdx                             | 2 +-
 api_docs/deprecations_by_team.mdx                               | 2 +-
 api_docs/dev_tools.mdx                                          | 2 +-
 api_docs/discover.mdx                                           | 2 +-
 api_docs/discover_enhanced.mdx                                  | 2 +-
 api_docs/ecs_data_quality_dashboard.mdx                         | 2 +-
 api_docs/elastic_assistant.mdx                                  | 2 +-
 api_docs/embeddable.mdx                                         | 2 +-
 api_docs/embeddable_enhanced.mdx                                | 2 +-
 api_docs/encrypted_saved_objects.mdx                            | 2 +-
 api_docs/enterprise_search.mdx                                  | 2 +-
 api_docs/es_ui_shared.mdx                                       | 2 +-
 api_docs/event_annotation.mdx                                   | 2 +-
 api_docs/event_annotation_listing.mdx                           | 2 +-
 api_docs/event_log.mdx                                          | 2 +-
 api_docs/exploratory_view.mdx                                   | 2 +-
 api_docs/expression_error.mdx                                   | 2 +-
 api_docs/expression_gauge.mdx                                   | 2 +-
 api_docs/expression_heatmap.mdx                                 | 2 +-
 api_docs/expression_image.mdx                                   | 2 +-
 api_docs/expression_legacy_metric_vis.mdx                       | 2 +-
 api_docs/expression_metric.mdx                                  | 2 +-
 api_docs/expression_metric_vis.mdx                              | 2 +-
 api_docs/expression_partition_vis.mdx                           | 2 +-
 api_docs/expression_repeat_image.mdx                            | 2 +-
 api_docs/expression_reveal_image.mdx                            | 2 +-
 api_docs/expression_shape.mdx                                   | 2 +-
 api_docs/expression_tagcloud.mdx                                | 2 +-
 api_docs/expression_x_y.mdx                                     | 2 +-
 api_docs/expressions.mdx                                        | 2 +-
 api_docs/features.mdx                                           | 2 +-
 api_docs/field_formats.mdx                                      | 2 +-
 api_docs/file_upload.mdx                                        | 2 +-
 api_docs/files.mdx                                              | 2 +-
 api_docs/files_management.mdx                                   | 2 +-
 api_docs/fleet.mdx                                              | 2 +-
 api_docs/global_search.mdx                                      | 2 +-
 api_docs/guided_onboarding.mdx                                  | 2 +-
 api_docs/home.mdx                                               | 2 +-
 api_docs/image_embeddable.mdx                                   | 2 +-
 api_docs/index_lifecycle_management.mdx                         | 2 +-
 api_docs/index_management.mdx                                   | 2 +-
 api_docs/infra.mdx                                              | 2 +-
 api_docs/inspector.mdx                                          | 2 +-
 api_docs/interactive_setup.mdx                                  | 2 +-
 api_docs/kbn_ace.mdx                                            | 2 +-
 api_docs/kbn_aiops_components.mdx                               | 2 +-
 api_docs/kbn_aiops_utils.mdx                                    | 2 +-
 api_docs/kbn_alerting_api_integration_helpers.mdx               | 2 +-
 api_docs/kbn_alerting_state_types.mdx                           | 2 +-
 api_docs/kbn_alerts_as_data_utils.mdx                           | 2 +-
 api_docs/kbn_alerts_ui_shared.mdx                               | 2 +-
 api_docs/kbn_analytics.mdx                                      | 2 +-
 api_docs/kbn_analytics_client.mdx                               | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx          | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_common.mdx           | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_server.mdx           | 2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx                   | 2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx                   | 2 +-
 api_docs/kbn_apm_config_loader.mdx                              | 2 +-
 api_docs/kbn_apm_synthtrace.mdx                                 | 2 +-
 api_docs/kbn_apm_synthtrace_client.mdx                          | 2 +-
 api_docs/kbn_apm_utils.mdx                                      | 2 +-
 api_docs/kbn_axe_config.mdx                                     | 2 +-
 api_docs/kbn_cases_components.mdx                               | 2 +-
 api_docs/kbn_cell_actions.mdx                                   | 2 +-
 api_docs/kbn_chart_expressions_common.mdx                       | 2 +-
 api_docs/kbn_chart_icons.mdx                                    | 2 +-
 api_docs/kbn_ci_stats_core.mdx                                  | 2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx                   | 2 +-
 api_docs/kbn_ci_stats_reporter.mdx                              | 2 +-
 api_docs/kbn_cli_dev_mode.mdx                                   | 2 +-
 api_docs/kbn_code_editor.mdx                                    | 2 +-
 api_docs/kbn_coloring.mdx                                       | 2 +-
 api_docs/kbn_config.mdx                                         | 2 +-
 api_docs/kbn_config_mocks.mdx                                   | 2 +-
 api_docs/kbn_config_schema.mdx                                  | 2 +-
 api_docs/kbn_content_management_content_editor.mdx              | 2 +-
 api_docs/kbn_content_management_tabbed_table_list_view.mdx      | 2 +-
 api_docs/kbn_content_management_table_list_view.mdx             | 2 +-
 api_docs/kbn_content_management_table_list_view_table.mdx       | 2 +-
 api_docs/kbn_content_management_utils.mdx                       | 2 +-
 api_docs/kbn_core_analytics_browser.mdx                         | 2 +-
 api_docs/kbn_core_analytics_browser_internal.mdx                | 2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_analytics_server.mdx                          | 2 +-
 api_docs/kbn_core_analytics_server_internal.mdx                 | 2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_application_browser.mdx                       | 2 +-
 api_docs/kbn_core_application_browser_internal.mdx              | 2 +-
 api_docs/kbn_core_application_browser_mocks.mdx                 | 2 +-
 api_docs/kbn_core_application_common.mdx                        | 2 +-
 api_docs/kbn_core_apps_browser_internal.mdx                     | 2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_apps_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_base_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_base_common.mdx                               | 2 +-
 api_docs/kbn_core_base_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_base_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_capabilities_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_capabilities_common.mdx                       | 2 +-
 api_docs/kbn_core_capabilities_server.mdx                       | 2 +-
 api_docs/kbn_core_capabilities_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_chrome_browser.mdx                            | 2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx                      | 2 +-
 api_docs/kbn_core_config_server_internal.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_browser.mdx                   | 2 +-
 api_docs/kbn_core_custom_branding_browser_internal.mdx          | 2 +-
 api_docs/kbn_core_custom_branding_browser_mocks.mdx             | 2 +-
 api_docs/kbn_core_custom_branding_common.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_server.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_server_internal.mdx           | 2 +-
 api_docs/kbn_core_custom_branding_server_mocks.mdx              | 2 +-
 api_docs/kbn_core_deprecations_browser.mdx                      | 2 +-
 api_docs/kbn_core_deprecations_browser_internal.mdx             | 2 +-
 api_docs/kbn_core_deprecations_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_deprecations_common.mdx                       | 2 +-
 api_docs/kbn_core_deprecations_server.mdx                       | 2 +-
 api_docs/kbn_core_deprecations_server_internal.mdx              | 2 +-
 api_docs/kbn_core_deprecations_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_doc_links_browser.mdx                         | 2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_doc_links_server.mdx                          | 2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_elasticsearch_client_server_internal.mdx      | 2 +-
 api_docs/kbn_core_elasticsearch_client_server_mocks.mdx         | 2 +-
 api_docs/kbn_core_elasticsearch_server.mdx                      | 2 +-
 api_docs/kbn_core_elasticsearch_server_internal.mdx             | 2 +-
 api_docs/kbn_core_elasticsearch_server_mocks.mdx                | 2 +-
 api_docs/kbn_core_environment_server_internal.mdx               | 2 +-
 api_docs/kbn_core_environment_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_browser.mdx                 | 2 +-
 api_docs/kbn_core_execution_context_browser_internal.mdx        | 2 +-
 api_docs/kbn_core_execution_context_browser_mocks.mdx           | 2 +-
 api_docs/kbn_core_execution_context_common.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_server.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_server_internal.mdx         | 2 +-
 api_docs/kbn_core_execution_context_server_mocks.mdx            | 2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx                      | 2 +-
 api_docs/kbn_core_fatal_errors_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_http_browser.mdx                              | 2 +-
 api_docs/kbn_core_http_browser_internal.mdx                     | 2 +-
 api_docs/kbn_core_http_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_http_common.mdx                               | 2 +-
 api_docs/kbn_core_http_context_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_http_request_handler_context_server.mdx       | 2 +-
 api_docs/kbn_core_http_resources_server.mdx                     | 2 +-
 api_docs/kbn_core_http_resources_server_internal.mdx            | 2 +-
 api_docs/kbn_core_http_resources_server_mocks.mdx               | 2 +-
 api_docs/kbn_core_http_router_server_internal.mdx               | 2 +-
 api_docs/kbn_core_http_router_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_http_server.mdx                               | 2 +-
 api_docs/kbn_core_http_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_http_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_i18n_browser.mdx                              | 2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_i18n_server.mdx                               | 2 +-
 api_docs/kbn_core_i18n_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_injected_metadata_browser_mocks.mdx           | 2 +-
 api_docs/kbn_core_integrations_browser_internal.mdx             | 2 +-
 api_docs/kbn_core_integrations_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_lifecycle_browser.mdx                         | 2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_lifecycle_server.mdx                          | 2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx                     | 2 +-
 api_docs/kbn_core_logging_common_internal.mdx                   | 2 +-
 api_docs/kbn_core_logging_server.mdx                            | 2 +-
 api_docs/kbn_core_logging_server_internal.mdx                   | 2 +-
 api_docs/kbn_core_logging_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_metrics_collectors_server_internal.mdx        | 2 +-
 api_docs/kbn_core_metrics_collectors_server_mocks.mdx           | 2 +-
 api_docs/kbn_core_metrics_server.mdx                            | 2 +-
 api_docs/kbn_core_metrics_server_internal.mdx                   | 2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_mount_utils_browser.mdx                       | 2 +-
 api_docs/kbn_core_node_server.mdx                               | 2 +-
 api_docs/kbn_core_node_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_node_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_notifications_browser.mdx                     | 2 +-
 api_docs/kbn_core_notifications_browser_internal.mdx            | 2 +-
 api_docs/kbn_core_notifications_browser_mocks.mdx               | 2 +-
 api_docs/kbn_core_overlays_browser.mdx                          | 2 +-
 api_docs/kbn_core_overlays_browser_internal.mdx                 | 2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx                    | 2 +-
 api_docs/kbn_core_plugins_browser.mdx                           | 2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx                     | 2 +-
 api_docs/kbn_core_plugins_contracts_browser.mdx                 | 2 +-
 api_docs/kbn_core_plugins_contracts_server.mdx                  | 2 +-
 api_docs/kbn_core_plugins_server.mdx                            | 2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_preboot_server.mdx                            | 2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_rendering_server_internal.mdx                 | 2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_root_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_saved_objects_api_browser.mdx                 | 2 +-
 api_docs/kbn_core_saved_objects_api_server.mdx                  | 2 +-
 api_docs/kbn_core_saved_objects_api_server_mocks.mdx            | 2 +-
 api_docs/kbn_core_saved_objects_base_server_internal.mdx        | 2 +-
 api_docs/kbn_core_saved_objects_base_server_mocks.mdx           | 2 +-
 api_docs/kbn_core_saved_objects_browser.mdx                     | 2 +-
 api_docs/kbn_core_saved_objects_browser_internal.mdx            | 2 +-
 api_docs/kbn_core_saved_objects_browser_mocks.mdx               | 2 +-
 api_docs/kbn_core_saved_objects_common.mdx                      | 2 +-
 .../kbn_core_saved_objects_import_export_server_internal.mdx    | 2 +-
 api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx  | 2 +-
 api_docs/kbn_core_saved_objects_migration_server_internal.mdx   | 2 +-
 api_docs/kbn_core_saved_objects_migration_server_mocks.mdx      | 2 +-
 api_docs/kbn_core_saved_objects_server.mdx                      | 2 +-
 api_docs/kbn_core_saved_objects_server_internal.mdx             | 2 +-
 api_docs/kbn_core_saved_objects_server_mocks.mdx                | 2 +-
 api_docs/kbn_core_saved_objects_utils_server.mdx                | 2 +-
 api_docs/kbn_core_status_common.mdx                             | 2 +-
 api_docs/kbn_core_status_common_internal.mdx                    | 2 +-
 api_docs/kbn_core_status_server.mdx                             | 2 +-
 api_docs/kbn_core_status_server_internal.mdx                    | 2 +-
 api_docs/kbn_core_status_server_mocks.mdx                       | 2 +-
 api_docs/kbn_core_test_helpers_deprecations_getters.mdx         | 2 +-
 api_docs/kbn_core_test_helpers_http_setup_browser.mdx           | 2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx                   | 2 +-
 api_docs/kbn_core_test_helpers_model_versions.mdx               | 2 +-
 api_docs/kbn_core_test_helpers_so_type_serializer.mdx           | 2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx                   | 2 +-
 api_docs/kbn_core_theme_browser.mdx                             | 2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx                       | 2 +-
 api_docs/kbn_core_ui_settings_browser.mdx                       | 2 +-
 api_docs/kbn_core_ui_settings_browser_internal.mdx              | 2 +-
 api_docs/kbn_core_ui_settings_browser_mocks.mdx                 | 2 +-
 api_docs/kbn_core_ui_settings_common.mdx                        | 2 +-
 api_docs/kbn_core_ui_settings_server.mdx                        | 2 +-
 api_docs/kbn_core_ui_settings_server_internal.mdx               | 2 +-
 api_docs/kbn_core_ui_settings_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_usage_data_server.mdx                         | 2 +-
 api_docs/kbn_core_usage_data_server_internal.mdx                | 2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx                   | 2 +-
 api_docs/kbn_core_user_settings_server.mdx                      | 2 +-
 api_docs/kbn_core_user_settings_server_internal.mdx             | 2 +-
 api_docs/kbn_core_user_settings_server_mocks.mdx                | 2 +-
 api_docs/kbn_crypto.mdx                                         | 2 +-
 api_docs/kbn_crypto_browser.mdx                                 | 2 +-
 api_docs/kbn_custom_integrations.mdx                            | 2 +-
 api_docs/kbn_cypress_config.mdx                                 | 2 +-
 api_docs/kbn_data_service.mdx                                   | 2 +-
 api_docs/kbn_datemath.mdx                                       | 2 +-
 api_docs/kbn_deeplinks_analytics.mdx                            | 2 +-
 api_docs/kbn_deeplinks_devtools.mdx                             | 2 +-
 api_docs/kbn_deeplinks_management.mdx                           | 2 +-
 api_docs/kbn_deeplinks_ml.mdx                                   | 2 +-
 api_docs/kbn_deeplinks_observability.mdx                        | 2 +-
 api_docs/kbn_deeplinks_search.mdx                               | 2 +-
 api_docs/kbn_default_nav_analytics.mdx                          | 2 +-
 api_docs/kbn_default_nav_devtools.mdx                           | 2 +-
 api_docs/kbn_default_nav_management.mdx                         | 2 +-
 api_docs/kbn_default_nav_ml.mdx                                 | 2 +-
 api_docs/kbn_dev_cli_errors.mdx                                 | 2 +-
 api_docs/kbn_dev_cli_runner.mdx                                 | 2 +-
 api_docs/kbn_dev_proc_runner.mdx                                | 2 +-
 api_docs/kbn_dev_utils.mdx                                      | 2 +-
 api_docs/kbn_discover_utils.mdx                                 | 2 +-
 api_docs/kbn_doc_links.mdx                                      | 2 +-
 api_docs/kbn_docs_utils.mdx                                     | 2 +-
 api_docs/kbn_dom_drag_drop.mdx                                  | 2 +-
 api_docs/kbn_ebt_tools.mdx                                      | 2 +-
 api_docs/kbn_ecs.mdx                                            | 2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx                     | 2 +-
 api_docs/kbn_elastic_assistant.mdx                              | 2 +-
 api_docs/kbn_es.mdx                                             | 2 +-
 api_docs/kbn_es_archiver.mdx                                    | 2 +-
 api_docs/kbn_es_errors.mdx                                      | 2 +-
 api_docs/kbn_es_query.mdx                                       | 2 +-
 api_docs/kbn_es_types.mdx                                       | 2 +-
 api_docs/kbn_eslint_plugin_imports.mdx                          | 2 +-
 api_docs/kbn_event_annotation_common.mdx                        | 2 +-
 api_docs/kbn_event_annotation_components.mdx                    | 2 +-
 api_docs/kbn_expandable_flyout.mdx                              | 2 +-
 api_docs/kbn_field_types.mdx                                    | 2 +-
 api_docs/kbn_field_utils.mdx                                    | 2 +-
 api_docs/kbn_find_used_node_modules.mdx                         | 2 +-
 api_docs/kbn_ftr_common_functional_services.mdx                 | 2 +-
 api_docs/kbn_generate.mdx                                       | 2 +-
 api_docs/kbn_generate_console_definitions.mdx                   | 2 +-
 api_docs/kbn_generate_csv.mdx                                   | 2 +-
 api_docs/kbn_generate_csv_types.mdx                             | 2 +-
 api_docs/kbn_guided_onboarding.mdx                              | 2 +-
 api_docs/kbn_handlebars.mdx                                     | 2 +-
 api_docs/kbn_hapi_mocks.mdx                                     | 2 +-
 api_docs/kbn_health_gateway_server.mdx                          | 2 +-
 api_docs/kbn_home_sample_data_card.mdx                          | 2 +-
 api_docs/kbn_home_sample_data_tab.mdx                           | 2 +-
 api_docs/kbn_i18n.mdx                                           | 2 +-
 api_docs/kbn_i18n_react.mdx                                     | 2 +-
 api_docs/kbn_import_resolver.mdx                                | 2 +-
 api_docs/kbn_infra_forge.mdx                                    | 2 +-
 api_docs/kbn_interpreter.mdx                                    | 2 +-
 api_docs/kbn_io_ts_utils.mdx                                    | 2 +-
 api_docs/kbn_jest_serializers.mdx                               | 2 +-
 api_docs/kbn_journeys.mdx                                       | 2 +-
 api_docs/kbn_json_ast.mdx                                       | 2 +-
 api_docs/kbn_kibana_manifest_schema.mdx                         | 2 +-
 api_docs/kbn_language_documentation_popover.mdx                 | 2 +-
 api_docs/kbn_lens_embeddable_utils.mdx                          | 2 +-
 api_docs/kbn_logging.mdx                                        | 2 +-
 api_docs/kbn_logging_mocks.mdx                                  | 2 +-
 api_docs/kbn_managed_vscode_config.mdx                          | 2 +-
 api_docs/kbn_management_cards_navigation.mdx                    | 2 +-
 api_docs/kbn_management_settings_application.mdx                | 2 +-
 api_docs/kbn_management_settings_components_field_category.mdx  | 2 +-
 api_docs/kbn_management_settings_components_field_input.mdx     | 2 +-
 api_docs/kbn_management_settings_components_field_row.mdx       | 2 +-
 api_docs/kbn_management_settings_components_form.mdx            | 2 +-
 api_docs/kbn_management_settings_field_definition.mdx           | 2 +-
 api_docs/kbn_management_settings_ids.mdx                        | 2 +-
 api_docs/kbn_management_settings_section_registry.mdx           | 2 +-
 api_docs/kbn_management_settings_types.mdx                      | 2 +-
 api_docs/kbn_management_settings_utilities.mdx                  | 2 +-
 api_docs/kbn_management_storybook_config.mdx                    | 2 +-
 api_docs/kbn_mapbox_gl.mdx                                      | 2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx                         | 2 +-
 api_docs/kbn_ml_agg_utils.mdx                                   | 2 +-
 api_docs/kbn_ml_anomaly_utils.mdx                               | 2 +-
 api_docs/kbn_ml_category_validator.mdx                          | 2 +-
 api_docs/kbn_ml_chi2test.mdx                                    | 2 +-
 api_docs/kbn_ml_data_frame_analytics_utils.mdx                  | 2 +-
 api_docs/kbn_ml_data_grid.mdx                                   | 2 +-
 api_docs/kbn_ml_date_picker.mdx                                 | 2 +-
 api_docs/kbn_ml_date_utils.mdx                                  | 2 +-
 api_docs/kbn_ml_error_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_in_memory_table.mdx                             | 2 +-
 api_docs/kbn_ml_is_defined.mdx                                  | 2 +-
 api_docs/kbn_ml_is_populated_object.mdx                         | 2 +-
 api_docs/kbn_ml_kibana_theme.mdx                                | 2 +-
 api_docs/kbn_ml_local_storage.mdx                               | 2 +-
 api_docs/kbn_ml_nested_property.mdx                             | 2 +-
 api_docs/kbn_ml_number_utils.mdx                                | 2 +-
 api_docs/kbn_ml_query_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx                        | 2 +-
 api_docs/kbn_ml_route_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx                         | 2 +-
 api_docs/kbn_ml_string_hash.mdx                                 | 2 +-
 api_docs/kbn_ml_trained_models_utils.mdx                        | 2 +-
 api_docs/kbn_ml_url_state.mdx                                   | 2 +-
 api_docs/kbn_monaco.mdx                                         | 2 +-
 api_docs/kbn_object_versioning.mdx                              | 2 +-
 api_docs/kbn_observability_alert_details.mdx                    | 2 +-
 api_docs/kbn_observability_alerting_test_data.mdx               | 2 +-
 api_docs/kbn_openapi_generator.mdx                              | 2 +-
 api_docs/kbn_optimizer.mdx                                      | 2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx                      | 2 +-
 api_docs/kbn_osquery_io_ts_types.mdx                            | 2 +-
 api_docs/kbn_performance_testing_dataset_extractor.mdx          | 2 +-
 api_docs/kbn_plugin_generator.mdx                               | 2 +-
 api_docs/kbn_plugin_helpers.mdx                                 | 2 +-
 api_docs/kbn_profiling_utils.mdx                                | 2 +-
 api_docs/kbn_random_sampling.mdx                                | 2 +-
 api_docs/kbn_react_field.mdx                                    | 2 +-
 api_docs/kbn_react_kibana_context_common.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_render.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_root.mdx                      | 2 +-
 api_docs/kbn_react_kibana_context_styled.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_theme.mdx                     | 2 +-
 api_docs/kbn_react_kibana_mount.mdx                             | 2 +-
 api_docs/kbn_repo_file_maps.mdx                                 | 2 +-
 api_docs/kbn_repo_linter.mdx                                    | 2 +-
 api_docs/kbn_repo_path.mdx                                      | 2 +-
 api_docs/kbn_repo_source_classifier.mdx                         | 2 +-
 api_docs/kbn_reporting_common.mdx                               | 2 +-
 api_docs/kbn_resizable_layout.mdx                               | 2 +-
 api_docs/kbn_rison.mdx                                          | 2 +-
 api_docs/kbn_rrule.mdx                                          | 2 +-
 api_docs/kbn_rule_data_utils.mdx                                | 2 +-
 api_docs/kbn_saved_objects_settings.mdx                         | 2 +-
 api_docs/kbn_search_api_panels.mdx                              | 2 +-
 api_docs/kbn_search_connectors.mdx                              | 2 +-
 api_docs/kbn_search_response_warnings.mdx                       | 2 +-
 api_docs/kbn_security_solution_features.mdx                     | 2 +-
 api_docs/kbn_security_solution_navigation.mdx                   | 2 +-
 api_docs/kbn_security_solution_side_nav.mdx                     | 2 +-
 api_docs/kbn_security_solution_storybook_config.mdx             | 2 +-
 api_docs/kbn_securitysolution_autocomplete.mdx                  | 2 +-
 api_docs/kbn_securitysolution_data_table.mdx                    | 2 +-
 api_docs/kbn_securitysolution_ecs.mdx                           | 2 +-
 api_docs/kbn_securitysolution_es_utils.mdx                      | 2 +-
 api_docs/kbn_securitysolution_exception_list_components.mdx     | 2 +-
 api_docs/kbn_securitysolution_grouping.mdx                      | 2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx                    | 2 +-
 api_docs/kbn_securitysolution_io_ts_alerting_types.mdx          | 2 +-
 api_docs/kbn_securitysolution_io_ts_list_types.mdx              | 2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx                   | 2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx                   | 2 +-
 api_docs/kbn_securitysolution_list_api.mdx                      | 2 +-
 api_docs/kbn_securitysolution_list_constants.mdx                | 2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx                    | 2 +-
 api_docs/kbn_securitysolution_list_utils.mdx                    | 2 +-
 api_docs/kbn_securitysolution_rules.mdx                         | 2 +-
 api_docs/kbn_securitysolution_t_grid.mdx                        | 2 +-
 api_docs/kbn_securitysolution_utils.mdx                         | 2 +-
 api_docs/kbn_server_http_tools.mdx                              | 2 +-
 api_docs/kbn_server_route_repository.mdx                        | 2 +-
 api_docs/kbn_serverless_common_settings.mdx                     | 2 +-
 api_docs/kbn_serverless_observability_settings.mdx              | 2 +-
 api_docs/kbn_serverless_project_switcher.mdx                    | 2 +-
 api_docs/kbn_serverless_search_settings.mdx                     | 2 +-
 api_docs/kbn_serverless_security_settings.mdx                   | 2 +-
 api_docs/kbn_serverless_storybook_config.mdx                    | 2 +-
 api_docs/kbn_shared_svg.mdx                                     | 2 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx                      | 2 +-
 api_docs/kbn_shared_ux_button_exit_full_screen.mdx              | 2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx                       | 2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx                         | 2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx                   | 2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx                    | 2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx                       | 2 +-
 api_docs/kbn_shared_ux_file_context.mdx                         | 2 +-
 api_docs/kbn_shared_ux_file_image.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx                     | 2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_picker.mdx                          | 2 +-
 api_docs/kbn_shared_ux_file_types.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_upload.mdx                          | 2 +-
 api_docs/kbn_shared_ux_file_util.mdx                            | 2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx                    | 2 +-
 api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx              | 2 +-
 api_docs/kbn_shared_ux_markdown.mdx                             | 2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx                       | 2 +-
 api_docs/kbn_shared_ux_page_analytics_no_data.mdx               | 2 +-
 api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx         | 2 +-
 api_docs/kbn_shared_ux_page_kibana_no_data.mdx                  | 2 +-
 api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx            | 2 +-
 api_docs/kbn_shared_ux_page_kibana_template.mdx                 | 2 +-
 api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx           | 2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx                         | 2 +-
 api_docs/kbn_shared_ux_page_no_data_config.mdx                  | 2 +-
 api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx            | 2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx                   | 2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx                    | 2 +-
 api_docs/kbn_shared_ux_prompt_no_data_views.mdx                 | 2 +-
 api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx           | 2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx                     | 2 +-
 api_docs/kbn_shared_ux_router.mdx                               | 2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx                         | 2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx                     | 2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx                       | 2 +-
 api_docs/kbn_shared_ux_utility.mdx                              | 2 +-
 api_docs/kbn_slo_schema.mdx                                     | 2 +-
 api_docs/kbn_some_dev_log.mdx                                   | 2 +-
 api_docs/kbn_std.mdx                                            | 2 +-
 api_docs/kbn_stdio_dev_helpers.mdx                              | 2 +-
 api_docs/kbn_storybook.mdx                                      | 2 +-
 api_docs/kbn_subscription_tracking.mdx                          | 2 +-
 api_docs/kbn_telemetry_tools.mdx                                | 2 +-
 api_docs/kbn_test.mdx                                           | 2 +-
 api_docs/kbn_test_jest_helpers.mdx                              | 2 +-
 api_docs/kbn_test_subj_selector.mdx                             | 2 +-
 api_docs/kbn_text_based_editor.mdx                              | 2 +-
 api_docs/kbn_tooling_log.mdx                                    | 2 +-
 api_docs/kbn_ts_projects.mdx                                    | 2 +-
 api_docs/kbn_typed_react_router_config.mdx                      | 2 +-
 api_docs/kbn_ui_actions_browser.mdx                             | 2 +-
 api_docs/kbn_ui_shared_deps_src.mdx                             | 2 +-
 api_docs/kbn_ui_theme.mdx                                       | 2 +-
 api_docs/kbn_unified_data_table.mdx                             | 2 +-
 api_docs/kbn_unified_doc_viewer.mdx                             | 2 +-
 api_docs/kbn_unified_field_list.mdx                             | 2 +-
 api_docs/kbn_url_state.mdx                                      | 2 +-
 api_docs/kbn_use_tracked_promise.mdx                            | 2 +-
 api_docs/kbn_user_profile_components.mdx                        | 2 +-
 api_docs/kbn_utility_types.mdx                                  | 2 +-
 api_docs/kbn_utility_types_jest.mdx                             | 2 +-
 api_docs/kbn_utils.mdx                                          | 2 +-
 api_docs/kbn_visualization_ui_components.mdx                    | 2 +-
 api_docs/kbn_xstate_utils.mdx                                   | 2 +-
 api_docs/kbn_yarn_lock_validator.mdx                            | 2 +-
 api_docs/kbn_zod_helpers.mdx                                    | 2 +-
 api_docs/kibana_overview.mdx                                    | 2 +-
 api_docs/kibana_react.mdx                                       | 2 +-
 api_docs/kibana_utils.mdx                                       | 2 +-
 api_docs/kubernetes_security.mdx                                | 2 +-
 api_docs/lens.mdx                                               | 2 +-
 api_docs/license_api_guard.mdx                                  | 2 +-
 api_docs/license_management.mdx                                 | 2 +-
 api_docs/licensing.mdx                                          | 2 +-
 api_docs/links.mdx                                              | 2 +-
 api_docs/lists.mdx                                              | 2 +-
 api_docs/log_explorer.mdx                                       | 2 +-
 api_docs/logs_shared.mdx                                        | 2 +-
 api_docs/management.mdx                                         | 2 +-
 api_docs/maps.mdx                                               | 2 +-
 api_docs/maps_ems.mdx                                           | 2 +-
 api_docs/metrics_data_access.mdx                                | 2 +-
 api_docs/ml.mdx                                                 | 2 +-
 api_docs/monitoring.mdx                                         | 2 +-
 api_docs/monitoring_collection.mdx                              | 2 +-
 api_docs/navigation.mdx                                         | 2 +-
 api_docs/newsfeed.mdx                                           | 2 +-
 api_docs/no_data_page.mdx                                       | 2 +-
 api_docs/notifications.mdx                                      | 2 +-
 api_docs/observability.mdx                                      | 2 +-
 api_docs/observability_a_i_assistant.mdx                        | 2 +-
 api_docs/observability_log_explorer.mdx                         | 2 +-
 api_docs/observability_onboarding.mdx                           | 2 +-
 api_docs/observability_shared.mdx                               | 2 +-
 api_docs/osquery.mdx                                            | 2 +-
 api_docs/painless_lab.mdx                                       | 2 +-
 api_docs/plugin_directory.mdx                                   | 2 +-
 api_docs/presentation_util.mdx                                  | 2 +-
 api_docs/profiling.mdx                                          | 2 +-
 api_docs/profiling_data_access.mdx                              | 2 +-
 api_docs/remote_clusters.mdx                                    | 2 +-
 api_docs/reporting.mdx                                          | 2 +-
 api_docs/rollup.mdx                                             | 2 +-
 api_docs/rule_registry.mdx                                      | 2 +-
 api_docs/runtime_fields.mdx                                     | 2 +-
 api_docs/saved_objects.mdx                                      | 2 +-
 api_docs/saved_objects_finder.mdx                               | 2 +-
 api_docs/saved_objects_management.mdx                           | 2 +-
 api_docs/saved_objects_tagging.mdx                              | 2 +-
 api_docs/saved_objects_tagging_oss.mdx                          | 2 +-
 api_docs/saved_search.mdx                                       | 2 +-
 api_docs/screenshot_mode.mdx                                    | 2 +-
 api_docs/screenshotting.mdx                                     | 2 +-
 api_docs/security.mdx                                           | 2 +-
 api_docs/security_solution.mdx                                  | 2 +-
 api_docs/security_solution_ess.mdx                              | 2 +-
 api_docs/security_solution_serverless.mdx                       | 2 +-
 api_docs/serverless.mdx                                         | 2 +-
 api_docs/serverless_observability.mdx                           | 2 +-
 api_docs/serverless_search.mdx                                  | 2 +-
 api_docs/session_view.mdx                                       | 2 +-
 api_docs/share.mdx                                              | 2 +-
 api_docs/snapshot_restore.mdx                                   | 2 +-
 api_docs/spaces.mdx                                             | 2 +-
 api_docs/stack_alerts.mdx                                       | 2 +-
 api_docs/stack_connectors.mdx                                   | 2 +-
 api_docs/task_manager.mdx                                       | 2 +-
 api_docs/telemetry.mdx                                          | 2 +-
 api_docs/telemetry_collection_manager.mdx                       | 2 +-
 api_docs/telemetry_collection_xpack.mdx                         | 2 +-
 api_docs/telemetry_management_section.mdx                       | 2 +-
 api_docs/text_based_languages.mdx                               | 2 +-
 api_docs/threat_intelligence.mdx                                | 2 +-
 api_docs/timelines.mdx                                          | 2 +-
 api_docs/transform.mdx                                          | 2 +-
 api_docs/triggers_actions_ui.mdx                                | 2 +-
 api_docs/ui_actions.mdx                                         | 2 +-
 api_docs/ui_actions_enhanced.mdx                                | 2 +-
 api_docs/unified_doc_viewer.mdx                                 | 2 +-
 api_docs/unified_histogram.mdx                                  | 2 +-
 api_docs/unified_search.mdx                                     | 2 +-
 api_docs/unified_search_autocomplete.mdx                        | 2 +-
 api_docs/uptime.mdx                                             | 2 +-
 api_docs/url_forwarding.mdx                                     | 2 +-
 api_docs/usage_collection.mdx                                   | 2 +-
 api_docs/ux.mdx                                                 | 2 +-
 api_docs/vis_default_editor.mdx                                 | 2 +-
 api_docs/vis_type_gauge.mdx                                     | 2 +-
 api_docs/vis_type_heatmap.mdx                                   | 2 +-
 api_docs/vis_type_pie.mdx                                       | 2 +-
 api_docs/vis_type_table.mdx                                     | 2 +-
 api_docs/vis_type_timelion.mdx                                  | 2 +-
 api_docs/vis_type_timeseries.mdx                                | 2 +-
 api_docs/vis_type_vega.mdx                                      | 2 +-
 api_docs/vis_type_vislib.mdx                                    | 2 +-
 api_docs/vis_type_xy.mdx                                        | 2 +-
 api_docs/visualizations.mdx                                     | 2 +-
 600 files changed, 600 insertions(+), 600 deletions(-)

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index 988678c710766..d6d9ab8229985 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index b3f9a9145def8..344feea154ce0 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index 2003d18408ab3..9ac38fc1a63e5 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index 1dfa92f584bb0..76d1fc01362ee 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 5f2ffbc4ef342..d9138de835198 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 4727ddd91d6b3..8caff52693e25 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index 64ee2370c0df8..3c638c9cb62ee 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index c1d190397742a..d117f9cfc818f 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index c324be1cfc800..39894c8b21f3a 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index dbf27a6fa404b..04eb48ec8e170 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index bc5f4659d2100..6b50b342c175d 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index b20289c658601..c528ebf8d1a86 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index 28d4098c5317a..6bdf87157a75c 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index c11fbc16238c0..9581c1c0d5f4c 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 7421ee1c48b6e..c502689a36d28 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index b848f07749d1a..59b3958f86bc3 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index 317fede1ff967..d7db206b81a30 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index d564a20bf5fbd..6f38c6acb29d6 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index 7329a4009b010..4f68d00f2663a 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index 4f0424cc613c0..ee5341cc8eff1 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index ecd0b03385759..6c50db728a125 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index c34bd7679590b..a866f523795f2 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 1ee2f3cfed9a4..9750473a3e61e 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index aacd931c1cdf2..504df6bcbbdab 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index 74be893e3c4f6..92e4aa287584b 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index b14b1fae66774..9bf3895f1ddfe 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index e783124a1e176..222a7d055d14d 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index fff017ba5e85b..7f4038f09cae4 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index 08e446a0c62c9..531fe38704175 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index 4822c34a3d2c1..26a6cb86225e3 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index c59abbd3fe7a3..1584ad9836278 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx
index 585e3f4af50de..126bd9e03cc06 100644
--- a/api_docs/dataset_quality.mdx
+++ b/api_docs/dataset_quality.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality
 title: "datasetQuality"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the datasetQuality plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality']
 ---
 import datasetQualityObj from './dataset_quality.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 1e0be76707763..bd49456e1baf2 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index 2e5732b1ac634..f7fb5a0aed129 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index eeb65bd054461..aa59f2adf7955 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 9cb1f4c4e5fd6..0ef3658292eaa 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 72e14f05454b2..aa784e963e5d7 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index f8c7643c44551..db16c7cb17a46 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index a9a26e908a939..f9df198b866af 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index aea2b81b8fb59..cf8506edba559 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 0dba942af27ec..572cefa2d8d57 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 394ca70793c5b..3ef832988ebd1 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index f4169030d3250..4cfd9c1ef5494 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index eaf7c20b72b70..aae3009058e1f 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index a11bc5628abc4..df0195d4af570 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 4c44550e090a2..1449849e9e157 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 4b42e52721c88..9abe639252cbd 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index 7fd7a075d93c9..7a09e82f1700d 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index 0c73d2a28e9e3..0c8431ec3e7a7 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index c8849cdd60c16..a20591a6093f1 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index db6d163730391..ea143b3943f5a 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index d13fe297cfa21..888e1a4e23a52 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index 34877d4c59de9..fbdea7a4f0290 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index ffd28002705cd..337043a82a610 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index 2ec738b293474..7d797795642dd 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index 65ebf4f31808b..c369e4b7c0e89 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index df1d3ae93e5a2..bad77e5587618 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index 8725508856032..f2ade93a34d96 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 8f00418cf826b..7c9693966d5f6 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index 4cee2a27cdb0c..eaa8573a9562d 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 7df7360570d7c..6dacc0627b1d5 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index 9610dd8033f67..c9b5d52b611b0 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index 72e0435996146..8a72ba8218a03 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index efb0db907e4ac..eb61dcc7e0bc6 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index f87444839b0ca..e8ba544eea40e 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index ed298927a7f6b..2caed9a8be4f2 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index cd66cf4d216ca..a397a6ef6ad29 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index dff5d717079f1..a9a1426744683 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index d80cb059531bc..7802337a04a32 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 3848c9d6d01a3..15b41de156ab6 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index d272ef17e2a31..aba984dd438ee 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index 57b1f31f07139..54a54a2408bd2 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 5eee7b1e65e24..22a17c2a2f8ce 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index 86761fe3df5d3..cc53f8883a19e 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index 24c19929110b1..31dd2619574be 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 60bb21608e220..0aee44269c76c 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index f28b67a8ed218..1b1c2e794a460 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index 36b3c13ff5b18..1ce93406187e0 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index 93a61ff576261..b2f576bf59e82 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index f612236151188..ad0f30636c97c 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index 26002f3e49e4e..bc73953d18208 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index 936ee2439a7e3..c5e277d5054bd 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index 40e91f8f0eadb..c3b3ff103e97e 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index 43312a9df46de..08c6b6718054e 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index da725deac1eb8..2c92ca8167a10 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index 6c185e1669e8b..2f6128f30752b 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index 8c4fc58836597..0cf8d423d5a9a 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index bd002bc6023ef..696101e8af026 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index c39eba7aae3cf..10d41ab30ce3b 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index cfcb6ddaf4de5..f7f5eff209668 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index 6afec0e1a6bf1..b147f8cb47a92 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index f106b8c90737d..8d7dee30db223 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index 2bb73953496df..c0fca6b3088d3 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index 335b3c03f8c19..cf66b3512565a 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index 0b6b26f8acbe6..fe5bc2f1cc22e 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index 02e26f02c079e..f49010d326837 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index b16c356f03215..04d000de0de9f 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 8438838328f3b..b760a8420a6f3 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index 19f7978ae86c8..0bb0888573d29 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index c7989a1feaef5..3bd8793f88d7d 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 7a0c2dce512ee..00586cb5c6c94 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index 60a4046e796bf..c29ec82c7d5e9 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 890ff3930fb63..a2b3a066ccfc1 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index a5395e978e437..e555489e5a5bd 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index bb4798d4176c7..f64ca9514a919 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 13e5e17904d86..a5f751d9629df 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index cfb154c4c634e..979ae94957c4e 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index 3830c1f264dcd..ea25a87dec4c4 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index f3cc8bdd1fd6b..48ab99f1c3cbd 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index 003b6c7127d8a..4e848bd1f363a 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index 44cdf7220a957..2773f53c08c80 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index ac3239979696b..6a9b1cd872a12 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index d24f6bbe20c37..19b42ae1366b0 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index c6fb35a28699b..59a5e76ffc70e 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 7b6269b24cb02..c5f40a507f083 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index 325a0c5fc1a3c..ea8055e58640a 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index fc836cfbf6900..8cc640b8d31f4 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index 589568cbf5cb1..ac88b1e4badd3 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index d47ccf36301aa..6ca34a06026f8 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 845defb67875c..cb76a25696244 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 7903d094a0b6d..932f02f288d08 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index 9ff19d8dba7a9..23e5e05038007 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 0da30ad69c143..21d6fdd927864 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index 7847853a7861c..71cf0c8a18189 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index b16a7be370040..cc80f749f4f66 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index ccd08428930cb..c038d75c0b23d 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index 81ccad3eed414..cc115c289e4f0 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index a0dc055f56473..c944d535e85e7 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index 7999884ff9e3d..492ec8976e356 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index 4c67a8f23bb8c..827260328b8f5 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index 1555783986c83..266f839543083 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index 01bf6514d3056..9ebc1f5d763da 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index 2901c4a7ccd82..bae380a5794c1 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index 5b52e2b39f387..8f46339780b12 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index 74be68213c826..81286eabe1f3b 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index 1e5db1a11bda3..5dbd8929e932f 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index 896d389e9ac23..684fc5510ccf0 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index b73c6ae6cce29..d85b40682000b 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index 8797a5c906040..d3be8fd01db8f 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 9ad20671a1e95..31d3a5d3962b5 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 340ff932f603d..6270fb67990d9 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index ae291a272225b..bcdddfa80f617 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index 2d27d504231e4..a560c3eb7ac50 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index 21f1dfd9a6c45..48ad2f757df06 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index a3e836577fd01..dfe4cab702c21 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 768c705dc15ff..20addead1a374 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index 931f1f371cc08..74ba450937c7a 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index 9341c24b99aac..866af8ebb1a4c 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index 80ab78d2e62ff..dc2a2c44b5c98 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index 5c53af75bf8dc..b603b44dad0c1 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index f80d738074551..484a298aab970 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index a3e1b8cd8b5f7..b5147c34f2d33 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index 7c297dfcb2733..9fea443e0ceb1 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index c686e3af93d01..9e2a7ef2c3644 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 221cc6a874034..3bea8e18326d2 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index a9eb48e165d07..b84b9d92e678e 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index 564e890b404a1..66cda6e2bd16e 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 9e0659c9d9868..4561e7be05121 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index 79989df639fc6..0403a6976024f 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index 0d399eb5615d3..d3f21e0900137 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index adbd1853147f6..d5ee6738e25cd 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 4f3c87e71d3e4..2e7fed2e19828 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index a2936d99fa337..2aeb5afeb92d6 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 88af1943497a7..395b23d645029 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index cfc4c155dc011..dfb4a3cdb3cab 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index 1149e6e8070a1..8ad64fbd11472 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index d0b3af0c3c3a5..3614274eeb6b9 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index a76fe8ae1d180..fea19dcd62f0e 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index dc8a89e4fe94d..65f1c5f72ef99 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index eda03f3aa7471..efd66acfd9d37 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index 19a8036aff2fb..75fec6c279e4a 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index ffa5d2341107f..48144c17b84b3 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index 78ffde8e65535..c2e7495e241ad 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index 6c0e4c880bdde..364dce64a486b 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index 7680b750abbb1..0aa2695ebfd37 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index 06b4723edcccf..f5e38a7d6d861 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index 9343ed35beb82..ab3ae7ed7e45e 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index 55ba149693f36..530036dacd4dc 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index 9ee9e842efe21..d59efae08f8d9 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index c2150b69bb4e3..57fa6c688bec4 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index bd898389c4a80..d443a593c828e 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index d8241e20afd5d..a5e892f23f85f 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 9fafeace0f8e5..2b10cfc074458 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index fcca41ba06b3a..9696aabeb9c91 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index 6d593a60f9fda..256cfe5a0a4ee 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index 608a505abb866..6b6f18e067739 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index dc6bb558b02df..bc25030ea1248 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index a10ba94d123bd..df42b2242d82d 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 888c307014f2b..4ab4d11693a58 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index 8cc486d4c1635..ee58917b51a78 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index 658a1f94e52af..a83ca54d66766 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 80351d125860c..483e64f99bc79 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index 0e7926ea70924..971b4d84bd8a3 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index e0e007e6b1c2d..93a7190f81723 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index 2970f66ef2f72..a451d921c0d29 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index f0df954c6893d..cc00f3ad71572 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index c686f24b938e3..39f9001eaded0 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index a827b98e94b73..f7725dcd0149e 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index 549c23e18bc38..da5af0488b993 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index d2a7ed1a7851b..7ae658669ce17 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index 4e77703e67f0f..066326458fa81 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index da522767dbe94..1c3912f2048d1 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index 0c55de784187e..3840b5d48b1f3 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index 1409d54d45764..ea01ac0aab2ca 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index e426022478a35..c3a29435e180f 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index 5dad708544cc2..9168969f671db 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index ddbc6f2761354..e7497a69397ab 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index f17d033280a3a..a4399e7976640 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index bbd200681025e..4e70de4b88a95 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index 9a4836eeb27bd..a948e22fbf8f5 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index 79a5c6cdfb1ad..f29cbb5aa0bb4 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index 32461a4e233df..89c1320458f13 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index fef2578960acf..b75269063ee7b 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index 24946b8bf3d7a..ed43ab2f9fe9c 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index cbd347edc2ea2..8a0bbbba01e3a 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index ca4c6b3704567..5aaf687e9f36b 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index a954539f604dc..0cd5806c0d717 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 47024e2b2a142..78428a0412879 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index 716882fa0db86..3548d49f97bc1 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index 04a265beea117..96ad7781f8425 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index a842aea4a47fa..c0bcaf3a77da1 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index a94a612bc3e22..afe5e1e2e8f0f 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index 1f17474b01a7b..b02c3e9c428bd 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index bce17abb14460..f2f97ca6b4901 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index 555bc03aa9c85..9bd8f62366c0b 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index 4d4fb99028a8e..55b604fe0267c 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 0348639e82656..1f0d13d5ada31 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index 71c7760840502..99b04ffeeb7b6 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 6440b28efd900..405b271633f62 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 68c9c2b8db5b1..2bec8fe763234 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index c81c841ac1c38..2e87849924882 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index abced9e7849e3..04439799b5ce0 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index cebbbff02c176..7289e69547728 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index b33e002ed1c4c..c4759926c6dbb 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 785dcf609e419..0c905ddb09ba1 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index 27690726ed14d..eaff759d4ba15 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index 8366aadb3553c..f1aedef867b75 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 0590349cfb5a4..122c434563cfe 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index d5a6ab97b525c..10308de0ae17b 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index fe63dd555bc9c..cc756cdf3fc4c 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index a6fd72dac26d6..4ad43a2d05113 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index 27eea61b4dfee..e6aa0d0524564 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index 38b741ab2edf6..838bd051909ed 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 8bec255a5335a..970412a6f3d69 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index 3b9f46139b025..1f95e77735cec 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index 1fcbd7c700c7c..b03a494569c17 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index 114e05565c196..b904845581e5b 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index cd62b723a061b..8eec9f98053c1 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index 10b3414582ae1..dba19149cbc46 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index c06d018a39002..f49be0eb79c50 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index 309e6d2079f76..1c95d494f355e 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 255e636f9e476..6478cc5e80eab 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 5676e83f7a75b..1cdf0abedbd87 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index 442f726196996..ce50d789e944e 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index d97690ec056f1..976c3e3f34b17 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 8943c9b465bd8..700632e50f619 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index 31a4d9cb74856..1fed8b80b8204 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index 560db706a1f7b..35acc251497ab 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index 7462e8128ba94..a956e2e491b85 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index 01225ad841ffd..cfe16d723a43b 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index b42dbc7985543..1f4c660d841fe 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 32641b6ae27ab..77f51c42353d5 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index 92932afe5dc75..69b7b1c6a3751 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index cb7e8075e5aca..d6e35eb1b84b0 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index 0fce60357fe36..dc613cd94b14a 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index 41392b307d134..8b82b154037b6 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index 99a342d15c71a..3d22210c8926c 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index c99731bca3c7e..63b0989354f50 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index f9a4fb43047d5..19ce6447804df 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index 7941a640f2e40..d13c50db6cfd2 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index 21501d8040dc7..f0f510262730f 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index ef5e595f3f2bc..b1aecd9ddb49a 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index 729740b85cf86..7b7e8ca45edf6 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 57b4b61cfa412..977bece87a01a 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index eabaa8b0b99f1..6d8006a1d6920 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index f626da347e705..77e35a90bceef 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 4b4248ac1b13e..94abf18687a90 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 8ff084e90dc03..685c97d681574 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index c032e5584e13c..ef182d95f6663 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index 9a95294e14a43..e0bbe6d2f333f 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index 94b8c2095aecd..d0d3ba676df87 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index 076bc3aa9280d..f69849f25b3e8 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index abbb8b85e92b4..98612cf8f78fc 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 5aa7d7c068e1a..6f25b3cf6d86a 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index 4263db1070ea6..4c8e0fb77335c 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index 9019c7e6e4d3b..b5f539ca804ce 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index 50ac1c1c8d888..7555d0d1aea7e 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index 7d810a4af1ae1..f33ff02b1f20a 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index 6e6224cd2c152..4650fccdb804a 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index bcee903f9d31c..2cb8d06aef146 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index 34072a70afce6..00ee85a7ca5ba 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index 33455d8393491..4d28f95a460d5 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index e2c8caa66d904..bb19f87b1f5fd 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 2a55e3fd27008..92eed4e27bcb5 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index 7a49dcf6ba60b..85bc339977fad 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index d79c7dde0820b..0405cee9cc547 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index 4be92e6f4d299..e982f53c8a944 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index 2629a7c578ea5..8a9ea28ae4463 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 9b75de4308fa9..7f5ba2765ddb4 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index 7e88120344856..7a948bbeb1c37 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 8d8c9273fd09e..9e40483b8b206 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 7b59331bd008d..21ceae65beb32 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index 10ea87f86790f..0445b002fedbe 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index 0f0d45c5747ef..f64df9254a659 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index 9ec61c28de630..3f489db70e5f8 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index 5f92747edbe09..bb373febafa12 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index d69a0d90f022a..14d84da275736 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 3dc0b93f5655e..92e465237309f 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index ab7b8c9819f25..cd94e56689f6d 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index 618c1b514d7a6..06e2302dcf284 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 86f096f72cc9e..7fef7a1280796 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index ad49831154d87..4486e09f8930d 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index af209c8714a1c..ef2246dcf88a7 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index 0f0e4825c5b7d..41dc2d02b0738 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index ab43e8f15eb16..1fb879003e867 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 2e47b10e55f82..486fa080efa18 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index 78f6b8e68d7ba..643e6a7b8dcff 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 01fa286e3bd7a..ded1b808bb732 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index ea4a3c872ec1c..94fc891347859 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 28ec4317effd6..8936880e026d3 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index 1cf22ca8087e7..b18b691690ab5 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index 27c0674b1ebc6..06b666ede5eec 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index f03c117ac0e38..4fc47f0070f59 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index ef9da0978181a..06cde0220b197 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index 9768a0b86bc40..fee75debe28fb 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index f332328824e43..5e2eeb583def9 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index b8c5343b41454..4af86b5ace17c 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index f660f407f3c5e..833d05f09ac4b 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index 529cb63fc1640..83c7978d6ac48 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index f85b22c626c12..1f2b47e2bd427 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index df4497bdd1d7f..c3972d97c57b1 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index 8ba90f48f7276..e8558b14ac962 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index 2e645934335af..05cfe3e7fa9aa 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index 3acf4c1eda708..a3c5565d56d5f 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index e32b720fca61f..49fc822afcd40 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index d070eb2f99036..1849e16a4cef2 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 992ab9c69a1f7..0bd2a8ae8724e 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index 080dc9478cedc..9ff4e20945361 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 3dabe53ec9e98..4647725e4ae17 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 984a0def47d21..3d1bcaea183e3 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index 93827fe74158d..a3bc164ad95f5 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index ec4d29ff39af0..ebb61ef3819cc 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index e4246475acd1a..d19dc413ac4da 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index 7c48ab6974dc6..f510bd16a363a 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index 6f55be2ee719c..ee791f0fdb644 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index 1f2839f8ee35e..416863f3f41e6 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index 8e2430f1da5b8..a8c8e89643dc4 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index c6551d143d600..29ea120a748e5 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index 5ae50299bbad9..c4651a6120ede 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index c19b47f38e14b..d434ad728f4cc 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index e71a659a39eb8..229efd5396a1e 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index e5585b10979ef..ee5d37730a6a7 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index 54161c510e5cc..031e76a81e08a 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index 8336be94e2742..d4f2ef64f0b54 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index f8093b5d72790..05b8d491c862f 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 9b0f32149536f..79bc93eef2043 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index e16fc56e220fb..900a962fa6b2a 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index 5bd6546de2568..e7363b9da8aa6 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index 7857b48908d7a..58136a0209c5c 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index 668b962e62986..db5399590ce56 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index c301cfa4d2e0a..0a05617370251 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index 64e55947f901a..4ec372452ea2c 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index f479565f1c2b9..59c9a531b3885 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index 0bc665d355ddc..8c019b81dbf9d 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index b9c9be79af681..6c0ea999098c3 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index 832cd109edbcb..016a36bc401d6 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index 270949d64076c..ec5e23634ae53 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index f0794d25bb65d..e668e9342ed6f 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index ecf173ac1b37b..0257c4f07c31c 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index 159056dceed6e..58125333438a0 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index c56ea6d36718f..79a7039e4008e 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index d6de3fa1c262a..d22d74b21a8c3 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index 3853fc76674ba..06409d51dd500 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index afdec64a98898..c9ff7d853629f 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index d59377be84002..c6619f4152a9d 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index 4225cd7309c1f..25b32275a0420 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index c34e66e7815c0..d8c8b2f53f61a 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 7583a5eb78ec8..35cff33c6a2f8 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index 5a0529c50a454..f35b3f77ef6c2 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index 5cb3c2c650ce2..458322bdaa264 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 82b65497e0b70..3c407ccb37757 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index 52708dbd87f0f..6d26602652bd4 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index c61617e5bd890..bcd3e93230a2e 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index 9e843a4b98444..7cf21d0e809c0 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index b94f022c3168e..63e70dc3ecb11 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 1e47a044daef3..c909291fde711 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index b5cf673fbeb56..6230583b8ea3a 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index a282a27a299ee..306863eda0a6e 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 0057e9e7eeb96..512311fc57ea4 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index cb3d626a62352..7e53f8f4ae5e4 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index b1dd13cb88dc5..534976f821363 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 0270b9bd05b26..0576d4a793915 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index ca62c05bc2bad..7a81131d86da9 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index a4259c148fa20..58e58d41968c2 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 6deaa62dabb38..761c6e46e72bd 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index 197970d9fdd24..64b194924e607 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index d7a63719658d8..1cc1e2670a956 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index 792c04970dbad..eed545c621187 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index 94130801523d4..df116611a7957 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index 2ac9ded3c5937..fc7d4ef3a34bd 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index 067a499634f0f..084288cbeb110 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index 8fb665d021cf2..3d5ac95aed39c 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index e87709eaf0e15..77f4fba099255 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 9c696a07e9fd9..27aeb4faeb038 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index f891b44aeb302..83b6792ccc194 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index dd7b513a9135d..9d65a0f33a8d9 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index f268e41ff83d9..b9a0141fab136 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index be8aa01ebe902..23ded88c49487 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index 008da5f9de2b2..a9cc906d9084e 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index db550fd8b15ff..4b88c735bf469 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 50599cb2b7639..94bfd43a2c13e 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index 1b17cf2458969..0e62529fb7183 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index 26763e0e522ea..e6a71090d6d7a 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index 4a2ef362fe140..8a1937892fa3f 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index 6972cfe591ab6..96381509afeba 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index fc6bde75c9c6c..ebf2de483da9d 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index fb6ee13864a0b..8ec76bb8d11e4 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index fc0bedb802cd8..0b2c4028567c2 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 8a0f233a667e4..4b7550cc173c3 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index 2a6febfee5c32..5a6ffc5da0093 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index 7d7e622535d36..913fae863b263 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index 653b35fb6e217..b51072b0fb944 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index ef387b7ef842f..d766b71f5b7e6 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 3aadbbf59b4f8..06c7a58f9d979 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index aa7af580417d8..589b76316953f 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index 59a67e222ed08..50984044bf2fb 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index 2c18ae33e2261..8e6e61eb91938 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index 5819fe6924a60..07ecd37786de7 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index b8f6b66ecbac3..3684ab8f55f5d 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 25ac916c83faf..02609ba4ae070 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index b28bedf4b892d..7f6923b35b3bc 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index 59a19aa118a16..35a1331d32935 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index 24398ce9d828c..ed06b60296b0e 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index 1aa389af56fa1..95ba662021b04 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index 5c0d16a9c8380..b539988fc13a4 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index 8e29e8158b961..6f782e38e89df 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index c29b09a8f399d..27c3fcaee1de6 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index e271f8dbee680..9f585a73f967a 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index b10c5ac8e4551..d746857c82075 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index ba782534616f8..4b6e6b0730551 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index 4c58827e27df8..147b422f7ad6e 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 6eb2f04961423..0662690a16a87 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index 53fb2baa31cb5..cc899ba34fe7a 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index cd902f6b53dbb..9084d914fb491 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index 2940527e424cf..a300505d31def 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index fba771c2fe60d..3c630539b6321 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 660236a453a9f..5a0cbcfa6cd33 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 36b94b70325f7..c2a79253451f0 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index f983075d88ada..671137f40fc6c 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index 12248beb9deb4..8ae433df8e5bc 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index 6e71d052f34b4..747c002095027 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index fd5839aa671ab..614ff9f794d04 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index 49c5ca710db1a..ec2260f65463f 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 36b7777f07ebb..95a6048ca1c6e 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index 5cc3a99d44901..8495114c7b3cc 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index 757a4811ecbe8..278721a5ec79c 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index cbe9cbeb1ebe4..a6f36826322f8 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index f7386ca4f47bb..d07be73bde435 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 7bd7b997de448..16e3fdbdb2b21 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index 4db920ed7b332..422d6e8e0ab03 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index 8f15ac6920470..bcf20f2ae2d4b 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index 99fc611b16456..2c4e9ebcd3138 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index 43aba49306629..26849e471f9d0 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index dcfa3651aaef7..155c6d8cd2a93 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index e0fd4490619d4..898f181037fd8 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index aa397a5125648..ee603e40adbc8 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index 2e3a5ed8e9be0..c8804f09e75fb 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index e9cdc7bdf3276..423f0c13f0ca8 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index aa98bd8ff6447..8f30454e0bff1 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index 4436dc427b06c..97ff6dec3321b 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index 449bb4a309cc5..3e76793fedb70 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index c2db1c22b2538..60ecd3dca12d5 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index 375b7d66920ec..e90c6118a60c9 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 07e25cde374b9..dc81686723428 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index afe3b86374796..ed68baf707f29 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index f5007b4d7cce7..6cdd46082f933 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 21f9a2cab2679..4b0ce6084527a 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index 2aa5550689c41..48d66af612706 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index 440605f1f4584..3a31cc5c018e3 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index 177c219cfca38..e0946656c0347 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index cb2a351059cdd..c2e1cf58433aa 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index 302875514521c..79329f2c04085 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index 58b66eaa7ef86..4c49a99838b8e 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index e75ad64f17b0d..920c6c012967e 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index 9318c1bd982e9..a27cd2a99651e 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index c64d3541cae75..0b41ffbf6db84 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index 43b4780119fed..c9e9e3c48e1c8 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index 25a71e702baf7..48cba67796147 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index 42b6d8b33355c..130c138da92c6 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index 775d0eeb6fd6d..a83c5d4919528 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index 2e0c343d8a105..97a81202d2a2c 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index 60c14f88a5f7c..3ee23ce97e7d1 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index 8015022c70fd6..860420062a024 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index d75ff0227fde5..77e92dc197523 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 1c5e0c61e7a44..2801641e1bce4 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index 7f3981778e6da..e234dc71d203f 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 57eb367704d26..9bad2dc0f9023 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index 461616e6d47d1..9c38449a99e4a 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index 5c96020805e15..f462df82a2cb0 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index 680016f84f6d1..fb11fad6f69f4 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index af50f4ccf6d81..896682bf92449 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index 116ec3cb2ec2d..aeaf9179793f1 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index df9ea95fda5d2..4eba30b179eef 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index 70c605c3826ba..de771caebc447 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index 936b452090233..87baedcabc9cb 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 9d8395c7b3148..568ce7d9ef3d2 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index 555a34860d52d..f8a0179c12fd0 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index 75cc4975a43c2..f840ec75bb646 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 3caaa786d8aac..702878197be16 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index da808e02c1c9c..1ea7db123357f 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index b2b439c89f804..b2347733a7382 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index a282084a3b217..e62dffc9751c1 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index ef492dfe515b6..84c3888a02857 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index 82ec941035493..7d6267dac3400 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index 92201504c3a33..ee3b287d9cd39 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 0290055d7ae93..49c0de6bc2f25 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index 4e9b16675ad9a..b0d6abb3b6fb3 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index 420370316fa98..52246fa18aa39 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 5ed6e3c68fa79..2f15196aa81f3 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index 0d9d5b7f8f1fe..366026fdb4700 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index e053932b09dac..6e017beba5502 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index bc3f006d1597b..9f0db68b149ad 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index b2ccc29eda9a1..5583e9ffff785 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index c866cba80fab7..5149836f73944 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index ac11013acbb37..95d8e5eacfff3 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index f4ec889957d94..46b629e8851b5 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index b5421fcb30194..f43e8d4d09716 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 0372e20a79388..5c0c7a83a7232 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index e14e0b73884f3..8a0c71e3b1a4a 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index 66f55c3a3b9e7..67756ba585fe5 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index 0cd9aa6888b30..c289af1a7c540 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index ff1cdb05f8c65..49bff997953f3 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index ea3f1dc1f6c0a..997c6f58dec3e 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index d6851833b7cad..3ef783dda98ae 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index 9b67ccc07ac1d..b44cb37ba6fbe 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index 1582479a963f9..af3df35f3dff7 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index dc6f2b76bf353..177cc1bc03fe7 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index 5ec672aafea6a..0da5fd4d5fce4 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index c8c4bfda13509..87755ea57c277 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index f4b072bded1f6..7e531b3208248 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index f5ffd2a8d7b2f..7170da67f7c45 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index a2ca2c72a346c..55b6a7be2c12a 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index c90c6f14881ef..609b298cf31fd 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index 1560027bc69b3..e02d50b2cffc6 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index eeb401005ef41..7dd6728638d0d 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index e66dd1cfba1ab..76bcf90b46950 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index 9ca65f04def1e..3ab160cb1461d 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index b9f554ff33ab8..7e1710624f162 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index c408211374d08..c39fa49ad564f 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index 566c283d550aa..9608b7a046012 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index 399ce177dedb6..e55f92899fa46 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index 25c30a6d07a0a..7262a2757de79 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index 237f2c79d06a4..4e272ea1cec19 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index d5baa27e4a9b2..55474bb2e4e74 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 416ca839855db..867d78472ffe4 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index bcda657dc7453..32b7f896f8983 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index c1de9a403d703..ece3dbb4eccfd 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 84b0b144ddf3e..39be0535d0498 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index 9671da2531818..76683dd884027 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index 50a3315ba1ead..e8b444d5d1db9 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index ecc7d84ca68e2..7d330122177fa 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 137bd65a0b3a2..9aa7ca2a3b0e5 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index 7843e5f1195fd..275d0e6a891d2 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index bf2ffd33cd4cf..788deceb49c58 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index 7acae69ef05e2..78fe024ca7d41 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index 7f9f8caaa5194..d503bfe576bab 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 3a9519cadfd97..fba35e01d0ba6 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index e73c495395055..d1b7007bb88f6 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index 6cbf1f8de4936..9fab0bb8f8450 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 3a7ceb62186c1..3e96352477092 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index 7ecb56263a819..950c42f8d01ff 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 619a13492b53a..b2130d9a20be9 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index 42df6c89dbf8a..a8b2112d1f99f 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 23a2b28e561cb..1ea52040e10d6 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 8923bc91e0f94..26e6026effa71 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 7aa79aee514cc..6dc3ff0ac79c3 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index e6f57fe9a029b..0b8ad54581149 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index a68f4760ca753..6a400e98b8a5a 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 8a8026167aab1..138724d1d76d0 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index b2af92e23e169..34dfff912efdc 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index 92d93ab01cee1..179cae1877fd2 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index 792c82b1c9fa8..6cf3c07e27806 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index 3b4395bb90dbc..594b57f54cbab 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index bf0af5ae96f13..1eb66ecf126fc 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 03eeb0e205e02..467029eb24259 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index f5c976a84e135..6209e2e5ea763 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index 1ea7b53697ef8..df9cad6291046 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index cfe42d9e27434..b9bcce245cb87 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index 566df4f2f574a..5fc98fb7ca97b 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index 610e2fa8a3a7b..1c5f31421e640 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 9469017d9c9c2..4bf71e28729e3 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index 7c6cd8aba1230..59deee8397bce 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 0688ddd615e13..5241236fb6947 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index 222e97bb6aaa2..bfedcfe18c936 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 0998137134d0d..4d900eba000f1 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index 16965e85a4fbb..0f4a5455cd861 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 804395c8c5a92..9cc36c45b6c52 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index 07459ef9bc679..38fc675c44b46 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 54c8c353a7f46..40ff0aca07ee4 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index 8feee23fbad0d..ecd430f01c0b6 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-11
+date: 2023-11-12
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From 55f65d31f81e55b0ab8427a680216256c67eada7 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Mon, 13 Nov 2023 01:10:43 -0500
Subject: [PATCH 115/147] [api-docs] 2023-11-13 Daily api_docs build (#171070)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/520
---
 api_docs/actions.mdx                                            | 2 +-
 api_docs/advanced_settings.mdx                                  | 2 +-
 api_docs/aiops.mdx                                              | 2 +-
 api_docs/alerting.mdx                                           | 2 +-
 api_docs/apm.mdx                                                | 2 +-
 api_docs/apm_data_access.mdx                                    | 2 +-
 api_docs/asset_manager.mdx                                      | 2 +-
 api_docs/banners.mdx                                            | 2 +-
 api_docs/bfetch.mdx                                             | 2 +-
 api_docs/canvas.mdx                                             | 2 +-
 api_docs/cases.mdx                                              | 2 +-
 api_docs/charts.mdx                                             | 2 +-
 api_docs/cloud.mdx                                              | 2 +-
 api_docs/cloud_data_migration.mdx                               | 2 +-
 api_docs/cloud_defend.mdx                                       | 2 +-
 api_docs/cloud_experiments.mdx                                  | 2 +-
 api_docs/cloud_security_posture.mdx                             | 2 +-
 api_docs/console.mdx                                            | 2 +-
 api_docs/content_management.mdx                                 | 2 +-
 api_docs/controls.mdx                                           | 2 +-
 api_docs/custom_integrations.mdx                                | 2 +-
 api_docs/dashboard.mdx                                          | 2 +-
 api_docs/dashboard_enhanced.mdx                                 | 2 +-
 api_docs/data.mdx                                               | 2 +-
 api_docs/data_query.mdx                                         | 2 +-
 api_docs/data_search.mdx                                        | 2 +-
 api_docs/data_view_editor.mdx                                   | 2 +-
 api_docs/data_view_field_editor.mdx                             | 2 +-
 api_docs/data_view_management.mdx                               | 2 +-
 api_docs/data_views.mdx                                         | 2 +-
 api_docs/data_visualizer.mdx                                    | 2 +-
 api_docs/dataset_quality.mdx                                    | 2 +-
 api_docs/deprecations_by_api.mdx                                | 2 +-
 api_docs/deprecations_by_plugin.mdx                             | 2 +-
 api_docs/deprecations_by_team.mdx                               | 2 +-
 api_docs/dev_tools.mdx                                          | 2 +-
 api_docs/discover.mdx                                           | 2 +-
 api_docs/discover_enhanced.mdx                                  | 2 +-
 api_docs/ecs_data_quality_dashboard.mdx                         | 2 +-
 api_docs/elastic_assistant.mdx                                  | 2 +-
 api_docs/embeddable.mdx                                         | 2 +-
 api_docs/embeddable_enhanced.mdx                                | 2 +-
 api_docs/encrypted_saved_objects.mdx                            | 2 +-
 api_docs/enterprise_search.mdx                                  | 2 +-
 api_docs/es_ui_shared.mdx                                       | 2 +-
 api_docs/event_annotation.mdx                                   | 2 +-
 api_docs/event_annotation_listing.mdx                           | 2 +-
 api_docs/event_log.mdx                                          | 2 +-
 api_docs/exploratory_view.mdx                                   | 2 +-
 api_docs/expression_error.mdx                                   | 2 +-
 api_docs/expression_gauge.mdx                                   | 2 +-
 api_docs/expression_heatmap.mdx                                 | 2 +-
 api_docs/expression_image.mdx                                   | 2 +-
 api_docs/expression_legacy_metric_vis.mdx                       | 2 +-
 api_docs/expression_metric.mdx                                  | 2 +-
 api_docs/expression_metric_vis.mdx                              | 2 +-
 api_docs/expression_partition_vis.mdx                           | 2 +-
 api_docs/expression_repeat_image.mdx                            | 2 +-
 api_docs/expression_reveal_image.mdx                            | 2 +-
 api_docs/expression_shape.mdx                                   | 2 +-
 api_docs/expression_tagcloud.mdx                                | 2 +-
 api_docs/expression_x_y.mdx                                     | 2 +-
 api_docs/expressions.mdx                                        | 2 +-
 api_docs/features.mdx                                           | 2 +-
 api_docs/field_formats.mdx                                      | 2 +-
 api_docs/file_upload.mdx                                        | 2 +-
 api_docs/files.mdx                                              | 2 +-
 api_docs/files_management.mdx                                   | 2 +-
 api_docs/fleet.mdx                                              | 2 +-
 api_docs/global_search.mdx                                      | 2 +-
 api_docs/guided_onboarding.mdx                                  | 2 +-
 api_docs/home.mdx                                               | 2 +-
 api_docs/image_embeddable.mdx                                   | 2 +-
 api_docs/index_lifecycle_management.mdx                         | 2 +-
 api_docs/index_management.mdx                                   | 2 +-
 api_docs/infra.mdx                                              | 2 +-
 api_docs/inspector.mdx                                          | 2 +-
 api_docs/interactive_setup.mdx                                  | 2 +-
 api_docs/kbn_ace.mdx                                            | 2 +-
 api_docs/kbn_aiops_components.mdx                               | 2 +-
 api_docs/kbn_aiops_utils.mdx                                    | 2 +-
 api_docs/kbn_alerting_api_integration_helpers.mdx               | 2 +-
 api_docs/kbn_alerting_state_types.mdx                           | 2 +-
 api_docs/kbn_alerts_as_data_utils.mdx                           | 2 +-
 api_docs/kbn_alerts_ui_shared.mdx                               | 2 +-
 api_docs/kbn_analytics.mdx                                      | 2 +-
 api_docs/kbn_analytics_client.mdx                               | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx          | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_common.mdx           | 2 +-
 api_docs/kbn_analytics_shippers_elastic_v3_server.mdx           | 2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx                   | 2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx                   | 2 +-
 api_docs/kbn_apm_config_loader.mdx                              | 2 +-
 api_docs/kbn_apm_synthtrace.mdx                                 | 2 +-
 api_docs/kbn_apm_synthtrace_client.mdx                          | 2 +-
 api_docs/kbn_apm_utils.mdx                                      | 2 +-
 api_docs/kbn_axe_config.mdx                                     | 2 +-
 api_docs/kbn_cases_components.mdx                               | 2 +-
 api_docs/kbn_cell_actions.mdx                                   | 2 +-
 api_docs/kbn_chart_expressions_common.mdx                       | 2 +-
 api_docs/kbn_chart_icons.mdx                                    | 2 +-
 api_docs/kbn_ci_stats_core.mdx                                  | 2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx                   | 2 +-
 api_docs/kbn_ci_stats_reporter.mdx                              | 2 +-
 api_docs/kbn_cli_dev_mode.mdx                                   | 2 +-
 api_docs/kbn_code_editor.mdx                                    | 2 +-
 api_docs/kbn_coloring.mdx                                       | 2 +-
 api_docs/kbn_config.mdx                                         | 2 +-
 api_docs/kbn_config_mocks.mdx                                   | 2 +-
 api_docs/kbn_config_schema.mdx                                  | 2 +-
 api_docs/kbn_content_management_content_editor.mdx              | 2 +-
 api_docs/kbn_content_management_tabbed_table_list_view.mdx      | 2 +-
 api_docs/kbn_content_management_table_list_view.mdx             | 2 +-
 api_docs/kbn_content_management_table_list_view_table.mdx       | 2 +-
 api_docs/kbn_content_management_utils.mdx                       | 2 +-
 api_docs/kbn_core_analytics_browser.mdx                         | 2 +-
 api_docs/kbn_core_analytics_browser_internal.mdx                | 2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_analytics_server.mdx                          | 2 +-
 api_docs/kbn_core_analytics_server_internal.mdx                 | 2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_application_browser.mdx                       | 2 +-
 api_docs/kbn_core_application_browser_internal.mdx              | 2 +-
 api_docs/kbn_core_application_browser_mocks.mdx                 | 2 +-
 api_docs/kbn_core_application_common.mdx                        | 2 +-
 api_docs/kbn_core_apps_browser_internal.mdx                     | 2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_apps_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_base_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_base_common.mdx                               | 2 +-
 api_docs/kbn_core_base_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_base_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_capabilities_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_capabilities_common.mdx                       | 2 +-
 api_docs/kbn_core_capabilities_server.mdx                       | 2 +-
 api_docs/kbn_core_capabilities_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_chrome_browser.mdx                            | 2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx                      | 2 +-
 api_docs/kbn_core_config_server_internal.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_browser.mdx                   | 2 +-
 api_docs/kbn_core_custom_branding_browser_internal.mdx          | 2 +-
 api_docs/kbn_core_custom_branding_browser_mocks.mdx             | 2 +-
 api_docs/kbn_core_custom_branding_common.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_server.mdx                    | 2 +-
 api_docs/kbn_core_custom_branding_server_internal.mdx           | 2 +-
 api_docs/kbn_core_custom_branding_server_mocks.mdx              | 2 +-
 api_docs/kbn_core_deprecations_browser.mdx                      | 2 +-
 api_docs/kbn_core_deprecations_browser_internal.mdx             | 2 +-
 api_docs/kbn_core_deprecations_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_deprecations_common.mdx                       | 2 +-
 api_docs/kbn_core_deprecations_server.mdx                       | 2 +-
 api_docs/kbn_core_deprecations_server_internal.mdx              | 2 +-
 api_docs/kbn_core_deprecations_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_doc_links_browser.mdx                         | 2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_doc_links_server.mdx                          | 2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_elasticsearch_client_server_internal.mdx      | 2 +-
 api_docs/kbn_core_elasticsearch_client_server_mocks.mdx         | 2 +-
 api_docs/kbn_core_elasticsearch_server.mdx                      | 2 +-
 api_docs/kbn_core_elasticsearch_server_internal.mdx             | 2 +-
 api_docs/kbn_core_elasticsearch_server_mocks.mdx                | 2 +-
 api_docs/kbn_core_environment_server_internal.mdx               | 2 +-
 api_docs/kbn_core_environment_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_browser.mdx                 | 2 +-
 api_docs/kbn_core_execution_context_browser_internal.mdx        | 2 +-
 api_docs/kbn_core_execution_context_browser_mocks.mdx           | 2 +-
 api_docs/kbn_core_execution_context_common.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_server.mdx                  | 2 +-
 api_docs/kbn_core_execution_context_server_internal.mdx         | 2 +-
 api_docs/kbn_core_execution_context_server_mocks.mdx            | 2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx                      | 2 +-
 api_docs/kbn_core_fatal_errors_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_http_browser.mdx                              | 2 +-
 api_docs/kbn_core_http_browser_internal.mdx                     | 2 +-
 api_docs/kbn_core_http_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_http_common.mdx                               | 2 +-
 api_docs/kbn_core_http_context_server_mocks.mdx                 | 2 +-
 api_docs/kbn_core_http_request_handler_context_server.mdx       | 2 +-
 api_docs/kbn_core_http_resources_server.mdx                     | 2 +-
 api_docs/kbn_core_http_resources_server_internal.mdx            | 2 +-
 api_docs/kbn_core_http_resources_server_mocks.mdx               | 2 +-
 api_docs/kbn_core_http_router_server_internal.mdx               | 2 +-
 api_docs/kbn_core_http_router_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_http_server.mdx                               | 2 +-
 api_docs/kbn_core_http_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_http_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_i18n_browser.mdx                              | 2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx                        | 2 +-
 api_docs/kbn_core_i18n_server.mdx                               | 2 +-
 api_docs/kbn_core_i18n_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_injected_metadata_browser_mocks.mdx           | 2 +-
 api_docs/kbn_core_integrations_browser_internal.mdx             | 2 +-
 api_docs/kbn_core_integrations_browser_mocks.mdx                | 2 +-
 api_docs/kbn_core_lifecycle_browser.mdx                         | 2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_lifecycle_server.mdx                          | 2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx                     | 2 +-
 api_docs/kbn_core_logging_common_internal.mdx                   | 2 +-
 api_docs/kbn_core_logging_server.mdx                            | 2 +-
 api_docs/kbn_core_logging_server_internal.mdx                   | 2 +-
 api_docs/kbn_core_logging_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_metrics_collectors_server_internal.mdx        | 2 +-
 api_docs/kbn_core_metrics_collectors_server_mocks.mdx           | 2 +-
 api_docs/kbn_core_metrics_server.mdx                            | 2 +-
 api_docs/kbn_core_metrics_server_internal.mdx                   | 2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_mount_utils_browser.mdx                       | 2 +-
 api_docs/kbn_core_node_server.mdx                               | 2 +-
 api_docs/kbn_core_node_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_node_server_mocks.mdx                         | 2 +-
 api_docs/kbn_core_notifications_browser.mdx                     | 2 +-
 api_docs/kbn_core_notifications_browser_internal.mdx            | 2 +-
 api_docs/kbn_core_notifications_browser_mocks.mdx               | 2 +-
 api_docs/kbn_core_overlays_browser.mdx                          | 2 +-
 api_docs/kbn_core_overlays_browser_internal.mdx                 | 2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx                    | 2 +-
 api_docs/kbn_core_plugins_browser.mdx                           | 2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx                     | 2 +-
 api_docs/kbn_core_plugins_contracts_browser.mdx                 | 2 +-
 api_docs/kbn_core_plugins_contracts_server.mdx                  | 2 +-
 api_docs/kbn_core_plugins_server.mdx                            | 2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_preboot_server.mdx                            | 2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx                      | 2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx                   | 2 +-
 api_docs/kbn_core_rendering_server_internal.mdx                 | 2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx                    | 2 +-
 api_docs/kbn_core_root_server_internal.mdx                      | 2 +-
 api_docs/kbn_core_saved_objects_api_browser.mdx                 | 2 +-
 api_docs/kbn_core_saved_objects_api_server.mdx                  | 2 +-
 api_docs/kbn_core_saved_objects_api_server_mocks.mdx            | 2 +-
 api_docs/kbn_core_saved_objects_base_server_internal.mdx        | 2 +-
 api_docs/kbn_core_saved_objects_base_server_mocks.mdx           | 2 +-
 api_docs/kbn_core_saved_objects_browser.mdx                     | 2 +-
 api_docs/kbn_core_saved_objects_browser_internal.mdx            | 2 +-
 api_docs/kbn_core_saved_objects_browser_mocks.mdx               | 2 +-
 api_docs/kbn_core_saved_objects_common.mdx                      | 2 +-
 .../kbn_core_saved_objects_import_export_server_internal.mdx    | 2 +-
 api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx  | 2 +-
 api_docs/kbn_core_saved_objects_migration_server_internal.mdx   | 2 +-
 api_docs/kbn_core_saved_objects_migration_server_mocks.mdx      | 2 +-
 api_docs/kbn_core_saved_objects_server.mdx                      | 2 +-
 api_docs/kbn_core_saved_objects_server_internal.mdx             | 2 +-
 api_docs/kbn_core_saved_objects_server_mocks.mdx                | 2 +-
 api_docs/kbn_core_saved_objects_utils_server.mdx                | 2 +-
 api_docs/kbn_core_status_common.mdx                             | 2 +-
 api_docs/kbn_core_status_common_internal.mdx                    | 2 +-
 api_docs/kbn_core_status_server.mdx                             | 2 +-
 api_docs/kbn_core_status_server_internal.mdx                    | 2 +-
 api_docs/kbn_core_status_server_mocks.mdx                       | 2 +-
 api_docs/kbn_core_test_helpers_deprecations_getters.mdx         | 2 +-
 api_docs/kbn_core_test_helpers_http_setup_browser.mdx           | 2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx                   | 2 +-
 api_docs/kbn_core_test_helpers_model_versions.mdx               | 2 +-
 api_docs/kbn_core_test_helpers_so_type_serializer.mdx           | 2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx                   | 2 +-
 api_docs/kbn_core_theme_browser.mdx                             | 2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx                       | 2 +-
 api_docs/kbn_core_ui_settings_browser.mdx                       | 2 +-
 api_docs/kbn_core_ui_settings_browser_internal.mdx              | 2 +-
 api_docs/kbn_core_ui_settings_browser_mocks.mdx                 | 2 +-
 api_docs/kbn_core_ui_settings_common.mdx                        | 2 +-
 api_docs/kbn_core_ui_settings_server.mdx                        | 2 +-
 api_docs/kbn_core_ui_settings_server_internal.mdx               | 2 +-
 api_docs/kbn_core_ui_settings_server_mocks.mdx                  | 2 +-
 api_docs/kbn_core_usage_data_server.mdx                         | 2 +-
 api_docs/kbn_core_usage_data_server_internal.mdx                | 2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx                   | 2 +-
 api_docs/kbn_core_user_settings_server.mdx                      | 2 +-
 api_docs/kbn_core_user_settings_server_internal.mdx             | 2 +-
 api_docs/kbn_core_user_settings_server_mocks.mdx                | 2 +-
 api_docs/kbn_crypto.mdx                                         | 2 +-
 api_docs/kbn_crypto_browser.mdx                                 | 2 +-
 api_docs/kbn_custom_integrations.mdx                            | 2 +-
 api_docs/kbn_cypress_config.mdx                                 | 2 +-
 api_docs/kbn_data_service.mdx                                   | 2 +-
 api_docs/kbn_datemath.mdx                                       | 2 +-
 api_docs/kbn_deeplinks_analytics.mdx                            | 2 +-
 api_docs/kbn_deeplinks_devtools.mdx                             | 2 +-
 api_docs/kbn_deeplinks_management.mdx                           | 2 +-
 api_docs/kbn_deeplinks_ml.mdx                                   | 2 +-
 api_docs/kbn_deeplinks_observability.mdx                        | 2 +-
 api_docs/kbn_deeplinks_search.mdx                               | 2 +-
 api_docs/kbn_default_nav_analytics.mdx                          | 2 +-
 api_docs/kbn_default_nav_devtools.mdx                           | 2 +-
 api_docs/kbn_default_nav_management.mdx                         | 2 +-
 api_docs/kbn_default_nav_ml.mdx                                 | 2 +-
 api_docs/kbn_dev_cli_errors.mdx                                 | 2 +-
 api_docs/kbn_dev_cli_runner.mdx                                 | 2 +-
 api_docs/kbn_dev_proc_runner.mdx                                | 2 +-
 api_docs/kbn_dev_utils.mdx                                      | 2 +-
 api_docs/kbn_discover_utils.mdx                                 | 2 +-
 api_docs/kbn_doc_links.mdx                                      | 2 +-
 api_docs/kbn_docs_utils.mdx                                     | 2 +-
 api_docs/kbn_dom_drag_drop.mdx                                  | 2 +-
 api_docs/kbn_ebt_tools.mdx                                      | 2 +-
 api_docs/kbn_ecs.mdx                                            | 2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx                     | 2 +-
 api_docs/kbn_elastic_assistant.mdx                              | 2 +-
 api_docs/kbn_es.mdx                                             | 2 +-
 api_docs/kbn_es_archiver.mdx                                    | 2 +-
 api_docs/kbn_es_errors.mdx                                      | 2 +-
 api_docs/kbn_es_query.mdx                                       | 2 +-
 api_docs/kbn_es_types.mdx                                       | 2 +-
 api_docs/kbn_eslint_plugin_imports.mdx                          | 2 +-
 api_docs/kbn_event_annotation_common.mdx                        | 2 +-
 api_docs/kbn_event_annotation_components.mdx                    | 2 +-
 api_docs/kbn_expandable_flyout.mdx                              | 2 +-
 api_docs/kbn_field_types.mdx                                    | 2 +-
 api_docs/kbn_field_utils.mdx                                    | 2 +-
 api_docs/kbn_find_used_node_modules.mdx                         | 2 +-
 api_docs/kbn_ftr_common_functional_services.mdx                 | 2 +-
 api_docs/kbn_generate.mdx                                       | 2 +-
 api_docs/kbn_generate_console_definitions.mdx                   | 2 +-
 api_docs/kbn_generate_csv.mdx                                   | 2 +-
 api_docs/kbn_generate_csv_types.mdx                             | 2 +-
 api_docs/kbn_guided_onboarding.mdx                              | 2 +-
 api_docs/kbn_handlebars.mdx                                     | 2 +-
 api_docs/kbn_hapi_mocks.mdx                                     | 2 +-
 api_docs/kbn_health_gateway_server.mdx                          | 2 +-
 api_docs/kbn_home_sample_data_card.mdx                          | 2 +-
 api_docs/kbn_home_sample_data_tab.mdx                           | 2 +-
 api_docs/kbn_i18n.mdx                                           | 2 +-
 api_docs/kbn_i18n_react.mdx                                     | 2 +-
 api_docs/kbn_import_resolver.mdx                                | 2 +-
 api_docs/kbn_infra_forge.mdx                                    | 2 +-
 api_docs/kbn_interpreter.mdx                                    | 2 +-
 api_docs/kbn_io_ts_utils.mdx                                    | 2 +-
 api_docs/kbn_jest_serializers.mdx                               | 2 +-
 api_docs/kbn_journeys.mdx                                       | 2 +-
 api_docs/kbn_json_ast.mdx                                       | 2 +-
 api_docs/kbn_kibana_manifest_schema.mdx                         | 2 +-
 api_docs/kbn_language_documentation_popover.mdx                 | 2 +-
 api_docs/kbn_lens_embeddable_utils.mdx                          | 2 +-
 api_docs/kbn_logging.mdx                                        | 2 +-
 api_docs/kbn_logging_mocks.mdx                                  | 2 +-
 api_docs/kbn_managed_vscode_config.mdx                          | 2 +-
 api_docs/kbn_management_cards_navigation.mdx                    | 2 +-
 api_docs/kbn_management_settings_application.mdx                | 2 +-
 api_docs/kbn_management_settings_components_field_category.mdx  | 2 +-
 api_docs/kbn_management_settings_components_field_input.mdx     | 2 +-
 api_docs/kbn_management_settings_components_field_row.mdx       | 2 +-
 api_docs/kbn_management_settings_components_form.mdx            | 2 +-
 api_docs/kbn_management_settings_field_definition.mdx           | 2 +-
 api_docs/kbn_management_settings_ids.mdx                        | 2 +-
 api_docs/kbn_management_settings_section_registry.mdx           | 2 +-
 api_docs/kbn_management_settings_types.mdx                      | 2 +-
 api_docs/kbn_management_settings_utilities.mdx                  | 2 +-
 api_docs/kbn_management_storybook_config.mdx                    | 2 +-
 api_docs/kbn_mapbox_gl.mdx                                      | 2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx                         | 2 +-
 api_docs/kbn_ml_agg_utils.mdx                                   | 2 +-
 api_docs/kbn_ml_anomaly_utils.mdx                               | 2 +-
 api_docs/kbn_ml_category_validator.mdx                          | 2 +-
 api_docs/kbn_ml_chi2test.mdx                                    | 2 +-
 api_docs/kbn_ml_data_frame_analytics_utils.mdx                  | 2 +-
 api_docs/kbn_ml_data_grid.mdx                                   | 2 +-
 api_docs/kbn_ml_date_picker.mdx                                 | 2 +-
 api_docs/kbn_ml_date_utils.mdx                                  | 2 +-
 api_docs/kbn_ml_error_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_in_memory_table.mdx                             | 2 +-
 api_docs/kbn_ml_is_defined.mdx                                  | 2 +-
 api_docs/kbn_ml_is_populated_object.mdx                         | 2 +-
 api_docs/kbn_ml_kibana_theme.mdx                                | 2 +-
 api_docs/kbn_ml_local_storage.mdx                               | 2 +-
 api_docs/kbn_ml_nested_property.mdx                             | 2 +-
 api_docs/kbn_ml_number_utils.mdx                                | 2 +-
 api_docs/kbn_ml_query_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx                        | 2 +-
 api_docs/kbn_ml_route_utils.mdx                                 | 2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx                         | 2 +-
 api_docs/kbn_ml_string_hash.mdx                                 | 2 +-
 api_docs/kbn_ml_trained_models_utils.mdx                        | 2 +-
 api_docs/kbn_ml_url_state.mdx                                   | 2 +-
 api_docs/kbn_monaco.mdx                                         | 2 +-
 api_docs/kbn_object_versioning.mdx                              | 2 +-
 api_docs/kbn_observability_alert_details.mdx                    | 2 +-
 api_docs/kbn_observability_alerting_test_data.mdx               | 2 +-
 api_docs/kbn_openapi_generator.mdx                              | 2 +-
 api_docs/kbn_optimizer.mdx                                      | 2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx                      | 2 +-
 api_docs/kbn_osquery_io_ts_types.mdx                            | 2 +-
 api_docs/kbn_performance_testing_dataset_extractor.mdx          | 2 +-
 api_docs/kbn_plugin_generator.mdx                               | 2 +-
 api_docs/kbn_plugin_helpers.mdx                                 | 2 +-
 api_docs/kbn_profiling_utils.mdx                                | 2 +-
 api_docs/kbn_random_sampling.mdx                                | 2 +-
 api_docs/kbn_react_field.mdx                                    | 2 +-
 api_docs/kbn_react_kibana_context_common.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_render.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_root.mdx                      | 2 +-
 api_docs/kbn_react_kibana_context_styled.mdx                    | 2 +-
 api_docs/kbn_react_kibana_context_theme.mdx                     | 2 +-
 api_docs/kbn_react_kibana_mount.mdx                             | 2 +-
 api_docs/kbn_repo_file_maps.mdx                                 | 2 +-
 api_docs/kbn_repo_linter.mdx                                    | 2 +-
 api_docs/kbn_repo_path.mdx                                      | 2 +-
 api_docs/kbn_repo_source_classifier.mdx                         | 2 +-
 api_docs/kbn_reporting_common.mdx                               | 2 +-
 api_docs/kbn_resizable_layout.mdx                               | 2 +-
 api_docs/kbn_rison.mdx                                          | 2 +-
 api_docs/kbn_rrule.mdx                                          | 2 +-
 api_docs/kbn_rule_data_utils.mdx                                | 2 +-
 api_docs/kbn_saved_objects_settings.mdx                         | 2 +-
 api_docs/kbn_search_api_panels.mdx                              | 2 +-
 api_docs/kbn_search_connectors.mdx                              | 2 +-
 api_docs/kbn_search_response_warnings.mdx                       | 2 +-
 api_docs/kbn_security_solution_features.mdx                     | 2 +-
 api_docs/kbn_security_solution_navigation.mdx                   | 2 +-
 api_docs/kbn_security_solution_side_nav.mdx                     | 2 +-
 api_docs/kbn_security_solution_storybook_config.mdx             | 2 +-
 api_docs/kbn_securitysolution_autocomplete.mdx                  | 2 +-
 api_docs/kbn_securitysolution_data_table.mdx                    | 2 +-
 api_docs/kbn_securitysolution_ecs.mdx                           | 2 +-
 api_docs/kbn_securitysolution_es_utils.mdx                      | 2 +-
 api_docs/kbn_securitysolution_exception_list_components.mdx     | 2 +-
 api_docs/kbn_securitysolution_grouping.mdx                      | 2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx                    | 2 +-
 api_docs/kbn_securitysolution_io_ts_alerting_types.mdx          | 2 +-
 api_docs/kbn_securitysolution_io_ts_list_types.mdx              | 2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx                   | 2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx                   | 2 +-
 api_docs/kbn_securitysolution_list_api.mdx                      | 2 +-
 api_docs/kbn_securitysolution_list_constants.mdx                | 2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx                    | 2 +-
 api_docs/kbn_securitysolution_list_utils.mdx                    | 2 +-
 api_docs/kbn_securitysolution_rules.mdx                         | 2 +-
 api_docs/kbn_securitysolution_t_grid.mdx                        | 2 +-
 api_docs/kbn_securitysolution_utils.mdx                         | 2 +-
 api_docs/kbn_server_http_tools.mdx                              | 2 +-
 api_docs/kbn_server_route_repository.mdx                        | 2 +-
 api_docs/kbn_serverless_common_settings.mdx                     | 2 +-
 api_docs/kbn_serverless_observability_settings.mdx              | 2 +-
 api_docs/kbn_serverless_project_switcher.mdx                    | 2 +-
 api_docs/kbn_serverless_search_settings.mdx                     | 2 +-
 api_docs/kbn_serverless_security_settings.mdx                   | 2 +-
 api_docs/kbn_serverless_storybook_config.mdx                    | 2 +-
 api_docs/kbn_shared_svg.mdx                                     | 2 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx                      | 2 +-
 api_docs/kbn_shared_ux_button_exit_full_screen.mdx              | 2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx                       | 2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx                         | 2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx                   | 2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx                    | 2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx                       | 2 +-
 api_docs/kbn_shared_ux_file_context.mdx                         | 2 +-
 api_docs/kbn_shared_ux_file_image.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx                     | 2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_picker.mdx                          | 2 +-
 api_docs/kbn_shared_ux_file_types.mdx                           | 2 +-
 api_docs/kbn_shared_ux_file_upload.mdx                          | 2 +-
 api_docs/kbn_shared_ux_file_util.mdx                            | 2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx                    | 2 +-
 api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx              | 2 +-
 api_docs/kbn_shared_ux_markdown.mdx                             | 2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx                       | 2 +-
 api_docs/kbn_shared_ux_page_analytics_no_data.mdx               | 2 +-
 api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx         | 2 +-
 api_docs/kbn_shared_ux_page_kibana_no_data.mdx                  | 2 +-
 api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx            | 2 +-
 api_docs/kbn_shared_ux_page_kibana_template.mdx                 | 2 +-
 api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx           | 2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx                         | 2 +-
 api_docs/kbn_shared_ux_page_no_data_config.mdx                  | 2 +-
 api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx            | 2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx                   | 2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx                    | 2 +-
 api_docs/kbn_shared_ux_prompt_no_data_views.mdx                 | 2 +-
 api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx           | 2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx                     | 2 +-
 api_docs/kbn_shared_ux_router.mdx                               | 2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx                         | 2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx                     | 2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx                       | 2 +-
 api_docs/kbn_shared_ux_utility.mdx                              | 2 +-
 api_docs/kbn_slo_schema.mdx                                     | 2 +-
 api_docs/kbn_some_dev_log.mdx                                   | 2 +-
 api_docs/kbn_std.mdx                                            | 2 +-
 api_docs/kbn_stdio_dev_helpers.mdx                              | 2 +-
 api_docs/kbn_storybook.mdx                                      | 2 +-
 api_docs/kbn_subscription_tracking.mdx                          | 2 +-
 api_docs/kbn_telemetry_tools.mdx                                | 2 +-
 api_docs/kbn_test.mdx                                           | 2 +-
 api_docs/kbn_test_jest_helpers.mdx                              | 2 +-
 api_docs/kbn_test_subj_selector.mdx                             | 2 +-
 api_docs/kbn_text_based_editor.mdx                              | 2 +-
 api_docs/kbn_tooling_log.mdx                                    | 2 +-
 api_docs/kbn_ts_projects.mdx                                    | 2 +-
 api_docs/kbn_typed_react_router_config.mdx                      | 2 +-
 api_docs/kbn_ui_actions_browser.mdx                             | 2 +-
 api_docs/kbn_ui_shared_deps_src.mdx                             | 2 +-
 api_docs/kbn_ui_theme.mdx                                       | 2 +-
 api_docs/kbn_unified_data_table.mdx                             | 2 +-
 api_docs/kbn_unified_doc_viewer.mdx                             | 2 +-
 api_docs/kbn_unified_field_list.mdx                             | 2 +-
 api_docs/kbn_url_state.mdx                                      | 2 +-
 api_docs/kbn_use_tracked_promise.mdx                            | 2 +-
 api_docs/kbn_user_profile_components.mdx                        | 2 +-
 api_docs/kbn_utility_types.mdx                                  | 2 +-
 api_docs/kbn_utility_types_jest.mdx                             | 2 +-
 api_docs/kbn_utils.mdx                                          | 2 +-
 api_docs/kbn_visualization_ui_components.mdx                    | 2 +-
 api_docs/kbn_xstate_utils.mdx                                   | 2 +-
 api_docs/kbn_yarn_lock_validator.mdx                            | 2 +-
 api_docs/kbn_zod_helpers.mdx                                    | 2 +-
 api_docs/kibana_overview.mdx                                    | 2 +-
 api_docs/kibana_react.mdx                                       | 2 +-
 api_docs/kibana_utils.mdx                                       | 2 +-
 api_docs/kubernetes_security.mdx                                | 2 +-
 api_docs/lens.mdx                                               | 2 +-
 api_docs/license_api_guard.mdx                                  | 2 +-
 api_docs/license_management.mdx                                 | 2 +-
 api_docs/licensing.mdx                                          | 2 +-
 api_docs/links.mdx                                              | 2 +-
 api_docs/lists.mdx                                              | 2 +-
 api_docs/log_explorer.mdx                                       | 2 +-
 api_docs/logs_shared.mdx                                        | 2 +-
 api_docs/management.mdx                                         | 2 +-
 api_docs/maps.mdx                                               | 2 +-
 api_docs/maps_ems.mdx                                           | 2 +-
 api_docs/metrics_data_access.mdx                                | 2 +-
 api_docs/ml.mdx                                                 | 2 +-
 api_docs/monitoring.mdx                                         | 2 +-
 api_docs/monitoring_collection.mdx                              | 2 +-
 api_docs/navigation.mdx                                         | 2 +-
 api_docs/newsfeed.mdx                                           | 2 +-
 api_docs/no_data_page.mdx                                       | 2 +-
 api_docs/notifications.mdx                                      | 2 +-
 api_docs/observability.mdx                                      | 2 +-
 api_docs/observability_a_i_assistant.mdx                        | 2 +-
 api_docs/observability_log_explorer.mdx                         | 2 +-
 api_docs/observability_onboarding.mdx                           | 2 +-
 api_docs/observability_shared.mdx                               | 2 +-
 api_docs/osquery.mdx                                            | 2 +-
 api_docs/painless_lab.mdx                                       | 2 +-
 api_docs/plugin_directory.mdx                                   | 2 +-
 api_docs/presentation_util.mdx                                  | 2 +-
 api_docs/profiling.mdx                                          | 2 +-
 api_docs/profiling_data_access.mdx                              | 2 +-
 api_docs/remote_clusters.mdx                                    | 2 +-
 api_docs/reporting.mdx                                          | 2 +-
 api_docs/rollup.mdx                                             | 2 +-
 api_docs/rule_registry.mdx                                      | 2 +-
 api_docs/runtime_fields.mdx                                     | 2 +-
 api_docs/saved_objects.mdx                                      | 2 +-
 api_docs/saved_objects_finder.mdx                               | 2 +-
 api_docs/saved_objects_management.mdx                           | 2 +-
 api_docs/saved_objects_tagging.mdx                              | 2 +-
 api_docs/saved_objects_tagging_oss.mdx                          | 2 +-
 api_docs/saved_search.mdx                                       | 2 +-
 api_docs/screenshot_mode.mdx                                    | 2 +-
 api_docs/screenshotting.mdx                                     | 2 +-
 api_docs/security.mdx                                           | 2 +-
 api_docs/security_solution.mdx                                  | 2 +-
 api_docs/security_solution_ess.mdx                              | 2 +-
 api_docs/security_solution_serverless.mdx                       | 2 +-
 api_docs/serverless.mdx                                         | 2 +-
 api_docs/serverless_observability.mdx                           | 2 +-
 api_docs/serverless_search.mdx                                  | 2 +-
 api_docs/session_view.mdx                                       | 2 +-
 api_docs/share.mdx                                              | 2 +-
 api_docs/snapshot_restore.mdx                                   | 2 +-
 api_docs/spaces.mdx                                             | 2 +-
 api_docs/stack_alerts.mdx                                       | 2 +-
 api_docs/stack_connectors.mdx                                   | 2 +-
 api_docs/task_manager.mdx                                       | 2 +-
 api_docs/telemetry.mdx                                          | 2 +-
 api_docs/telemetry_collection_manager.mdx                       | 2 +-
 api_docs/telemetry_collection_xpack.mdx                         | 2 +-
 api_docs/telemetry_management_section.mdx                       | 2 +-
 api_docs/text_based_languages.mdx                               | 2 +-
 api_docs/threat_intelligence.mdx                                | 2 +-
 api_docs/timelines.mdx                                          | 2 +-
 api_docs/transform.mdx                                          | 2 +-
 api_docs/triggers_actions_ui.mdx                                | 2 +-
 api_docs/ui_actions.mdx                                         | 2 +-
 api_docs/ui_actions_enhanced.mdx                                | 2 +-
 api_docs/unified_doc_viewer.mdx                                 | 2 +-
 api_docs/unified_histogram.mdx                                  | 2 +-
 api_docs/unified_search.mdx                                     | 2 +-
 api_docs/unified_search_autocomplete.mdx                        | 2 +-
 api_docs/uptime.mdx                                             | 2 +-
 api_docs/url_forwarding.mdx                                     | 2 +-
 api_docs/usage_collection.mdx                                   | 2 +-
 api_docs/ux.mdx                                                 | 2 +-
 api_docs/vis_default_editor.mdx                                 | 2 +-
 api_docs/vis_type_gauge.mdx                                     | 2 +-
 api_docs/vis_type_heatmap.mdx                                   | 2 +-
 api_docs/vis_type_pie.mdx                                       | 2 +-
 api_docs/vis_type_table.mdx                                     | 2 +-
 api_docs/vis_type_timelion.mdx                                  | 2 +-
 api_docs/vis_type_timeseries.mdx                                | 2 +-
 api_docs/vis_type_vega.mdx                                      | 2 +-
 api_docs/vis_type_vislib.mdx                                    | 2 +-
 api_docs/vis_type_xy.mdx                                        | 2 +-
 api_docs/visualizations.mdx                                     | 2 +-
 600 files changed, 600 insertions(+), 600 deletions(-)

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index d6d9ab8229985..0adbd79741087 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index 344feea154ce0..62c209ef26152 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index 9ac38fc1a63e5..ffeb6cd1c13e9 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index 76d1fc01362ee..e4e27948e601c 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index d9138de835198..7664005614d8b 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 8caff52693e25..93d84c37b5b26 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index 3c638c9cb62ee..c43f7212960e1 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index d117f9cfc818f..8611fca3266a9 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index 39894c8b21f3a..0022a9ee1813b 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index 04eb48ec8e170..16b75dabe984b 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index 6b50b342c175d..53b08ea597405 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index c528ebf8d1a86..066af8e61ec92 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index 6bdf87157a75c..cfd6386fcc759 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index 9581c1c0d5f4c..46fe7b3402f1c 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index c502689a36d28..9927d4fb8f984 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index 59b3958f86bc3..e7c2255536c9b 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index d7db206b81a30..43dbb2f04ca25 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index 6f38c6acb29d6..36eccb90a7617 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index 4f68d00f2663a..68b24bbfa837e 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index ee5341cc8eff1..75acc6ea27b85 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index 6c50db728a125..048d5c5f90a42 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index a866f523795f2..97a0b4c4722d2 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 9750473a3e61e..4519f796e4a2e 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index 504df6bcbbdab..c2cc3c796402a 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index 92e4aa287584b..231bd45a072c5 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index 9bf3895f1ddfe..6fe5affe8e3e5 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index 222a7d055d14d..f406f6da71607 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index 7f4038f09cae4..d99f23f6ba4fa 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index 531fe38704175..ef52ca14ec243 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index 26a6cb86225e3..5f1296bf8cd63 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index 1584ad9836278..b68804dafbb96 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx
index 126bd9e03cc06..2d9d187faf9f4 100644
--- a/api_docs/dataset_quality.mdx
+++ b/api_docs/dataset_quality.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality
 title: "datasetQuality"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the datasetQuality plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality']
 ---
 import datasetQualityObj from './dataset_quality.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index bd49456e1baf2..873fff3ce7501 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index f7fb5a0aed129..a05f795b25cb2 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index aa59f2adf7955..53c3e26cc855e 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 0ef3658292eaa..68bf178bdd1da 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index aa784e963e5d7..2dbf602a966c4 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index db16c7cb17a46..181dc26213a81 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index f9df198b866af..7c487e68495a5 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index cf8506edba559..098f02b688d1b 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 572cefa2d8d57..72464eccc5945 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index 3ef832988ebd1..e25b138303ec6 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index 4cfd9c1ef5494..b7bbf16ef4a56 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index aae3009058e1f..ec1a1b2bfdfc6 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index df0195d4af570..2b53cad3a5b35 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 1449849e9e157..281962b3aa3d8 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 9abe639252cbd..578e1619ddac6 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index 7a09e82f1700d..2c16bc941f737 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index 0c8431ec3e7a7..ad8dd06dd48f8 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index a20591a6093f1..2d05383255c66 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index ea143b3943f5a..9c722652e2ccc 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index 888e1a4e23a52..5a80df647b957 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index fbdea7a4f0290..3bab94db5dada 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index 337043a82a610..f287e8ad640b5 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index 7d797795642dd..c2f762e6f3ffd 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index c369e4b7c0e89..c2554f9ef13f3 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index bad77e5587618..4ce5a3ae599f8 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index f2ade93a34d96..0320303b8c9b7 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 7c9693966d5f6..854e2da7ccb2e 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index eaa8573a9562d..e4b307872b1b5 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 6dacc0627b1d5..56b837ae8367d 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index c9b5d52b611b0..675f994a4ec77 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index 8a72ba8218a03..cfa4e3061c505 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index eb61dcc7e0bc6..405d78537a477 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index e8ba544eea40e..5c7c6b82b8b79 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index 2caed9a8be4f2..d158496cb0e46 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index a397a6ef6ad29..dc83963f34823 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index a9a1426744683..47e5570afdab0 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index 7802337a04a32..2dc8e7500c00f 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 15b41de156ab6..329555347fea7 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index aba984dd438ee..ca4786f8f5ae6 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index 54a54a2408bd2..adbdfbb9be4e0 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 22a17c2a2f8ce..2eda17b0ac9e1 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index cc53f8883a19e..cf45ebff6a5a3 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index 31dd2619574be..0d72e61bf0183 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 0aee44269c76c..54614d534b958 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index 1b1c2e794a460..e1b77baa05d95 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index 1ce93406187e0..b010a3e6b98ee 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index b2f576bf59e82..d4deb5395cfd1 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index ad0f30636c97c..5a386671ac8ae 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index bc73953d18208..f7f016e538744 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index c5e277d5054bd..b7fb28925de06 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index c3b3ff103e97e..27f3ace573fe2 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index 08c6b6718054e..a3fca44b21d59 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index 2c92ca8167a10..138b8ecafdeff 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index 2f6128f30752b..d393cc7dbeea9 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index 0cf8d423d5a9a..d73d9deb336a3 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index 696101e8af026..7970bc53b5af0 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index 10d41ab30ce3b..0d81f263ed735 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index f7f5eff209668..0d89459004b21 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index b147f8cb47a92..b07c6e5617f93 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index 8d7dee30db223..3cee134414e01 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index c0fca6b3088d3..df5bf3b374184 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index cf66b3512565a..5273be5bdd8e6 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index fe5bc2f1cc22e..3d17aea228c21 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index f49010d326837..63087e6ce2a6b 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index 04d000de0de9f..2dd3eac57e854 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index b760a8420a6f3..68cc8e8036638 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index 0bb0888573d29..dc003e63ff2ee 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 3bd8793f88d7d..613b0788918b5 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 00586cb5c6c94..716cc56b61e6d 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index c29ec82c7d5e9..27b28d0318a91 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index a2b3a066ccfc1..1ecb0e38ae755 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index e555489e5a5bd..1456063d30205 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index f64ca9514a919..5436a44395290 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index a5f751d9629df..5adbaf94b5ed0 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index 979ae94957c4e..eeacd51fb40f2 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index ea25a87dec4c4..49260dc158d42 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index 48ab99f1c3cbd..adf4e21cc9248 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index 4e848bd1f363a..26c897f42311f 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index 2773f53c08c80..ba559d59cf3e3 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index 6a9b1cd872a12..eeca0ab91ce0c 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index 19b42ae1366b0..e72ebe8d69f08 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index 59a5e76ffc70e..cfa076c621404 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index c5f40a507f083..751087a1d526c 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index ea8055e58640a..2c61fe57690d5 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index 8cc640b8d31f4..51235dd632977 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index ac88b1e4badd3..a9a6c17ab59e3 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index 6ca34a06026f8..011ca29ab46be 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index cb76a25696244..08fb7115efb85 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 932f02f288d08..7f2a66447241e 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index 23e5e05038007..8b368ec94e02e 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 21d6fdd927864..943ae007c2847 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index 71cf0c8a18189..a62873a6e3998 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index cc80f749f4f66..89c109767f55d 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index c038d75c0b23d..7149a5470f6ec 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index cc115c289e4f0..022bad3ee36e3 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index c944d535e85e7..4f2deb3002fdd 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index 492ec8976e356..b4d7922635408 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index 827260328b8f5..e20b294c8114d 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index 266f839543083..a395f1d993d34 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index 9ebc1f5d763da..b6faa2b0e8dd8 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index bae380a5794c1..4c7627abe1ab0 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index 8f46339780b12..c444593076042 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index 81286eabe1f3b..32a203dae25e2 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index 5dbd8929e932f..8c539db90b1d8 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index 684fc5510ccf0..71ca289d98497 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index d85b40682000b..8969b684a4788 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index d3be8fd01db8f..f68800415203d 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 31d3a5d3962b5..6adde1a9d8196 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 6270fb67990d9..816494b0b4b83 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index bcdddfa80f617..238bd3afc30fb 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index a560c3eb7ac50..81471a2917544 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index 48ad2f757df06..17131980f0509 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index dfe4cab702c21..8e3d6229500be 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 20addead1a374..508d0e878d907 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index 74ba450937c7a..63efaf205dbd7 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index 866af8ebb1a4c..43b46d049e908 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index dc2a2c44b5c98..af14aa8d0d6cb 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index b603b44dad0c1..36af80c47ba60 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index 484a298aab970..9ff7a6511d062 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index b5147c34f2d33..8bf4252d99cae 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index 9fea443e0ceb1..82cda912d727d 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index 9e2a7ef2c3644..03be99f132991 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 3bea8e18326d2..801a980716058 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index b84b9d92e678e..a2267cff09caf 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index 66cda6e2bd16e..25b8bf4a1f880 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 4561e7be05121..16270900c6f8a 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index 0403a6976024f..08e07c3d19be7 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index d3f21e0900137..25729ea757269 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index d5ee6738e25cd..5787c1684bbed 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 2e7fed2e19828..5b94ff7e90fcb 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index 2aeb5afeb92d6..7bb86e3fd5103 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 395b23d645029..5d6d092377f59 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index dfb4a3cdb3cab..579fb6119c9bb 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index 8ad64fbd11472..ffa2942c318e6 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index 3614274eeb6b9..4db20c412858c 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index fea19dcd62f0e..f12c21e4c28e1 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 65f1c5f72ef99..63de9de9c3ca1 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index efd66acfd9d37..0de53b26d431e 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index 75fec6c279e4a..e8f9cb7381408 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index 48144c17b84b3..f2b5795fd2751 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index c2e7495e241ad..0097055594ad7 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index 364dce64a486b..e93470f9250fe 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index 0aa2695ebfd37..0a72795b95131 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index f5e38a7d6d861..fbf8356d8e90d 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index ab3ae7ed7e45e..06e805e7319ca 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index 530036dacd4dc..3e21038c6ac36 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index d59efae08f8d9..8082da5931e09 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index 57fa6c688bec4..59ca41d2b80bd 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index d443a593c828e..65559761ccb29 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index a5e892f23f85f..949c6e6097793 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 2b10cfc074458..8f0f60504eb0f 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index 9696aabeb9c91..67fc2c2c4c8c0 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index 256cfe5a0a4ee..a164bd7989e04 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index 6b6f18e067739..c5a0c7a98c8e1 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index bc25030ea1248..c00f45d4875e2 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index df42b2242d82d..95a27c34e4946 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 4ab4d11693a58..9d372c0a9f0a1 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index ee58917b51a78..d8d3fe031d774 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index a83ca54d66766..6e5b8f1501795 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 483e64f99bc79..1fe80a49b6867 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index 971b4d84bd8a3..bc9d78929ec8d 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index 93a7190f81723..6a7e1e5c9a6e3 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index a451d921c0d29..08d873cecb691 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index cc00f3ad71572..c00c3155e2c16 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 39f9001eaded0..5e92138ae5e82 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index f7725dcd0149e..f7d578d83f11a 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index da5af0488b993..5eca10a5a7b95 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index 7ae658669ce17..1e0a6bf7dc47c 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index 066326458fa81..f519b73e47bfc 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index 1c3912f2048d1..ad2e02fcab679 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index 3840b5d48b1f3..6064c401c646c 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index ea01ac0aab2ca..69c27c375459a 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index c3a29435e180f..33d60554f6163 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index 9168969f671db..ae3bd706fbb06 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index e7497a69397ab..d93b14da48ddb 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index a4399e7976640..cc80806ad19ab 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index 4e70de4b88a95..db9bbd885bf5d 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index a948e22fbf8f5..3c9c1d9489d20 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index f29cbb5aa0bb4..1e9fc770c51ec 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index 89c1320458f13..d60bdd9847450 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index b75269063ee7b..bfbd5b411f7f2 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index ed43ab2f9fe9c..859b8ca77ca24 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index 8a0bbbba01e3a..6e0c2cb46f94f 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index 5aaf687e9f36b..f6f84140c2448 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 0cd5806c0d717..868ebe3816ed8 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 78428a0412879..62a7ff4d31c0a 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index 3548d49f97bc1..170a83d2914f6 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index 96ad7781f8425..4970bc76caa7d 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index c0bcaf3a77da1..5cc993d3a2800 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index afe5e1e2e8f0f..5d5c6b7cad4fe 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index b02c3e9c428bd..e1687e7918e0a 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index f2f97ca6b4901..096b0fe360b8f 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index 9bd8f62366c0b..9e5b45576a0e4 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index 55b604fe0267c..b0097cf94ed3b 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 1f0d13d5ada31..6a3f19bbb36a1 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index 99b04ffeeb7b6..55f1c2890c53d 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 405b271633f62..75e073a00b35c 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 2bec8fe763234..8319aab978894 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index 2e87849924882..187b229754e12 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index 04439799b5ce0..fea33aaccddcd 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index 7289e69547728..aebc82525d65a 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index c4759926c6dbb..d0d3acf27c426 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 0c905ddb09ba1..1a522efae0c16 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index eaff759d4ba15..2037f53c89446 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index f1aedef867b75..79cb957135208 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 122c434563cfe..125667d8a17b5 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index 10308de0ae17b..5bf5c5622bc53 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index cc756cdf3fc4c..45106b11402ce 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index 4ad43a2d05113..517b36b93d1a4 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index e6aa0d0524564..22d01ce815ed4 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index 838bd051909ed..dbd9d4d7f94d1 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 970412a6f3d69..0069306cffda3 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index 1f95e77735cec..c0877facbd6f1 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index b03a494569c17..0697c25226f3e 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index b904845581e5b..b3338f13ca34d 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index 8eec9f98053c1..b9300dd755e61 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index dba19149cbc46..b3d0d1a3e7dbe 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index f49be0eb79c50..39167e19b41ca 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index 1c95d494f355e..f2d703713e3a3 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 6478cc5e80eab..2d27da46d251e 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 1cdf0abedbd87..82cbb47d20da8 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index ce50d789e944e..32385a8b2902e 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index 976c3e3f34b17..b6248210418be 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 700632e50f619..8e2df6a749c84 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index 1fed8b80b8204..df0bd3f7b1adb 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index 35acc251497ab..56bb62d8d45a8 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index a956e2e491b85..df075cc49b23d 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index cfe16d723a43b..a09a042cf03b2 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index 1f4c660d841fe..1f44aa7d57885 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 77f51c42353d5..478455f0400ee 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index 69b7b1c6a3751..e08a6f99dc66c 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index d6e35eb1b84b0..c7ba2feeec812 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index dc613cd94b14a..a5da33f837a7d 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index 8b82b154037b6..c1cbab7efe96a 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index 3d22210c8926c..d0de43279c458 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index 63b0989354f50..fe8f60511cc49 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index 19ce6447804df..57affe30c2558 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index d13c50db6cfd2..5eefd81326dc1 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index f0f510262730f..0b866ccd126e7 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index b1aecd9ddb49a..d1bc3b99fdee1 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index 7b7e8ca45edf6..6381dab48d2b2 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index 977bece87a01a..c3af1a7def5ef 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 6d8006a1d6920..28bba3378d167 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index 77e35a90bceef..699ba3fda1d97 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index 94abf18687a90..aded02f81e778 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 685c97d681574..3a97c20d8aa64 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index ef182d95f6663..d5de88f849b90 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index e0bbe6d2f333f..8f309f5412e92 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index d0d3ba676df87..5d523c9a85f45 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index f69849f25b3e8..18be98dbf54aa 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 98612cf8f78fc..562597153f485 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 6f25b3cf6d86a..877ded174fdec 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index 4c8e0fb77335c..07116d26dd33d 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index b5f539ca804ce..ff015d66965af 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index 7555d0d1aea7e..9ff654ed3da6c 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index f33ff02b1f20a..d0d967964cd75 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index 4650fccdb804a..c8baf82fc2bec 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index 2cb8d06aef146..6ad4b1f226366 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index 00ee85a7ca5ba..4d795fee8d26b 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index 4d28f95a460d5..aac859d0fb324 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index bb19f87b1f5fd..4bedf0b9f7fbe 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 92eed4e27bcb5..4c980589187e9 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index 85bc339977fad..c2721f78b1c13 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index 0405cee9cc547..d77b6da771c83 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index e982f53c8a944..36c692a7f3989 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index 8a9ea28ae4463..ebab5e559e792 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 7f5ba2765ddb4..543720c05a490 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index 7a948bbeb1c37..08a8295fc2cc5 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 9e40483b8b206..62173dd11de6f 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 21ceae65beb32..00bea5a2d08e3 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index 0445b002fedbe..bb44ba7e14ce6 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index f64df9254a659..f02dcb805ca8c 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index 3f489db70e5f8..1fb98935c35da 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index bb373febafa12..28b67c262e76d 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index 14d84da275736..df107da92ad7c 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index 92e465237309f..f3863c41d117a 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index cd94e56689f6d..103d8078a546b 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index 06e2302dcf284..44c51bb3f58e8 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index 7fef7a1280796..c715c71125165 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 4486e09f8930d..32ec723de1650 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index ef2246dcf88a7..91f3da4473531 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index 41dc2d02b0738..fc8abd01bb50f 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index 1fb879003e867..b48cdc47d7085 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 486fa080efa18..84c7bb850429f 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index 643e6a7b8dcff..ff02aeb5d4c56 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index ded1b808bb732..38c5eb0048917 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index 94fc891347859..cbc85e0e20704 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 8936880e026d3..3324ef4ae60f2 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index b18b691690ab5..cbba3abaea8b1 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index 06b666ede5eec..a8d003cf18c82 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index 4fc47f0070f59..5100c784cf8c3 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index 06cde0220b197..6401ab24288bf 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index fee75debe28fb..a590930796309 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index 5e2eeb583def9..ac28f962dec77 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index 4af86b5ace17c..cfeb8eef2773b 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index 833d05f09ac4b..9f4987712f0d8 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index 83c7978d6ac48..e8e520a87b9d5 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index 1f2b47e2bd427..41c90625077e4 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index c3972d97c57b1..2591ce68661ce 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index e8558b14ac962..7389f5fb431b4 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index 05cfe3e7fa9aa..501b01a537995 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index a3c5565d56d5f..75dda32cc2d37 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index 49fc822afcd40..f4728323a6d19 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 1849e16a4cef2..003c2ce54f219 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 0bd2a8ae8724e..605443b342a86 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index 9ff4e20945361..5d20401976a03 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 4647725e4ae17..0fddd37f78cac 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 3d1bcaea183e3..80194ecac19f7 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index a3bc164ad95f5..8ecc8d83eeebb 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index ebb61ef3819cc..4a159b58998d0 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index d19dc413ac4da..87b5cde66613b 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index f510bd16a363a..580524cf2e93d 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index ee791f0fdb644..f654d5c92e069 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index 416863f3f41e6..f2dcd1fb086a9 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index a8c8e89643dc4..e059a57631121 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 29ea120a748e5..9e5303121d6ad 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index c4651a6120ede..00012572c68e1 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index d434ad728f4cc..fcd40384656f7 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index 229efd5396a1e..5bb501e3ab22f 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index ee5d37730a6a7..1607640e8f86a 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index 031e76a81e08a..9d4dfe2598f7e 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index d4f2ef64f0b54..e4ec91ebd57d9 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index 05b8d491c862f..c91fb76222097 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 79bc93eef2043..6a2e769450c37 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index 900a962fa6b2a..173fdc3fdf3c3 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index e7363b9da8aa6..fa07718a3b839 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index 58136a0209c5c..414a0864bc363 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index db5399590ce56..bab247030aea9 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index 0a05617370251..9d50919bb4b9d 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index 4ec372452ea2c..c147b837ed438 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index 59c9a531b3885..01c8ac45332fd 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index 8c019b81dbf9d..3f4b629537d54 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index 6c0ea999098c3..6e336288ad079 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index 016a36bc401d6..36f6add36134a 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index ec5e23634ae53..2307a1b398de6 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index e668e9342ed6f..64885de273389 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index 0257c4f07c31c..f0ac885c2f170 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index 58125333438a0..aac17968e5078 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index 79a7039e4008e..86d0533521fae 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index d22d74b21a8c3..41295cb793d76 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index 06409d51dd500..7c6509ea49a0c 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index c9ff7d853629f..0793788b3be40 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index c6619f4152a9d..918962346d8b4 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index 25b32275a0420..63b8eb6b91c03 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index d8c8b2f53f61a..f6a85408c321b 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 35cff33c6a2f8..6f89c30756d39 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index f35b3f77ef6c2..466644000a6fd 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index 458322bdaa264..dd7a9bc08e0da 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 3c407ccb37757..45726846e3234 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index 6d26602652bd4..7f120f1f2652b 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index bcd3e93230a2e..c8abab0a57803 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index 7cf21d0e809c0..885cd7840ac63 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index 63e70dc3ecb11..afdafcbb05314 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index c909291fde711..5ecdad522725d 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index 6230583b8ea3a..bac0a477d43ef 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index 306863eda0a6e..c8911731b2bc3 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index 512311fc57ea4..a48d2d3b6cba8 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index 7e53f8f4ae5e4..01e5740fff2ec 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index 534976f821363..85700266ee130 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 0576d4a793915..4b79e0b963de3 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index 7a81131d86da9..60263abc95765 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index 58e58d41968c2..9b07fca100eee 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 761c6e46e72bd..59929a5035e8a 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index 64b194924e607..1dc8752c827ca 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index 1cc1e2670a956..4ca70a368ae4d 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index eed545c621187..f1e2b0197433c 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index df116611a7957..f801e928d7f6c 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index fc7d4ef3a34bd..4c5b6b617c797 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index 084288cbeb110..b104b23b78a49 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index 3d5ac95aed39c..7b390250f435c 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index 77f4fba099255..99ecf06e9688b 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index 27aeb4faeb038..b60492af7ce1e 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index 83b6792ccc194..4bf77316768bf 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index 9d65a0f33a8d9..ae18959fdcbeb 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index b9a0141fab136..248a774860ae3 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index 23ded88c49487..871968e27d493 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index a9cc906d9084e..eafee57cb7405 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index 4b88c735bf469..e4c5d0188f92b 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 94bfd43a2c13e..7e17ab553dc29 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index 0e62529fb7183..4934d5cfeafdf 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index e6a71090d6d7a..606177d6bdaef 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index 8a1937892fa3f..e774b206f7054 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index 96381509afeba..102d5f7d9ba28 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index ebf2de483da9d..e057b744280fc 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index 8ec76bb8d11e4..da3594107754c 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index 0b2c4028567c2..4125798869768 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 4b7550cc173c3..1e999144ba2ea 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index 5a6ffc5da0093..f0f2527b519e3 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index 913fae863b263..232fcc6099ca9 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index b51072b0fb944..2a44b8fa5a8b4 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index d766b71f5b7e6..3af1eafb2624b 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 06c7a58f9d979..576405992da3a 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 589b76316953f..02d3fff1361a5 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index 50984044bf2fb..516b6eed65e9a 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index 8e6e61eb91938..6bcf7fa279964 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index 07ecd37786de7..efe6a6b4c3264 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 3684ab8f55f5d..8438266c33f05 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 02609ba4ae070..9df6418fcd28f 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index 7f6923b35b3bc..b460ad4b389f8 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index 35a1331d32935..c36d80e6a1a68 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index ed06b60296b0e..04a2032867780 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index 95ba662021b04..d086788dafc1f 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index b539988fc13a4..c6cb8bee76944 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index 6f782e38e89df..0ba646c78209d 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 27c3fcaee1de6..2985ca8bd2350 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index 9f585a73f967a..bd76977f8167f 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index d746857c82075..9d97ea373906b 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index 4b6e6b0730551..4520457d9082f 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index 147b422f7ad6e..de4bd0a15f8aa 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 0662690a16a87..8bbd201f7303c 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index cc899ba34fe7a..52c64d2fa8163 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 9084d914fb491..55248a629f6db 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index a300505d31def..c97701b9bdb49 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index 3c630539b6321..f24a184f16de5 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 5a0cbcfa6cd33..6d887dc88ff0c 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index c2a79253451f0..52df36f6c1e30 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index 671137f40fc6c..9ae2b399f3f43 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index 8ae433df8e5bc..b662256cfca30 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index 747c002095027..4d5bc757f0ece 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index 614ff9f794d04..62d94f7c4f3dd 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index ec2260f65463f..a08b78618edcc 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 95a6048ca1c6e..433b5f70fbb85 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index 8495114c7b3cc..a7f4c9641ffb0 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index 278721a5ec79c..3f6b2b72bef11 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index a6f36826322f8..76447b987adf2 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index d07be73bde435..2f6ea37a43d81 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 16e3fdbdb2b21..97b1fedd0bd75 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index 422d6e8e0ab03..c3630482ef583 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index bcf20f2ae2d4b..5c647d84eb57d 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index 2c4e9ebcd3138..bbe614415f1ab 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index 26849e471f9d0..fdc6029f71822 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index 155c6d8cd2a93..01909a5f2bd24 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index 898f181037fd8..0daa33887e71c 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index ee603e40adbc8..762e9ffce5760 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index c8804f09e75fb..df35525a6b30e 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 423f0c13f0ca8..30a16644dcf23 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index 8f30454e0bff1..80a9f9561bd14 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index 97ff6dec3321b..77111c701cf6d 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index 3e76793fedb70..e34848e11bc35 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index 60ecd3dca12d5..7e0d8fc901879 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index e90c6118a60c9..97c4b9da4ed12 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index dc81686723428..9c9dcd969ee87 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index ed68baf707f29..1fb0d559e9940 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index 6cdd46082f933..e55418d32cdad 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 4b0ce6084527a..705c7f7261d30 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index 48d66af612706..b8a4502a66fff 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index 3a31cc5c018e3..355c3442e3e33 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index e0946656c0347..e465dd3c801c2 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index c2e1cf58433aa..081bd161e9a2e 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index 79329f2c04085..a8c229a65a35a 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index 4c49a99838b8e..664300586ed07 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index 920c6c012967e..4dba70bd0859d 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index a27cd2a99651e..651d9e695b46e 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index 0b41ffbf6db84..6402c238454b0 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index c9e9e3c48e1c8..f8a42b109e7d1 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index 48cba67796147..9bde9add91ab6 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index 130c138da92c6..e262cf452cdf0 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index a83c5d4919528..15c06abe42fc5 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index 97a81202d2a2c..0fd9c55df818f 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index 3ee23ce97e7d1..66127da3ff996 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index 860420062a024..93ce91763718d 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index 77e92dc197523..d52a7906ccd07 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index 2801641e1bce4..da4c9277250cd 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index e234dc71d203f..ef1bc1259b80f 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 9bad2dc0f9023..8c9f328d3f47a 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index 9c38449a99e4a..ae6b25524d4b2 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index f462df82a2cb0..f4b4057b0fcc9 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index fb11fad6f69f4..61f876106d0d9 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 896682bf92449..13df7cba4504a 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index aeaf9179793f1..02b806fca548e 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index 4eba30b179eef..e3babb01babe4 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index de771caebc447..f3518093b2a5c 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index 87baedcabc9cb..89d1299821465 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index 568ce7d9ef3d2..fe58bec9aeff4 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index f8a0179c12fd0..d49bfaf817fbe 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index f840ec75bb646..b9dbd1441948c 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 702878197be16..15342b2b51a8d 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index 1ea7db123357f..8ce7ef3a99a7e 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index b2347733a7382..b592325c52425 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index e62dffc9751c1..5752797c07c4d 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index 84c3888a02857..11461a26bebe6 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index 7d6267dac3400..34601cf59a850 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index ee3b287d9cd39..ece7e9713c366 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 49c0de6bc2f25..069e698ac4845 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index b0d6abb3b6fb3..2e872092b51d7 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index 52246fa18aa39..b1fb76f3d3a8b 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 2f15196aa81f3..1821095753523 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index 366026fdb4700..b9621e8d2b699 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index 6e017beba5502..a63a0c0a00103 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index 9f0db68b149ad..2991db02a2732 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index 5583e9ffff785..29dda593d12de 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index 5149836f73944..04a9f38994f1c 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index 95d8e5eacfff3..81d7a9eb06ec9 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index 46b629e8851b5..af10299c43eaa 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index f43e8d4d09716..c9b4f132d365c 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 5c0c7a83a7232..53da86f72a2f7 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index 8a0c71e3b1a4a..cdc321a995e5e 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index 67756ba585fe5..21a8a44046687 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index c289af1a7c540..92b1fa1a3a74a 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 49bff997953f3..83bd975913400 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 997c6f58dec3e..094bdb06d783a 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index 3ef783dda98ae..b5847254fdf38 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index b44cb37ba6fbe..e9fb1addbb15f 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index af3df35f3dff7..b576e730b94df 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index 177cc1bc03fe7..89ea6dee69217 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index 0da5fd4d5fce4..d7305ccc3bd5e 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index 87755ea57c277..d005d26953432 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index 7e531b3208248..078b5566d3007 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index 7170da67f7c45..71efaed9a5196 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index 55b6a7be2c12a..e1546d58a4a7b 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index 609b298cf31fd..a0e65b96a3baf 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index e02d50b2cffc6..01f942de3a9dc 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index 7dd6728638d0d..8eba2ee385c31 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index 76bcf90b46950..b1a524afbd255 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index 3ab160cb1461d..f685c784a1ab3 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index 7e1710624f162..b622a408f9edf 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index c39fa49ad564f..3fb399a034195 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index 9608b7a046012..651b2268fe33b 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index e55f92899fa46..5634a769773e8 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index 7262a2757de79..33f709560bfc7 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index 4e272ea1cec19..88b1de3802179 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index 55474bb2e4e74..c586d74424fc5 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 867d78472ffe4..8aefb52efea4e 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 32b7f896f8983..61886db44b3fc 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index ece3dbb4eccfd..eeaa3d2bc2b72 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 39be0535d0498..1f38b422b5a45 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index 76683dd884027..a1662a6887725 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index e8b444d5d1db9..cc3d4d234c143 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index 7d330122177fa..7f40ee41b2931 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 9aa7ca2a3b0e5..0dda519c51892 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index 275d0e6a891d2..228a0543558f2 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index 788deceb49c58..f3c5261d9e3ac 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index 78fe024ca7d41..6f4937dada79a 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index d503bfe576bab..fd8ffbb698bce 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index fba35e01d0ba6..6e23503a421eb 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index d1b7007bb88f6..5e28d8b788c32 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index 9fab0bb8f8450..f76ecc9303d4f 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 3e96352477092..1dd86fd24f9d7 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index 950c42f8d01ff..b9e6ac2065a8a 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index b2130d9a20be9..5b6ba26e6bdf0 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index a8b2112d1f99f..76e6fbcde8034 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index 1ea52040e10d6..e5af411ab6cc7 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 26e6026effa71..90b9a1b3ac71c 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 6dc3ff0ac79c3..4aa682fbc36ea 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index 0b8ad54581149..64a6a35ecb200 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index 6a400e98b8a5a..b38beecef401a 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index 138724d1d76d0..abe5870fd7a14 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index 34dfff912efdc..1c19820fa0886 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index 179cae1877fd2..4f5497634cdbf 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index 6cf3c07e27806..a931a61ae97d1 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index 594b57f54cbab..477baa9e79f42 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index 1eb66ecf126fc..01a57d5088537 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 467029eb24259..41e49327e0934 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index 6209e2e5ea763..d62c392b3bf37 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index df9cad6291046..47f5f3449a281 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index b9bcce245cb87..d761dcd54952c 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index 5fc98fb7ca97b..795ab222d17a4 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index 1c5f31421e640..0058c9d0bb98a 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 4bf71e28729e3..588d85dc49934 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index 59deee8397bce..3b907bb988abb 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 5241236fb6947..3d1f571be6d01 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index bfedcfe18c936..2761409c53ea8 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 4d900eba000f1..18334f12cef1f 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index 0f4a5455cd861..2e70fa569b7aa 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 9cc36c45b6c52..20cc78864f976 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index 38fc675c44b46..aed191ddf24de 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 40ff0aca07ee4..3c659ceae638f 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index ecd430f01c0b6..e1751f9d9380e 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-12
+date: 2023-11-13
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From 84e0da653b56dd4fdc3430cb170d1ba0b33073e1 Mon Sep 17 00:00:00 2001
From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
Date: Mon, 13 Nov 2023 09:54:58 +0100
Subject: [PATCH 116/147] [Unified search][Dashboard] truncate filter pills to
 10 lines (#170941)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

## Summary

Solves 1/3 of https://github.com/elastic/kibana/issues/170398

After assessing with @teresaalvarezsoler we decided to wrap to 10 lines
and autoexpand.

(Ignore the missing 'x' in some filter pills, it was not impacted 🙏🏼 )

<img width="1479" alt="Screenshot 2023-11-10 at 11 20 32"
src="https://github.com/elastic/kibana/assets/4283304/11da80df-92e2-4ea7-9efe-5e352bb95add">
<img width="396" alt="Screenshot 2023-11-10 at 11 20 08"
src="https://github.com/elastic/kibana/assets/4283304/0b37f2c1-d736-4507-ae12-0f3f0a3b11f5">
<img width="980" alt="Screenshot 2023-11-10 at 11 19 58"
src="https://github.com/elastic/kibana/assets/4283304/07dc61f6-92fa-4569-b5ee-011a9078006a">



### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---
 .../filters_notification_popover_contents.tsx |  3 +-
 .../public/filter_badge/filter_badge.tsx      | 47 +++++++++++--------
 2 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/src/plugins/dashboard/public/dashboard_actions/filters_notification_popover_contents.tsx b/src/plugins/dashboard/public/dashboard_actions/filters_notification_popover_contents.tsx
index 37769e2de42c7..5400351729015 100644
--- a/src/plugins/dashboard/public/dashboard_actions/filters_notification_popover_contents.tsx
+++ b/src/plugins/dashboard/public/dashboard_actions/filters_notification_popover_contents.tsx
@@ -80,6 +80,7 @@ export function FiltersNotificationPopoverContents({
           <EuiFormRow
             label={dashboardFilterNotificationActionStrings.getQueryTitle()}
             display="rowCompressed"
+            fullWidth
           >
             <EuiCodeBlock
               language={queryLanguage}
@@ -92,7 +93,7 @@ export function FiltersNotificationPopoverContents({
           </EuiFormRow>
         )}
         {filters && filters.length > 0 && (
-          <EuiFormRow label={dashboardFilterNotificationActionStrings.getFiltersTitle()}>
+          <EuiFormRow label={dashboardFilterNotificationActionStrings.getFiltersTitle()} fullWidth>
             <EuiFlexGroup wrap={true} gutterSize="xs">
               <FilterItems filters={filters} indexPatterns={dataViews} readOnly={true} />
             </EuiFlexGroup>
diff --git a/src/plugins/unified_search/public/filter_badge/filter_badge.tsx b/src/plugins/unified_search/public/filter_badge/filter_badge.tsx
index 9b9e669885cbe..c1cc5c7a3da56 100644
--- a/src/plugins/unified_search/public/filter_badge/filter_badge.tsx
+++ b/src/plugins/unified_search/public/filter_badge/filter_badge.tsx
@@ -7,10 +7,11 @@
  */
 
 import React from 'react';
-import { EuiBadge, EuiTextColor, useEuiTheme } from '@elastic/eui';
+import { EuiBadge, EuiTextBlockTruncate, EuiTextColor, useEuiTheme } from '@elastic/eui';
 import type { DataView } from '@kbn/data-views-plugin/common';
 import type { Filter } from '@kbn/es-query';
 import { isCombinedFilter } from '@kbn/es-query';
+import { css } from '@emotion/react';
 import { FilterBadgeGroup } from './filter_badge_group';
 import type { FilterLabelStatus } from '../filter_bar/filter_item/filter_item';
 import { badgePaddingCss, marginLeftLabelCss } from './filter_badge.styles';
@@ -59,24 +60,32 @@ function FilterBadge({
       iconSide="right"
       {...rest}
     >
-      {!hideAlias && filter.meta.alias !== null ? (
-        <>
-          <span className={marginLeftLabelCss(euiTheme)}>
-            {prefix}
-            {filter.meta.alias}
-            {filterLabelStatus && <>: {filterLabelValue}</>}
-          </span>
-        </>
-      ) : (
-        <div>
-          {isCombinedFilter(filter) && prefix}
-          <FilterBadgeGroup
-            filters={[filter]}
-            dataViews={dataViews}
-            filterLabelStatus={valueLabel}
-          />
-        </div>
-      )}
+      <span
+        css={css`
+          white-space: normal;
+        `}
+      >
+        <EuiTextBlockTruncate lines={10}>
+          {!hideAlias && filter.meta.alias !== null ? (
+            <>
+              <span className={marginLeftLabelCss(euiTheme)}>
+                {prefix}
+                {filter.meta.alias}
+                {filterLabelStatus && <>: {filterLabelValue}</>}
+              </span>
+            </>
+          ) : (
+            <div>
+              {isCombinedFilter(filter) && prefix}
+              <FilterBadgeGroup
+                filters={[filter]}
+                dataViews={dataViews}
+                filterLabelStatus={valueLabel}
+              />
+            </div>
+          )}
+        </EuiTextBlockTruncate>
+      </span>
     </EuiBadge>
   );
 }

From f27427b949ac39104a24157480fc10b9e9b1c073 Mon Sep 17 00:00:00 2001
From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com>
Date: Mon, 13 Nov 2023 10:17:13 +0100
Subject: [PATCH 117/147] Removes duplicated `RedirectAppLinks` component
 (#170304)

## Summary

This PR removes the [duplicated RedirectAppLinks
component](https://github.com/elastic/kibana/blob/v8.10.4/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx)
which has been marked as deprecated since
74a00fad20c0316d359b7b5168ba52ee93a72190.

All references to the previous import declaration from
`@kbn/kibana-react-plugin/public` have been replaced with
`@kbn/shared-ux-link-redirect-app`, this change ensures that the current
app behaviour is preserved, and changes to match the expectation of the
new component have been applied where necessary.

Changes relating to the new `RedirectAppLinks` component;
- The component does not accept a `className` anymore as it is not a
presentational component despite it being used as one previously,
there's change to make accommodation for how it had been used.
- The component introduces a`data-test-subj` attribute with the value
`kbnRedirectAppLink` on the dom node that wraps it's children.


### Checklist

<!--
Delete any items that are not applicable to this PR.

~- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)~
-->
- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

<!--
~- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard
accessibility](https://webaim.org/techniques/keyboard/))~
~- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))~
~- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~
~- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))~
~- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)~


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
-->

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 dev_docs/key_concepts/navigation.mdx          |   6 +-
 .../best-practices/navigation.asciidoc        |   4 +-
 .../search_examples/public/application.tsx    |   8 +-
 examples/search_examples/tsconfig.json        |   1 +
 .../__snapshots__/no_data_card.test.tsx.snap  |   5 +
 .../impl/src/redirect_app_links.component.tsx |   7 +-
 .../impl/src/redirect_app_links.stories.tsx   |  58 ++---
 .../impl/src/redirect_app_links.styles.ts     |   5 +-
 ...onnected_search_session_indicator.test.tsx |   6 +-
 .../connected_search_session_indicator.tsx    |   8 +-
 .../session/sessions_mgmt/lib/get_columns.tsx |   8 +-
 src/plugins/data/tsconfig.json                |   3 +-
 .../view_api_request_flyout.tsx               |  18 +-
 src/plugins/es_ui_shared/tsconfig.json        |   1 +
 .../home/public/application/application.tsx   |  14 +-
 .../__snapshots__/add_data.test.tsx.snap      |  10 +-
 .../components/add_data/add_data.tsx          |   8 +-
 .../__snapshots__/manage_data.test.tsx.snap   |  24 +-
 .../components/manage_data/manage_data.tsx    |  14 +-
 src/plugins/home/tsconfig.json                |   1 +
 .../public/components/_overview.scss          |  11 -
 .../__snapshots__/add_data.test.tsx.snap      |  24 +-
 .../public/components/add_data/add_data.tsx   |  11 +-
 .../__snapshots__/manage_data.test.tsx.snap   |  32 ++-
 .../components/manage_data/manage_data.tsx    |  10 +-
 .../public/app_links/click_handler.test.ts    | 211 ----------------
 .../public/app_links/click_handler.ts         |  45 ----
 .../kibana_react/public/app_links/index.ts    |   9 -
 .../app_links/redirect_app_link.test.tsx      | 232 ------------------
 .../public/app_links/redirect_app_link.tsx    |  72 ------
 .../public/app_links/utils.test.ts            |  41 ----
 .../kibana_react/public/app_links/utils.ts    |  37 ---
 src/plugins/kibana_react/public/index.ts      |   3 -
 .../overview_page_actions.test.tsx.snap       |  24 +-
 .../overview_page_actions.test.tsx            |   2 +-
 .../overview_page_actions.tsx                 |  20 +-
 .../overview_page_footer.test.tsx             |   2 +-
 .../overview_page_footer.tsx                  |   8 +-
 .../elastic_agent_card.test.tsx.snap          |  50 ++--
 .../no_data_card/elastic_agent_card.tsx       |   8 +-
 src/plugins/kibana_react/tsconfig.json        |   1 +
 .../saved_objects_table.test.tsx.snap         |  70 +++---
 .../objects_table/saved_objects_table.tsx     |   8 +-
 .../saved_objects_edition_page.tsx            |  43 ++--
 .../saved_objects_management/tsconfig.json    |   1 +
 .../apps/kibana_overview/_page_header.ts      |   6 +-
 .../plugins/app_link_test/kibana.jsonc        |   5 +-
 .../plugins/app_link_test/public/app.tsx      |   8 +-
 .../plugins/app_link_test/tsconfig.json       |   2 +-
 .../plugins/core_history_block/kibana.jsonc   |   5 +-
 .../plugins/core_history_block/public/app.tsx |  14 +-
 .../plugins/core_history_block/tsconfig.json  |   4 +-
 .../exploratory_view_example/public/mount.tsx |  15 +-
 .../exploratory_view_example/tsconfig.json    |   1 +
 .../components/routing/app_root/index.tsx     | 111 +++++----
 x-pack/plugins/apm/tsconfig.json              |   3 +-
 .../public/application/index.tsx              |  20 +-
 x-pack/plugins/exploratory_view/tsconfig.json |   3 +-
 .../fleet/public/applications/fleet/app.tsx   |   9 +-
 .../components/agent_logs/agent_logs.test.tsx |   6 +-
 .../components/agent_logs/agent_logs.tsx      |   8 +-
 .../public/applications/integrations/app.tsx  |   9 +-
 .../components/custom_assets_accordion.tsx    |   8 +-
 .../tutorial_directory_header_link.tsx        |   8 +-
 .../public/application/index.tsx              |  42 ++--
 .../public/shared_imports.ts                  |   3 +-
 .../index_lifecycle_management/tsconfig.json  |   1 +
 .../details_page_settings_content.tsx         |   1 -
 .../jobs_list_page/jobs_list_page.tsx         |  13 +-
 .../public/application/app.tsx                |  77 +++---
 .../observability_onboarding/tsconfig.json    |   1 +
 .../nav_control/nav_control_service.test.ts   |   1 +
 .../management/spaces_management_app.test.tsx |   3 +
 .../public/apps/synthetics/synthetics_app.tsx |  12 +-
 x-pack/plugins/synthetics/tsconfig.json       |   1 +
 .../public/application/app.tsx                |  32 ++-
 .../public/shared_imports.ts                  |   3 +-
 .../plugins/upgrade_assistant/tsconfig.json   |   1 +
 .../public/legacy_uptime/app/uptime_app.tsx   |  12 +-
 .../lib/alert_types/alert_messages.tsx        |   9 +-
 x-pack/plugins/uptime/tsconfig.json           |   1 +
 .../plugins/ux/public/application/ux_app.tsx  | 112 +++++----
 x-pack/plugins/ux/tsconfig.json               |   1 +
 83 files changed, 661 insertions(+), 1094 deletions(-)
 delete mode 100644 src/plugins/kibana_react/public/app_links/click_handler.test.ts
 delete mode 100644 src/plugins/kibana_react/public/app_links/click_handler.ts
 delete mode 100644 src/plugins/kibana_react/public/app_links/index.ts
 delete mode 100644 src/plugins/kibana_react/public/app_links/redirect_app_link.test.tsx
 delete mode 100644 src/plugins/kibana_react/public/app_links/redirect_app_link.tsx
 delete mode 100644 src/plugins/kibana_react/public/app_links/utils.test.ts
 delete mode 100644 src/plugins/kibana_react/public/app_links/utils.ts

diff --git a/dev_docs/key_concepts/navigation.mdx b/dev_docs/key_concepts/navigation.mdx
index e383f21187d41..def5e224d05cc 100644
--- a/dev_docs/key_concepts/navigation.mdx
+++ b/dev_docs/key_concepts/navigation.mdx
@@ -3,7 +3,7 @@ id: kibDevKeyConceptsNavigation
 slug: /kibana-dev-docs/routing-and-navigation
 title: Routing, Navigation and URL
 description: Learn best practices about navigation inside Kibana
-date: 2021-10-05
+date: 2023-11-07
 tags: ['kibana', 'dev', 'architecture', 'contributor']
 ---
 
@@ -116,11 +116,11 @@ const MySPALink = () =>
 ```
 
 As it would be too much boilerplate to do this for each link in your app, there is a handy wrapper that helps with it:
-[RedirectAppLinks](https://github.com/elastic/kibana/blob/main/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx#L49).
+[RedirectAppLinks](https://github.com/elastic/kibana/blob/main/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.tsx).
 
 ```jsx
 const MyApp = () =>
-<RedirectAppLinks application={core.application}>
+<RedirectAppLinks coreStart={{application: core.application}}>
   {/*...*/}
   {/* navigations using this link will happen in SPA friendly way */}
   <a href={urlToADashboard}>Go to Dashboard</a>
diff --git a/docs/developer/best-practices/navigation.asciidoc b/docs/developer/best-practices/navigation.asciidoc
index 20c52b40978c4..6d6ebb38e558b 100644
--- a/docs/developer/best-practices/navigation.asciidoc
+++ b/docs/developer/best-practices/navigation.asciidoc
@@ -120,12 +120,12 @@ const MySPALink = () =>
 ----
 
 As it would be too much boilerplate to do this for each {kib} link in your app, there is a handy wrapper that helps with it: 
-{kib-repo}tree/{branch}/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx#L49[RedirectAppLinks].
+{kib-repo}tree/{branch}/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.tsx[RedirectAppLinks].
 
 [source,typescript jsx]
 ----
 const MyApp = () => 
-  <RedirectAppLinks application={core.application}>
+  <RedirectAppLinks coreStart={{application: core.application}}>
     {/*...*/}
     {/* navigations using this link will happen in SPA friendly way */}
       <a href={urlToADashboard}>Go to Dashboard</a>
diff --git a/examples/search_examples/public/application.tsx b/examples/search_examples/public/application.tsx
index d87c0843ed172..c6c0eb053526a 100644
--- a/examples/search_examples/public/application.tsx
+++ b/examples/search_examples/public/application.tsx
@@ -12,7 +12,7 @@ import { Redirect } from 'react-router-dom';
 import { Router, Routes, Route } from '@kbn/shared-ux-router';
 import { I18nProvider } from '@kbn/i18n-react';
 import { AppMountParameters, CoreStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { AppPluginStartDependencies } from './types';
 import { SearchExamplePage, ExampleLink } from './common/example_page';
 import { SearchExamplesApp } from './search/app';
@@ -45,7 +45,11 @@ export const renderApp = (
 ) => {
   ReactDOM.render(
     <I18nProvider>
-      <RedirectAppLinks application={application}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
         <SearchExamplePage exampleLinks={LINKS} basePath={http.basePath}>
           <Router history={history}>
             <Routes>
diff --git a/examples/search_examples/tsconfig.json b/examples/search_examples/tsconfig.json
index ad775e0ac219c..e4d18b3443263 100644
--- a/examples/search_examples/tsconfig.json
+++ b/examples/search_examples/tsconfig.json
@@ -33,5 +33,6 @@
     "@kbn/config-schema",
     "@kbn/shared-ux-router",
     "@kbn/search-response-warnings",
+    "@kbn/shared-ux-link-redirect-app",
   ]
 }
diff --git a/packages/shared-ux/card/no_data/impl/src/__snapshots__/no_data_card.test.tsx.snap b/packages/shared-ux/card/no_data/impl/src/__snapshots__/no_data_card.test.tsx.snap
index 9c91d99f1dc14..474abd65a5991 100644
--- a/packages/shared-ux/card/no_data/impl/src/__snapshots__/no_data_card.test.tsx.snap
+++ b/packages/shared-ux/card/no_data/impl/src/__snapshots__/no_data_card.test.tsx.snap
@@ -3,6 +3,7 @@
 exports[`NoDataCard props button 1`] = `
 <div
   css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+  data-test-subj="kbnRedirectAppLink"
 >
   <div
     class="euiPanel euiPanel--plain euiPanel--paddingLarge euiCard emotion-euiPanel-grow-m-l-plain-hasShadow-isClickable-EuiCard"
@@ -83,6 +84,7 @@ exports[`NoDataCard props button 1`] = `
 exports[`NoDataCard props extends EuiCardProps 1`] = `
 <div
   css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+  data-test-subj="kbnRedirectAppLink"
 >
   <div
     class="euiPanel euiPanel--plain euiPanel--paddingLarge euiCard custom_class emotion-euiPanel-grow-m-l-plain-hasShadow-isClickable-EuiCard"
@@ -163,6 +165,7 @@ exports[`NoDataCard props extends EuiCardProps 1`] = `
 exports[`NoDataCard props href 1`] = `
 <div
   css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+  data-test-subj="kbnRedirectAppLink"
 >
   <div
     class="euiPanel euiPanel--plain euiPanel--paddingLarge euiCard emotion-euiPanel-grow-m-l-plain-hasShadow-isClickable-EuiCard"
@@ -243,6 +246,7 @@ exports[`NoDataCard props href 1`] = `
 exports[`NoDataCard props no access to Fleet 1`] = `
 <div
   css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+  data-test-subj="kbnRedirectAppLink"
 >
   <div
     class="euiPanel euiPanel--subdued euiPanel--paddingLarge euiCard emotion-euiPanel-grow-m-l-subdued-EuiCard"
@@ -308,6 +312,7 @@ exports[`NoDataCard props no access to Fleet 1`] = `
 exports[`NoDataCard renders 1`] = `
 <div
   css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+  data-test-subj="kbnRedirectAppLink"
 >
   <div
     class="euiPanel euiPanel--plain euiPanel--paddingLarge euiCard emotion-euiPanel-grow-m-l-plain-hasShadow-isClickable-EuiCard"
diff --git a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.component.tsx b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.component.tsx
index 9148a0b60acf7..96e80af246511 100644
--- a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.component.tsx
+++ b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.component.tsx
@@ -45,7 +45,12 @@ export const RedirectAppLinks: FC<RedirectAppLinksComponentProps> = ({
 
   return (
     // eslint-disable-next-line jsx-a11y/click-events-have-key-events
-    <div onClick={handleClick} ref={containerRef} css={redirectAppLinksStyles}>
+    <div
+      onClick={handleClick}
+      ref={containerRef}
+      css={redirectAppLinksStyles}
+      data-test-subj="kbnRedirectAppLink"
+    >
       {children}
     </div>
   );
diff --git a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.stories.tsx b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.stories.tsx
index 43f907c32fc18..cec520990edc3 100644
--- a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.stories.tsx
+++ b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.stories.tsx
@@ -29,31 +29,33 @@ const mock = new RedirectAppLinksStorybookMock();
 
 export const RedirectAppLinks = () => {
   return (
-    <>
-      <Component {...mock.getProps()}>
-        <EuiFlexGroup>
-          <EuiFlexItem grow={false}>
-            <EuiButton
-              data-test-subj="storybookButton"
-              iconType="plusInCircle"
-              href="/some-test-url"
-            >
-              Button with URL
-            </EuiButton>
-          </EuiFlexItem>
-          <EuiFlexItem grow={false}>
-            <EuiButton
-              data-test-subj="storybookButton"
-              iconType="plusInCircle"
-              onClick={action('onClick')}
-            >
-              Button without URL
-            </EuiButton>
-          </EuiFlexItem>
-        </EuiFlexGroup>
-      </Component>
-      <EuiFlexGroup>
-        <EuiFlexItem grow={false}>
+    <EuiFlexGroup direction="column">
+      <EuiFlexItem>
+        <Component {...mock.getProps()}>
+          <EuiFlexGroup>
+            <EuiFlexItem grow={false}>
+              <EuiButton
+                data-test-subj="storybookButton"
+                iconType="plusInCircle"
+                href="/some-test-url"
+              >
+                Button with URL
+              </EuiButton>
+            </EuiFlexItem>
+            <EuiFlexItem grow={false}>
+              <EuiButton
+                data-test-subj="storybookButton"
+                iconType="plusInCircle"
+                onClick={action('onClick')}
+              >
+                Button without URL
+              </EuiButton>
+            </EuiFlexItem>
+          </EuiFlexGroup>
+        </Component>
+      </EuiFlexItem>
+      <EuiFlexItem>
+        <div>
           <EuiButton
             data-test-subj="storybookButton"
             iconType="plusInCircle"
@@ -61,9 +63,9 @@ export const RedirectAppLinks = () => {
           >
             Button outside RedirectAppLinks
           </EuiButton>
-        </EuiFlexItem>
-      </EuiFlexGroup>
-    </>
+        </div>
+      </EuiFlexItem>
+    </EuiFlexGroup>
   );
 };
 
diff --git a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.styles.ts b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.styles.ts
index d479cc97a78c1..7f53924dff531 100644
--- a/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.styles.ts
+++ b/packages/shared-ux/link/redirect_app/impl/src/redirect_app_links.styles.ts
@@ -9,6 +9,9 @@
 import { css } from '@emotion/react';
 
 export const redirectAppLinksStyles = css({
-  display: 'flex',
+  display: 'inherit',
   flex: '1',
+  flexFlow: 'column nowrap',
+  height: '100%',
+  width: '100%',
 });
diff --git a/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.test.tsx b/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.test.tsx
index d40d2ea62595b..3a97bdddbcf46 100644
--- a/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.test.tsx
+++ b/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.test.tsx
@@ -80,7 +80,8 @@ test("shouldn't show indicator in case no active search session", async () => {
   expect(container).toMatchInlineSnapshot(`
     <div>
       <div
-        class="kbnRedirectCrossAppLinks"
+        css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+        data-test-subj="kbnRedirectAppLink"
       />
     </div>
   `);
@@ -109,7 +110,8 @@ test("shouldn't show indicator in case app hasn't opt-in", async () => {
   expect(container).toMatchInlineSnapshot(`
     <div>
       <div
-        class="kbnRedirectCrossAppLinks"
+        css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+        data-test-subj="kbnRedirectAppLink"
       />
     </div>
   `);
diff --git a/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx b/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx
index 9a23342d58c62..ccc51091716b5 100644
--- a/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx
+++ b/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx
@@ -11,7 +11,7 @@ import { debounce } from 'rxjs/operators';
 import { timer } from 'rxjs';
 import useObservable from 'react-use/lib/useObservable';
 import { i18n } from '@kbn/i18n';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public';
 import { ApplicationStart, IBasePath } from '@kbn/core/public';
 import { SearchSessionIndicator, SearchSessionIndicatorRef } from '../search_session_indicator';
@@ -150,7 +150,11 @@ export const createConnectedSearchSessionIndicator = ({
 
     if (!sessionService.isSessionStorageReady()) return null;
     return (
-      <RedirectAppLinks application={application}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
         <SearchSessionIndicator
           ref={searchSessionIndicatorRef}
           state={state}
diff --git a/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx b/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx
index cfedbd59b29e5..371ffac111e84 100644
--- a/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx
+++ b/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx
@@ -21,7 +21,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
 import { CoreStart } from '@kbn/core/public';
 import { capitalize } from 'lodash';
 import React from 'react';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { SearchSessionStatus } from '../../../../../common';
 import { OnActionComplete, PopoverActionsMenu, TableText } from '../components';
 import { StatusIndicator } from '../components/status';
@@ -140,7 +140,11 @@ export const getColumns = (
           ) : null;
 
         return (
-          <RedirectAppLinks application={core.application}>
+          <RedirectAppLinks
+            coreStart={{
+              application: core.application,
+            }}
+          >
             {/* eslint-disable-next-line @elastic/eui/href-or-on-click */}
             <EuiLink
               href={href}
diff --git a/src/plugins/data/tsconfig.json b/src/plugins/data/tsconfig.json
index 41b1d1d755ad7..7619be78a82dc 100644
--- a/src/plugins/data/tsconfig.json
+++ b/src/plugins/data/tsconfig.json
@@ -48,7 +48,8 @@
     "@kbn/core-saved-objects-utils-server",
     "@kbn/data-service",
     "@kbn/react-kibana-context-render",
-    "@kbn/search-response-warnings"
+    "@kbn/search-response-warnings",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx b/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx
index 7ee8b464ce521..c32fab974a811 100644
--- a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx
+++ b/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx
@@ -25,7 +25,7 @@ import {
 } from '@elastic/eui';
 import type { UrlService } from '@kbn/share-plugin/common/url_service';
 import { ApplicationStart, APP_WRAPPER_CLASS } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 type FlyoutProps = Omit<EuiFlyoutProps, 'onClose'>;
 interface ViewApiRequestFlyoutProps {
@@ -133,13 +133,15 @@ export const ApiRequestFlyout: React.FunctionComponent<ViewApiRequestFlyoutProps
 export const ViewApiRequestFlyout = (props: ViewApiRequestFlyoutProps) => {
   if (props.application) {
     return (
-      <RedirectAppLinks
-        application={props.application}
-        className={APP_WRAPPER_CLASS}
-        data-test-subj="apiRequestFlyoutRedirectWrapper"
-      >
-        <ApiRequestFlyout {...props} />
-      </RedirectAppLinks>
+      <div className={APP_WRAPPER_CLASS} data-test-subj="apiRequestFlyoutRedirectWrapper">
+        <RedirectAppLinks
+          coreStart={{
+            application: props.application,
+          }}
+        >
+          <ApiRequestFlyout {...props} />
+        </RedirectAppLinks>
+      </div>
     );
   }
 
diff --git a/src/plugins/es_ui_shared/tsconfig.json b/src/plugins/es_ui_shared/tsconfig.json
index b88684db55567..6e1e4b88f0850 100644
--- a/src/plugins/es_ui_shared/tsconfig.json
+++ b/src/plugins/es_ui_shared/tsconfig.json
@@ -23,6 +23,7 @@
     "@kbn/kibana-react-plugin",
     "@kbn/safer-lodash-set",
     "@kbn/storybook",
+    "@kbn/shared-ux-link-redirect-app",
   ],
   "exclude": [
     "target/**/*",
diff --git a/src/plugins/home/public/application/application.tsx b/src/plugins/home/public/application/application.tsx
index 1c28ff0b8fcee..8458c0300fc75 100644
--- a/src/plugins/home/public/application/application.tsx
+++ b/src/plugins/home/public/application/application.tsx
@@ -10,11 +10,9 @@ import React from 'react';
 import { render, unmountComponentAtNode } from 'react-dom';
 import { ScopedHistory, CoreStart, CoreTheme } from '@kbn/core/public';
 import { Observable } from 'rxjs';
-import {
-  KibanaContextProvider,
-  KibanaThemeProvider,
-  RedirectAppLinks,
-} from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
+
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 import { SampleDataTabKibanaProvider } from '@kbn/home-sample-data-tab';
 
@@ -42,7 +40,11 @@ export const renderApp = async (
       .filter(({ id }) => navLinks.find(({ category, hidden }) => !hidden && category?.id === id));
 
     render(
-      <RedirectAppLinks application={coreStart.application}>
+      <RedirectAppLinks
+        coreStart={{
+          application: coreStart.application,
+        }}
+      >
         <KibanaThemeProvider theme$={theme$}>
           <KibanaContextProvider services={{ ...coreStart }}>
             <SampleDataTabKibanaProvider {...{ coreStart, dataViews, trackUiMetric }}>
diff --git a/src/plugins/home/public/application/components/add_data/__snapshots__/add_data.test.tsx.snap b/src/plugins/home/public/application/components/add_data/__snapshots__/add_data.test.tsx.snap
index a2a43627c695d..1b76a2d853646 100644
--- a/src/plugins/home/public/application/components/add_data/__snapshots__/add_data.test.tsx.snap
+++ b/src/plugins/home/public/application/components/add_data/__snapshots__/add_data.test.tsx.snap
@@ -42,11 +42,13 @@ exports[`AddData render 1`] = `
           grow={false}
         >
           <RedirectAppLinks
-            application={
+            coreStart={
               Object {
-                "capabilities": Object {
-                  "navLinks": Object {
-                    "integrations": true,
+                "application": Object {
+                  "capabilities": Object {
+                    "navLinks": Object {
+                      "integrations": true,
+                    },
                   },
                 },
               }
diff --git a/src/plugins/home/public/application/components/add_data/add_data.tsx b/src/plugins/home/public/application/components/add_data/add_data.tsx
index 5440ad09d2c15..20e9d60ffc872 100644
--- a/src/plugins/home/public/application/components/add_data/add_data.tsx
+++ b/src/plugins/home/public/application/components/add_data/add_data.tsx
@@ -22,7 +22,7 @@ import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { METRIC_TYPE } from '@kbn/analytics';
 import { ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { MoveData } from '../move_data';
 import { createAppNavigationHandler } from '../app_navigation_handler';
 import { getServices } from '../../kibana_services';
@@ -89,7 +89,11 @@ export const AddData: FC<Props> = ({ addBasePath, application, isDarkMode, isClo
                 </EuiFlexItem>
               )}
               <EuiFlexItem grow={false}>
-                <RedirectAppLinks application={application}>
+                <RedirectAppLinks
+                  coreStart={{
+                    application,
+                  }}
+                >
                   {/* eslint-disable-next-line @elastic/eui/href-or-on-click */}
                   <EuiButton
                     data-test-subj="homeAddData"
diff --git a/src/plugins/home/public/application/components/manage_data/__snapshots__/manage_data.test.tsx.snap b/src/plugins/home/public/application/components/manage_data/__snapshots__/manage_data.test.tsx.snap
index 9d9b35b1f8817..6dd3405ced866 100644
--- a/src/plugins/home/public/application/components/manage_data/__snapshots__/manage_data.test.tsx.snap
+++ b/src/plugins/home/public/application/components/manage_data/__snapshots__/manage_data.test.tsx.snap
@@ -134,12 +134,14 @@ exports[`ManageData render 1`] = `
           grow={false}
         >
           <RedirectAppLinks
-            application={
+            coreStart={
               Object {
-                "capabilities": Object {
-                  "navLinks": Object {
-                    "dev_tools": true,
-                    "management": true,
+                "application": Object {
+                  "capabilities": Object {
+                    "navLinks": Object {
+                      "dev_tools": true,
+                      "management": true,
+                    },
                   },
                 },
               }
@@ -164,12 +166,14 @@ exports[`ManageData render 1`] = `
           grow={false}
         >
           <RedirectAppLinks
-            application={
+            coreStart={
               Object {
-                "capabilities": Object {
-                  "navLinks": Object {
-                    "dev_tools": true,
-                    "management": true,
+                "application": Object {
+                  "capabilities": Object {
+                    "navLinks": Object {
+                      "dev_tools": true,
+                      "management": true,
+                    },
                   },
                 },
               }
diff --git a/src/plugins/home/public/application/components/manage_data/manage_data.tsx b/src/plugins/home/public/application/components/manage_data/manage_data.tsx
index 9ea508a9b871e..cb64ab7dc0955 100644
--- a/src/plugins/home/public/application/components/manage_data/manage_data.tsx
+++ b/src/plugins/home/public/application/components/manage_data/manage_data.tsx
@@ -12,7 +12,7 @@ import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { METRIC_TYPE } from '@kbn/analytics';
 import { ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { FeatureCatalogueEntry } from '../../../services';
 import { createAppNavigationHandler } from '../app_navigation_handler';
 import { Synopsis } from '../synopsis';
@@ -58,7 +58,11 @@ export const ManageData: FC<Props> = ({ addBasePath, application, features }) =>
                 {/* Check if both the Dev Tools UI and the Console UI are enabled. */}
                 {isDevToolsEnabled && consoleHref !== undefined ? (
                   <EuiFlexItem grow={false}>
-                    <RedirectAppLinks application={application}>
+                    <RedirectAppLinks
+                      coreStart={{
+                        application,
+                      }}
+                    >
                       <EuiButtonEmpty
                         data-test-subj="homeDevTools"
                         className="kbnOverviewPageHeader__actionButton"
@@ -77,7 +81,11 @@ export const ManageData: FC<Props> = ({ addBasePath, application, features }) =>
 
                 {isManagementEnabled ? (
                   <EuiFlexItem grow={false}>
-                    <RedirectAppLinks application={application}>
+                    <RedirectAppLinks
+                      coreStart={{
+                        application,
+                      }}
+                    >
                       <EuiButtonEmpty
                         data-test-subj="homeManage"
                         className="kbnOverviewPageHeader__actionButton"
diff --git a/src/plugins/home/tsconfig.json b/src/plugins/home/tsconfig.json
index 62c62ea8ca9a2..87137d6c7166e 100644
--- a/src/plugins/home/tsconfig.json
+++ b/src/plugins/home/tsconfig.json
@@ -32,6 +32,7 @@
     "@kbn/storybook",
     "@kbn/shared-ux-router",
     "@kbn/core-http-common",
+    "@kbn/shared-ux-link-redirect-app",
   ],
   "exclude": [
     "target/**/*",
diff --git a/src/plugins/kibana_overview/public/components/_overview.scss b/src/plugins/kibana_overview/public/components/_overview.scss
index 3cc4a6627eb24..85eebd7da2959 100644
--- a/src/plugins/kibana_overview/public/components/_overview.scss
+++ b/src/plugins/kibana_overview/public/components/_overview.scss
@@ -1,14 +1,3 @@
-.kbnOverviewApps__item,
-.kbnOverviewMore__item {
-  // Ensure card heights are stretched equally when wrapped with this element
-  .kbnRedirectCrossAppLinks {
-    align-items: flex-start;
-    display: flex;
-    flex: 1;
-    flex-direction: column;
-  }
-}
-
 .kbnOverviewApps__item {
   .kbnOverviewApps__group--primary & {
     @include euiBreakpoint('m', 'l', 'xl') {
diff --git a/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap b/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap
index fb32d2814c0fe..4c83d40af96bc 100644
--- a/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap
+++ b/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap
@@ -55,7 +55,13 @@ exports[`AddData render 1`] = `
     <EuiFlexItem
       key="home_tutorial_directory"
     >
-      <RedirectAppLinks>
+      <RedirectAppLinks
+        coreStart={
+          Object {
+            "application": undefined,
+          }
+        }
+      >
         <Synopsis
           description="Ingest data from popular apps and services."
           iconType="indexOpen"
@@ -71,7 +77,13 @@ exports[`AddData render 1`] = `
     <EuiFlexItem
       key="ingestManager"
     >
-      <RedirectAppLinks>
+      <RedirectAppLinks
+        coreStart={
+          Object {
+            "application": undefined,
+          }
+        }
+      >
         <Synopsis
           description="Add and manage your fleet of Elastic Agents and integrations."
           iconType="indexManagementApp"
@@ -87,7 +99,13 @@ exports[`AddData render 1`] = `
     <EuiFlexItem
       key="ml_file_data_visualizer"
     >
-      <RedirectAppLinks>
+      <RedirectAppLinks
+        coreStart={
+          Object {
+            "application": undefined,
+          }
+        }
+      >
         <Synopsis
           description="Import your own CSV, NDJSON, or log file"
           iconType="document"
diff --git a/src/plugins/kibana_overview/public/components/add_data/add_data.tsx b/src/plugins/kibana_overview/public/components/add_data/add_data.tsx
index 6720f87c31175..6fb10ccb0f8d5 100644
--- a/src/plugins/kibana_overview/public/components/add_data/add_data.tsx
+++ b/src/plugins/kibana_overview/public/components/add_data/add_data.tsx
@@ -11,7 +11,8 @@ import PropTypes from 'prop-types';
 import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { CoreStart } from '@kbn/core/public';
-import { RedirectAppLinks, useKibana } from '@kbn/kibana-react-plugin/public';
+import { useKibana } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { FeatureCatalogueEntry } from '@kbn/home-plugin/public';
 import { Synopsis } from '../synopsis';
 import { METRIC_TYPE, trackUiMetric } from '../../lib/ui_metric';
@@ -57,13 +58,15 @@ export const AddData: FC<Props> = ({ addBasePath, features }) => {
           </div>
         </EuiFlexItem>
       </EuiFlexGroup>
-
       <EuiSpacer size="m" />
-
       <EuiFlexGroup className="kbnOverviewDataAdd__content">
         {features.map((feature) => (
           <EuiFlexItem key={feature.id}>
-            <RedirectAppLinks application={application}>
+            <RedirectAppLinks
+              coreStart={{
+                application,
+              }}
+            >
               <Synopsis
                 id={feature.id}
                 description={feature.description}
diff --git a/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap b/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap
index 9abb7c9c12147..9670a4f56d152 100644
--- a/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap
+++ b/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap
@@ -35,7 +35,13 @@ exports[`ManageData render 1`] = `
         className="kbnOverviewDataManage__item"
         key="security"
       >
-        <RedirectAppLinks>
+        <RedirectAppLinks
+          coreStart={
+            Object {
+              "application": undefined,
+            }
+          }
+        >
           <Synopsis
             description="Control who has access and what tasks they can perform."
             iconType="securityApp"
@@ -52,7 +58,13 @@ exports[`ManageData render 1`] = `
         className="kbnOverviewDataManage__item"
         key="monitoring"
       >
-        <RedirectAppLinks>
+        <RedirectAppLinks
+          coreStart={
+            Object {
+              "application": undefined,
+            }
+          }
+        >
           <Synopsis
             description="Track the real-time health and performance of your deployment."
             iconType="monitoringApp"
@@ -69,7 +81,13 @@ exports[`ManageData render 1`] = `
         className="kbnOverviewDataManage__item"
         key="snapshot_restore"
       >
-        <RedirectAppLinks>
+        <RedirectAppLinks
+          coreStart={
+            Object {
+              "application": undefined,
+            }
+          }
+        >
           <Synopsis
             description="Save snapshots to a backup repository, and restore to recover index and cluster state."
             iconType="storage"
@@ -86,7 +104,13 @@ exports[`ManageData render 1`] = `
         className="kbnOverviewDataManage__item"
         key="index_lifecycle_management"
       >
-        <RedirectAppLinks>
+        <RedirectAppLinks
+          coreStart={
+            Object {
+              "application": undefined,
+            }
+          }
+        >
           <Synopsis
             description="Define lifecycle policies to automatically perform operations as an index ages."
             iconType="indexSettings"
diff --git a/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx b/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx
index 9d3d6476db9c5..ea8e271437041 100644
--- a/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx
+++ b/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx
@@ -11,7 +11,8 @@ import PropTypes from 'prop-types';
 import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiSpacer, EuiTitle } from '@elastic/eui';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { CoreStart } from '@kbn/core/public';
-import { RedirectAppLinks, useKibana } from '@kbn/kibana-react-plugin/public';
+import { useKibana } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { FeatureCatalogueEntry } from '@kbn/home-plugin/public';
 import { Synopsis } from '../synopsis';
 import { METRIC_TYPE, trackUiMetric } from '../../lib/ui_metric';
@@ -28,7 +29,6 @@ export const ManageData: FC<Props> = ({ addBasePath, features }) => {
   return (
     <>
       {features.length > 1 ? <EuiHorizontalRule margin="xl" aria-hidden="true" /> : null}
-
       {features.length > 0 ? (
         <section
           className="kbnOverviewDataManage"
@@ -49,7 +49,11 @@ export const ManageData: FC<Props> = ({ addBasePath, features }) => {
           <EuiFlexGroup className="kbnOverviewDataManage__content" wrap>
             {features.map((feature) => (
               <EuiFlexItem className="kbnOverviewDataManage__item" key={feature.id}>
-                <RedirectAppLinks application={application}>
+                <RedirectAppLinks
+                  coreStart={{
+                    application,
+                  }}
+                >
                   <Synopsis
                     id={feature.id}
                     description={feature.description}
diff --git a/src/plugins/kibana_react/public/app_links/click_handler.test.ts b/src/plugins/kibana_react/public/app_links/click_handler.test.ts
deleted file mode 100644
index 868e3d91d1218..0000000000000
--- a/src/plugins/kibana_react/public/app_links/click_handler.test.ts
+++ /dev/null
@@ -1,211 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import { MouseEvent } from 'react';
-import { ApplicationStart } from '@kbn/core/public';
-import { createNavigateToUrlClickHandler } from './click_handler';
-
-const createLink = ({
-  href = '/base-path/app/targetApp',
-  target = '',
-}: { href?: string; target?: string } = {}): HTMLAnchorElement => {
-  const el = document.createElement('a');
-  if (href) {
-    el.href = href;
-  }
-  el.target = target;
-  return el;
-};
-
-const createEvent = ({
-  target = createLink(),
-  button = 0,
-  defaultPrevented = false,
-  modifierKey = false,
-}: {
-  target?: HTMLElement;
-  button?: number;
-  defaultPrevented?: boolean;
-  modifierKey?: boolean;
-}): MouseEvent<HTMLElement> => {
-  return {
-    target,
-    button,
-    defaultPrevented,
-    ctrlKey: modifierKey,
-    preventDefault: jest.fn(),
-  } as unknown as MouseEvent<HTMLElement>;
-};
-
-describe('createNavigateToUrlClickHandler', () => {
-  let container: HTMLElement;
-  let navigateToUrl: jest.MockedFunction<ApplicationStart['navigateToUrl']>;
-
-  const createHandler = () =>
-    createNavigateToUrlClickHandler({
-      container,
-      navigateToUrl,
-    });
-
-  beforeEach(() => {
-    container = document.createElement('div');
-    navigateToUrl = jest.fn();
-  });
-
-  it('calls `navigateToUrl` with the link url', () => {
-    const handler = createHandler();
-
-    const event = createEvent({
-      target: createLink({ href: '/base-path/app/targetApp' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledWith('http://localhost/base-path/app/targetApp');
-  });
-
-  it('is triggered if a non-link target has a parent link', () => {
-    const handler = createHandler();
-
-    const link = createLink();
-    const target = document.createElement('span');
-    link.appendChild(target);
-
-    const event = createEvent({ target });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledWith('http://localhost/base-path/app/targetApp');
-  });
-
-  it('is not triggered if a non-link target has no parent link', () => {
-    const handler = createHandler();
-
-    const parent = document.createElement('div');
-    const target = document.createElement('span');
-    parent.appendChild(target);
-
-    const event = createEvent({ target });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-  });
-
-  it('is not triggered when the link has no href', () => {
-    const handler = createHandler();
-
-    const event = createEvent({
-      target: createLink({ href: '' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-  });
-
-  it('is only triggered when the link does not have an external target', () => {
-    const handler = createHandler();
-
-    let event = createEvent({
-      target: createLink({ target: '_blank' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({
-      target: createLink({ target: 'some-target' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({
-      target: createLink({ target: '_self' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledTimes(1);
-
-    event = createEvent({
-      target: createLink({ target: '' }),
-    });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledTimes(2);
-  });
-
-  it('is only triggered from left clicks', () => {
-    const handler = createHandler();
-
-    let event = createEvent({
-      button: 1,
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({
-      button: 12,
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({
-      button: 0,
-    });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledTimes(1);
-  });
-
-  it('is not triggered if the event default is prevented', () => {
-    const handler = createHandler();
-
-    let event = createEvent({
-      defaultPrevented: true,
-    });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({
-      defaultPrevented: false,
-    });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledTimes(1);
-  });
-
-  it('is not triggered if any modifier key is pressed', () => {
-    const handler = createHandler();
-
-    let event = createEvent({ modifierKey: true });
-    handler(event);
-
-    expect(event.preventDefault).not.toHaveBeenCalled();
-    expect(navigateToUrl).not.toHaveBeenCalled();
-
-    event = createEvent({ modifierKey: false });
-    handler(event);
-
-    expect(event.preventDefault).toHaveBeenCalledTimes(1);
-    expect(navigateToUrl).toHaveBeenCalledTimes(1);
-  });
-});
diff --git a/src/plugins/kibana_react/public/app_links/click_handler.ts b/src/plugins/kibana_react/public/app_links/click_handler.ts
deleted file mode 100644
index 05ef24009d612..0000000000000
--- a/src/plugins/kibana_react/public/app_links/click_handler.ts
+++ /dev/null
@@ -1,45 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import React from 'react';
-import { ApplicationStart } from '@kbn/core/public';
-import { getClosestLink, hasActiveModifierKey } from './utils';
-
-interface CreateCrossAppClickHandlerOptions {
-  container: HTMLElement;
-  navigateToUrl: ApplicationStart['navigateToUrl'];
-}
-
-export const createNavigateToUrlClickHandler = ({
-  container,
-  navigateToUrl,
-}: CreateCrossAppClickHandlerOptions): React.MouseEventHandler<HTMLElement> => {
-  return (e) => {
-    if (container == null) {
-      return;
-    }
-    // see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/12239
-    const target = e.target as HTMLElement;
-
-    const link = getClosestLink(target, container);
-    if (!link) {
-      return;
-    }
-
-    if (
-      link.href && // ignore links with empty hrefs
-      (link.target === '' || link.target === '_self') && // ignore links having a target
-      e.button === 0 && // ignore everything but left clicks
-      !e.defaultPrevented && // ignore default prevented events
-      !hasActiveModifierKey(e) // ignore clicks with modifier keys
-    ) {
-      e.preventDefault();
-      navigateToUrl(link.href);
-    }
-  };
-};
diff --git a/src/plugins/kibana_react/public/app_links/index.ts b/src/plugins/kibana_react/public/app_links/index.ts
deleted file mode 100644
index 3bfd7baca0c02..0000000000000
--- a/src/plugins/kibana_react/public/app_links/index.ts
+++ /dev/null
@@ -1,9 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-/** @deprecated Use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app` */
-export { RedirectAppLinks } from './redirect_app_link';
diff --git a/src/plugins/kibana_react/public/app_links/redirect_app_link.test.tsx b/src/plugins/kibana_react/public/app_links/redirect_app_link.test.tsx
deleted file mode 100644
index f4ce0d3ff80d3..0000000000000
--- a/src/plugins/kibana_react/public/app_links/redirect_app_link.test.tsx
+++ /dev/null
@@ -1,232 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import React, { MouseEvent } from 'react';
-import { mount } from 'enzyme';
-import { applicationServiceMock } from '@kbn/core/public/mocks';
-/** @deprecated Use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app` */
-import { RedirectAppLinks } from './redirect_app_link';
-import { BehaviorSubject } from 'rxjs';
-
-/* eslint-disable jsx-a11y/click-events-have-key-events */
-
-describe('RedirectAppLinks', () => {
-  let application: ReturnType<typeof applicationServiceMock.createStartContract>;
-
-  beforeEach(() => {
-    application = applicationServiceMock.createStartContract();
-    application.currentAppId$ = new BehaviorSubject<string>('currentApp');
-  });
-
-  it('intercept click events on children link elements', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <div>
-            <a href="/mocked-anyway">content</a>
-          </div>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('a').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToUrl).toHaveBeenCalledTimes(1);
-    expect(event!.defaultPrevented).toBe(true);
-  });
-
-  it('intercept click events on children inside link elements', async () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <a href="/mocked-anyway">
-            <span>content</span>
-          </a>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('span').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToUrl).toHaveBeenCalledTimes(1);
-    expect(event!.defaultPrevented).toBe(true);
-  });
-
-  it('does not intercept click events when the target is not inside a link', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <span>
-            <a href="/mocked-anyway">content</a>
-          </span>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('span').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(false);
-  });
-
-  it('does not intercept click events when the link is a parent of the container', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <a href="/mocked-anyway">
-          <RedirectAppLinks application={application}>
-            <span>content</span>
-          </RedirectAppLinks>
-        </a>
-      </div>
-    );
-
-    component.find('span').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(false);
-  });
-
-  it('does not intercept click events when the link has an external target', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <a href="/mocked-anyway" target="_blank">
-            content
-          </a>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('a').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(false);
-  });
-
-  it('does not intercept click events when the event is already defaultPrevented', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <a href="/mocked-anyway" target="_blank">
-            <span onClick={(e) => e.preventDefault()}>content</span>
-          </a>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('span').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(true);
-  });
-
-  it('does not intercept click events when the event propagation is stopped', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <a href="/mocked-anyway" target="_blank" onClick={(e) => e.stopPropagation()}>
-            content
-          </a>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('a').simulate('click', { button: 0, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!).toBe(undefined);
-  });
-
-  it('does not intercept click events when the event is not triggered from the left button', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <div>
-            <a href="/mocked-anyway">content</a>
-          </div>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('a').simulate('click', { button: 1, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(false);
-  });
-
-  it('does not intercept click events when the event has a modifier key enabled', () => {
-    let event: MouseEvent;
-
-    const component = mount(
-      <div
-        onClick={(e) => {
-          event = e;
-        }}
-      >
-        <RedirectAppLinks application={application}>
-          <div>
-            <a href="/mocked-anyway">content</a>
-          </div>
-        </RedirectAppLinks>
-      </div>
-    );
-
-    component.find('a').simulate('click', { button: 0, ctrlKey: true, defaultPrevented: false });
-
-    expect(application.navigateToApp).not.toHaveBeenCalled();
-    expect(event!.defaultPrevented).toBe(false);
-  });
-});
diff --git a/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx b/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx
deleted file mode 100644
index 6df1c43dbc5c6..0000000000000
--- a/src/plugins/kibana_react/public/app_links/redirect_app_link.tsx
+++ /dev/null
@@ -1,72 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import React, { FunctionComponent, useRef, useMemo } from 'react';
-import classNames from 'classnames';
-import useObservable from 'react-use/lib/useObservable';
-import { ApplicationStart } from '@kbn/core/public';
-import { createNavigateToUrlClickHandler } from './click_handler';
-
-interface RedirectCrossAppLinksProps extends React.HTMLAttributes<HTMLDivElement> {
-  application: ApplicationStart;
-  className?: string;
-  'data-test-subj'?: string;
-}
-
-/**
- * Utility component that will intercept click events on children anchor (`<a>`) elements to call
- * `application.navigateToUrl` with the link's href. This will trigger SPA friendly navigation
- * when the link points to a valid Kibana app.
- *
- * @example
- * ```tsx
- * <RedirectCrossAppLinks application={application}>
- *   <a href="/base-path/app/another-app/some-path">Go to another-app</a>
- * </RedirectCrossAppLinks>
- * ```
- *
- * @remarks
- * It is recommended to use the component at the highest possible level of the component tree that would
- * require to handle the links. A good practice is to consider it as a context provider and to use it
- * at the root level of an application or of the page that require the feature.
- *
- * @deprecated use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app`
- */
-
-export const RedirectAppLinks: FunctionComponent<RedirectCrossAppLinksProps> = ({
-  application,
-  children,
-  className,
-  ...otherProps
-}) => {
-  const currentAppId = useObservable(application.currentAppId$, undefined);
-  const containerRef = useRef<HTMLDivElement>(null);
-
-  const clickHandler = useMemo(
-    () =>
-      containerRef.current && currentAppId
-        ? createNavigateToUrlClickHandler({
-            container: containerRef.current,
-            navigateToUrl: application.navigateToUrl,
-          })
-        : undefined,
-    [containerRef.current, application, currentAppId]
-  );
-
-  return (
-    // eslint-disable-next-line jsx-a11y/click-events-have-key-events
-    <div
-      ref={containerRef}
-      className={classNames(className, 'kbnRedirectCrossAppLinks')}
-      onClick={clickHandler}
-      {...otherProps}
-    >
-      {children}
-    </div>
-  );
-};
diff --git a/src/plugins/kibana_react/public/app_links/utils.test.ts b/src/plugins/kibana_react/public/app_links/utils.test.ts
deleted file mode 100644
index 2c04038d253a7..0000000000000
--- a/src/plugins/kibana_react/public/app_links/utils.test.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import { getClosestLink } from './utils';
-
-const createBranch = (...tags: string[]): HTMLElement[] => {
-  const elements: HTMLElement[] = [];
-  let parent: HTMLElement | undefined;
-  for (const tag of tags) {
-    const element = document.createElement(tag);
-    elements.push(element);
-    if (parent) {
-      parent.appendChild(element);
-    }
-    parent = element;
-  }
-
-  return elements;
-};
-
-describe('getClosestLink', () => {
-  it(`returns the element itself if it's a link`, () => {
-    const [target] = createBranch('A');
-    expect(getClosestLink(target)).toBe(target);
-  });
-
-  it('returns the closest parent that is a link', () => {
-    const [, , link, , target] = createBranch('A', 'DIV', 'A', 'DIV', 'SPAN');
-    expect(getClosestLink(target)).toBe(link);
-  });
-
-  it('returns undefined if the closest link is further than the container', () => {
-    const [, container, target] = createBranch('A', 'DIV', 'SPAN');
-    expect(getClosestLink(target, container)).toBe(undefined);
-  });
-});
diff --git a/src/plugins/kibana_react/public/app_links/utils.ts b/src/plugins/kibana_react/public/app_links/utils.ts
deleted file mode 100644
index 13188ac1b2b07..0000000000000
--- a/src/plugins/kibana_react/public/app_links/utils.ts
+++ /dev/null
@@ -1,37 +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 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import React from 'react';
-
-/**
- * Returns true if any modifier key is active on the event, false otherwise.
- */
-export const hasActiveModifierKey = (event: React.MouseEvent): boolean => {
-  return event.metaKey || event.altKey || event.ctrlKey || event.shiftKey;
-};
-
-/**
- * Returns the closest anchor (`<a>`) element in the element parents (self included) up to the given container (excluded), or undefined if none is found.
- */
-export const getClosestLink = (
-  element: HTMLElement,
-  container?: HTMLElement
-): HTMLAnchorElement | undefined => {
-  let current = element;
-  while (true) {
-    if (current.tagName.toLowerCase() === 'a') {
-      return current as HTMLAnchorElement;
-    }
-    const parent = current.parentElement;
-    if (!parent || parent === document.body || parent === container) {
-      break;
-    }
-    current = parent;
-  }
-  return undefined;
-};
diff --git a/src/plugins/kibana_react/public/index.ts b/src/plugins/kibana_react/public/index.ts
index e7244459a5c72..f665b5f4ee403 100644
--- a/src/plugins/kibana_react/public/index.ts
+++ b/src/plugins/kibana_react/public/index.ts
@@ -76,9 +76,6 @@ export { Markdown, MarkdownSimple } from './markdown';
 export { toMountPoint } from './util';
 export type { ToMountPointOptions } from './util';
 
-/** @deprecated Use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app` */
-export { RedirectAppLinks } from './app_links';
-
 /** @deprecated Use `KibanaThemeProvider`, `wrapWithTheme` from `@kbn/react-kibana-context-theme`  */
 export { KibanaThemeProvider, wrapWithTheme, type KibanaThemeProviderProps } from './theme';
 
diff --git a/src/plugins/kibana_react/public/overview_page/overview_page_actions/__snapshots__/overview_page_actions.test.tsx.snap b/src/plugins/kibana_react/public/overview_page/overview_page_actions/__snapshots__/overview_page_actions.test.tsx.snap
index 241dbb7b3303e..ef67fc5e0cf33 100644
--- a/src/plugins/kibana_react/public/overview_page/overview_page_actions/__snapshots__/overview_page_actions.test.tsx.snap
+++ b/src/plugins/kibana_react/public/overview_page/overview_page_actions/__snapshots__/overview_page_actions.test.tsx.snap
@@ -3,12 +3,14 @@
 exports[`overviewPageActions all buttons 1`] = `
 Array [
   <mockConstructor
-    application={
+    coreStart={
       Object {
-        "capabilities": Object {
-          "navLinks": Object {
-            "dev_tools": true,
-            "management": true,
+        "application": Object {
+          "capabilities": Object {
+            "navLinks": Object {
+              "dev_tools": true,
+              "management": true,
+            },
           },
         },
       }
@@ -32,12 +34,14 @@ exports[`overviewPageActions no buttons 1`] = `Array []`;
 exports[`overviewPageActions only add data button 1`] = `
 Array [
   <mockConstructor
-    application={
+    coreStart={
       Object {
-        "capabilities": Object {
-          "navLinks": Object {
-            "dev_tools": true,
-            "management": true,
+        "application": Object {
+          "capabilities": Object {
+            "navLinks": Object {
+              "dev_tools": true,
+              "management": true,
+            },
           },
         },
       }
diff --git a/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.test.tsx b/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.test.tsx
index cb5d60fd330fd..1c8b7e3a6f29e 100644
--- a/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.test.tsx
+++ b/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.test.tsx
@@ -9,7 +9,7 @@
 import { overviewPageActions } from './overview_page_actions';
 import { ApplicationStart } from '@kbn/core/public';
 
-jest.mock('../../app_links', () => ({
+jest.mock('@kbn/shared-ux-link-redirect-app', () => ({
   RedirectAppLinks: jest.fn((element: JSX.Element) => element),
 }));
 
diff --git a/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx b/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx
index 9101224f60e13..9654f3ccdd7dd 100644
--- a/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx
+++ b/src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx
@@ -10,7 +10,7 @@ import React from 'react';
 import { EuiButtonEmpty } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import { ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '../../app_links';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 interface Props {
   addDataHref: string;
@@ -35,7 +35,11 @@ export const overviewPageActions = ({
     application.capabilities.navLinks;
 
   const actionAddData = (
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <EuiButtonEmpty
         data-test-subj="homeAddData"
         className="kbnOverviewPageHeader__actionButton"
@@ -52,7 +56,11 @@ export const overviewPageActions = ({
 
   const actionStackManagement =
     managementHref && showManagementLink && isManagementEnabled ? (
-      <RedirectAppLinks application={application}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
         <EuiButtonEmpty
           data-test-subj="homeManage"
           className="kbnOverviewPageHeader__actionButton"
@@ -69,7 +77,11 @@ export const overviewPageActions = ({
 
   const actionDevTools =
     devToolsHref && showDevToolsLink && isDevToolsEnabled ? (
-      <RedirectAppLinks application={application}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
         <EuiButtonEmpty
           data-test-subj="homeDevTools"
           className="kbnOverviewPageHeader__actionButton"
diff --git a/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.test.tsx b/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.test.tsx
index ec48d3fda4c73..97d12ba403ee1 100644
--- a/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.test.tsx
+++ b/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.test.tsx
@@ -10,7 +10,7 @@ import React from 'react';
 import { OverviewPageFooter } from './overview_page_footer';
 import { shallowWithIntl } from '@kbn/test-jest-helpers';
 
-jest.mock('../../app_links', () => ({
+jest.mock('@kbn/shared-ux-link-redirect-app', () => ({
   RedirectAppLinks: jest.fn((element: JSX.Element) => element),
 }));
 
diff --git a/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx b/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx
index 30023b47a80db..6e0a0160e8c1a 100644
--- a/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx
+++ b/src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx
@@ -11,7 +11,7 @@ import { EuiPageTemplate, EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@ela
 import { FormattedMessage } from '@kbn/i18n-react';
 import { i18n } from '@kbn/i18n';
 import { CoreStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '../../app_links';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { useKibana } from '../../context';
 import { useUiSetting$ } from '../../ui_settings';
 
@@ -43,7 +43,11 @@ export const OverviewPageFooter: FC<Props> = ({
   if (!show && !save) return <></>;
 
   const defaultRouteButton = defaultRoute.includes(path) ? (
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <EuiButtonEmpty
         className="kbnOverviewPageFooter__button"
         flush="both"
diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap
index 0e2ef6aaa3c9e..9782a4cf1da65 100644
--- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap
+++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap
@@ -2,11 +2,13 @@
 
 exports[`ElasticAgentCard props button 1`] = `
 <RedirectAppLinks
-  application={
+  coreStart={
     Object {
-      "capabilities": Object {
-        "navLinks": Object {
-          "integrations": true,
+      "application": Object {
+        "capabilities": Object {
+          "navLinks": Object {
+            "integrations": true,
+          },
         },
       },
     }
@@ -51,11 +53,13 @@ exports[`ElasticAgentCard props button 1`] = `
 
 exports[`ElasticAgentCard props category 1`] = `
 <RedirectAppLinks
-  application={
+  coreStart={
     Object {
-      "capabilities": Object {
-        "navLinks": Object {
-          "integrations": true,
+      "application": Object {
+        "capabilities": Object {
+          "navLinks": Object {
+            "integrations": true,
+          },
         },
       },
     }
@@ -100,11 +104,13 @@ exports[`ElasticAgentCard props category 1`] = `
 
 exports[`ElasticAgentCard props href 1`] = `
 <RedirectAppLinks
-  application={
+  coreStart={
     Object {
-      "capabilities": Object {
-        "navLinks": Object {
-          "integrations": true,
+      "application": Object {
+        "capabilities": Object {
+          "navLinks": Object {
+            "integrations": true,
+          },
         },
       },
     }
@@ -149,11 +155,13 @@ exports[`ElasticAgentCard props href 1`] = `
 
 exports[`ElasticAgentCard props recommended 1`] = `
 <RedirectAppLinks
-  application={
+  coreStart={
     Object {
-      "capabilities": Object {
-        "navLinks": Object {
-          "integrations": true,
+      "application": Object {
+        "capabilities": Object {
+          "navLinks": Object {
+            "integrations": true,
+          },
         },
       },
     }
@@ -203,11 +211,13 @@ exports[`ElasticAgentCard props recommended 1`] = `
 
 exports[`ElasticAgentCard renders 1`] = `
 <RedirectAppLinks
-  application={
+  coreStart={
     Object {
-      "capabilities": Object {
-        "navLinks": Object {
-          "integrations": true,
+      "application": Object {
+        "capabilities": Object {
+          "navLinks": Object {
+            "integrations": true,
+          },
         },
       },
     }
diff --git a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx
index 10c387f41983c..46262291104b8 100644
--- a/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx
+++ b/src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/elastic_agent_card.tsx
@@ -9,10 +9,10 @@
 import React, { FunctionComponent } from 'react';
 import { i18n } from '@kbn/i18n';
 import { CoreStart } from '@kbn/core/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { EuiButton, EuiCard, EuiTextColor, EuiScreenReaderOnly, EuiImage } from '@elastic/eui';
 import { useKibana } from '../../../context';
 import { NoDataPageActions, NO_DATA_RECOMMENDED } from '../no_data_page';
-import { RedirectAppLinks } from '../../../app_links';
 
 export type ElasticAgentCardProps = NoDataPageActions & {
   solution: string;
@@ -91,7 +91,11 @@ export const ElasticAgentCard: FunctionComponent<ElasticAgentCardProps> = ({
     );
 
   return (
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <EuiCard
         paddingSize="l"
         image={image}
diff --git a/src/plugins/kibana_react/tsconfig.json b/src/plugins/kibana_react/tsconfig.json
index cf3a74547e291..082ecfa532865 100644
--- a/src/plugins/kibana_react/tsconfig.json
+++ b/src/plugins/kibana_react/tsconfig.json
@@ -25,6 +25,7 @@
     "@kbn/react-kibana-context-styled",
     "@kbn/code-editor",
     "@kbn/core-analytics-browser",
+    "@kbn/shared-ux-link-redirect-app",
   ],
   "exclude": [
     "target/**/*",
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
index 30b6ca14bef6a..1a2fdf031a9d3 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
@@ -102,29 +102,11 @@ exports[`SavedObjectsTable should render normally 1`] = `
     size="l"
   />
   <RedirectAppLinks
-    application={
+    coreStart={
       Object {
-        "applications$": BehaviorSubject {
-          "_value": Map {},
-          "closed": false,
-          "currentObservers": null,
-          "hasError": false,
-          "isStopped": false,
-          "observers": Array [],
-          "thrownError": null,
-        },
-        "capabilities": Object {
-          "catalogue": Object {},
-          "management": Object {},
-          "navLinks": Object {},
-          "savedObjectsManagement": Object {
-            "delete": false,
-            "edit": false,
-            "read": true,
-          },
-        },
-        "currentAppId$": Observable {
-          "source": Subject {
+        "application": Object {
+          "applications$": BehaviorSubject {
+            "_value": Map {},
             "closed": false,
             "currentObservers": null,
             "hasError": false,
@@ -132,20 +114,40 @@ exports[`SavedObjectsTable should render normally 1`] = `
             "observers": Array [],
             "thrownError": null,
           },
-        },
-        "currentLocation$": Observable {
-          "source": Subject {
-            "closed": false,
-            "currentObservers": null,
-            "hasError": false,
-            "isStopped": false,
-            "observers": Array [],
-            "thrownError": null,
+          "capabilities": Object {
+            "catalogue": Object {},
+            "management": Object {},
+            "navLinks": Object {},
+            "savedObjectsManagement": Object {
+              "delete": false,
+              "edit": false,
+              "read": true,
+            },
+          },
+          "currentAppId$": Observable {
+            "source": Subject {
+              "closed": false,
+              "currentObservers": null,
+              "hasError": false,
+              "isStopped": false,
+              "observers": Array [],
+              "thrownError": null,
+            },
+          },
+          "currentLocation$": Observable {
+            "source": Subject {
+              "closed": false,
+              "currentObservers": null,
+              "hasError": false,
+              "isStopped": false,
+              "observers": Array [],
+              "thrownError": null,
+            },
           },
+          "getUrlForApp": [MockFunction],
+          "navigateToApp": [MockFunction],
+          "navigateToUrl": [MockFunction],
         },
-        "getUrlForApp": [MockFunction],
-        "navigateToApp": [MockFunction],
-        "navigateToUrl": [MockFunction],
       }
     }
   >
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
index 48d428a9f087f..e84d957f39239 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
@@ -13,7 +13,7 @@ import { saveAs } from '@elastic/filesaver';
 import { EuiSpacer, Query, CriteriaWithPagination } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import { HttpStart, OverlayStart, NotificationsStart, ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { SavedObjectsTaggingApi } from '@kbn/saved-objects-tagging-oss-plugin/public';
 import { DataViewsContract } from '@kbn/data-views-plugin/public';
 import { DataPublicPluginStart } from '@kbn/data-plugin/public';
@@ -706,7 +706,11 @@ export class SavedObjectsTable extends Component<SavedObjectsTableProps, SavedOb
           filteredCount={filteredItemCount}
         />
         <EuiSpacer size="l" />
-        <RedirectAppLinks application={applications}>
+        <RedirectAppLinks
+          coreStart={{
+            application: applications,
+          }}
+        >
           <Table
             basePath={http.basePath}
             taggingApi={taggingApi}
diff --git a/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx b/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx
index 8a4540a666a4e..44bd3d5a1d447 100644
--- a/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx
@@ -11,7 +11,7 @@ import { useParams, useLocation } from 'react-router-dom';
 import { parse } from 'query-string';
 import { i18n } from '@kbn/i18n';
 import { CoreStart, ChromeBreadcrumb, ScopedHistory } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { SavedObjectEdition } from './object_view';
 import './saved_objects_edition_page.scss';
 
@@ -49,25 +49,28 @@ const SavedObjectsEditionPage = ({
   }, [setBreadcrumbs, type]);
 
   return (
-    <RedirectAppLinks
-      application={coreStart.application}
-      className="savedObjectsManagementEditionPage"
-    >
-      <SavedObjectEdition
-        id={id}
-        savedObjectType={type}
-        http={coreStart.http}
-        overlays={coreStart.overlays}
-        notifications={coreStart.notifications}
-        capabilities={capabilities}
-        notFoundType={query.notFound as string}
-        uiSettings={coreStart.uiSettings}
-        history={history}
-        docLinks={docLinks}
-        settings={coreStart.settings}
-        theme={coreStart.theme}
-      />
-    </RedirectAppLinks>
+    <div className="savedObjectsManagementEditionPage">
+      <RedirectAppLinks
+        coreStart={{
+          application: coreStart.application,
+        }}
+      >
+        <SavedObjectEdition
+          id={id}
+          savedObjectType={type}
+          http={coreStart.http}
+          overlays={coreStart.overlays}
+          notifications={coreStart.notifications}
+          capabilities={capabilities}
+          notFoundType={query.notFound as string}
+          uiSettings={coreStart.uiSettings}
+          history={history}
+          docLinks={docLinks}
+          settings={coreStart.settings}
+          theme={coreStart.theme}
+        />
+      </RedirectAppLinks>
+    </div>
   );
 };
 
diff --git a/src/plugins/saved_objects_management/tsconfig.json b/src/plugins/saved_objects_management/tsconfig.json
index 72eb9c29b30c8..f2c7bea0c33b4 100644
--- a/src/plugins/saved_objects_management/tsconfig.json
+++ b/src/plugins/saved_objects_management/tsconfig.json
@@ -29,6 +29,7 @@
     "@kbn/core-ui-settings-browser-mocks",
     "@kbn/core-ui-settings-browser",
     "@kbn/core-saved-objects-api-server",
+    "@kbn/shared-ux-link-redirect-app",
   ],
   "exclude": [
     "target/**/*",
diff --git a/test/functional/apps/kibana_overview/_page_header.ts b/test/functional/apps/kibana_overview/_page_header.ts
index 362b3a97d5ffc..346aa2f82f2c3 100644
--- a/test/functional/apps/kibana_overview/_page_header.ts
+++ b/test/functional/apps/kibana_overview/_page_header.ts
@@ -34,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
 
     it('click on integrations leads to integrations', async () => {
       const header = await find.byCssSelector('.euiPageHeaderContent');
-      const items = await header.findAllByCssSelector('.kbnRedirectCrossAppLinks');
+      const items = await header.findAllByTestSubject('kbnRedirectAppLink');
       expect(items!.length).to.be(3);
 
       const integrations = await items!.at(2);
@@ -47,7 +47,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       await PageObjects.header.waitUntilLoadingHasFinished();
 
       const header = await find.byCssSelector('.euiPageHeaderContent');
-      const items = await header.findAllByCssSelector('.kbnRedirectCrossAppLinks');
+      const items = await header.findAllByTestSubject('kbnRedirectAppLink');
 
       const management = await items!.at(1);
       await management!.click();
@@ -59,7 +59,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       await PageObjects.header.waitUntilLoadingHasFinished();
 
       const header = await find.byCssSelector('.euiPageHeaderContent');
-      const items = await header.findAllByCssSelector('.kbnRedirectCrossAppLinks');
+      const items = await header.findAllByTestSubject('kbnRedirectAppLink');
 
       const devTools = await items!.at(0);
       await devTools!.click();
diff --git a/test/plugin_functional/plugins/app_link_test/kibana.jsonc b/test/plugin_functional/plugins/app_link_test/kibana.jsonc
index 26aaff93331d1..ba943b1c6c1ae 100644
--- a/test/plugin_functional/plugins/app_link_test/kibana.jsonc
+++ b/test/plugin_functional/plugins/app_link_test/kibana.jsonc
@@ -5,9 +5,6 @@
   "plugin": {
     "id": "appLinkTest",
     "server": false,
-    "browser": true,
-    "requiredBundles": [
-      "kibanaReact"
-    ]
+    "browser": true
   }
 }
diff --git a/test/plugin_functional/plugins/app_link_test/public/app.tsx b/test/plugin_functional/plugins/app_link_test/public/app.tsx
index 24b851f64aa5f..40f00c4973e7e 100644
--- a/test/plugin_functional/plugins/app_link_test/public/app.tsx
+++ b/test/plugin_functional/plugins/app_link_test/public/app.tsx
@@ -9,7 +9,7 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
 import { AppMountParameters, IBasePath, ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 const FooApp = ({
   appId,
@@ -23,7 +23,11 @@ const FooApp = ({
   application: ApplicationStart;
 }) => (
   <div data-test-subj={`app-${appId}`}>
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <h1>{appId}</h1>
       <div>
         <a data-test-subj="applink-basic-test" href={basePath.prepend(`/app/${targetAppId}`)}>
diff --git a/test/plugin_functional/plugins/app_link_test/tsconfig.json b/test/plugin_functional/plugins/app_link_test/tsconfig.json
index b44abdbe6224d..1568b5a9e8dea 100644
--- a/test/plugin_functional/plugins/app_link_test/tsconfig.json
+++ b/test/plugin_functional/plugins/app_link_test/tsconfig.json
@@ -13,7 +13,7 @@
     "target/**/*",
   ],
   "kbn_references": [
-    "@kbn/kibana-react-plugin",
     "@kbn/core",
+    "@kbn/shared-ux-link-redirect-app",
   ]
 }
diff --git a/test/plugin_functional/plugins/core_history_block/kibana.jsonc b/test/plugin_functional/plugins/core_history_block/kibana.jsonc
index f64a37a2f6456..93e4f8291c962 100644
--- a/test/plugin_functional/plugins/core_history_block/kibana.jsonc
+++ b/test/plugin_functional/plugins/core_history_block/kibana.jsonc
@@ -5,9 +5,6 @@
   "plugin": {
     "id": "coreHistoryBlock",
     "server": false,
-    "browser": true,
-    "requiredBundles": [
-      "kibanaReact"
-    ]
+    "browser": true
   }
 }
diff --git a/test/plugin_functional/plugins/core_history_block/public/app.tsx b/test/plugin_functional/plugins/core_history_block/public/app.tsx
index 1e5b87fc81885..563bbad651756 100644
--- a/test/plugin_functional/plugins/core_history_block/public/app.tsx
+++ b/test/plugin_functional/plugins/core_history_block/public/app.tsx
@@ -11,7 +11,7 @@ import ReactDOM from 'react-dom';
 import { Prompt } from 'react-router-dom';
 import { Router, Routes, Route } from '@kbn/shared-ux-router';
 import type { AppMountParameters, IBasePath, ApplicationStart } from '@kbn/core/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 const HomePage = ({
   basePath,
@@ -22,7 +22,11 @@ const HomePage = ({
 }) => (
   <div data-test-subj="page-home">
     <Prompt message="Unsaved changes, are you sure you wanna leave?" />
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <h1>HOME PAGE</h1>
       <br /> <br />
       <a data-test-subj="applink-intra-test" href={basePath.prepend(`/app/core_history_block/foo`)}>
@@ -44,7 +48,11 @@ const FooPage = ({
   application: ApplicationStart;
 }) => (
   <div data-test-subj="page-home">
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <h1>FOO PAGE</h1>
       <br /> <br />
       <a data-test-subj="applink-intra-test" href={basePath.prepend(`/app/core_history_block`)}>
diff --git a/test/plugin_functional/plugins/core_history_block/tsconfig.json b/test/plugin_functional/plugins/core_history_block/tsconfig.json
index d92475c6c4197..879d234e69a71 100644
--- a/test/plugin_functional/plugins/core_history_block/tsconfig.json
+++ b/test/plugin_functional/plugins/core_history_block/tsconfig.json
@@ -9,7 +9,7 @@
   ],
   "kbn_references": [
     "@kbn/core",
-    "@kbn/kibana-react-plugin",
-    "@kbn/shared-ux-router"
+    "@kbn/shared-ux-router",
+    "@kbn/shared-ux-link-redirect-app"
   ]
 }
diff --git a/x-pack/examples/exploratory_view_example/public/mount.tsx b/x-pack/examples/exploratory_view_example/public/mount.tsx
index f763621e5ef2f..dd7194e1159c6 100644
--- a/x-pack/examples/exploratory_view_example/public/mount.tsx
+++ b/x-pack/examples/exploratory_view_example/public/mount.tsx
@@ -8,7 +8,8 @@
 import * as React from 'react';
 import { render, unmountComponentAtNode } from 'react-dom';
 import { CoreSetup, AppMountParameters, APP_WRAPPER_CLASS } from '@kbn/core/public';
-import { KibanaContextProvider, RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { StartDependencies } from './plugin';
 export const mount =
   (coreSetup: CoreSetup<StartDependencies>) =>
@@ -28,9 +29,15 @@ export const mount =
     const reactElement = (
       <KibanaContextProvider services={{ ...coreSetup, ...core, ...plugins }}>
         <i18nCore.Context>
-          <RedirectAppLinks application={core.application} className={APP_WRAPPER_CLASS}>
-            <App {...deps} defaultIndexPattern={defaultIndexPattern} />
-          </RedirectAppLinks>
+          <div className={APP_WRAPPER_CLASS}>
+            <RedirectAppLinks
+              coreStart={{
+                application: core.application,
+              }}
+            >
+              <App {...deps} defaultIndexPattern={defaultIndexPattern} />
+            </RedirectAppLinks>
+          </div>
         </i18nCore.Context>
       </KibanaContextProvider>
     );
diff --git a/x-pack/examples/exploratory_view_example/tsconfig.json b/x-pack/examples/exploratory_view_example/tsconfig.json
index 4da08c412d5a4..aef84f87f9182 100644
--- a/x-pack/examples/exploratory_view_example/tsconfig.json
+++ b/x-pack/examples/exploratory_view_example/tsconfig.json
@@ -21,5 +21,6 @@
     "@kbn/data-views-plugin",
     "@kbn/kibana-react-plugin",
     "@kbn/exploratory-view-plugin",
+    "@kbn/shared-ux-link-redirect-app",
   ]
 }
diff --git a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
index 2af4d21028b80..e528d1625681c 100644
--- a/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
+++ b/x-pack/plugins/apm/public/components/routing/app_root/index.tsx
@@ -8,9 +8,9 @@
 import { APP_WRAPPER_CLASS } from '@kbn/core/public';
 import {
   KibanaContextProvider,
-  RedirectAppLinks,
   useUiSetting$,
 } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { Storage } from '@kbn/kibana-utils-plugin/public';
 import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
 import {
@@ -60,63 +60,68 @@ export function ApmAppRoot({
   const i18nCore = core.i18n;
 
   return (
-    <RedirectAppLinks
-      application={core.application}
+    <div
       className={APP_WRAPPER_CLASS}
       data-test-subj="apmMainContainer"
       role="main"
     >
-      <ApmPluginContext.Provider value={apmPluginContextValue}>
-        <KibanaContextProvider
-          services={{ ...core, ...pluginsStart, storage, ...apmServices }}
-        >
-          <i18nCore.Context>
-            <ObservabilityAIAssistantProvider
-              value={apmPluginContextValue.observabilityAIAssistant}
-            >
-              <TimeRangeIdContextProvider>
-                <RouterProvider history={history} router={apmRouter as any}>
-                  <ApmErrorBoundary>
-                    <RedirectDependenciesToDependenciesInventory>
-                      <RedirectWithDefaultEnvironment>
-                        <RedirectWithDefaultDateRange>
-                          <RedirectWithOffset>
-                            <TrackPageview>
-                              <UpdateExecutionContextOnRouteChange>
-                                <BreadcrumbsContextProvider>
-                                  <UrlParamsProvider>
-                                    <LicenseProvider>
-                                      <AnomalyDetectionJobsContextProvider>
-                                        <InspectorContextProvider>
-                                          <ApmThemeProvider>
-                                            <MountApmHeaderActionMenu />
+      <RedirectAppLinks
+        coreStart={{
+          application: core.application,
+        }}
+      >
+        <ApmPluginContext.Provider value={apmPluginContextValue}>
+          <KibanaContextProvider
+            services={{ ...core, ...pluginsStart, storage, ...apmServices }}
+          >
+            <i18nCore.Context>
+              <ObservabilityAIAssistantProvider
+                value={apmPluginContextValue.observabilityAIAssistant}
+              >
+                <TimeRangeIdContextProvider>
+                  <RouterProvider history={history} router={apmRouter as any}>
+                    <ApmErrorBoundary>
+                      <RedirectDependenciesToDependenciesInventory>
+                        <RedirectWithDefaultEnvironment>
+                          <RedirectWithDefaultDateRange>
+                            <RedirectWithOffset>
+                              <TrackPageview>
+                                <UpdateExecutionContextOnRouteChange>
+                                  <BreadcrumbsContextProvider>
+                                    <UrlParamsProvider>
+                                      <LicenseProvider>
+                                        <AnomalyDetectionJobsContextProvider>
+                                          <InspectorContextProvider>
+                                            <ApmThemeProvider>
+                                              <MountApmHeaderActionMenu />
 
-                                            <Route
-                                              component={
-                                                ScrollToTopOnPathChange
-                                              }
-                                            />
-                                            <RouteRenderer />
-                                          </ApmThemeProvider>
-                                        </InspectorContextProvider>
-                                      </AnomalyDetectionJobsContextProvider>
-                                    </LicenseProvider>
-                                  </UrlParamsProvider>
-                                </BreadcrumbsContextProvider>
-                              </UpdateExecutionContextOnRouteChange>
-                            </TrackPageview>
-                          </RedirectWithOffset>
-                        </RedirectWithDefaultDateRange>
-                      </RedirectWithDefaultEnvironment>
-                    </RedirectDependenciesToDependenciesInventory>
-                  </ApmErrorBoundary>
-                </RouterProvider>
-              </TimeRangeIdContextProvider>
-            </ObservabilityAIAssistantProvider>
-          </i18nCore.Context>
-        </KibanaContextProvider>
-      </ApmPluginContext.Provider>
-    </RedirectAppLinks>
+                                              <Route
+                                                component={
+                                                  ScrollToTopOnPathChange
+                                                }
+                                              />
+                                              <RouteRenderer />
+                                            </ApmThemeProvider>
+                                          </InspectorContextProvider>
+                                        </AnomalyDetectionJobsContextProvider>
+                                      </LicenseProvider>
+                                    </UrlParamsProvider>
+                                  </BreadcrumbsContextProvider>
+                                </UpdateExecutionContextOnRouteChange>
+                              </TrackPageview>
+                            </RedirectWithOffset>
+                          </RedirectWithDefaultDateRange>
+                        </RedirectWithDefaultEnvironment>
+                      </RedirectDependenciesToDependenciesInventory>
+                    </ApmErrorBoundary>
+                  </RouterProvider>
+                </TimeRangeIdContextProvider>
+              </ObservabilityAIAssistantProvider>
+            </i18nCore.Context>
+          </KibanaContextProvider>
+        </ApmPluginContext.Provider>
+      </RedirectAppLinks>
+    </div>
   );
 }
 
diff --git a/x-pack/plugins/apm/tsconfig.json b/x-pack/plugins/apm/tsconfig.json
index 47aab0ba345a3..0c0e2780950ea 100644
--- a/x-pack/plugins/apm/tsconfig.json
+++ b/x-pack/plugins/apm/tsconfig.json
@@ -102,7 +102,8 @@
     "@kbn/analytics-client",
     "@kbn/monaco",
     "@kbn/shared-svg",
-    "@kbn/deeplinks-observability"
+    "@kbn/deeplinks-observability",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": ["target/**/*"]
 }
diff --git a/x-pack/plugins/exploratory_view/public/application/index.tsx b/x-pack/plugins/exploratory_view/public/application/index.tsx
index e16565b3a8f36..a534048540b2d 100644
--- a/x-pack/plugins/exploratory_view/public/application/index.tsx
+++ b/x-pack/plugins/exploratory_view/public/application/index.tsx
@@ -12,11 +12,8 @@ import { i18n } from '@kbn/i18n';
 import { Router, Routes, Route } from '@kbn/shared-ux-router';
 import { AppMountParameters, APP_WRAPPER_CLASS, CoreStart } from '@kbn/core/public';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
-import {
-  KibanaContextProvider,
-  KibanaThemeProvider,
-  RedirectAppLinks,
-} from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { Storage } from '@kbn/kibana-utils-plugin/public';
 import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
 import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
@@ -94,13 +91,18 @@ export const renderApp = ({
                 <Router history={history}>
                   <EuiThemeProvider darkMode={isDarkMode}>
                     <i18nCore.Context>
-                      <RedirectAppLinks
-                        application={core.application}
+                      <div
                         className={APP_WRAPPER_CLASS}
                         data-test-subj="exploratoryViewMainContainer"
                       >
-                        <App />
-                      </RedirectAppLinks>
+                        <RedirectAppLinks
+                          coreStart={{
+                            application: core.application,
+                          }}
+                        >
+                          <App />
+                        </RedirectAppLinks>
+                      </div>
                     </i18nCore.Context>
                   </EuiThemeProvider>
                 </Router>
diff --git a/x-pack/plugins/exploratory_view/tsconfig.json b/x-pack/plugins/exploratory_view/tsconfig.json
index 4f1f44f484505..c18721855bfa1 100644
--- a/x-pack/plugins/exploratory_view/tsconfig.json
+++ b/x-pack/plugins/exploratory_view/tsconfig.json
@@ -39,7 +39,8 @@
     "@kbn/core-application-browser",
     "@kbn/observability-shared-plugin",
     "@kbn/core-ui-settings-browser-mocks",
-    "@kbn/observability-ai-assistant-plugin"
+    "@kbn/observability-ai-assistant-plugin",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": ["target/**/*"]
 }
diff --git a/x-pack/plugins/fleet/public/applications/fleet/app.tsx b/x-pack/plugins/fleet/public/applications/fleet/app.tsx
index e7a513e113c4f..e425b6e2b6fde 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/app.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/app.tsx
@@ -23,7 +23,8 @@ import type { TopNavMenuData } from '@kbn/navigation-plugin/public';
 
 import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
 
-import { KibanaContextProvider, RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 
 import type { FleetConfigType, FleetStartServices } from '../../plugin';
@@ -259,7 +260,11 @@ export const FleetAppContext: React.FC<{
     const isDarkMode = darkModeObservable && darkModeObservable.darkMode;
 
     return (
-      <RedirectAppLinks application={startServices.application}>
+      <RedirectAppLinks
+        coreStart={{
+          application: startServices.application,
+        }}
+      >
         <startServices.i18n.Context>
           <KibanaContextProvider services={{ ...startServices, theme: { theme$ } }}>
             <EuiErrorBoundary>
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.test.tsx
index af044c793f28a..6de1a3caaa2c1 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.test.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.test.tsx
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import React from 'react';
+import React, { type ReactNode } from 'react';
 import { render } from '@testing-library/react';
 
 import { useStartServices } from '../../../../../hooks';
@@ -26,9 +26,9 @@ jest.mock('@kbn/logs-shared-plugin/public', () => {
   };
 });
 
-jest.mock('@kbn/kibana-react-plugin/public', () => {
+jest.mock('@kbn/shared-ux-link-redirect-app', () => {
   return {
-    RedirectAppLinks: ({ children }: { children: any }) => <div>{children}</div>,
+    RedirectAppLinks: ({ children }: { children: ReactNode }) => <div>{children}</div>,
   };
 });
 
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx
index e7eaac4520411..8efef6592f870 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx
@@ -29,7 +29,7 @@ import semverGte from 'semver/functions/gte';
 import semverCoerce from 'semver/functions/coerce';
 
 import { createStateContainerReactHelpers } from '@kbn/kibana-utils-plugin/public';
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import type { TimeRange } from '@kbn/es-query';
 import { LogStream, type LogStreamProps } from '@kbn/logs-shared-plugin/public';
 
@@ -352,7 +352,11 @@ export const AgentLogsUI: React.FunctionComponent<AgentLogsProps> = memo(
               />
             </DatePickerFlexItem>
             <EuiFlexItem grow={false}>
-              <RedirectAppLinks application={application}>
+              <RedirectAppLinks
+                coreStart={{
+                  application,
+                }}
+              >
                 {isLogsUIAvailable ? (
                   <EuiButtonEmpty
                     href={viewInLogsUrl}
diff --git a/x-pack/plugins/fleet/public/applications/integrations/app.tsx b/x-pack/plugins/fleet/public/applications/integrations/app.tsx
index ef8f099b903bb..5fba3d9886070 100644
--- a/x-pack/plugins/fleet/public/applications/integrations/app.tsx
+++ b/x-pack/plugins/fleet/public/applications/integrations/app.tsx
@@ -15,7 +15,8 @@ import useObservable from 'react-use/lib/useObservable';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
 
-import { KibanaContextProvider, RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 
 import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
@@ -80,7 +81,11 @@ export const IntegrationsAppContext: React.FC<{
     const CloudContext = startServices.cloud?.CloudContextProvider || EmptyContext;
 
     return (
-      <RedirectAppLinks application={startServices.application}>
+      <RedirectAppLinks
+        coreStart={{
+          application: startServices.application,
+        }}
+      >
         <startServices.i18n.Context>
           <KibanaContextProvider services={{ ...startServices }}>
             <EuiErrorBoundary>
diff --git a/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx b/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx
index d3448f852bf76..4c28b4cb7d2ee 100644
--- a/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx
+++ b/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx
@@ -19,7 +19,7 @@ import {
   EuiHorizontalRule,
 } from '@elastic/eui';
 
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 import { AssetTitleMap } from '../applications/integrations/sections/epm/constants';
 import { useStartServices } from '../hooks';
@@ -68,7 +68,11 @@ export const CustomAssetsAccordion: FunctionComponent<CustomAssetsAccordionProps
               <EuiSplitPanel.Inner grow={false} key={index}>
                 <EuiText size="m">
                   <p>
-                    <RedirectAppLinks application={application}>
+                    <RedirectAppLinks
+                      coreStart={{
+                        application,
+                      }}
+                    >
                       <EuiLink href={view.url}>{view.name}</EuiLink>
                     </RedirectAppLinks>
                   </p>
diff --git a/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx b/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx
index 772a0fa905873..b92154626d738 100644
--- a/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx
+++ b/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx
@@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
 import { EuiButtonEmpty } from '@elastic/eui';
 import type { TutorialDirectoryHeaderLinkComponent } from '@kbn/home-plugin/public';
 
-import { RedirectAppLinks } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 
 import { useLink, useStartServices } from '../../hooks';
 
@@ -23,7 +23,11 @@ const TutorialDirectoryHeaderLink: TutorialDirectoryHeaderLinkComponent = memo((
   });
 
   return hasIntegrationsPermissions && noticeState.settingsDataLoaded ? (
-    <RedirectAppLinks application={application}>
+    <RedirectAppLinks
+      coreStart={{
+        application,
+      }}
+    >
       <EuiButtonEmpty size="s" iconType="link" flush="right" href={getHref('integrations')}>
         <FormattedMessage
           id="xpack.fleet.homeIntegration.tutorialDirectory.fleetAppButtonText"
diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx
index c604679c4c7d8..6f8ddf148fec9 100644
--- a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx
+++ b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx
@@ -42,24 +42,30 @@ export const renderApp = (
 ): UnmountCallback => {
   const { getUrlForApp } = application;
   render(
-    <RedirectAppLinks application={application} className={APP_WRAPPER_CLASS}>
-      <I18nContext>
-        <KibanaThemeProvider theme$={theme$}>
-          <KibanaContextProvider
-            services={{
-              cloud,
-              breadcrumbService,
-              license,
-              getUrlForApp,
-              docLinks,
-              executionContext,
-            }}
-          >
-            <App history={history} />
-          </KibanaContextProvider>
-        </KibanaThemeProvider>
-      </I18nContext>
-    </RedirectAppLinks>,
+    <div className={APP_WRAPPER_CLASS}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
+        <I18nContext>
+          <KibanaThemeProvider theme$={theme$}>
+            <KibanaContextProvider
+              services={{
+                cloud,
+                breadcrumbService,
+                license,
+                getUrlForApp,
+                docLinks,
+                executionContext,
+              }}
+            >
+              <App history={history} />
+            </KibanaContextProvider>
+          </KibanaThemeProvider>
+        </I18nContext>
+      </RedirectAppLinks>
+    </div>,
     element
   );
 
diff --git a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts
index 30481afc2c24c..402736cbd13a5 100644
--- a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts
+++ b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts
@@ -47,10 +47,11 @@ export { attemptToURIDecode } from '@kbn/es-ui-shared-plugin/public';
 export {
   KibanaContextProvider,
   KibanaThemeProvider,
-  RedirectAppLinks,
   useExecutionContext,
 } from '@kbn/kibana-react-plugin/public';
 
+export { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
+
 export { APP_WRAPPER_CLASS } from '@kbn/core/public';
 
 export const useKibana = () => _useKibana<AppServicesContext>();
diff --git a/x-pack/plugins/index_lifecycle_management/tsconfig.json b/x-pack/plugins/index_lifecycle_management/tsconfig.json
index e437c207ef5f7..e69bfeb2cc92d 100644
--- a/x-pack/plugins/index_lifecycle_management/tsconfig.json
+++ b/x-pack/plugins/index_lifecycle_management/tsconfig.json
@@ -35,6 +35,7 @@
     "@kbn/core-http-browser",
     "@kbn/config-schema",
     "@kbn/shared-ux-router",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_settings_content.tsx b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_settings_content.tsx
index 035e647d19b11..d00b8c18617a6 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_settings_content.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_settings_content.tsx
@@ -256,7 +256,6 @@ export const DetailsPageSettingsContent: FunctionComponent<Props> = ({
           </EuiLink>
         </EuiPanel>
       </EuiFlexItem>
-
       <EuiFlexItem
         grow={3}
         css={css`
diff --git a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx
index 8a0139f0d7782..0ea71f4220858 100644
--- a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx
+++ b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx
@@ -22,11 +22,8 @@ import {
 import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
 import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
 import type { ManagementAppMountParams } from '@kbn/management-plugin/public';
-import {
-  KibanaContextProvider,
-  KibanaThemeProvider,
-  RedirectAppLinks,
-} from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import type { SharePluginStart } from '@kbn/share-plugin/public';
 import type { SpacesContextProps, SpacesPluginStart } from '@kbn/spaces-plugin/public';
 import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
@@ -124,7 +121,11 @@ export const JobsListPage: FC<Props> = ({
   }
 
   return (
-    <RedirectAppLinks application={coreStart.application}>
+    <RedirectAppLinks
+      coreStart={{
+        application: coreStart.application,
+      }}
+    >
       <I18nContext>
         <KibanaThemeProvider theme$={theme$}>
           <KibanaContextProvider
diff --git a/x-pack/plugins/observability_onboarding/public/application/app.tsx b/x-pack/plugins/observability_onboarding/public/application/app.tsx
index fc791436e3887..6142f7acd45cb 100644
--- a/x-pack/plugins/observability_onboarding/public/application/app.tsx
+++ b/x-pack/plugins/observability_onboarding/public/application/app.tsx
@@ -16,9 +16,9 @@ import { i18n } from '@kbn/i18n';
 import {
   KibanaContextProvider,
   KibanaThemeProvider,
-  RedirectAppLinks,
   useUiSetting$,
 } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
 import { Router, Routes, Route } from '@kbn/shared-ux-router';
 import { euiDarkVars, euiLightVars } from '@kbn/ui-theme';
@@ -149,46 +149,49 @@ export function ObservabilityOnboardingAppRoot({
   const renderFeedbackLinkAsPortal = !config.serverless.enabled;
 
   return (
-    <RedirectAppLinks
-      className={APP_WRAPPER_CLASS}
-      application={core.application}
-    >
-      <KibanaContextProvider
-        services={{
-          ...core,
-          ...plugins,
-          observability,
-          data,
-          config,
+    <div className={APP_WRAPPER_CLASS}>
+      <RedirectAppLinks
+        coreStart={{
+          application: core.application,
         }}
       >
-        <KibanaThemeProvider
-          theme$={theme$}
-          modify={{
-            breakpoint: {
-              xxl: 1600,
-              xxxl: 2000,
-            },
+        <KibanaContextProvider
+          services={{
+            ...core,
+            ...plugins,
+            observability,
+            data,
+            config,
           }}
         >
-          <i18nCore.Context>
-            <Router history={history}>
-              <EuiErrorBoundary>
-                {renderFeedbackLinkAsPortal && (
-                  <HeaderMenuPortal
-                    setHeaderActionMenu={setHeaderActionMenu}
-                    theme$={theme$}
-                  >
-                    <ObservabilityOnboardingHeaderActionMenu />
-                  </HeaderMenuPortal>
-                )}
-                <ObservabilityOnboardingApp />
-              </EuiErrorBoundary>
-            </Router>
-          </i18nCore.Context>
-        </KibanaThemeProvider>
-      </KibanaContextProvider>
-    </RedirectAppLinks>
+          <KibanaThemeProvider
+            theme$={theme$}
+            modify={{
+              breakpoint: {
+                xxl: 1600,
+                xxxl: 2000,
+              },
+            }}
+          >
+            <i18nCore.Context>
+              <Router history={history}>
+                <EuiErrorBoundary>
+                  {renderFeedbackLinkAsPortal && (
+                    <HeaderMenuPortal
+                      setHeaderActionMenu={setHeaderActionMenu}
+                      theme$={theme$}
+                    >
+                      <ObservabilityOnboardingHeaderActionMenu />
+                    </HeaderMenuPortal>
+                  )}
+                  <ObservabilityOnboardingApp />
+                </EuiErrorBoundary>
+              </Router>
+            </i18nCore.Context>
+          </KibanaThemeProvider>
+        </KibanaContextProvider>
+      </RedirectAppLinks>
+    </div>
   );
 }
 
diff --git a/x-pack/plugins/observability_onboarding/tsconfig.json b/x-pack/plugins/observability_onboarding/tsconfig.json
index 4730fbe256009..08ede6f201fc2 100644
--- a/x-pack/plugins/observability_onboarding/tsconfig.json
+++ b/x-pack/plugins/observability_onboarding/tsconfig.json
@@ -34,6 +34,7 @@
     "@kbn/share-plugin",
     "@kbn/deeplinks-observability",
     "@kbn/fleet-plugin",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/x-pack/plugins/security/public/nav_control/nav_control_service.test.ts b/x-pack/plugins/security/public/nav_control/nav_control_service.test.ts
index 894fb1b9b804e..6350641bf5da3 100644
--- a/x-pack/plugins/security/public/nav_control/nav_control_service.test.ts
+++ b/x-pack/plugins/security/public/nav_control/nav_control_service.test.ts
@@ -77,6 +77,7 @@ describe('SecurityNavControlService', () => {
       <div>
         <div
           css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+          data-test-subj="kbnRedirectAppLink"
         >
           <div
             class="euiPopover emotion-euiPopover"
diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx
index 5a418286596e3..2c3f613db50a0 100644
--- a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx
+++ b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx
@@ -93,6 +93,7 @@ describe('spacesManagementApp', () => {
       <div>
         <div
           css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+          data-test-subj="kbnRedirectAppLink"
         >
           Spaces Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{}},"history":{"action":"PUSH","length":1,"location":{"pathname":"/","search":"","hash":""}},"maxSpaces":1000}
         </div>
@@ -119,6 +120,7 @@ describe('spacesManagementApp', () => {
       <div>
         <div
           css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+          data-test-subj="kbnRedirectAppLink"
         >
           Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{}},"history":{"action":"PUSH","length":1,"location":{"pathname":"/create","search":"","hash":""}},"allowFeatureVisibility":true}
         </div>
@@ -151,6 +153,7 @@ describe('spacesManagementApp', () => {
       <div>
         <div
           css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)."
+          data-test-subj="kbnRedirectAppLink"
         >
           Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"notifications":{"toasts":{}},"spacesManager":{"onActiveSpaceChange$":{}},"spaceId":"some-space","history":{"action":"PUSH","length":1,"location":{"pathname":"/edit/some-space","search":"","hash":""}},"allowFeatureVisibility":true}
         </div>
diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx
index bac16812f1bf2..5a6492f552fc9 100644
--- a/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx
+++ b/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx
@@ -10,11 +10,8 @@ import { Router } from '@kbn/shared-ux-router';
 import { EuiErrorBoundary } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import { APP_WRAPPER_CLASS } from '@kbn/core/public';
-import {
-  KibanaContextProvider,
-  KibanaThemeProvider,
-  RedirectAppLinks,
-} from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 import { InspectorContextProvider } from '@kbn/observability-shared-plugin/public';
 import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
@@ -110,8 +107,9 @@ const Application = (props: SyntheticsAppProps) => {
                             <SyntheticsStartupPluginsContextProvider {...startPlugins}>
                               <div className={APP_WRAPPER_CLASS} data-test-subj="syntheticsApp">
                                 <RedirectAppLinks
-                                  className={APP_WRAPPER_CLASS}
-                                  application={core.application}
+                                  coreStart={{
+                                    application: core.application,
+                                  }}
                                 >
                                   <InspectorContextProvider>
                                     <PageRouter />
diff --git a/x-pack/plugins/synthetics/tsconfig.json b/x-pack/plugins/synthetics/tsconfig.json
index ff288ec3cee97..4492a20771d8c 100644
--- a/x-pack/plugins/synthetics/tsconfig.json
+++ b/x-pack/plugins/synthetics/tsconfig.json
@@ -79,6 +79,7 @@
     "@kbn/observability-ai-assistant-plugin",
     "@kbn/unified-doc-viewer-plugin",
     "@kbn/discover-utils",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/x-pack/plugins/upgrade_assistant/public/application/app.tsx b/x-pack/plugins/upgrade_assistant/public/application/app.tsx
index 90de3755c0d76..d1259df67e729 100644
--- a/x-pack/plugins/upgrade_assistant/public/application/app.tsx
+++ b/x-pack/plugins/upgrade_assistant/public/application/app.tsx
@@ -163,18 +163,24 @@ export const RootComponent = (dependencies: AppDependencies) => {
   executionContext.set({ type: 'application', page: 'upgradeAssistant' });
 
   return (
-    <RedirectAppLinks application={application} className={APP_WRAPPER_CLASS}>
-      <AuthorizationProvider httpClient={http} privilegesEndpoint={`${API_BASE_PATH}/privileges`}>
-        <i18n.Context>
-          <KibanaThemeProvider theme$={dependencies.theme$}>
-            <AppContextProvider value={dependencies}>
-              <GlobalFlyoutProvider>
-                <App history={history} />
-              </GlobalFlyoutProvider>
-            </AppContextProvider>
-          </KibanaThemeProvider>
-        </i18n.Context>
-      </AuthorizationProvider>
-    </RedirectAppLinks>
+    <div className={APP_WRAPPER_CLASS}>
+      <RedirectAppLinks
+        coreStart={{
+          application,
+        }}
+      >
+        <AuthorizationProvider httpClient={http} privilegesEndpoint={`${API_BASE_PATH}/privileges`}>
+          <i18n.Context>
+            <KibanaThemeProvider theme$={dependencies.theme$}>
+              <AppContextProvider value={dependencies}>
+                <GlobalFlyoutProvider>
+                  <App history={history} />
+                </GlobalFlyoutProvider>
+              </AppContextProvider>
+            </KibanaThemeProvider>
+          </i18n.Context>
+        </AuthorizationProvider>
+      </RedirectAppLinks>
+    </div>
   );
 };
diff --git a/x-pack/plugins/upgrade_assistant/public/shared_imports.ts b/x-pack/plugins/upgrade_assistant/public/shared_imports.ts
index cbed7f5258411..db3a4472c404d 100644
--- a/x-pack/plugins/upgrade_assistant/public/shared_imports.ts
+++ b/x-pack/plugins/upgrade_assistant/public/shared_imports.ts
@@ -30,10 +30,11 @@ export { Storage } from '@kbn/kibana-utils-plugin/public';
 export {
   KibanaContextProvider,
   reactRouterNavigate,
-  RedirectAppLinks,
   KibanaThemeProvider,
 } from '@kbn/kibana-react-plugin/public';
 
+export { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
+
 export type { DataPublicPluginStart } from '@kbn/data-plugin/public';
 
 export { APP_WRAPPER_CLASS } from '@kbn/core/public';
diff --git a/x-pack/plugins/upgrade_assistant/tsconfig.json b/x-pack/plugins/upgrade_assistant/tsconfig.json
index 59d562c03c87d..f905d49f380cd 100644
--- a/x-pack/plugins/upgrade_assistant/tsconfig.json
+++ b/x-pack/plugins/upgrade_assistant/tsconfig.json
@@ -37,6 +37,7 @@
     "@kbn/utility-types",
     "@kbn/shared-ux-router",
     "@kbn/logs-shared-plugin",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx b/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
index fb45099888592..574e9ee985812 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx
@@ -11,11 +11,8 @@ import { EuiErrorBoundary } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import { I18nStart, ChromeBreadcrumb, CoreStart, AppMountParameters } from '@kbn/core/public';
 import { APP_WRAPPER_CLASS } from '@kbn/core/public';
-import {
-  KibanaContextProvider,
-  KibanaThemeProvider,
-  RedirectAppLinks,
-} from '@kbn/kibana-react-plugin/public';
+import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common';
 import { InspectorContextProvider } from '@kbn/observability-shared-plugin/public';
 import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
@@ -140,8 +137,9 @@ const Application = (props: UptimeAppProps) => {
                             <UptimeDataViewContextProvider dataViews={startPlugins.dataViews}>
                               <div className={APP_WRAPPER_CLASS} data-test-subj="uptimeApp">
                                 <RedirectAppLinks
-                                  className={APP_WRAPPER_CLASS}
-                                  application={core.application}
+                                  coreStart={{
+                                    application: core.application,
+                                  }}
                                 >
                                   <InspectorContextProvider>
                                     <UptimeAlertsFlyoutWrapper />
diff --git a/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx b/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx
index 9bcfebd07ed87..65bc0294fa03b 100644
--- a/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx
+++ b/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx
@@ -11,7 +11,8 @@ import { FormattedMessage } from '@kbn/i18n-react';
 import React from 'react';
 import type { CoreTheme } from '@kbn/core/public';
 import { EuiLink, EuiSpacer, EuiText } from '@elastic/eui';
-import { RedirectAppLinks, toMountPoint } from '@kbn/kibana-react-plugin/public';
+import { toMountPoint } from '@kbn/kibana-react-plugin/public';
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
 import type { Rule } from '@kbn/triggers-actions-ui-plugin/public';
 import { ActionConnector } from '../../../../common/rules/types';
 import { kibanaService } from '../../state/kibana_service';
@@ -29,7 +30,11 @@ export const simpleAlertEnabled = (
       defaultMessage: 'Rule successfully enabled ',
     }),
     text: toMountPoint(
-      <RedirectAppLinks application={kibanaService.core.application}>
+      <RedirectAppLinks
+        coreStart={{
+          application: kibanaService.core.application,
+        }}
+      >
         <EuiText>
           <FormattedMessage
             id="xpack.uptime.overview.alerts.enabled.success.description"
diff --git a/x-pack/plugins/uptime/tsconfig.json b/x-pack/plugins/uptime/tsconfig.json
index dc93878a42464..9013c984de263 100644
--- a/x-pack/plugins/uptime/tsconfig.json
+++ b/x-pack/plugins/uptime/tsconfig.json
@@ -72,6 +72,7 @@
     "@kbn/actions-plugin",
     "@kbn/core-saved-objects-server",
     "@kbn/observability-ai-assistant-plugin",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",
diff --git a/x-pack/plugins/ux/public/application/ux_app.tsx b/x-pack/plugins/ux/public/application/ux_app.tsx
index aa1ae124d0279..b7ca736c6b5af 100644
--- a/x-pack/plugins/ux/public/application/ux_app.tsx
+++ b/x-pack/plugins/ux/public/application/ux_app.tsx
@@ -23,10 +23,11 @@ import {
 import {
   KibanaContextProvider,
   KibanaThemeProvider,
-  RedirectAppLinks,
   useUiSetting$,
 } from '@kbn/kibana-react-plugin/public';
 
+import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
+
 import { DatePickerContextProvider } from '@kbn/observability-plugin/public';
 import {
   InspectorContextProvider,
@@ -131,62 +132,67 @@ export function UXAppRoot({
   createCallApmApi(core);
 
   return (
-    <RedirectAppLinks
-      className={APP_WRAPPER_CLASS}
-      application={core.application}
-    >
-      <KibanaContextProvider
-        services={{
-          ...core,
-          ...plugins,
-          inspector,
-          observability,
-          observabilityShared,
-          embeddable,
-          exploratoryView,
-          data,
-          dataViews,
-          lens,
+    <div className={APP_WRAPPER_CLASS}>
+      <RedirectAppLinks
+        coreStart={{
+          application: core.application,
         }}
       >
-        <ObservabilityAIAssistantProvider value={observabilityAIAssistant}>
-          <KibanaThemeProvider
-            theme$={appMountParameters.theme$}
-            modify={{
-              breakpoint: {
-                xxl: 1600,
-                xxxl: 2000,
-              },
-            }}
-          >
-            <PluginContext.Provider
-              value={{
-                appMountParameters,
-                exploratoryView,
-                observabilityShared,
+        <KibanaContextProvider
+          services={{
+            ...core,
+            ...plugins,
+            inspector,
+            observability,
+            observabilityShared,
+            embeddable,
+            exploratoryView,
+            data,
+            dataViews,
+            lens,
+          }}
+        >
+          <ObservabilityAIAssistantProvider value={observabilityAIAssistant}>
+            <KibanaThemeProvider
+              theme$={appMountParameters.theme$}
+              modify={{
+                breakpoint: {
+                  xxl: 1600,
+                  xxxl: 2000,
+                },
               }}
             >
-              <i18nCore.Context>
-                <RouterProvider history={history} router={uxRouter}>
-                  <DatePickerContextProvider>
-                    <InspectorContextProvider>
-                      <UrlParamsProvider>
-                        <EuiErrorBoundary>
-                          <CsmSharedContextProvider>
-                            <UxApp />
-                          </CsmSharedContextProvider>
-                        </EuiErrorBoundary>
-                        <UXActionMenu appMountParameters={appMountParameters} />
-                      </UrlParamsProvider>
-                    </InspectorContextProvider>
-                  </DatePickerContextProvider>
-                </RouterProvider>
-              </i18nCore.Context>
-            </PluginContext.Provider>
-          </KibanaThemeProvider>
-        </ObservabilityAIAssistantProvider>
-      </KibanaContextProvider>
-    </RedirectAppLinks>
+              <PluginContext.Provider
+                value={{
+                  appMountParameters,
+                  exploratoryView,
+                  observabilityShared,
+                }}
+              >
+                <i18nCore.Context>
+                  <RouterProvider history={history} router={uxRouter}>
+                    <DatePickerContextProvider>
+                      <InspectorContextProvider>
+                        <UrlParamsProvider>
+                          <EuiErrorBoundary>
+                            <CsmSharedContextProvider>
+                              <UxApp />
+                            </CsmSharedContextProvider>
+                          </EuiErrorBoundary>
+                          <UXActionMenu
+                            appMountParameters={appMountParameters}
+                          />
+                        </UrlParamsProvider>
+                      </InspectorContextProvider>
+                    </DatePickerContextProvider>
+                  </RouterProvider>
+                </i18nCore.Context>
+              </PluginContext.Provider>
+            </KibanaThemeProvider>
+          </ObservabilityAIAssistantProvider>
+        </KibanaContextProvider>
+      </RedirectAppLinks>
+    </div>
   );
 }
 
diff --git a/x-pack/plugins/ux/tsconfig.json b/x-pack/plugins/ux/tsconfig.json
index 7865c124929b9..62fdcb115a0a3 100644
--- a/x-pack/plugins/ux/tsconfig.json
+++ b/x-pack/plugins/ux/tsconfig.json
@@ -42,6 +42,7 @@
     "@kbn/shared-ux-router",
     "@kbn/observability-ai-assistant-plugin",
     "@kbn/config-schema",
+    "@kbn/shared-ux-link-redirect-app"
   ],
   "exclude": [
     "target/**/*",

From 881a4bb29317ab23895ab550f94cc10915bc781a Mon Sep 17 00:00:00 2001
From: Maxim Palenov <maxim.palenov@elastic.co>
Date: Mon, 13 Nov 2023 10:28:16 +0100
Subject: [PATCH 118/147] [Security Solution] Add a script to create roles and
 users (#171067)

**Relates to:** https://github.com/elastic/kibana/pull/169017

## Summary

This PR re-adds an utility shell script for roles and users creation to replace scripts removed in a previous [PR](https://github.com/elastic/kibana/pull/169017).
---
 .github/CODEOWNERS                            |   1 +
 .../scripts/roles_users/README.md             |  41 +++++++
 .../roles_users/create_role_and_user.sh       |  10 ++
 .../roles_users/create_role_and_user.ts       | 106 ++++++++++++++++++
 4 files changed, 158 insertions(+)
 create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md
 create mode 100755 x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh
 create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 453cbc463b270..5c112d886cd3a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1371,6 +1371,7 @@ x-pack/test/security_solution_api_integration/test_suites/detections_response/de
 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation @elastic/security-detection-engine
 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions @elastic/security-detection-engine
 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts @elastic/security-detection-engine
+/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users @elastic/security-detection-engine
 
 ## Security Threat Intelligence - Under Security Platform
 /x-pack/plugins/security_solution/public/common/components/threat_match @elastic/security-detection-engine
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md
new file mode 100644
index 0000000000000..0398f182f9f4e
--- /dev/null
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md
@@ -0,0 +1,41 @@
+# Create role/user utility
+
+`create_role_and_user.sh` shell script facilitates roles and users creation process. It accepts only one `--role` parameter restricted to known role definitions (See `@kbn/security-solution-plugin/common/test/index.ts` for the roles list). Created user has role's name and this only role assigned.
+
+## Expected environment variables
+
+The following environment variables can be specified
+
+- `ELASTICSEARCH_URL` Elasticsearch url e.g. `http://127.0.0.1:9200`
+- `KIBANA_URL` Kibana url e.g. `http://127.0.0.1:560`
+- `USERNAME` a user name to authenticate requests e.g. `elastic`
+- `PASSWORD` a password to authenticate requests e.g. `changeme`
+
+If an environment variable is not specified sensible defaults is used.
+
+### Notes
+
+1. When first starting up elastic, detections will not be available until you visit the page with a SOC Manager role or Platform Engineer role
+2. Rule Author has the ability to create rules and create value lists
+
+## Examples
+
+For example to create `t1_analyst` user with `t1_analyst` role run the following command in the current folder
+
+```bash
+./create_role_and_user.sh --role=t1_analyst
+```
+
+Output
+
+```
+ warn Environment variable "ELASTICSEARCH_URL" is not set, using "http://127.0.0.1:9200" as a default value
+ info Using environment variable KIBANA_URL=http://127.0.0.1:5601/kbn
+ warn Environment variable "USERNAME" is not set, using "elastic" as a default value
+ warn Environment variable "PASSWORD" is not set, using "changeme" as a default value
+ info Creating role "t1_analyst"...
+ info Role "t1_analyst" has been created
+ info Creating user "t1_analyst"...
+ info User "t1_analyst" has been created (password "changeme")
+ succ Done
+```
\ No newline at end of file
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh
new file mode 100755
index 0000000000000..516d38829b3e4
--- /dev/null
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+#
+# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+# or more contributor license agreements. Licensed under the Elastic License
+# 2.0; you may not use this file except in compliance with the Elastic License
+# 2.0.
+#
+
+npx ts-node "$(dirname "${0}")/create_role_and_user.ts" "$@"
\ No newline at end of file
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts
new file mode 100644
index 0000000000000..04b09feb1a153
--- /dev/null
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts
@@ -0,0 +1,106 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import axios from 'axios';
+import yargs from 'yargs';
+import { ToolingLog } from '@kbn/tooling-log';
+import {
+  KNOWN_ESS_ROLE_DEFINITIONS,
+  KNOWN_SERVERLESS_ROLE_DEFINITIONS,
+} from '../../../../../common/test';
+
+const logger = new ToolingLog({
+  level: 'info',
+  writeTo: process.stdout,
+});
+const KNOWN_ROLE_DEFINITIONS = {
+  ...KNOWN_ESS_ROLE_DEFINITIONS,
+  ...KNOWN_SERVERLESS_ROLE_DEFINITIONS,
+};
+const DEFAULT_PASSWORD = 'changeme';
+
+cli()
+  .then(() => logger.success('Done'))
+  .catch((e) => logger.error(e));
+
+async function cli(): Promise<void> {
+  const { role } = yargs(process.argv)
+    .choices(
+      'role',
+      Object.keys(KNOWN_ROLE_DEFINITIONS) as Array<keyof typeof KNOWN_ROLE_DEFINITIONS>
+    )
+    .demandOption('role')
+    .version(false)
+    .help(false).argv;
+  const selectedRoleDefinition = KNOWN_ROLE_DEFINITIONS[role];
+  const userName = role;
+  const ELASTICSEARCH_URL = getEnvVariableOrDefault('ELASTICSEARCH_URL', 'http://127.0.0.1:9200');
+  const KIBANA_URL = getEnvVariableOrDefault('KIBANA_URL', 'http://127.0.0.1:560');
+  const USERNAME = getEnvVariableOrDefault('USERNAME', 'elastic');
+  const PASSWORD = getEnvVariableOrDefault('PASSWORD', DEFAULT_PASSWORD);
+  const password = DEFAULT_PASSWORD;
+  const requestHeaders = {
+    Authorization: `Basic ${btoa(`${USERNAME}:${PASSWORD}`)}`,
+    'kbn-xsrf': 'xxx',
+  };
+
+  try {
+    logger.info(`Creating role "${role}"...`);
+    await axios.put(
+      `${KIBANA_URL}/api/security/role/${role}`,
+      {
+        elasticsearch: selectedRoleDefinition.elasticsearch,
+        kibana: selectedRoleDefinition.kibana,
+      },
+      {
+        headers: requestHeaders,
+      }
+    );
+
+    logger.info(`Role "${role}" has been created`);
+  } catch (e) {
+    logger.error(`Unable to create role "${role}"`);
+    throw e;
+  }
+
+  try {
+    logger.info(`Creating user "${userName}"...`);
+    await axios.put(
+      `${ELASTICSEARCH_URL}/_security/user/${userName}`,
+      {
+        password,
+        roles: [role],
+        full_name: role,
+        email: `role@example.com`,
+      },
+      {
+        headers: requestHeaders,
+      }
+    );
+
+    logger.info(`User "${userName}" has been created (password "${password}")`);
+  } catch (e) {
+    logger.error(`Unable to create user "${userName}"`);
+    throw e;
+  }
+}
+
+function getEnvVariableOrDefault(variableName: string, defaultValue: string): string {
+  const value = process.env[variableName];
+
+  if (!value) {
+    logger.warning(
+      `Environment variable "${variableName}" is not set, using "${defaultValue}" as a default value`
+    );
+
+    return defaultValue;
+  }
+
+  logger.info(`Using environment variable ${variableName}=${value}`);
+
+  return value;
+}

From 66596a323a5151067ccddd23bbf5abe9140e3745 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20S=C3=A1nchez?= <david.sanchezsoler@elastic.co>
Date: Mon, 13 Nov 2023 11:19:38 +0100
Subject: [PATCH 119/147] [Security Solution][Endpoint] Enable skipped Defend
 Workflows e2e tests (#170955)

## Summary

It reenables skipped e2e tests after fixing an issue with vagrant image
here https://github.com/elastic/kibana/pull/170897
---
 .../automated_response_actions.cy.ts                           | 3 +--
 .../tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts  | 3 +--
 ...t_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts | 3 +--
 ...nt_from_host_changing_policy_from_disabled_to_enabled.cy.ts | 3 +--
 ...ent_from_host_changing_policy_from_enabled_to_enabled.cy.ts | 3 +--
 5 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts
index 50bcefc65ab95..1948434b39c9f 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts
@@ -20,8 +20,7 @@ import { createEndpointHost } from '../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../tasks/delete_all_endpoint_data';
 import { enableAllPolicyProtections } from '../../tasks/endpoint_policy';
 
-// FLAKY: https://github.com/elastic/kibana/issues/168340
-describe.skip(
+describe(
   'Automated Response Actions',
   {
     tags: [
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts
index f2aef24ad5e12..17cb52c2cb042 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts
@@ -20,8 +20,7 @@ import { login } from '../../../tasks/login';
 import { createEndpointHost } from '../../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../../tasks/delete_all_endpoint_data';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170706
-describe.skip(
+describe(
   'Unenroll agent from fleet when agent tamper protection is enabled',
   { tags: ['@ess'] },
   () => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
index b03608c9c52f2..d30345d8d5486 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
@@ -22,8 +22,7 @@ import { enableAllPolicyProtections } from '../../../tasks/endpoint_policy';
 import { createEndpointHost } from '../../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../../tasks/delete_all_endpoint_data';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170811
-describe.skip(
+describe(
   'Unenroll agent from fleet when agent tamper protection is disabled but then is switched to a policy with it enabled',
   { tags: ['@ess'] },
   () => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
index 056191ad2bd7f..5950288f2313e 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
@@ -24,8 +24,7 @@ import { enableAllPolicyProtections } from '../../../tasks/endpoint_policy';
 import { createEndpointHost } from '../../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../../tasks/delete_all_endpoint_data';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170794
-describe.skip(
+describe(
   'Uninstall agent from host changing agent policy when agent tamper protection is disabled but then is switched to a policy with it enabled',
   { tags: ['@ess'] },
   () => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
index 6dca6af07a53a..15fd02ad14511 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
@@ -23,8 +23,7 @@ import { login } from '../../../tasks/login';
 import { createEndpointHost } from '../../../tasks/create_endpoint_host';
 import { deleteAllLoadedEndpointData } from '../../../tasks/delete_all_endpoint_data';
 
-// FLAKY: https://github.com/elastic/kibana/issues/170812
-describe.skip(
+describe(
   'Uninstall agent from host changing agent policy when agent tamper protection is enabled but then is switched to a policy with it also enabled',
   { tags: ['@ess'] },
   () => {

From 51ceca933c0ed94600396b6e8dee6eec734f7159 Mon Sep 17 00:00:00 2001
From: Gloria Hornero <gloria.hornero@elastic.co>
Date: Mon, 13 Nov 2023 12:08:21 +0100
Subject: [PATCH 120/147] [Security Solution] Parallel serverless script
 adjustments (#171074)

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../run_cypress/parallel_serverless.ts        | 193 ++++++++++++++----
 .../plugins/security_solution/tsconfig.json   |   1 +
 2 files changed, 154 insertions(+), 40 deletions(-)

diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts
index 56740845126a8..c00ec17116ca9 100644
--- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts
+++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts
@@ -22,6 +22,8 @@ import path from 'path';
 import os from 'os';
 import pRetry from 'p-retry';
 
+import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
+import { INITIAL_REST_VERSION } from '@kbn/data-views-plugin/server/constants';
 import { renderSummaryTable } from './print_run';
 import type { SecuritySolutionDescribeBlockFtrConfig } from './utils';
 import { parseTestFileConfig, retrieveIntegrations } from './utils';
@@ -31,13 +33,13 @@ interface ProductType {
   product_tier: string;
 }
 
-interface CreateEnvironmentRequestBody {
+interface CreateProjectRequestBody {
   name: string;
   region_id: string;
   product_types?: ProductType[];
 }
 
-interface Environment {
+interface Project {
   name: string;
   id: string;
   region: string;
@@ -55,10 +57,15 @@ const DEFAULT_REGION = 'aws-eu-west-1';
 const PROJECT_NAME_PREFIX = 'kibana-cypress-security-solution-ephemeral';
 const BASE_ENV_URL = 'https://global.qa.cld.elstc.co';
 let log: ToolingLog;
-
-const delay = async (timeout: number) => {
-  await new Promise((r) => setTimeout(r, timeout));
-};
+const API_HEADERS = Object.freeze({
+  'kbn-xsrf': 'cypress-creds',
+  'x-elastic-internal-origin': 'security-solution',
+  [ELASTIC_HTTP_VERSION_HEADER]: [INITIAL_REST_VERSION],
+});
+const PROVIDERS = Object.freeze({
+  providerType: 'basic',
+  providerName: 'cloud-basic',
+});
 
 const getApiKeyFromElasticCloudJsonFile = (): string | undefined => {
   const userHomeDir = os.homedir();
@@ -71,13 +78,13 @@ const getApiKeyFromElasticCloudJsonFile = (): string | undefined => {
   }
 };
 
-// Method to invoke the create environment API for serverless.
-async function createEnvironment(
+// Method to invoke the create project API for serverless.
+async function createSecurityProject(
   projectName: string,
   apiKey: string,
   ftrConfig: SecuritySolutionDescribeBlockFtrConfig
-): Promise<Environment | undefined> {
-  const body: CreateEnvironmentRequestBody = {
+): Promise<Project | undefined> {
+  const body: CreateProjectRequestBody = {
     name: projectName,
     region_id: DEFAULT_REGION,
   };
@@ -111,8 +118,8 @@ async function createEnvironment(
   }
 }
 
-// Method to invoke the delete environment API for serverless.
-async function deleteEnvironment(
+// Method to invoke the delete project API for serverless.
+async function deleteSecurityProject(
   projectId: string,
   projectName: string,
   apiKey: string
@@ -123,7 +130,7 @@ async function deleteEnvironment(
         Authorization: `ApiKey ${apiKey}`,
       },
     });
-    log.info(`Environment ${projectName} was successfully deleted!`);
+    log.info(`Project ${projectName} was successfully deleted!`);
   } catch (error) {
     if (error instanceof AxiosError) {
       log.error(`${error.response?.status}:${error.response?.data}`);
@@ -133,16 +140,16 @@ async function deleteEnvironment(
   }
 }
 
-// Method to reset the credentials for the created environment.
+// Method to reset the credentials for the created project.
 async function resetCredentials(
-  environmentId: string,
+  projectId: string,
   runnerId: string,
   apiKey: string
 ): Promise<Credentials | undefined> {
   log.info(`${runnerId} : Reseting credentials`);
   try {
     const response = await axios.post(
-      `${BASE_ENV_URL}/api/v1/serverless/projects/security/${environmentId}/_reset-credentials`,
+      `${BASE_ENV_URL}/api/v1/serverless/projects/security/${projectId}/_reset-credentials`,
       {},
       {
         headers: {
@@ -159,10 +166,43 @@ async function resetCredentials(
   }
 }
 
+// Wait until Project is initialized
+function waitForProjectInitialized(projectId: string, apiKey: string): Promise<void> {
+  const fetchProjectStatusAttempt = async (attemptNum: number) => {
+    log.info(`Retry number ${attemptNum} to check if project is initialized.`);
+    const response = await axios.get(
+      `${BASE_ENV_URL}/api/v1/serverless/projects/security/${projectId}/status`,
+      {
+        headers: {
+          Authorization: `ApiKey ${apiKey}`,
+        },
+      }
+    );
+    if (response.data.phase !== 'initialized') {
+      throw new Error('Project is not initialized. Retrying in 20s...');
+    } else {
+      log.info('Project is initialized');
+    }
+  };
+  const retryOptions = {
+    onFailedAttempt: (error: Error | AxiosError) => {
+      if (error instanceof AxiosError && error.code === 'ENOTFOUND') {
+        log.info('Project is not reachable. Retrying in 20s...');
+      } else {
+        log.info(error);
+      }
+    },
+    retries: 100,
+    factor: 2,
+    maxTimeout: 20000,
+  };
+  return pRetry(fetchProjectStatusAttempt, retryOptions);
+}
+
 // Wait until elasticsearch status goes green
 function waitForEsStatusGreen(esUrl: string, auth: string, runnerId: string): Promise<void> {
   const fetchHealthStatusAttempt = async (attemptNum: number) => {
-    log.info(`Retry number ${attemptNum} to check if es is green.`);
+    log.info(`Retry number ${attemptNum} to check if Elasticsearch is green.`);
 
     const response = await axios.get(`${esUrl}/_cluster/health?wait_for_status=green&timeout=50s`, {
       headers: {
@@ -176,7 +216,7 @@ function waitForEsStatusGreen(esUrl: string, auth: string, runnerId: string): Pr
     onFailedAttempt: (error: Error | AxiosError) => {
       if (error instanceof AxiosError && error.code === 'ENOTFOUND') {
         log.info(
-          `${runnerId}: The elasticsearch url is not yet reachable. A retry will be triggered soon...`
+          `${runnerId}: The Elasticsearch URL is not yet reachable. A retry will be triggered soon...`
         );
       }
     },
@@ -206,7 +246,7 @@ function waitForKibanaAvailable(kbUrl: string, auth: string, runnerId: string):
   const retryOptions = {
     onFailedAttempt: (error: Error | AxiosError) => {
       if (error instanceof AxiosError && error.code === 'ENOTFOUND') {
-        log.info(`${runnerId}: The kibana url is not yet reachable. Retrying in 20s...`);
+        log.info(`${runnerId}: The Kibana URL is not yet reachable. Retrying in 20s...`);
       } else {
         log.info(`${runnerId}: ${error}`);
       }
@@ -218,6 +258,73 @@ function waitForKibanaAvailable(kbUrl: string, auth: string, runnerId: string):
   return pRetry(fetchKibanaStatusAttempt, retryOptions);
 }
 
+// Wait for Elasticsearch to be accessible
+function waitForEsAccess(esUrl: string, auth: string, runnerId: string): Promise<void> {
+  const fetchEsAccessAttempt = async (attemptNum: number) => {
+    log.info(`Retry number ${attemptNum} to check if can be accessed.`);
+
+    const response = await axios.get(`${esUrl}`, {
+      headers: {
+        Authorization: `Basic ${auth}`,
+      },
+    });
+
+    if (response.status !== 200) {
+      throw new Error('Cannot access. Retrying in 20s...');
+    } else {
+      log.info('Access performed successfully');
+    }
+  };
+  const retryOptions = {
+    onFailedAttempt: (error: Error | AxiosError) => {
+      if (error instanceof AxiosError && error.code === 'ENOTFOUND') {
+        log.info(
+          `${runnerId}: The elasticsearch url is not yet reachable. A retry will be triggered soon...`
+        );
+      }
+    },
+    retries: 100,
+    factor: 2,
+    maxTimeout: 20000,
+  };
+
+  return pRetry(fetchEsAccessAttempt, retryOptions);
+}
+
+// Wait until application is ready
+function waitForKibanaLogin(kbUrl: string, credentials: Credentials): Promise<void> {
+  const body = {
+    ...PROVIDERS,
+    currentURL: '/',
+    params: credentials,
+  };
+
+  const fetchLoginStatusAttempt = async (attemptNum: number) => {
+    log.info(`Retry number ${attemptNum} to check if login can be performed.`);
+    const response = await axios.post(`${kbUrl}/internal/security/login`, body, {
+      headers: API_HEADERS,
+    });
+    if (response.status !== 200) {
+      throw new Error('Cannot login. Retrying in 20s...');
+    } else {
+      log.info('Login can be performed successfully');
+    }
+  };
+  const retryOptions = {
+    onFailedAttempt: (error: Error | AxiosError) => {
+      if (error instanceof AxiosError && error.code === 'ENOTFOUND') {
+        log.info('Project is not reachable. Retrying login in 20s...');
+      } else {
+        log.info(error);
+      }
+    },
+    retries: 100,
+    factor: 2,
+    maxTimeout: 20000,
+  };
+  return pRetry(fetchLoginStatusAttempt, retryOptions);
+}
+
 export const cli = () => {
   run(
     async () => {
@@ -228,9 +335,9 @@ export const cli = () => {
 
       // Checking if API key is either provided via env variable or in ~/.elastic.cloud.json
       if (!process.env.CLOUD_QA_API_KEY && !getApiKeyFromElasticCloudJsonFile()) {
-        log.error('The api key for the environment needs to be provided with the env var API_KEY.');
+        log.error('The API key for the environment needs to be provided with the env var API_KEY.');
         log.error(
-          'If running locally, ~/.elastic/cloud.json is attempted to be read which contains the api key.'
+          'If running locally, ~/.elastic/cloud.json is attempted to be read which contains the API key.'
         );
         // eslint-disable-next-line no-process-exit
         return process.exit(1);
@@ -352,23 +459,23 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
             const specFileFTRConfig = parseTestFileConfig(filePath);
 
             if (!API_KEY) {
-              log.info('API KEY to create environment could not be retrieved.');
+              log.info('API KEY to create project could not be retrieved.');
               // eslint-disable-next-line no-process-exit
               return process.exit(1);
             }
 
-            log.info(`${id}: Creating environment ${PROJECT_NAME}...`);
-            // Creating environment for the test to run
-            const environment = await createEnvironment(PROJECT_NAME, API_KEY, specFileFTRConfig);
+            log.info(`${id}: Creating project ${PROJECT_NAME}...`);
+            // Creating project for the test to run
+            const project = await createSecurityProject(PROJECT_NAME, API_KEY, specFileFTRConfig);
 
-            if (!environment) {
-              log.info('Failed to create environment.');
+            if (!project) {
+              log.info('Failed to create project.');
               // eslint-disable-next-line no-process-exit
               return process.exit(1);
             }
 
             // Reset credentials for elastic user
-            const credentials = await resetCredentials(environment.id, id, API_KEY);
+            const credentials = await resetCredentials(project.id, id, API_KEY);
 
             if (!credentials) {
               log.info('Credentials could not be reset.');
@@ -376,27 +483,33 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
               return process.exit(1);
             }
 
-            // Wait for 8 minutes in order for the environment to be ready
-            delay(480000);
+            // Wait for project to be initialized
+            await waitForProjectInitialized(project.id, API_KEY);
 
             // Base64 encode the credentials in order to invoke ES and KB APIs
             const auth = btoa(`${credentials.username}:${credentials.password}`);
 
             // Wait for elasticsearch status to go green.
-            await waitForEsStatusGreen(environment.es_url, auth, id);
+            await waitForEsStatusGreen(project.es_url, auth, id);
 
             // Wait until Kibana is available
-            await waitForKibanaAvailable(environment.kb_url, auth, id);
+            await waitForKibanaAvailable(project.kb_url, auth, id);
+
+            // Wait for Elasticsearch to be accessible
+            await waitForEsAccess(project.es_url, auth, id);
+
+            // Wait until application is ready
+            await waitForKibanaLogin(project.kb_url, credentials);
 
             // Normalized the set of available env vars in cypress
             const cyCustomEnv = {
-              CYPRESS_BASE_URL: environment.kb_url,
+              CYPRESS_BASE_URL: project.kb_url,
 
-              ELASTICSEARCH_URL: environment.es_url,
+              ELASTICSEARCH_URL: project.es_url,
               ELASTICSEARCH_USERNAME: credentials.username,
               ELASTICSEARCH_PASSWORD: credentials.password,
 
-              KIBANA_URL: environment.kb_url,
+              KIBANA_URL: project.kb_url,
               KIBANA_USERNAME: credentials.username,
               KIBANA_PASSWORD: credentials.password,
 
@@ -418,7 +531,7 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
                 configFile: cypressConfigFilePath,
                 config: {
                   e2e: {
-                    baseUrl: environment.kb_url,
+                    baseUrl: project.kb_url,
                   },
                   env: cyCustomEnv,
                 },
@@ -434,7 +547,7 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
                   headed: argv.headed as boolean,
                   config: {
                     e2e: {
-                      baseUrl: environment.kb_url,
+                      baseUrl: project.kb_url,
                     },
                     numTestsKeptInMemory: 0,
                     env: cyCustomEnv,
@@ -445,9 +558,9 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
               }
             }
 
-            // Delete serverless environment
-            log.info(`${id} : Deleting Environment ${PROJECT_NAME}...`);
-            await deleteEnvironment(environment.id, PROJECT_NAME, API_KEY);
+            // Delete serverless project
+            log.info(`${id} : Deleting project ${PROJECT_NAME}...`);
+            await deleteSecurityProject(project.id, PROJECT_NAME, API_KEY);
 
             return result;
           });
diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json
index 1766051325f5f..4d2b16e355c6c 100644
--- a/x-pack/plugins/security_solution/tsconfig.json
+++ b/x-pack/plugins/security_solution/tsconfig.json
@@ -178,5 +178,6 @@
     "@kbn/unified-doc-viewer-plugin",
     "@kbn/shared-ux-error-boundary",
     "@kbn/zod-helpers",
+    "@kbn/core-http-common",
   ]
 }

From f847de4357c10e2a574517f4260e552176e22f78 Mon Sep 17 00:00:00 2001
From: Maxim Palenov <maxim.palenov@elastic.co>
Date: Mon, 13 Nov 2023 12:12:48 +0100
Subject: [PATCH 121/147] [Security Solution] Refactor create rules FTR tests
 (#170248)

## Summary

This PR reactors some of FTR tests moved to `security_solution_api_integration` folder. Actual files refactored

- `detections_response/default_license/rule_creation/create_rules.ts`
- `detections_response/default_license/actions/add_actions.ts`
- `detections_response/default_license/actions/update_actions.ts` (the last prebuilt rules tests require additional changes)

## Details/Why refactoring?

Refactoring solves the following problems

- create rule params objects via similar helpers used in Cypress tests (`getCustomQueryRuleParams()`, `getThresholdRuleParams()` and etc)
- use `expect` from `expect` package instead of `@kbn/expect` as it provides `expect.objectContaining()`, `expect.any(...)` and etc utilities makings tests focusing on the changes and avoid matching the whole object making the test too sensitive to any changes
- get rid of `esArchiver.load()` commands restoring archive `dumps` which aren't not supported in MKI env and making tests more obscure
- simplify some utility functions as having `if` in tests is an anti-pattern
---
 .../default_license/actions/add_actions.ts    | 162 ++--
 .../default_license/actions/update_actions.ts | 298 ++++---
 .../workflows/create_rule_exceptions.ts       |   6 +-
 .../role_based_rule_exceptions_workflows.ts   |  62 +-
 .../rule_creation/create_rules.ts             | 810 +++++++++---------
 .../utils/actions/create_new_action.ts        |  31 +-
 .../utils/actions/index.ts                    |   1 -
 .../utils/actions/remove_uuid_from_actions.ts |  14 -
 .../rules/{get_rule.ts => fetch_rule.ts}      |  31 +-
 .../utils/rules/generate_event.ts             |  17 +
 ...r_alert_testing_with_timestamp_override.ts |  27 -
 .../get_custom_query_rule_params.ts           |  35 +
 .../get_rule_params/get_ml_rule_params.ts     |  26 +
 .../get_saved_query_rule_params.ts            |  27 +
 .../get_threshold_rule_params.ts              |  30 +
 .../utils/rules/get_rule_params/index.ts      |  11 +
 .../utils/rules/get_rule_params/types.ts      |   8 +
 .../utils/rules/get_simple_ml_rule.ts         |  25 -
 .../utils/rules/get_simple_ml_rule_output.ts  |  25 -
 .../utils/rules/get_simple_rule.ts            |   3 +
 .../get_simple_rule_output_without_rule_id.ts |  21 -
 .../rules/get_simple_rule_without_rule_id.ts  |  19 -
 .../detections_response/utils/rules/index.ts  |  11 +-
 ..._generated_properties_including_rule_id.ts |  23 -
 .../detections_response/utils/rules/types.ts  |  19 +
 .../utils/rules/update_rule.ts                |  27 +-
 26 files changed, 922 insertions(+), 847 deletions(-)
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/remove_uuid_from_actions.ts
 rename x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/{get_rule.ts => fetch_rule.ts} (52%)
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/generate_event.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_for_alert_testing_with_timestamp_override.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_custom_query_rule_params.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_ml_rule_params.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_saved_query_rule_params.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_threshold_rule_params.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/index.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/types.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule_output.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_output_without_rule_id.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_without_rule_id.ts
 delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/remove_server_generated_properties_including_rule_id.ts
 create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/types.ts

diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/add_actions.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/add_actions.ts
index 257378f7442b9..8046eb89e0a28 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/add_actions.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/add_actions.ts
@@ -5,108 +5,134 @@
  * 2.0.
  */
 
-import expect from '@kbn/expect';
+import expect from 'expect';
 
-import { RuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants';
 import {
-  createAlertsIndex,
   deleteAllRules,
-  removeServerGeneratedProperties,
-  getWebHookAction,
-  getRuleWithWebHookAction,
-  getSimpleRuleOutputWithWebHookAction,
   waitForRuleSuccess,
-  createRule,
   deleteAllAlerts,
-  updateUsername,
+  getCustomQueryRuleParams,
+  createWebHookRuleAction,
+  fetchRule,
 } from '../../utils';
 import { FtrProviderContext } from '../../../../ftr_provider_context';
-import { EsArchivePathBuilder } from '../../../../es_archive_path_builder';
 
 export default ({ getService }: FtrProviderContext) => {
   const supertest = getService('supertest');
-  const esArchiver = getService('esArchiver');
   const log = getService('log');
   const es = getService('es');
-  // TODO: add a new service
-  const config = getService('config');
-  const ELASTICSEARCH_USERNAME = config.get('servers.kibana.username');
-  const isServerless = config.get('serverless');
-  const dataPathBuilder = new EsArchivePathBuilder(isServerless);
-  const path = dataPathBuilder.getPath('auditbeat/hosts');
 
   describe('@serverless @ess add_actions', () => {
     describe('adding actions', () => {
-      before(async () => {
-        await esArchiver.load(path);
-      });
-
-      after(async () => {
-        await esArchiver.unload(path);
-      });
-
       beforeEach(async () => {
-        await createAlertsIndex(supertest, log);
-      });
-
-      afterEach(async () => {
+        await es.indices.delete({ index: 'logs-test', ignore_unavailable: true });
+        await es.indices.create({
+          index: 'logs-test',
+          mappings: {
+            properties: {
+              '@timestamp': {
+                type: 'date',
+              },
+            },
+          },
+        });
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
       });
 
-      it('should be able to create a new webhook action and attach it to a rule', async () => {
-        // create a new action
-        const { body: hookAction } = await supertest
-          .post('/api/actions/action')
+      it('creates rule with a new webhook action', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
+        };
+
+        const { body } = await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
           .set('kbn-xsrf', 'true')
-          .set('x-elastic-internal-origin', 'foo')
-          .send(getWebHookAction())
+          .set('elastic-api-version', '2023-10-31')
+          .send(
+            getCustomQueryRuleParams({
+              actions: [ruleAction],
+            })
+          )
           .expect(200);
 
-        const rule = await createRule(supertest, log, getRuleWithWebHookAction(hookAction.id));
-        const bodyToCompare = removeServerGeneratedProperties(rule);
-        const expected = getSimpleRuleOutputWithWebHookAction(
-          `${bodyToCompare?.actions?.[0].id}`,
-          `${bodyToCompare?.actions?.[0].uuid}`
-        );
-        const expectedRuleWithUserUpdated = updateUsername(expected, ELASTICSEARCH_USERNAME);
-        expect(bodyToCompare).to.eql(expectedRuleWithUserUpdated);
+        expect(body.actions).toEqual([expect.objectContaining(ruleAction)]);
       });
 
-      it('should be able to create a new webhook action and attach it to a rule without a meta field and run it correctly', async () => {
-        // create a new action
-        const { body: hookAction } = await supertest
-          .post('/api/actions/action')
+      it('expects rule with a webhook action runs successfully', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        const {
+          body: { id },
+        } = await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
           .set('kbn-xsrf', 'true')
-          .set('x-elastic-internal-origin', 'foo')
-          .send(getWebHookAction())
+          .set('elastic-api-version', '2023-10-31')
+          .send(
+            getCustomQueryRuleParams({
+              index: ['logs-test'],
+              actions: [
+                {
+                  group: 'default',
+                  id: webhookAction.id,
+                  params: {
+                    body: '{}',
+                  },
+                  action_type_id: '.webhook',
+                },
+              ],
+              enabled: true,
+            })
+          )
           .expect(200);
 
-        const rule = await createRule(
-          supertest,
-          log,
-          getRuleWithWebHookAction(hookAction.id, true)
-        );
-        await waitForRuleSuccess({ supertest, log, id: rule.id });
+        await waitForRuleSuccess({ supertest, log, id });
+
+        const rule = await fetchRule(supertest, { id });
+
+        expect(rule?.execution_summary?.last_execution?.status).toBe('succeeded');
       });
 
-      it('should be able to create a new webhook action and attach it to a rule with a meta field and run it correctly', async () => {
-        // create a new action
-        const { body: hookAction } = await supertest
-          .post('/api/actions/action')
+      it('expects rule with a webhook action and meta field runs successfully', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        const {
+          body: { id },
+        } = await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
           .set('kbn-xsrf', 'true')
-          .set('x-elastic-internal-origin', 'foo')
-          .send(getWebHookAction())
+          .set('elastic-api-version', '2023-10-31')
+          .send(
+            getCustomQueryRuleParams({
+              index: ['logs-test'],
+              actions: [
+                {
+                  group: 'default',
+                  id: webhookAction.id,
+                  params: {
+                    body: '{}',
+                  },
+                  action_type_id: '.webhook',
+                },
+              ],
+              meta: {},
+              enabled: true,
+            })
+          )
           .expect(200);
 
-        // create a rule with the action attached and a meta field
-        const ruleWithAction: RuleCreateProps = {
-          ...getRuleWithWebHookAction(hookAction.id, true),
-          meta: {},
-        };
+        await waitForRuleSuccess({ supertest, log, id });
+
+        const rule = await fetchRule(supertest, { id });
 
-        const rule = await createRule(supertest, log, ruleWithAction);
-        await waitForRuleSuccess({ supertest, log, id: rule.id });
+        expect(rule?.execution_summary?.last_execution?.status).toBe('succeeded');
       });
     });
   });
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/update_actions.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/update_actions.ts
index f56d949eadd38..333e76550a740 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/update_actions.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/actions/update_actions.ts
@@ -5,205 +5,245 @@
  * 2.0.
  */
 
-import expect from '@kbn/expect';
-import { omit } from 'lodash';
+import expect from 'expect';
 
-import { RuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
 import { ELASTIC_SECURITY_RULE_ID } from '@kbn/security-solution-plugin/common';
+import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants';
 import {
-  createAlertsIndex,
   deleteAllRules,
   deleteAllAlerts,
-  removeServerGeneratedProperties,
   getRuleWithWebHookAction,
-  getSimpleRuleOutputWithWebHookAction,
   waitForRuleSuccess,
-  createRule,
-  getSimpleRule,
   updateRule,
   installMockPrebuiltRules,
-  getRule,
-  createNewAction,
+  fetchRule,
+  createWebHookRuleAction,
   findImmutableRuleById,
-  getPrebuiltRulesAndTimelinesStatus,
-  getSimpleRuleOutput,
   ruleToUpdateSchema,
-  updateUsername,
+  getCustomQueryRuleParams,
+  getPrebuiltRulesAndTimelinesStatus,
 } from '../../utils';
 import { FtrProviderContext } from '../../../../ftr_provider_context';
-import { EsArchivePathBuilder } from '../../../../es_archive_path_builder';
 
 export default ({ getService }: FtrProviderContext) => {
   const es = getService('es');
   const supertest = getService('supertest');
-  const esArchiver = getService('esArchiver');
   const log = getService('log');
-  // TODO: add a new service
-  const config = getService('config');
-  const ELASTICSEARCH_USERNAME = config.get('servers.kibana.username');
-  const isServerless = config.get('serverless');
-  const dataPathBuilder = new EsArchivePathBuilder(isServerless);
-  const path = dataPathBuilder.getPath('auditbeat/hosts');
 
   const getImmutableRule = async () => {
     await installMockPrebuiltRules(supertest, es);
-    return getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+    return fetchRule(supertest, { ruleId: ELASTIC_SECURITY_RULE_ID });
   };
 
   describe('@serverless @ess update_actions', () => {
     describe('updating actions', () => {
-      before(async () => {
-        await esArchiver.load(path);
-      });
-
-      after(async () => {
-        await esArchiver.unload(path);
-      });
-
       beforeEach(async () => {
-        await createAlertsIndex(supertest, log);
-      });
-
-      afterEach(async () => {
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
       });
 
-      it('should be able to create a new webhook action and update a rule with the webhook action', async () => {
-        const hookAction = await createNewAction(supertest, log);
-        const rule = getSimpleRule();
-        await createRule(supertest, log, rule);
-        const ruleToUpdate = getRuleWithWebHookAction(hookAction.id, false, rule);
-        const updatedRule = await updateRule(supertest, log, ruleToUpdate);
-        const bodyToCompare = removeServerGeneratedProperties(updatedRule);
-
-        const expectedRule = {
-          ...getSimpleRuleOutputWithWebHookAction(
-            `${bodyToCompare.actions?.[0].id}`,
-            `${bodyToCompare.actions?.[0].uuid}`
-          ),
-          revision: 1, // revision bump is required since this is an updated rule and this is part of the testing that we do bump the revision number on update
+      it('updates rule with a webhook action', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .send(getCustomQueryRuleParams({ rule_id: 'rule-1' }))
+          .expect(200);
+
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
         };
-        const expectedRuleWithUserUpdated = updateUsername(expectedRule, ELASTICSEARCH_USERNAME);
+        const updatedRule = await updateRule(
+          supertest,
+          getCustomQueryRuleParams({
+            rule_id: 'rule-1',
+            actions: [ruleAction],
+          })
+        );
 
-        expect(bodyToCompare).to.eql(expectedRuleWithUserUpdated);
+        expect(updatedRule.actions).toEqual([expect.objectContaining(ruleAction)]);
       });
 
-      it('should be able to add a new webhook action and then remove the action from the rule again', async () => {
-        const hookAction = await createNewAction(supertest, log);
-        const rule = getSimpleRule();
-        await createRule(supertest, log, rule);
-        const ruleToUpdate = getRuleWithWebHookAction(hookAction.id, false, rule);
-        await updateRule(supertest, log, ruleToUpdate);
-        const ruleAfterActionRemoved = await updateRule(supertest, log, rule);
-        const bodyToCompare = removeServerGeneratedProperties(ruleAfterActionRemoved);
-        const expected = {
-          ...getSimpleRuleOutput(),
-          revision: 2, // revision bump is required since this is an updated rule and this is part of the testing that we do bump the revision number on update
-        };
-        const expectedRuleWithUserUpdated = updateUsername(expected, ELASTICSEARCH_USERNAME);
-        expect(bodyToCompare).to.eql(expectedRuleWithUserUpdated);
-      });
+      it('removes webhook from a rule', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .send(
+            getCustomQueryRuleParams({
+              rule_id: 'rule-1',
+              actions: [
+                {
+                  group: 'default',
+                  id: webhookAction.id,
+                  params: {
+                    body: '{}',
+                  },
+                  action_type_id: '.webhook',
+                },
+              ],
+            })
+          )
+          .expect(200);
+
+        const updatedRule = await updateRule(
+          supertest,
+          getCustomQueryRuleParams({
+            rule_id: 'rule-1',
+            actions: undefined,
+          })
+        );
 
-      it('should be able to create a new webhook action and attach it to a rule without a meta field and run it correctly', async () => {
-        const hookAction = await createNewAction(supertest, log);
-        const rule = getSimpleRule();
-        await createRule(supertest, log, rule);
-        const ruleToUpdate = getRuleWithWebHookAction(hookAction.id, true, rule);
-        const updatedRule = await updateRule(supertest, log, ruleToUpdate);
-        await waitForRuleSuccess({ supertest, log, id: updatedRule.id });
+        expect(updatedRule.actions).toEqual([]);
       });
 
-      it('@skipInQA should be able to create a new webhook action and attach it to a rule with a meta field and run it correctly', async () => {
-        const hookAction = await createNewAction(supertest, log);
-        const rule = getSimpleRule();
-        await createRule(supertest, log, rule);
-        const ruleToUpdate: RuleCreateProps = {
-          ...getRuleWithWebHookAction(hookAction.id, true, rule),
-          meta: {}, // create a rule with the action attached and a meta field
+      it('expects an updated rule with a webhook action runs successfully', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .send(getCustomQueryRuleParams({ rule_id: 'rule-1' }))
+          .expect(200);
+
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
         };
-        const updatedRule = await updateRule(supertest, log, ruleToUpdate);
+        const updatedRule = await updateRule(
+          supertest,
+          getCustomQueryRuleParams({
+            rule_id: 'rule-1',
+            actions: [ruleAction],
+            enabled: true,
+          })
+        );
+
         await waitForRuleSuccess({ supertest, log, id: updatedRule.id });
-      });
 
-      it('@skipInQA should not change properties of immutable rule when applying actions to it', async () => {
-        // actions and throttle to be removed from assertion (it asserted in a separate test case)
-        const actionsProps = ['actions', 'throttle'];
+        const { body } = await supertest
+          .get(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .query({ id: updatedRule.id })
+          .expect(200);
 
-        const immutableRule = await getImmutableRule();
-        const hookAction = await createNewAction(supertest, log);
-        const ruleToUpdate = getRuleWithWebHookAction(
-          hookAction.id,
-          immutableRule.enabled,
-          ruleToUpdateSchema(immutableRule)
-        );
-        const updatedRule = await updateRule(supertest, log, ruleToUpdate);
-        const expected = omit(removeServerGeneratedProperties(updatedRule), actionsProps);
+        expect(body?.execution_summary?.last_execution?.status).toBe('succeeded');
+      });
 
-        const immutableRuleToAssert = {
-          ...omit(removeServerGeneratedProperties(immutableRule), actionsProps),
-          revision: 1, // Unlike `version` which is static for immutable rules, `revision` will increment when an action/exception is added
+      it('@skipInQA expects an updated rule with a webhook action and meta field runs successfully', async () => {
+        const webhookAction = await createWebHookRuleAction(supertest);
+
+        await supertest
+          .post(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .send(getCustomQueryRuleParams({ rule_id: 'rule-1' }))
+          .expect(200);
+
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
         };
+        const updatedRule = await updateRule(
+          supertest,
+          getCustomQueryRuleParams({
+            rule_id: 'rule-1',
+            actions: [ruleAction],
+            meta: {},
+            enabled: true,
+          })
+        );
 
-        expect(immutableRuleToAssert).to.eql(expected);
-        expect(expected.immutable).to.be(true); // It should stay immutable true when returning
+        await waitForRuleSuccess({ supertest, log, id: updatedRule.id });
+
+        const { body } = await supertest
+          .get(DETECTION_ENGINE_RULES_URL)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .query({ id: updatedRule.id })
+          .expect(200);
+
+        expect(body?.execution_summary?.last_execution?.status).toBe('succeeded');
       });
 
-      it('@skipInQA should be able to create a new webhook action and attach it to an immutable rule', async () => {
+      it('@skipInQA adds a webhook to an immutable rule', async () => {
         const immutableRule = await getImmutableRule();
-        const hookAction = await createNewAction(supertest, log);
-        const ruleToUpdate = getRuleWithWebHookAction(
-          hookAction.id,
-          immutableRule.enabled,
-          ruleToUpdateSchema(immutableRule)
-        );
-        const updatedRule = await updateRule(supertest, log, ruleToUpdate);
-        const bodyToCompare = removeServerGeneratedProperties(updatedRule);
-
-        const expected = getSimpleRuleOutputWithWebHookAction(
-          `${bodyToCompare.actions?.[0].id}`,
-          `${bodyToCompare.actions?.[0].uuid}`
+        const webhookAction = await createWebHookRuleAction(supertest);
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
+        };
+        const updatedRule = await updateRule(
+          supertest,
+          getCustomQueryRuleParams({
+            rule_id: ELASTIC_SECURITY_RULE_ID,
+            actions: [ruleAction],
+          })
         );
 
-        const expectedRuleWithUserUpdated = updateUsername(expected, ELASTICSEARCH_USERNAME);
-        expect(bodyToCompare.actions).to.eql(expectedRuleWithUserUpdated.actions);
-        expect(bodyToCompare.throttle).to.eql(expectedRuleWithUserUpdated.throttle);
+        expect(updatedRule.actions).toEqual([expect.objectContaining(ruleAction)]);
+        expect(updatedRule.throttle).toEqual(immutableRule.throttle);
       });
 
       it('@skipInQA should be able to create a new webhook action, attach it to an immutable rule and the count of prepackaged rules should not increase. If this fails, suspect the immutable tags are not staying on the rule correctly.', async () => {
         const immutableRule = await getImmutableRule();
-        const hookAction = await createNewAction(supertest, log);
+        const hookAction = await createWebHookRuleAction(supertest);
         const ruleToUpdate = getRuleWithWebHookAction(
           hookAction.id,
           immutableRule.enabled,
           ruleToUpdateSchema(immutableRule)
         );
-        await updateRule(supertest, log, ruleToUpdate);
+        await updateRule(supertest, ruleToUpdate);
 
         const status = await getPrebuiltRulesAndTimelinesStatus(supertest);
-        expect(status.rules_not_installed).to.eql(0);
+        expect(status.rules_not_installed).toBe(0);
       });
 
       it('@skipInQA should be able to create a new webhook action, attach it to an immutable rule and the rule should stay immutable when searching against immutable tags', async () => {
         const immutableRule = await getImmutableRule();
-        const hookAction = await createNewAction(supertest, log);
+        const webhookAction = await createWebHookRuleAction(supertest);
+        const ruleAction = {
+          group: 'default',
+          id: webhookAction.id,
+          params: {
+            body: '{}',
+          },
+          action_type_id: '.webhook',
+        };
         const ruleToUpdate = getRuleWithWebHookAction(
-          hookAction.id,
+          webhookAction.id,
           immutableRule.enabled,
           ruleToUpdateSchema(immutableRule)
         );
-        await updateRule(supertest, log, ruleToUpdate);
+        await updateRule(supertest, ruleToUpdate);
         const body = await findImmutableRuleById(supertest, log, ELASTIC_SECURITY_RULE_ID);
 
-        expect(body.data.length).to.eql(1); // should have only one length to the data set, otherwise we have duplicates or the tags were removed and that is incredibly bad.
-        const bodyToCompare = removeServerGeneratedProperties(body.data[0]);
-        const expected = getSimpleRuleOutputWithWebHookAction(
-          `${bodyToCompare.actions?.[0].id}`,
-          `${bodyToCompare.actions?.[0].uuid}`
-        );
-        const expectedRuleWithUserUpdated = updateUsername(expected, ELASTICSEARCH_USERNAME);
-        expect(bodyToCompare.actions).to.eql(expectedRuleWithUserUpdated.actions);
-        expect(bodyToCompare.immutable).to.be(true);
+        expect(body.data.length).toBe(1); // should have only one length to the data set, otherwise we have duplicates or the tags were removed and that is incredibly bad.
+        expect(body.data[0].actions).toEqual([expect.objectContaining(ruleAction)]);
+        expect(body.data[0].immutable).toBeTruthy();
       });
     });
   });
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/create_rule_exceptions.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/create_rule_exceptions.ts
index 7a4b757c80775..3607cba64151e 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/create_rule_exceptions.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/create_rule_exceptions.ts
@@ -17,7 +17,7 @@ import {
 } from '@kbn/securitysolution-io-ts-list-types';
 import { getCreateExceptionListMinimalSchemaMock } from '@kbn/lists-plugin/common/schemas/request/create_exception_list_schema.mock';
 import {
-  getRule,
+  fetchRule,
   createRule,
   getSimpleRule,
   createAlertsIndex,
@@ -78,7 +78,7 @@ export default ({ getService }: FtrProviderContext) => {
         })
         .expect(200);
 
-      const udpatedRule = await getRule(supertest, log, rule.rule_id);
+      const udpatedRule = await fetchRule(supertest, { ruleId: rule.rule_id });
       const defaultList = udpatedRule.exceptions_list.find((list) => list.type === 'rule_default');
 
       const itemsWithoutServerGeneratedValues = items.map(
@@ -134,7 +134,7 @@ export default ({ getService }: FtrProviderContext) => {
         })
         .expect(200);
 
-      const udpatedRule = await getRule(supertest, log, rule.rule_id);
+      const udpatedRule = await fetchRule(supertest, { ruleId: rule.rule_id });
       const defaultList = udpatedRule.exceptions_list.find((list) => list.type === 'rule_default');
 
       const itemsWithoutServerGeneratedValues = items.map(
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
index fb5c385ab2c7b..1e20d8d52c83a 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
@@ -31,7 +31,7 @@ import { ELASTIC_SECURITY_RULE_ID } from '@kbn/security-solution-plugin/common';
 import { EsArchivePathBuilder } from '../../../../../es_archive_path_builder';
 import {
   createAlertsIndex,
-  getRule,
+  fetchRule,
   createRule,
   getSimpleRule,
   deleteAllRules,
@@ -184,7 +184,9 @@ export default ({ getService }: FtrProviderContext) => {
           await installMockPrebuiltRules(supertest, es);
 
           // This rule has an existing exceptions_list that we are going to use
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one exceptions_list
 
           // remove the exceptions list as a user is allowed to remove it from an immutable rule
@@ -195,7 +197,9 @@ export default ({ getService }: FtrProviderContext) => {
             .send({ rule_id: ELASTIC_SECURITY_RULE_ID, exceptions_list: [] })
             .expect(200);
 
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRuleSecondTime.exceptions_list.length).toEqual(0);
         });
 
@@ -209,7 +213,9 @@ export default ({ getService }: FtrProviderContext) => {
           );
 
           // This rule has an existing exceptions_list that we are going to use
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           // add a second exceptions list as a user is allowed to add a second list to an immutable rule
@@ -231,7 +237,9 @@ export default ({ getService }: FtrProviderContext) => {
             })
             .expect(200);
 
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           expect(immutableRuleSecondTime.exceptions_list.length).toEqual(2);
         });
@@ -240,7 +248,9 @@ export default ({ getService }: FtrProviderContext) => {
           await installMockPrebuiltRules(supertest, es);
 
           // This rule has an existing exceptions_list that we are going to use
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           await supertest
@@ -252,7 +262,9 @@ export default ({ getService }: FtrProviderContext) => {
 
           await downgradeImmutableRule(es, log, ELASTIC_SECURITY_RULE_ID);
           await installMockPrebuiltRules(supertest, es);
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           // We should have a length of 1 and it should be the same as our original before we tried to remove it using patch
           expect(immutableRuleSecondTime.exceptions_list.length).toEqual(1);
@@ -269,7 +281,9 @@ export default ({ getService }: FtrProviderContext) => {
           );
 
           // This rule has an existing exceptions_list that we are going to ensure does not stomp on our existing rule
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           // remove the exception list and only have a single list that is not an endpoint_list
@@ -292,7 +306,9 @@ export default ({ getService }: FtrProviderContext) => {
 
           await downgradeImmutableRule(es, log, ELASTIC_SECURITY_RULE_ID);
           await installMockPrebuiltRules(supertest, es);
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           expect(immutableRuleSecondTime.exceptions_list).toEqual([
             ...immutableRule.exceptions_list,
@@ -309,13 +325,17 @@ export default ({ getService }: FtrProviderContext) => {
           await installMockPrebuiltRules(supertest, es);
 
           // This rule has an existing exceptions_list that we are going to ensure does not stomp on our existing rule
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           await downgradeImmutableRule(es, log, ELASTIC_SECURITY_RULE_ID);
           await installMockPrebuiltRules(supertest, es);
 
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           // The installed rule should have both the original immutable exceptions list back and the
           // new list the user added.
@@ -334,7 +354,9 @@ export default ({ getService }: FtrProviderContext) => {
           );
 
           // This rule has an existing exceptions_list that we are going to ensure does not stomp on our existing rule
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           // add a second exceptions list as a user is allowed to add a second list to an immutable rule
           await supertest
@@ -357,7 +379,9 @@ export default ({ getService }: FtrProviderContext) => {
 
           await downgradeImmutableRule(es, log, ELASTIC_SECURITY_RULE_ID);
           await installMockPrebuiltRules(supertest, es);
-          const immutableRuleSecondTime = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRuleSecondTime = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
 
           // It should be the same as what the user added originally
           expect(immutableRuleSecondTime.exceptions_list).toEqual([
@@ -390,7 +414,7 @@ export default ({ getService }: FtrProviderContext) => {
             throw new Error('Cannot find a rule without exceptions_list in the sample data');
           }
 
-          const immutableRule = await getRule(supertest, log, ruleId);
+          const immutableRule = await fetchRule(supertest, { ruleId });
           expect(immutableRule.exceptions_list.length).toEqual(0); // make sure we have no exceptions_list
 
           // add a second exceptions list as a user is allowed to add a second list to an immutable rule
@@ -413,7 +437,7 @@ export default ({ getService }: FtrProviderContext) => {
 
           await downgradeImmutableRule(es, log, ruleId);
           await installMockPrebuiltRules(supertest, es);
-          const immutableRuleSecondTime = await getRule(supertest, log, ruleId);
+          const immutableRuleSecondTime = await fetchRule(supertest, { ruleId });
 
           expect(immutableRuleSecondTime.exceptions_list).toEqual([
             {
@@ -435,7 +459,9 @@ export default ({ getService }: FtrProviderContext) => {
           );
 
           // This rule has an existing exceptions_list that we are going to use
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           // add a second exceptions list as a user is allowed to add a second list to an immutable rule
@@ -476,7 +502,9 @@ export default ({ getService }: FtrProviderContext) => {
           );
 
           // This rule has an existing exceptions_list that we are going to use
-          const immutableRule = await getRule(supertest, log, ELASTIC_SECURITY_RULE_ID);
+          const immutableRule = await fetchRule(supertest, {
+            ruleId: ELASTIC_SECURITY_RULE_ID,
+          });
           expect(immutableRule.exceptions_list.length).toBeGreaterThan(0); // make sure we have at least one
 
           // add a second exceptions list as a user is allowed to add a second list to an immutable rule
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
index 5ace976f1f4fc..a887f07cb2cfe 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/rule_creation/create_rules.ts
@@ -5,7 +5,8 @@
  * 2.0.
  */
 
-import expect from '@kbn/expect';
+import { omit } from 'lodash';
+import expect from 'expect';
 
 import {
   DETECTION_ENGINE_RULES_URL,
@@ -13,45 +14,33 @@ import {
   NOTIFICATION_THROTTLE_NO_ACTIONS,
   NOTIFICATION_THROTTLE_RULE,
 } from '@kbn/security-solution-plugin/common/constants';
-import { RuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
 import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types';
 import { ROLES } from '@kbn/security-solution-plugin/common/test';
 
 import { FtrProviderContext } from '../../../../ftr_provider_context';
 import {
-  createAlertsIndex,
   deleteAllRules,
-  getSimpleRule,
-  getSimpleRuleOutput,
-  getSimpleRuleOutputWithoutRuleId,
-  getSimpleRuleWithoutRuleId,
-  removeServerGeneratedProperties,
-  removeServerGeneratedPropertiesIncludingRuleId,
-  getSimpleMlRule,
-  getSimpleMlRuleOutput,
   waitForRuleSuccess,
-  getRuleForAlertTesting,
-  getRuleForAlertTestingWithTimestampOverride,
   waitForAlertToComplete,
   waitForAlertsToBePresent,
-  getThresholdRuleForAlertTesting,
   waitForRulePartialFailure,
-  createRule,
   deleteAllAlerts,
-  removeUUIDFromActions,
   getActionsWithFrequencies,
   getActionsWithoutFrequencies,
   getSomeActionsWithFrequencies,
-  updateUsername,
+  getCustomQueryRuleParams,
+  getSavedQueryRuleParams,
+  getMLRuleParams,
+  getThresholdRuleParams,
+  generateEvent,
+  fetchRule,
 } from '../../utils';
 import {
   createUserAndRole,
   deleteUserAndRole,
 } from '../../../../../common/services/security_solution';
-import { EsArchivePathBuilder } from '../../../../es_archive_path_builder';
 
 export default ({ getService }: FtrProviderContext) => {
-  const esArchiver = getService('esArchiver');
   const supertest = getService('supertest');
   const supertestWithoutAuth = getService('supertestWithoutAuth');
   const log = getService('log');
@@ -59,60 +48,67 @@ export default ({ getService }: FtrProviderContext) => {
   // TODO: add a new service
   const config = getService('config');
   const ELASTICSEARCH_USERNAME = config.get('servers.kibana.username');
-  const isServerless = config.get('serverless');
-  const dataPathBuilder = new EsArchivePathBuilder(isServerless);
-  const path = dataPathBuilder.getPath('auditbeat/hosts');
 
   describe('@serverless @ess create_rules', () => {
-    describe('creating rules', () => {
+    describe('rule creation', () => {
       before(async () => {
-        await esArchiver.load(path);
-      });
-
-      after(async () => {
-        await esArchiver.unload(path);
+        await es.indices.delete({ index: 'logs-test', ignore_unavailable: true });
+        await es.indices.create({
+          index: 'logs-test',
+          mappings: {
+            properties: {
+              '@timestamp': {
+                type: 'date',
+              },
+            },
+          },
+        });
       });
 
       beforeEach(async () => {
-        await createAlertsIndex(supertest, log);
-      });
-
-      afterEach(async () => {
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
       });
 
-      describe('saved query', () => {
-        it('should create a saved query rule and query a data view', async () => {
-          const savedQueryRule = {
-            ...getSimpleRule(),
-            data_view_id: 'my-data-view',
-            type: 'saved_query',
-            saved_id: 'my-saved-query-id',
-          };
+      describe('elastic admin', () => {
+        it('creates a custom query rule', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(savedQueryRule)
+            .send(getCustomQueryRuleParams())
             .expect(200);
 
-          expect(body.data_view_id).to.eql('my-data-view');
+          expect(body).toEqual(
+            expect.objectContaining({
+              ...getCustomQueryRuleParams(),
+              created_by: ELASTICSEARCH_USERNAME,
+              updated_by: ELASTICSEARCH_USERNAME,
+            })
+          );
         });
-      });
 
-      describe('elastic admin', () => {
-        it('should create a single rule with a rule_id', async () => {
+        it('creates a saved query rule', async () => {
+          const savedQueryRuleParams = getSavedQueryRuleParams({
+            data_view_id: 'my-data-view',
+            type: 'saved_query',
+            saved_id: 'my-saved-query-id',
+          });
+
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleRule())
+            .send(savedQueryRuleParams)
             .expect(200);
 
-          const bodyToCompare = removeServerGeneratedProperties(body);
-          const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-          expect(bodyToCompare).to.eql(expectedRule);
+          expect(body).toEqual(
+            expect.objectContaining({
+              ...savedQueryRuleParams,
+              created_by: ELASTICSEARCH_USERNAME,
+              updated_by: ELASTICSEARCH_USERNAME,
+            })
+          );
         });
 
         /*
@@ -134,183 +130,149 @@ export default ({ getService }: FtrProviderContext) => {
          This adds an e2e test for the backend to catch that in case
          this pops up again elsewhere.
         */
-        it('should create a single rule with a rule_id and validate it ran successfully', async () => {
-          const rule = {
-            ...getRuleForAlertTesting(['auditbeat-*']),
-            query: 'process.executable: "/usr/bin/sudo"',
-          };
-          const { body } = await supertest
+        it('expects rule runs successfully', async () => {
+          const {
+            body: { id },
+          } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(getCustomQueryRuleParams({ enabled: true }))
             .expect(200);
 
-          await waitForRuleSuccess({ supertest, log, id: body.id });
+          await waitForRuleSuccess({ supertest, log, id });
+
+          const rule = await fetchRule(supertest, { id });
+
+          expect(rule?.execution_summary?.last_execution?.status).toBe('succeeded');
         });
 
-        it('should create a single rule with a rule_id and an index pattern that does not match anything available and partial failure for the rule', async () => {
-          const simpleRule = getRuleForAlertTesting(['does-not-exist-*']);
-          const { body } = await supertest
+        it('expects rule partial failure due to index pattern matching nothing', async () => {
+          const {
+            body: { id },
+          } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(simpleRule)
+            .send(
+              getCustomQueryRuleParams({
+                index: ['does-not-exist-*'],
+                enabled: true,
+              })
+            )
             .expect(200);
 
           await waitForRulePartialFailure({
             supertest,
             log,
-            id: body.id,
+            id,
           });
 
-          const { body: rule } = await supertest
-            .get(DETECTION_ENGINE_RULES_URL)
-            .set('kbn-xsrf', 'true')
-            .set('elastic-api-version', '2023-10-31')
-            .query({ id: body.id })
-            .expect(200);
+          const rule = await fetchRule(supertest, { id });
 
-          // TODO: https://github.com/elastic/kibana/pull/121644 clean up, make type-safe
-          expect(rule?.execution_summary?.last_execution.status).to.eql('partial failure');
-          expect(rule?.execution_summary?.last_execution.message).to.eql(
+          expect(rule?.execution_summary?.last_execution.status).toBe('partial failure');
+          expect(rule?.execution_summary?.last_execution.message).toBe(
             'This rule is attempting to query data from Elasticsearch indices listed in the "Index patterns" section of the rule definition, however no index matching: ["does-not-exist-*"] was found. This warning will continue to appear until a matching index is created or this rule is disabled.'
           );
         });
 
-        it('should create a single rule with a rule_id and an index pattern that does not match anything and an index pattern that does and the rule should be successful', async () => {
-          const rule = {
-            ...getRuleForAlertTesting(['does-not-exist-*', 'auditbeat-*']),
-            query: 'process.executable: "/usr/bin/sudo"',
-          };
-          const { body } = await supertest
+        it('expects rule runs successfully with only one index pattern matching existing index', async () => {
+          const {
+            body: { id },
+          } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(
+              getCustomQueryRuleParams({
+                index: ['does-not-exist-*', 'logs-test'],
+                enabled: true,
+              })
+            )
             .expect(200);
 
-          await waitForRuleSuccess({ supertest, log, id: body.id });
+          await waitForRuleSuccess({ supertest, log, id });
+
+          const rule = await fetchRule(supertest, { id });
+
+          expect(rule?.execution_summary?.last_execution?.status).toBe('succeeded');
         });
 
-        it('should create a single rule without an input index', async () => {
-          const rule: RuleCreateProps = {
-            name: 'Simple Rule Query',
-            description: 'Simple Rule Query',
-            enabled: true,
-            risk_score: 1,
-            rule_id: 'rule-1',
-            severity: 'high',
-            type: 'query',
-            query: 'user.name: root or user.name: admin',
-          };
-          const expected = {
-            actions: [],
-            author: [],
-            created_by: ELASTICSEARCH_USERNAME,
-            description: 'Simple Rule Query',
-            enabled: true,
-            false_positives: [],
-            from: 'now-6m',
-            immutable: false,
-            interval: '5m',
-            rule_id: 'rule-1',
-            language: 'kuery',
-            output_index: '',
-            max_signals: 100,
-            risk_score: 1,
-            risk_score_mapping: [],
-            name: 'Simple Rule Query',
-            query: 'user.name: root or user.name: admin',
-            references: [],
-            related_integrations: [],
-            required_fields: [],
-            revision: 0,
-            setup: '',
-            severity: 'high',
-            severity_mapping: [],
-            updated_by: ELASTICSEARCH_USERNAME,
-            tags: [],
-            to: 'now',
-            type: 'query',
-            threat: [],
-            exceptions_list: [],
-            version: 1,
-          };
+        it('creates a rule without an input index', async () => {
+          const ruleParams = getCustomQueryRuleParams({
+            index: undefined,
+          });
 
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(ruleParams)
             .expect(200);
 
-          const bodyToCompare = removeServerGeneratedProperties(body);
-          expect(bodyToCompare).to.eql(expected);
+          expect(body.index).toBeUndefined();
+          expect(body).toEqual(expect.objectContaining(omit(ruleParams, 'index')));
         });
 
-        it('should create a single rule without a rule_id', async () => {
+        it('creates a custom query rule without rule_id specified', async () => {
+          const ruleParams = getCustomQueryRuleParams({
+            rule_id: undefined,
+          });
+
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleRuleWithoutRuleId())
+            .send(ruleParams)
             .expect(200);
 
-          const bodyToCompare = removeServerGeneratedPropertiesIncludingRuleId(body);
-          const expectedRule = updateUsername(
-            getSimpleRuleOutputWithoutRuleId(),
-            ELASTICSEARCH_USERNAME
+          expect(body).toEqual(
+            expect.objectContaining({ ...ruleParams, rule_id: expect.any(String) })
           );
-          expect(bodyToCompare).to.eql(expectedRule);
         });
 
-        it('creates a single Machine Learning rule from a legacy ML Rule format', async () => {
-          const legacyMlRule = {
-            ...getSimpleMlRule(),
-            machine_learning_job_id: 'some_job_id',
-          };
+        it('creates a ML rule with legacy machine_learning_job_id', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(legacyMlRule)
+            .send(getMLRuleParams({ machine_learning_job_id: 'some_job_id' }))
             .expect(200);
 
-          const bodyToCompare = removeServerGeneratedProperties(body);
-          const expectedRule = updateUsername(getSimpleMlRuleOutput(), ELASTICSEARCH_USERNAME);
-          expect(bodyToCompare).to.eql(expectedRule);
+          expect(body).toEqual(
+            expect.objectContaining(getMLRuleParams({ machine_learning_job_id: ['some_job_id'] }))
+          );
         });
 
-        it('should create a single Machine Learning rule', async () => {
+        it('creates a ML rule', async () => {
+          const ruleParams = getMLRuleParams({ machine_learning_job_id: ['some_job_id'] });
+
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleMlRule())
+            .send(ruleParams)
             .expect(200);
 
-          const bodyToCompare = removeServerGeneratedProperties(body);
-          const expectedRule = updateUsername(getSimpleMlRuleOutput(), ELASTICSEARCH_USERNAME);
-          expect(bodyToCompare).to.eql(expectedRule);
+          expect(body).toEqual(expect.objectContaining(ruleParams));
         });
 
-        it('should cause a 409 conflict if we attempt to create the same rule_id twice', async () => {
+        it('causes a 409 conflict if the same rule_id is used twice', async () => {
           await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleRule())
+            .send(getCustomQueryRuleParams({ rule_id: 'rule-1' }))
             .expect(200);
 
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleRule())
+            .send(getCustomQueryRuleParams({ rule_id: 'rule-1' }))
             .expect(409);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             message: 'rule_id: "rule-1" already exists',
             status_code: 409,
           });
@@ -318,117 +280,119 @@ export default ({ getService }: FtrProviderContext) => {
       });
 
       describe('exception', () => {
-        it('should not create a rule if trying to add more than one default rule exception list', async () => {
-          const rule: RuleCreateProps = {
-            name: 'Simple Rule Query',
-            description: 'Simple Rule Query',
-            enabled: true,
-            risk_score: 1,
-            rule_id: 'rule-1',
-            severity: 'high',
-            type: 'query',
-            query: 'user.name: root or user.name: admin',
-            exceptions_list: [
-              {
-                id: '2',
-                list_id: '123',
-                namespace_type: 'single',
-                type: ExceptionListTypeEnum.RULE_DEFAULT,
-              },
-              {
-                id: '1',
-                list_id: '456',
-                namespace_type: 'single',
-                type: ExceptionListTypeEnum.RULE_DEFAULT,
-              },
-            ],
-          };
-
+        it('does NOT create a rule if trying to add more than one default rule exception list', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(
+              getCustomQueryRuleParams({
+                exceptions_list: [
+                  {
+                    id: '2',
+                    list_id: '123',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.RULE_DEFAULT,
+                  },
+                  {
+                    id: '1',
+                    list_id: '456',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.RULE_DEFAULT,
+                  },
+                ],
+              })
+            )
             .expect(500);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             message: 'More than one default exception list found on rule',
             status_code: 500,
           });
         });
 
-        it('should not create a rule if trying to add default rule exception list which attached to another', async () => {
-          const rule: RuleCreateProps = {
-            name: 'Simple Rule Query',
-            description: 'Simple Rule Query',
-            enabled: true,
-            risk_score: 1,
-            rule_id: 'rule-1',
-            severity: 'high',
-            type: 'query',
-            query: 'user.name: root or user.name: admin',
-            exceptions_list: [
-              {
-                id: '2',
-                list_id: '123',
-                namespace_type: 'single',
-                type: ExceptionListTypeEnum.RULE_DEFAULT,
-              },
-            ],
-          };
-
+        it('does NOT create a rule when there is an attempt to share non sharable exception ("rule_default" type)', async () => {
           const { body: ruleWithException } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(
+              getCustomQueryRuleParams({
+                rule_id: 'rule-1',
+                exceptions_list: [
+                  {
+                    id: '2',
+                    list_id: '123',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.RULE_DEFAULT,
+                  },
+                ],
+              })
+            )
             .expect(200);
 
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send({ ...rule, rule_id: 'rule-2' })
+            .send(
+              getCustomQueryRuleParams({
+                rule_id: 'rule-2',
+                exceptions_list: [
+                  {
+                    id: '2',
+                    list_id: '123',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.RULE_DEFAULT,
+                  },
+                ],
+              })
+            )
             .expect(409);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             message: `default exception list already exists in rule(s): ${ruleWithException.id}`,
             status_code: 409,
           });
         });
 
-        it('allow to create a rule if trying to add shared rule exception list which attached to another', async () => {
-          const rule: RuleCreateProps = {
-            name: 'Simple Rule Query',
-            description: 'Simple Rule Query',
-            enabled: true,
-            risk_score: 1,
-            rule_id: 'rule-1',
-            severity: 'high',
-            type: 'query',
-            query: 'user.name: root or user.name: admin',
-            exceptions_list: [
-              {
-                id: '2',
-                list_id: '123',
-                namespace_type: 'single',
-                type: ExceptionListTypeEnum.DETECTION,
-              },
-            ],
-          };
-
+        it('creates a rule when shared exception type is used ("detection" type)', async () => {
           await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(
+              getCustomQueryRuleParams({
+                rule_id: 'rule-1',
+                exceptions_list: [
+                  {
+                    id: '2',
+                    list_id: '123',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.DETECTION,
+                  },
+                ],
+              })
+            )
             .expect(200);
 
           await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send({ ...rule, rule_id: 'rule-2' })
+            .send(
+              getCustomQueryRuleParams({
+                rule_id: 'rule-2',
+                exceptions_list: [
+                  {
+                    id: '2',
+                    list_id: '123',
+                    namespace_type: 'single',
+                    type: ExceptionListTypeEnum.DETECTION,
+                  },
+                ],
+              })
+            )
             .expect(200);
         });
       });
@@ -450,22 +414,22 @@ export default ({ getService }: FtrProviderContext) => {
             .auth(role, 'changeme')
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(getSimpleRule())
+            .send(getCustomQueryRuleParams())
             .expect(403);
         });
       });
 
       describe('threshold validation', () => {
-        it('should result in 400 error if no threshold-specific fields are provided', async () => {
-          const { threshold, ...rule } = getThresholdRuleForAlertTesting(['*']);
+        it('returns HTTP 400 error when NO threshold field is provided', async () => {
+          const ruleParams = getThresholdRuleParams();
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(omit(ruleParams, 'threshold'))
             .expect(400);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             error: 'Bad Request',
             message:
               '[request body]: type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "query", type: Invalid literal value, expected "saved_query", saved_id: Required, and 14 more',
@@ -473,70 +437,71 @@ export default ({ getService }: FtrProviderContext) => {
           });
         });
 
-        it('should result in 400 error if more than 3 threshold fields', async () => {
-          const rule = getThresholdRuleForAlertTesting(['*']);
+        it('returns HTTP 400 error when there are more than 3 threshold fields provided', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send({
-              ...rule,
-              threshold: {
-                ...rule.threshold,
-                field: ['field-1', 'field-2', 'field-3', 'field-4'],
-              },
-            })
+            .send(
+              getThresholdRuleParams({
+                threshold: {
+                  field: ['field-1', 'field-2', 'field-3', 'field-4'],
+                  value: 1,
+                },
+              })
+            )
             .expect(400);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             message: ['Number of fields must be 3 or less'],
             status_code: 400,
           });
         });
 
-        it('should result in 400 error if threshold value is less than 1', async () => {
-          const rule = getThresholdRuleForAlertTesting(['*']);
+        it('returns HTTP 400 error when threshold value is less than 1', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send({
-              ...rule,
-              threshold: {
-                ...rule.threshold,
-                value: 0,
-              },
-            })
+            .send(
+              getThresholdRuleParams({
+                threshold: {
+                  field: ['field-1'],
+                  value: 0,
+                },
+              })
+            )
             .expect(400);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             error: 'Bad Request',
             message: '[request body]: threshold.value: Number must be greater than or equal to 1',
             statusCode: 400,
           });
         });
 
-        it('should result in 400 error if cardinality is also an agg field', async () => {
-          const rule = getThresholdRuleForAlertTesting(['*']);
+        it('returns HTTP 400 error when cardinality is also an agg field', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send({
-              ...rule,
-              threshold: {
-                ...rule.threshold,
-                cardinality: [
-                  {
-                    field: 'process.name',
-                    value: 5,
-                  },
-                ],
-              },
-            })
+            .send(
+              getThresholdRuleParams({
+                threshold: {
+                  field: ['process.name'],
+                  value: 1,
+                  cardinality: [
+                    {
+                      field: 'process.name',
+                      value: 5,
+                    },
+                  ],
+                },
+              })
+            )
             .expect(400);
 
-          expect(body).to.eql({
+          expect(body).toEqual({
             message: ['Cardinality of a field that is being aggregated on is always 1'],
             status_code: 400,
           });
@@ -544,38 +509,38 @@ export default ({ getService }: FtrProviderContext) => {
       });
 
       describe('investigation_fields', () => {
-        it('should create a rule with investigation_fields', async () => {
-          const rule = {
-            ...getSimpleRule(),
-            investigation_fields: {
-              field_names: ['host.name'],
-            },
-          };
+        it('creates a rule with investigation_fields', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send(
+              getCustomQueryRuleParams({
+                investigation_fields: {
+                  field_names: ['host.name'],
+                },
+              })
+            )
             .expect(200);
 
-          expect(body.investigation_fields).to.eql({
+          expect(body.investigation_fields).toEqual({
             field_names: ['host.name'],
           });
         });
 
-        it('should NOT create a rule with legacy investigation_fields', async () => {
-          const rule = {
-            ...getSimpleRule(),
-            investigation_fields: ['host.name'],
-          };
+        it('does NOT create a rule with legacy investigation_fields', async () => {
           const { body } = await supertest
             .post(DETECTION_ENGINE_RULES_URL)
             .set('kbn-xsrf', 'true')
             .set('elastic-api-version', '2023-10-31')
-            .send(rule)
+            .send({
+              ...getCustomQueryRuleParams(),
+              // type system doesn't allow to use the legacy format as params for getCustomQueryRuleParams()
+              investigation_fields: ['host.name'],
+            })
             .expect(400);
 
-          expect(body.message).to.eql(
+          expect(body.message).toBe(
             '[request body]: investigation_fields: Expected object, received array, type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", investigation_fields: Expected object, received array, investigation_fields: Expected object, received array, and 22 more'
           );
         });
@@ -584,135 +549,141 @@ export default ({ getService }: FtrProviderContext) => {
 
     describe('@brokenInServerless missing timestamps', () => {
       beforeEach(async () => {
-        await createAlertsIndex(supertest, log);
-        // to edit these files run the following script
-        // cd $HOME/kibana/x-pack && nvm use && node ../scripts/es_archiver edit security_solution/timestamp_override
-        await esArchiver.load(
-          'x-pack/test/functional/es_archives/security_solution/timestamp_override'
-        );
-      });
-      afterEach(async () => {
+        await es.indices.delete({ index: 'myfakeindex-1', ignore_unavailable: true });
+        await es.indices.create({
+          index: 'myfakeindex-1',
+          mappings: {
+            properties: {
+              '@timestamp': {
+                type: 'date',
+              },
+            },
+          },
+        });
+        await es.index({
+          index: 'myfakeindex-1',
+          document: generateEvent({ '@timestamp': Date.now() - 1 }),
+        });
+        await es.index({
+          index: 'myfakeindex-1',
+          document: generateEvent({ '@timestamp': Date.now() - 2 }),
+        });
         await deleteAllAlerts(supertest, log, es);
         await deleteAllRules(supertest, log);
-        await esArchiver.unload(
-          'x-pack/test/functional/es_archives/security_solution/timestamp_override'
-        );
       });
 
-      it('should create a single rule which has a timestamp override for an index pattern that does not exist and write a partial failure status', async () => {
-        // defaults to event.ingested timestamp override.
-        // event.ingested is one of the timestamp fields set on the es archive data
-        // inside of x-pack/test/functional/es_archives/security_solution/timestamp_override/data.json.gz
-        const simpleRule = getRuleForAlertTestingWithTimestampOverride(['myfakeindex-1']);
-        const { body } = await supertest
+      it('expects partial failure for a rule with timestamp override and index pattern matching no indices', async () => {
+        const {
+          body: { id },
+        } = await supertest
           .post(DETECTION_ENGINE_RULES_URL)
           .set('kbn-xsrf', 'true')
           .set('elastic-api-version', '2023-10-31')
-          .send(simpleRule)
+          .send(
+            getCustomQueryRuleParams({
+              index: ['myfakeindex-1'],
+              timestamp_override: 'event.ingested',
+              enabled: true,
+            })
+          )
           .expect(200);
-        const bodyId = body.id;
 
-        await waitForAlertToComplete(supertest, log, bodyId);
+        await waitForAlertToComplete(supertest, log, id);
         await waitForRulePartialFailure({
           supertest,
           log,
-          id: bodyId,
+          id,
         });
 
-        const { body: rule } = await supertest
-          .get(DETECTION_ENGINE_RULES_URL)
-          .set('kbn-xsrf', 'true')
-          .set('elastic-api-version', '2023-10-31')
-          .query({ id: bodyId })
-          .expect(200);
+        const rule = await fetchRule(supertest, { id });
 
-        // TODO: https://github.com/elastic/kibana/pull/121644 clean up, make type-safe
-        expect(rule?.execution_summary?.last_execution.status).to.eql('partial failure');
-        expect(rule?.execution_summary?.last_execution.message).to.eql(
+        expect(rule?.execution_summary?.last_execution.status).toEqual('partial failure');
+        expect(rule?.execution_summary?.last_execution.message).toEqual(
           'The following indices are missing the timestamp override field "event.ingested": ["myfakeindex-1"]'
         );
       });
 
-      it('should create a single rule which has a timestamp override and generates two signals with a "partial failure" status', async () => {
-        // defaults to event.ingested timestamp override.
-        // event.ingested is one of the timestamp fields set on the es archive data
-        // inside of x-pack/test/functional/es_archives/security_solution/timestamp_override/data.json.gz
-        const simpleRule = getRuleForAlertTestingWithTimestampOverride(['myfa*']);
-        const { body } = await supertest
+      it('generates two signals with a "partial failure" status', async () => {
+        const {
+          body: { id },
+        } = await supertest
           .post(DETECTION_ENGINE_RULES_URL)
           .set('kbn-xsrf', 'true')
           .set('elastic-api-version', '2023-10-31')
-          .send(simpleRule)
+          .send(
+            getCustomQueryRuleParams({
+              index: ['myfa*'],
+              timestamp_override: 'event.ingested',
+              enabled: true,
+            })
+          )
           .expect(200);
-        const bodyId = body.id;
 
         await waitForRulePartialFailure({
           supertest,
           log,
-          id: bodyId,
+          id,
         });
-        await waitForAlertsToBePresent(supertest, log, 2, [bodyId]);
+        await waitForAlertsToBePresent(supertest, log, 2, [id]);
 
-        const { body: rule } = await supertest
-          .get(DETECTION_ENGINE_RULES_URL)
-          .set('kbn-xsrf', 'true')
-          .set('elastic-api-version', '2023-10-31')
-          .query({ id: bodyId })
-          .expect(200);
+        const rule = await fetchRule(supertest, { id });
 
-        // TODO: https://github.com/elastic/kibana/pull/121644 clean up, make type-safe
-        expect(rule?.execution_summary?.last_execution.status).to.eql('partial failure');
+        expect(rule?.execution_summary?.last_execution.status).toEqual('partial failure');
       });
     });
 
     describe('@brokenInServerless per-action frequencies', () => {
-      const createSingleRule = async (rule: RuleCreateProps) => {
-        const createdRule = await createRule(supertest, log, rule);
-        createdRule.actions = removeUUIDFromActions(createdRule.actions);
-        return createdRule;
-      };
+      beforeEach(async () => {
+        await deleteAllAlerts(supertest, log, es);
+        await deleteAllRules(supertest, log);
+      });
 
       describe('actions without frequencies', () => {
         [undefined, NOTIFICATION_THROTTLE_NO_ACTIONS, NOTIFICATION_THROTTLE_RULE].forEach(
           (throttle) => {
-            it(`it sets each action's frequency attribute to default value when 'throttle' is ${throttle}`, async () => {
-              const actionsWithoutFrequencies = await getActionsWithoutFrequencies(supertest);
-
-              const simpleRule = getSimpleRule();
-              simpleRule.throttle = throttle;
-              simpleRule.actions = actionsWithoutFrequencies;
-
-              const createdRule = await createSingleRule(simpleRule);
-              const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-              expectedRule.actions = actionsWithoutFrequencies.map((action) => ({
-                ...action,
-                frequency: NOTIFICATION_DEFAULT_FREQUENCY,
-              }));
-
-              const rule = removeServerGeneratedProperties(createdRule);
-              expect(rule).to.eql(expectedRule);
+            it(`sets each action's frequency attribute to default value when 'throttle' is ${throttle}`, async () => {
+              const { body } = await supertest
+                .post(DETECTION_ENGINE_RULES_URL)
+                .set('kbn-xsrf', 'true')
+                .set('elastic-api-version', '2023-10-31')
+                .send(
+                  getCustomQueryRuleParams({
+                    throttle,
+                    actions: await getActionsWithoutFrequencies(supertest),
+                  })
+                )
+                .expect(200);
+
+              for (const action of body.actions) {
+                expect(action.frequency).toEqual(NOTIFICATION_DEFAULT_FREQUENCY);
+              }
             });
           }
         );
 
-        // Action throttle cannot be shorter than the schedule interval which is by default is 5m
         ['300s', '5m', '3h', '4d'].forEach((throttle) => {
-          it(`it correctly transforms 'throttle = ${throttle}' and sets it as a frequency of each action`, async () => {
-            const actionsWithoutFrequencies = await getActionsWithoutFrequencies(supertest);
-
-            const simpleRule = getSimpleRule();
-            simpleRule.throttle = throttle;
-            simpleRule.actions = actionsWithoutFrequencies;
-
-            const createdRule = await createSingleRule(simpleRule);
-            const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-            expectedRule.actions = actionsWithoutFrequencies.map((action) => ({
-              ...action,
-              frequency: { summary: true, throttle, notifyWhen: 'onThrottleInterval' },
-            }));
-
-            const rule = removeServerGeneratedProperties(createdRule);
-            expect(rule).to.eql(expectedRule);
+          it(`transforms correctly 'throttle = ${throttle}' and sets it as a frequency of each action`, async () => {
+            const { body } = await supertest
+              .post(DETECTION_ENGINE_RULES_URL)
+              .set('kbn-xsrf', 'true')
+              .set('elastic-api-version', '2023-10-31')
+              .send(
+                getCustomQueryRuleParams({
+                  // Action throttle cannot be shorter than the schedule interval
+                  interval: '5m',
+                  throttle,
+                  actions: await getActionsWithoutFrequencies(supertest),
+                })
+              )
+              .expect(200);
+
+            for (const action of body.actions) {
+              expect(action.frequency).toEqual({
+                summary: true,
+                throttle,
+                notifyWhen: 'onThrottleInterval',
+              });
+            }
           });
         });
       });
@@ -727,19 +698,23 @@ export default ({ getService }: FtrProviderContext) => {
           '10h',
           '2d',
         ].forEach((throttle) => {
-          it(`it does not change actions frequency attributes when 'throttle' is '${throttle}'`, async () => {
+          it(`does NOT change action frequency when 'throttle' is '${throttle}'`, async () => {
             const actionsWithFrequencies = await getActionsWithFrequencies(supertest);
-
-            const simpleRule = getSimpleRule();
-            simpleRule.throttle = throttle;
-            simpleRule.actions = actionsWithFrequencies;
-
-            const createdRule = await createSingleRule(simpleRule);
-            const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-            expectedRule.actions = actionsWithFrequencies;
-
-            const rule = removeServerGeneratedProperties(createdRule);
-            expect(rule).to.eql(expectedRule);
+            const { body } = await supertest
+              .post(DETECTION_ENGINE_RULES_URL)
+              .set('kbn-xsrf', 'true')
+              .set('elastic-api-version', '2023-10-31')
+              .send(
+                getCustomQueryRuleParams({
+                  throttle,
+                  actions: actionsWithFrequencies,
+                })
+              )
+              .expect(200);
+
+            expect(body.actions).toEqual(
+              actionsWithFrequencies.map((x) => expect.objectContaining(x))
+            );
           });
         });
       });
@@ -747,48 +722,57 @@ export default ({ getService }: FtrProviderContext) => {
       describe('some actions with frequencies', () => {
         [undefined, NOTIFICATION_THROTTLE_NO_ACTIONS, NOTIFICATION_THROTTLE_RULE].forEach(
           (throttle) => {
-            it(`it overrides each action's frequency attribute to default value when 'throttle' is ${throttle}`, async () => {
+            it(`overrides each action's frequency attribute to default value when 'throttle' is ${throttle}`, async () => {
               const someActionsWithFrequencies = await getSomeActionsWithFrequencies(supertest);
-
-              const simpleRule = getSimpleRule();
-              simpleRule.throttle = throttle;
-              simpleRule.actions = someActionsWithFrequencies;
-
-              const createdRule = await createSingleRule(simpleRule);
-              const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-              expectedRule.actions = someActionsWithFrequencies.map((action) => ({
-                ...action,
-                frequency: action.frequency ?? NOTIFICATION_DEFAULT_FREQUENCY,
-              }));
-
-              const rule = removeServerGeneratedProperties(createdRule);
-              expect(rule).to.eql(expectedRule);
+              const { body } = await supertest
+                .post(DETECTION_ENGINE_RULES_URL)
+                .set('kbn-xsrf', 'true')
+                .set('elastic-api-version', '2023-10-31')
+                .send(
+                  getCustomQueryRuleParams({
+                    throttle,
+                    actions: someActionsWithFrequencies,
+                  })
+                )
+                .expect(200);
+
+              expect(body.actions).toEqual(
+                someActionsWithFrequencies.map((x) =>
+                  expect.objectContaining(x ?? NOTIFICATION_DEFAULT_FREQUENCY)
+                )
+              );
             });
           }
         );
 
-        // Action throttle cannot be shorter than the schedule interval which is by default is 5m
         ['430s', '7m', '1h', '8d'].forEach((throttle) => {
-          it(`it correctly transforms 'throttle = ${throttle}' and overrides frequency attribute of each action`, async () => {
+          it(`transforms correctly 'throttle = ${throttle}' and overrides frequency attribute of each action`, async () => {
             const someActionsWithFrequencies = await getSomeActionsWithFrequencies(supertest);
-
-            const simpleRule = getSimpleRule();
-            simpleRule.throttle = throttle;
-            simpleRule.actions = someActionsWithFrequencies;
-
-            const createdRule = await createSingleRule(simpleRule);
-            const expectedRule = updateUsername(getSimpleRuleOutput(), ELASTICSEARCH_USERNAME);
-            expectedRule.actions = someActionsWithFrequencies.map((action) => ({
-              ...action,
-              frequency: action.frequency ?? {
-                summary: true,
-                throttle,
-                notifyWhen: 'onThrottleInterval',
-              },
-            }));
-
-            const rule = removeServerGeneratedProperties(createdRule);
-            expect(rule).to.eql(expectedRule);
+            const { body } = await supertest
+              .post(DETECTION_ENGINE_RULES_URL)
+              .set('kbn-xsrf', 'true')
+              .set('elastic-api-version', '2023-10-31')
+              .send(
+                getCustomQueryRuleParams({
+                  // Action throttle cannot be shorter than the schedule interval
+                  interval: '5m',
+                  throttle,
+                  actions: someActionsWithFrequencies,
+                })
+              )
+              .expect(200);
+
+            expect(body.actions).toEqual(
+              someActionsWithFrequencies.map((x) =>
+                expect.objectContaining({
+                  frequency: x.frequency ?? {
+                    summary: true,
+                    throttle,
+                    notifyWhen: 'onThrottleInterval',
+                  },
+                })
+              )
+            );
           });
         });
       });
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/create_new_action.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/create_new_action.ts
index 7cbe8e858a043..1ddce1f07114c 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/create_new_action.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/create_new_action.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { ToolingLog } from '@kbn/tooling-log';
+import { RuleAction } from '@kbn/security-solution-plugin/common/api/detection_engine';
 import type SuperTest from 'supertest';
 
 import { getWebHookAction } from './get_web_hook_action';
@@ -13,23 +13,18 @@ import { getWebHookAction } from './get_web_hook_action';
 /**
  * Helper to cut down on the noise in some of the tests. This
  * creates a new action and expects a 200 and does not do any retries.
+ *
  * @param supertest The supertest deps
  */
-export const createNewAction = async (
-  supertest: SuperTest.SuperTest<SuperTest.Test>,
-  log: ToolingLog
-) => {
-  const response = await supertest
-    .post('/api/actions/action')
-    .set('kbn-xsrf', 'true')
-    .set('x-elastic-internal-origin', 'foo')
-    .send(getWebHookAction());
-  if (response.status !== 200) {
-    log.error(
-      `Did not get an expected 200 "ok" when creating a new action. CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify(
-        response.body
-      )}, status: ${JSON.stringify(response.status)}`
-    );
-  }
-  return response.body;
+export const createWebHookRuleAction = async (
+  supertest: SuperTest.SuperTest<SuperTest.Test>
+): Promise<RuleAction> => {
+  return (
+    await supertest
+      .post('/api/actions/action')
+      .set('kbn-xsrf', 'true')
+      .set('x-elastic-internal-origin', 'foo')
+      .send(getWebHookAction())
+      .expect(200)
+  ).body;
 };
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/index.ts
index af7e564d1c663..f91323f94de59 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/index.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/index.ts
@@ -6,6 +6,5 @@
  */
 export * from './get_slack_action';
 export * from './get_web_hook_action';
-export * from './remove_uuid_from_actions';
 export * from './create_new_action';
 export * from './legacy_actions';
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/remove_uuid_from_actions.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/remove_uuid_from_actions.ts
deleted file mode 100644
index 7f49c65ff8a25..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/actions/remove_uuid_from_actions.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { RuleAction } from '@kbn/security-solution-plugin/common/api/detection_engine';
-
-export const removeUUIDFromActions = (actions: RuleAction[]): RuleAction[] => {
-  return actions.map(({ uuid, ...restOfAction }) => ({
-    ...restOfAction,
-  }));
-};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/fetch_rule.ts
similarity index 52%
rename from x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule.ts
rename to x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/fetch_rule.ts
index 32b2c0b1d5df6..8e9e1008ff404 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/fetch_rule.ts
@@ -5,7 +5,6 @@
  * 2.0.
  */
 
-import type { ToolingLog } from '@kbn/tooling-log';
 import type SuperTest from 'supertest';
 import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine';
 
@@ -14,25 +13,19 @@ import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common
 /**
  * Helper to cut down on the noise in some of the tests. This gets
  * a particular rule.
+ *
  * @param supertest The supertest deps
  * @param rule The rule to create
  */
-export const getRule = async (
+export const fetchRule = async (
   supertest: SuperTest.SuperTest<SuperTest.Test>,
-  log: ToolingLog,
-  ruleId: string
-): Promise<RuleResponse> => {
-  const response = await supertest
-    .get(`${DETECTION_ENGINE_RULES_URL}?rule_id=${ruleId}`)
-    .set('kbn-xsrf', 'true')
-    .set('elastic-api-version', '2023-10-31');
-
-  if (response.status !== 200) {
-    log.error(
-      `Did not get an expected 200 "ok" when getting a rule (getRule). CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify(
-        response.body
-      )}, status: ${JSON.stringify(response.status)}`
-    );
-  }
-  return response.body;
-};
+  idOrRuleId: { id: string; ruleId?: never } | { id?: never; ruleId: string }
+): Promise<RuleResponse> =>
+  (
+    await supertest
+      .get(DETECTION_ENGINE_RULES_URL)
+      .set('kbn-xsrf', 'true')
+      .set('elastic-api-version', '2023-10-31')
+      .query({ id: idOrRuleId.id, rule_id: idOrRuleId.ruleId })
+      .expect(200)
+  ).body;
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/generate_event.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/generate_event.ts
new file mode 100644
index 0000000000000..ea7a61f222eec
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/generate_event.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { SecurityEvent } from './types';
+
+export function generateEvent(extra: Record<string, unknown> = {}): SecurityEvent {
+  return {
+    '@timestamp': Date.now(),
+    ecs: { version: '1.4.0' },
+    event: { kind: 'event', category: 'process', type: 'start' },
+    ...extra,
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_for_alert_testing_with_timestamp_override.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_for_alert_testing_with_timestamp_override.ts
deleted file mode 100644
index e8201ce517cff..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_for_alert_testing_with_timestamp_override.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import type { QueryRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
-
-export const getRuleForAlertTestingWithTimestampOverride = (
-  index: string[],
-  ruleId = 'rule-1',
-  enabled = true,
-  timestampOverride = 'event.ingested'
-): QueryRuleCreateProps => ({
-  name: 'Signal Testing Query',
-  description: 'Tests a simple query',
-  enabled,
-  risk_score: 1,
-  rule_id: ruleId,
-  severity: 'high',
-  index,
-  type: 'query',
-  query: '*:*',
-  timestamp_override: timestampOverride,
-  from: '1900-01-01T00:00:00.000Z',
-});
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_custom_query_rule_params.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_custom_query_rule_params.ts
new file mode 100644
index 0000000000000..b561d3e8dc023
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_custom_query_rule_params.ts
@@ -0,0 +1,35 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { QueryRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { CreateRulePropsRewrites } from './types';
+
+/**
+ * Returns custom query rule params that is easy for most basic testing of output of alerts.
+ * It starts out in an disabled state. The 'from' is set very far back to test the basics of signal
+ * creation and testing by getting all the signals at once.
+ *
+ * @param rewrites rule params rewrites, see QueryRuleCreateProps for possible fields
+ */
+export function getCustomQueryRuleParams(
+  rewrites?: CreateRulePropsRewrites<QueryRuleCreateProps>
+): QueryRuleCreateProps {
+  return {
+    type: 'query',
+    query: '*:*',
+    name: 'Custom query rule',
+    description: 'Custom query rule description',
+    risk_score: 1,
+    rule_id: 'rule-1',
+    severity: 'high',
+    index: ['logs-*'],
+    interval: '100m',
+    from: 'now-6m',
+    enabled: false,
+    ...rewrites,
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_ml_rule_params.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_ml_rule_params.ts
new file mode 100644
index 0000000000000..da8de0ad99786
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_ml_rule_params.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { MachineLearningRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { CreateRulePropsRewrites } from './types';
+
+export function getMLRuleParams(
+  rewrites?: CreateRulePropsRewrites<MachineLearningRuleCreateProps>
+): MachineLearningRuleCreateProps {
+  return {
+    type: 'machine_learning',
+    machine_learning_job_id: ['some_job_id'],
+    name: 'ML Rule',
+    description: 'Machine Learning Rule',
+    anomaly_threshold: 44,
+    risk_score: 1,
+    rule_id: 'ml-rule-1',
+    severity: 'high',
+    enabled: false,
+    ...rewrites,
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_saved_query_rule_params.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_saved_query_rule_params.ts
new file mode 100644
index 0000000000000..20720964b5b34
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_saved_query_rule_params.ts
@@ -0,0 +1,27 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { SavedQueryRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { CreateRulePropsRewrites } from './types';
+
+export function getSavedQueryRuleParams(
+  rewrites?: CreateRulePropsRewrites<SavedQueryRuleCreateProps>
+): SavedQueryRuleCreateProps {
+  return {
+    type: 'saved_query',
+    saved_id: 'some-id',
+    query: 'host.name: *',
+    name: 'Saved query rule',
+    description: 'Saved query rule description',
+    index: ['logs-*'],
+    interval: '100m',
+    from: 'now-50000h',
+    severity: 'low',
+    risk_score: 21,
+    ...rewrites,
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_threshold_rule_params.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_threshold_rule_params.ts
new file mode 100644
index 0000000000000..c3b10a587aa7a
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/get_threshold_rule_params.ts
@@ -0,0 +1,30 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import type { ThresholdRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
+import { CreateRulePropsRewrites } from './types';
+
+export function getThresholdRuleParams(
+  rewrites?: CreateRulePropsRewrites<ThresholdRuleCreateProps>
+): ThresholdRuleCreateProps {
+  return {
+    type: 'threshold',
+    query: '*:*',
+    threshold: {
+      field: [],
+      value: 1,
+    },
+    name: 'Threshold Rule',
+    description: 'Threshold Rule description',
+    severity: 'high',
+    risk_score: 17,
+    index: ['logs-*'],
+    interval: '100m',
+    from: 'now-50000h',
+    ...rewrites,
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/index.ts
new file mode 100644
index 0000000000000..8e589798b109f
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/index.ts
@@ -0,0 +1,11 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export * from './get_custom_query_rule_params';
+export * from './get_saved_query_rule_params';
+export * from './get_ml_rule_params';
+export * from './get_threshold_rule_params';
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/types.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/types.ts
new file mode 100644
index 0000000000000..f8acb18aa9930
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_params/types.ts
@@ -0,0 +1,8 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export type CreateRulePropsRewrites<CreateRuleProps> = Partial<Exclude<CreateRuleProps, 'type'>>;
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule.ts
deleted file mode 100644
index a8fe28d54f24e..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import type { RuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
-
-/**
- * This is a representative ML rule payload as expected by the server
- * @param ruleId The rule id
- * @param enabled Set to tru to enable it, by default it is off
- */
-export const getSimpleMlRule = (ruleId = 'rule-1', enabled = false): RuleCreateProps => ({
-  name: 'Simple ML Rule',
-  description: 'Simple Machine Learning Rule',
-  enabled,
-  anomaly_threshold: 44,
-  risk_score: 1,
-  rule_id: ruleId,
-  severity: 'high',
-  machine_learning_job_id: ['some_job_id'],
-  type: 'machine_learning',
-});
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule_output.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule_output.ts
deleted file mode 100644
index f65c458baa71e..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_ml_rule_output.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import type { MachineLearningRule } from '@kbn/security-solution-plugin/common/api/detection_engine';
-import { getMockSharedResponseSchema } from './get_simple_rule_output';
-import { removeServerGeneratedProperties } from './remove_server_generated_properties';
-
-const getBaseMlRuleOutput = (ruleId = 'rule-1'): MachineLearningRule => {
-  return {
-    ...getMockSharedResponseSchema(ruleId),
-    name: 'Simple ML Rule',
-    description: 'Simple Machine Learning Rule',
-    anomaly_threshold: 44,
-    machine_learning_job_id: ['some_job_id'],
-    type: 'machine_learning',
-  };
-};
-
-export const getSimpleMlRuleOutput = (ruleId = 'rule-1') => {
-  return removeServerGeneratedProperties(getBaseMlRuleOutput(ruleId));
-};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule.ts
index f5e88e34bd62c..c14a6ad8cd2aa 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule.ts
@@ -8,7 +8,10 @@
 import type { QueryRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
 
 /**
+ * @deprecated use `getCustomQueryRuleParams()` instead
+ *
  * This is a typical simple rule for testing that is easy for most basic testing
+ *
  * @param ruleId
  * @param enabled Enables the rule on creation or not. Defaulted to true.
  */
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_output_without_rule_id.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_output_without_rule_id.ts
deleted file mode 100644
index 56b5ab66773bb..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_output_without_rule_id.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { getSimpleRuleOutput } from './get_simple_rule_output';
-import { RuleWithoutServerGeneratedProperties } from './remove_server_generated_properties';
-
-/**
- * This is the typical output of a simple rule that Kibana will output with all the defaults except
- * for all the server generated properties such as created_by. Useful for testing end to end tests.
- */
-export const getSimpleRuleOutputWithoutRuleId = (
-  ruleId = 'rule-1'
-): Omit<RuleWithoutServerGeneratedProperties, 'rule_id'> => {
-  const rule = getSimpleRuleOutput(ruleId);
-  const { rule_id: rId, ...ruleWithoutRuleId } = rule;
-  return ruleWithoutRuleId;
-};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_without_rule_id.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_without_rule_id.ts
deleted file mode 100644
index ad6ab7803ec21..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_simple_rule_without_rule_id.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import type { RuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine';
-import { getSimpleRule } from './get_simple_rule';
-
-/**
- * This is a typical simple rule for testing that is easy for most basic testing
- */
-export const getSimpleRuleWithoutRuleId = (): RuleCreateProps => {
-  const simpleRule = getSimpleRule();
-  // eslint-disable-next-line @typescript-eslint/naming-convention
-  const { rule_id, ...ruleWithoutId } = simpleRule;
-  return ruleWithoutId;
-};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/index.ts
index c1810ca6d6560..3e22a15665fc2 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/index.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/index.ts
@@ -4,21 +4,15 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
-export * from './get_rule';
+export * from './fetch_rule';
 export * from './get_simple_rule';
 export * from './create_rule';
 export * from './delete_all_rules';
 export * from './delete_rule';
+export * from './get_rule_params';
 export * from './get_simple_rule_output';
-export * from './get_simple_rule_output_without_rule_id';
-export * from './get_simple_rule_without_rule_id';
-export * from './get_simple_rule_without_rule_id';
 export * from './remove_server_generated_properties';
-export * from './remove_server_generated_properties_including_rule_id';
-export * from './get_simple_ml_rule';
-export * from './get_simple_ml_rule_output';
 export * from './wait_for_rule_status';
-export * from './get_rule_for_alert_testing_with_timestamp_override';
 export * from './get_rule_for_alert_testing';
 export * from './get_threshold_rule_for_alert_testing';
 export * from './get_rule_actions';
@@ -37,5 +31,6 @@ export * from './get_saved_query_rule_for_alert_testing';
 export * from './get_rule_so_by_id';
 export * from './create_rule_saved_object';
 export * from './get_rule_with_legacy_investigation_fields';
+export * from './generate_event';
 
 export * from './prebuilt_rules';
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/remove_server_generated_properties_including_rule_id.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/remove_server_generated_properties_including_rule_id.ts
deleted file mode 100644
index 1b57b5663ec23..0000000000000
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/remove_server_generated_properties_including_rule_id.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine';
-
-import { removeServerGeneratedProperties } from './remove_server_generated_properties';
-
-/**
- * This will remove server generated properties such as date times, etc... including the rule_id
- * @param rule Rule to pass in to remove typical server generated properties
- */
-export const removeServerGeneratedPropertiesIncludingRuleId = (
-  rule: RuleResponse
-): Partial<RuleResponse> => {
-  const ruleWithRemovedProperties = removeServerGeneratedProperties(rule);
-  // eslint-disable-next-line @typescript-eslint/naming-convention
-  const { rule_id, ...additionalRuledIdRemoved } = ruleWithRemovedProperties;
-  return additionalRuledIdRemoved;
-};
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/types.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/types.ts
new file mode 100644
index 0000000000000..3052ee26e259b
--- /dev/null
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/types.ts
@@ -0,0 +1,19 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export interface SecurityEvent {
+  [field: string]: unknown;
+  '@timestamp': number;
+  ecs: {
+    version: string;
+  };
+  event: {
+    kind: 'event';
+    category: string;
+    type: string;
+  };
+}
diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/update_rule.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/update_rule.ts
index 53c1beb272764..5c6c69a230465 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/update_rule.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/update_rule.ts
@@ -5,7 +5,6 @@
  * 2.0.
  */
 
-import type { ToolingLog } from '@kbn/tooling-log';
 import type SuperTest from 'supertest';
 
 import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants';
@@ -17,25 +16,19 @@ import {
 /**
  * Helper to cut down on the noise in some of the tests. This checks for
  * an expected 200 still and does not do any retries.
+ *
  * @param supertest The supertest deps
  * @param rule The rule to create
  */
 export const updateRule = async (
   supertest: SuperTest.SuperTest<SuperTest.Test>,
-  log: ToolingLog,
   updatedRule: RuleUpdateProps
-): Promise<RuleResponse> => {
-  const response = await supertest
-    .put(DETECTION_ENGINE_RULES_URL)
-    .set('kbn-xsrf', 'true')
-    .set('elastic-api-version', '2023-10-31')
-    .send(updatedRule);
-  if (response.status !== 200) {
-    log.error(
-      `Did not get an expected 200 "ok" when updating a rule (updateRule). CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify(
-        response.body
-      )}, status: ${JSON.stringify(response.status)}`
-    );
-  }
-  return response.body;
-};
+): Promise<RuleResponse> =>
+  (
+    await supertest
+      .put(DETECTION_ENGINE_RULES_URL)
+      .set('kbn-xsrf', 'true')
+      .set('elastic-api-version', '2023-10-31')
+      .send(updatedRule)
+      .expect(200)
+  ).body;

From 00f4ce4338836711218d28bde760895a71b742c8 Mon Sep 17 00:00:00 2001
From: Marco Antonio Ghiani <marcoantonio.ghiani01@gmail.com>
Date: Mon, 13 Nov 2023 12:23:37 +0100
Subject: [PATCH 122/147] [Log Explorer] Add flyout title customization
 (#170933)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

## 📓 Summary

Closes #170391

This work adds a new `title` parameter for the flyout customization and
sets the `Log details` title for the customized Log Explorer flyout.

<img width="1498" alt="Screenshot 2023-11-09 at 12 04 02"
src="https://github.com/elastic/kibana/assets/34506779/ba6c136c-9e3c-4d9d-993d-121cd9be1f5e">

Co-authored-by: Marco Antonio Ghiani <marcoantonio.ghiani@elastic.co>
---
 .../discover_grid_flyout.test.tsx             | 13 +++++++++++++
 .../discover_grid_flyout.tsx                  | 19 ++++++++++---------
 .../flyout_customization.ts                   |  1 +
 .../customizations/log_explorer_profile.tsx   | 16 ++++++++++------
 4 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx
index d8c43fd8dedfe..0f17aec0684a2 100644
--- a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx
+++ b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx
@@ -231,6 +231,19 @@ describe('Discover flyout', function () {
   });
 
   describe('with applied customizations', () => {
+    describe('when title is customized', () => {
+      it('should display the passed string as title', async () => {
+        const customTitle = 'Custom flyout title';
+        mockFlyoutCustomization.title = customTitle;
+
+        const { component } = await mountComponent({});
+
+        const titleNode = findTestSubject(component, 'docTableRowDetailsTitle');
+
+        expect(titleNode.text()).toBe(customTitle);
+      });
+    });
+
     describe('when actions are customized', () => {
       it('should display actions added by getActionItems', async () => {
         mockFlyoutCustomization.actions = {
diff --git a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.tsx b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.tsx
index d8c218efba23a..19cf02b43585c 100644
--- a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.tsx
+++ b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.tsx
@@ -186,6 +186,15 @@ export function DiscoverGridFlyout({
     renderDefaultContent()
   );
 
+  const defaultFlyoutTitle = isPlainRecord
+    ? i18n.translate('discover.grid.tableRow.textBasedDetailHeading', {
+        defaultMessage: 'Expanded row',
+      })
+    : i18n.translate('discover.grid.tableRow.detailHeading', {
+        defaultMessage: 'Expanded document',
+      });
+  const flyoutTitle = flyoutCustomization?.title ?? defaultFlyoutTitle;
+
   return (
     <EuiPortal>
       <EuiFlyout
@@ -201,15 +210,7 @@ export function DiscoverGridFlyout({
             className="unifiedDataTable__flyoutHeader"
             data-test-subj="docTableRowDetailsTitle"
           >
-            <h2>
-              {isPlainRecord
-                ? i18n.translate('discover.grid.tableRow.textBasedDetailHeading', {
-                    defaultMessage: 'Expanded row',
-                  })
-                : i18n.translate('discover.grid.tableRow.detailHeading', {
-                    defaultMessage: 'Expanded document',
-                  })}
-            </h2>
+            <h2>{flyoutTitle}</h2>
           </EuiTitle>
           <EuiSpacer size="s" />
           <EuiFlexGroup responsive={false} gutterSize="s" alignItems="center">
diff --git a/src/plugins/discover/public/customizations/customization_types/flyout_customization.ts b/src/plugins/discover/public/customizations/customization_types/flyout_customization.ts
index 84f3f27715039..12d032fa6e6cc 100644
--- a/src/plugins/discover/public/customizations/customization_types/flyout_customization.ts
+++ b/src/plugins/discover/public/customizations/customization_types/flyout_customization.ts
@@ -38,6 +38,7 @@ export interface FlyoutContentProps {
 
 export interface FlyoutCustomization {
   id: 'flyout';
+  title?: string;
   actions: {
     defaultActions?: FlyoutDefaultActions;
     getActionItems?: () => FlyoutActionItem[];
diff --git a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
index 628ff40babc22..e5fb09d56e5fa 100644
--- a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
+++ b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
@@ -4,18 +4,19 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+import React from 'react';
 import type { CoreStart } from '@kbn/core/public';
 import { CustomizationCallback, DiscoverStateContainer } from '@kbn/discover-plugin/public';
-import React from 'react';
-import { type BehaviorSubject, combineLatest, from, map, Subscription } from 'rxjs';
+import { i18n } from '@kbn/i18n';
 import useObservable from 'react-use/lib/useObservable';
-import { dynamic } from '../utils/dynamic';
-import { LogExplorerProfileStateService } from '../state_machines/log_explorer_profile';
+import { combineLatest, from, map, Subscription, type BehaviorSubject } from 'rxjs';
 import { LogExplorerStateContainer } from '../components/log_explorer';
-import { LogExplorerStartDeps } from '../types';
-import { useKibanaContextForPluginProvider } from '../utils/use_kibana';
 import { LogExplorerCustomizations } from '../components/log_explorer/types';
 import { LogExplorerCustomizationsProvider } from '../hooks/use_log_explorer_customizations';
+import { LogExplorerProfileStateService } from '../state_machines/log_explorer_profile';
+import { LogExplorerStartDeps } from '../types';
+import { dynamic } from '../utils/dynamic';
+import { useKibanaContextForPluginProvider } from '../utils/use_kibana';
 
 const LazyCustomDatasetFilters = dynamic(() => import('./custom_dataset_filters'));
 const LazyCustomDatasetSelector = dynamic(() => import('./custom_dataset_selector'));
@@ -119,6 +120,9 @@ export const createLogExplorerProfileCustomizations =
      */
     customizations.set({
       id: 'flyout',
+      title: i18n.translate('xpack.logExplorer.flyoutDetail.title', {
+        defaultMessage: 'Log details',
+      }),
       actions: {
         defaultActions: {
           viewSingleDocument: { disabled: true },

From 145cc8f13b3ffecbdbb5842f1fc21fce775dcb93 Mon Sep 17 00:00:00 2001
From: Julia Rechkunova <julia.rechkunova@elastic.co>
Date: Mon, 13 Nov 2023 13:36:25 +0100
Subject: [PATCH 123/147] [Discover] Show "unsaved changes" label when in
 unsaved state of saved search (#169548)

- Resolves https://github.com/elastic/kibana/issues/135887

## Summary

This PR adds "Unsaved changes" badge to Discover for modified saved
searches. It also removes "Reset search" button from the histogram area.
Code for the badge is added to a new package
`@kbn/unsaved-changes-badge`.

<img width="600" alt="Screenshot 2023-10-23 at 18 05 34"
src="https://github.com/elastic/kibana/assets/1415710/ad200a28-79e1-4cc5-8e28-6352d4b85322">

![Oct-23-2023
18-06-39](https://github.com/elastic/kibana/assets/1415710/cacf4ff2-525c-4759-aba9-34ce75089ddd)


### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .github/CODEOWNERS                            |   1 +
 .i18nrc.json                                  |   3 +-
 .../public/plugin.tsx                         |  11 ++
 package.json                                  |   1 +
 .../src/hooks/use_row_heights_options.ts      |   4 +
 packages/kbn-unsaved-changes-badge/README.md  |   8 +
 packages/kbn-unsaved-changes-badge/index.ts   |  17 ++
 .../kbn-unsaved-changes-badge/jest.config.js  |  13 ++
 .../kbn-unsaved-changes-badge/kibana.jsonc    |   5 +
 .../kbn-unsaved-changes-badge/package.json    |  10 +
 .../unsaved_changes_badge.test.tsx.snap       |  95 ++++++++++
 .../components/unsaved_changes_badge/index.ts |   9 +
 .../unsaved_changes_badge.test.tsx            |  89 +++++++++
 .../unsaved_changes_badge.tsx                 | 175 ++++++++++++++++++
 ...op_nav_unsaved_changes_badge.test.tsx.snap |  63 +++++++
 ...get_top_nav_unsaved_changes_badge.test.tsx |  28 +++
 .../get_top_nav_unsaved_changes_badge.tsx     |  50 +++++
 .../kbn-unsaved-changes-badge/tsconfig.json   |  14 ++
 packages/kbn-unsaved-changes-badge/types.ts   |  10 +
 .../layout/__stories__/get_layout_props.ts    |   1 -
 .../layout/discover_histogram_layout.test.tsx |  22 ---
 .../layout/discover_histogram_layout.tsx      |   8 -
 .../layout/discover_layout.test.tsx           |   1 -
 .../layout/reset_search_button.test.tsx       |  20 --
 .../components/layout/reset_search_button.tsx |  35 ----
 .../components/top_nav/discover_topnav.tsx    |  17 ++
 .../top_nav/get_top_nav_badges.test.ts        | 100 ++++++++++
 .../components/top_nav/get_top_nav_badges.tsx |  57 ++++++
 .../components/top_nav/on_save_search.tsx     |   6 +
 .../discover_saved_search_container.ts        |  67 +++++--
 .../main/services/discover_state.test.ts      |   6 +
 .../main/services/discover_state.ts           |   2 +-
 .../main/utils/update_saved_search.ts         |  21 +--
 .../top_nav_customization.ts                  |  27 ++-
 src/plugins/discover/tsconfig.json            |   1 +
 src/plugins/navigation/public/index.ts        |   2 +-
 .../__snapshots__/top_nav_menu.test.tsx.snap  |  48 +++++
 .../navigation/public/top_nav_menu/index.ts   |   2 +-
 .../public/top_nav_menu/top_nav_menu.test.tsx |  44 ++++-
 .../public/top_nav_menu/top_nav_menu.tsx      |  23 ++-
 .../apps/discover/group1/_discover.ts         |   2 +-
 .../discover/group1/_discover_histogram.ts    |   2 +-
 .../apps/discover/group3/_request_counts.ts   |   2 +-
 .../discover/group3/_unsaved_changes_badge.ts | 167 +++++++++++++++++
 test/functional/apps/discover/group3/index.ts |   1 +
 test/functional/page_objects/discover_page.ts |  30 ++-
 tsconfig.base.json                            |   2 +
 .../customizations/log_explorer_profile.tsx   |   3 +
 .../translations/translations/fr-FR.json      |   1 -
 .../translations/translations/ja-JP.json      |   1 -
 .../translations/translations/zh-CN.json      |   1 -
 yarn.lock                                     |   4 +
 52 files changed, 1189 insertions(+), 143 deletions(-)
 create mode 100644 packages/kbn-unsaved-changes-badge/README.md
 create mode 100644 packages/kbn-unsaved-changes-badge/index.ts
 create mode 100644 packages/kbn-unsaved-changes-badge/jest.config.js
 create mode 100644 packages/kbn-unsaved-changes-badge/kibana.jsonc
 create mode 100644 packages/kbn-unsaved-changes-badge/package.json
 create mode 100644 packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/__snapshots__/unsaved_changes_badge.test.tsx.snap
 create mode 100644 packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/index.ts
 create mode 100644 packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.test.tsx
 create mode 100644 packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx
 create mode 100644 packages/kbn-unsaved-changes-badge/src/utils/__snapshots__/get_top_nav_unsaved_changes_badge.test.tsx.snap
 create mode 100644 packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.test.tsx
 create mode 100644 packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx
 create mode 100644 packages/kbn-unsaved-changes-badge/tsconfig.json
 create mode 100644 packages/kbn-unsaved-changes-badge/types.ts
 delete mode 100644 src/plugins/discover/public/application/main/components/layout/reset_search_button.test.tsx
 delete mode 100644 src/plugins/discover/public/application/main/components/layout/reset_search_button.tsx
 create mode 100644 src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts
 create mode 100644 src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx
 create mode 100644 src/plugins/navigation/public/top_nav_menu/__snapshots__/top_nav_menu.test.tsx.snap
 create mode 100644 test/functional/apps/discover/group3/_unsaved_changes_badge.ts

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 5c112d886cd3a..4edca2f43e6a4 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -789,6 +789,7 @@ 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
 x-pack/plugins/upgrade_assistant @elastic/platform-deployment-management
 x-pack/plugins/uptime @elastic/obs-ux-infra_services-team
 x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux
diff --git a/.i18nrc.json b/.i18nrc.json
index 4a71e696efc1f..c5f1f7053f95a 100644
--- a/.i18nrc.json
+++ b/.i18nrc.json
@@ -132,7 +132,8 @@
     "unifiedSearch": "src/plugins/unified_search",
     "unifiedFieldList": "packages/kbn-unified-field-list",
     "unifiedHistogram": "src/plugins/unified_histogram",
-    "unifiedDataTable": "packages/kbn-unified-data-table"
+    "unifiedDataTable": "packages/kbn-unified-data-table",
+    "unsavedChangesBadge": "packages/kbn-unsaved-changes-badge"
   },
   "translations": []
 }
diff --git a/examples/discover_customization_examples/public/plugin.tsx b/examples/discover_customization_examples/public/plugin.tsx
index ca356612d0f8a..5eefb4932cc43 100644
--- a/examples/discover_customization_examples/public/plugin.tsx
+++ b/examples/discover_customization_examples/public/plugin.tsx
@@ -163,6 +163,17 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin {
               order: 300,
             },
           ],
+          getBadges: () => {
+            return [
+              {
+                data: {
+                  badgeText: 'Example badge',
+                  color: 'warning',
+                },
+                order: 10,
+              },
+            ];
+          },
         });
 
         customizations.set({
diff --git a/package.json b/package.json
index 7db00b814d99d..495fe098ada51 100644
--- a/package.json
+++ b/package.json
@@ -780,6 +780,7 @@
     "@kbn/unified-field-list-examples-plugin": "link:examples/unified_field_list_examples",
     "@kbn/unified-histogram-plugin": "link:src/plugins/unified_histogram",
     "@kbn/unified-search-plugin": "link:src/plugins/unified_search",
+    "@kbn/unsaved-changes-badge": "link:packages/kbn-unsaved-changes-badge",
     "@kbn/upgrade-assistant-plugin": "link:x-pack/plugins/upgrade_assistant",
     "@kbn/uptime-plugin": "link:x-pack/plugins/uptime",
     "@kbn/url-drilldown-plugin": "link:x-pack/plugins/drilldowns/url_drilldown",
diff --git a/packages/kbn-unified-data-table/src/hooks/use_row_heights_options.ts b/packages/kbn-unified-data-table/src/hooks/use_row_heights_options.ts
index 3df1a31aaa9d3..542641e2ece7a 100644
--- a/packages/kbn-unified-data-table/src/hooks/use_row_heights_options.ts
+++ b/packages/kbn-unified-data-table/src/hooks/use_row_heights_options.ts
@@ -85,6 +85,10 @@ export const useRowHeightsOptions = ({
       defaultHeight,
       lineHeight: rowLineHeight,
       onChange: ({ defaultHeight: newRowHeight }: EuiDataGridRowHeightsOptions) => {
+        if (newRowHeight === defaultHeight && typeof rowHeightState === 'undefined') {
+          // ignore, no changes required
+          return;
+        }
         const newSerializedRowHeight = serializeRowHeight(
           // pressing "Reset to default" triggers onChange with the same value
           newRowHeight === defaultHeight ? configRowHeight : newRowHeight
diff --git a/packages/kbn-unsaved-changes-badge/README.md b/packages/kbn-unsaved-changes-badge/README.md
new file mode 100644
index 0000000000000..3bdcd84425e53
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/README.md
@@ -0,0 +1,8 @@
+# @kbn/unsaved-changes-badge
+
+A yellow "Unsaved changes" badge which can be found for example on Discover page.
+It supports callbacks to save or revert the changes.
+
+To integrate it into TopNav component, consider using `getTopNavUnsavedChangesBadge(...)` util and pass the result to `badges` prop of the top nav.
+
+There is also a standalone component `<UnsavedChangesBadge .../>`.
diff --git a/packages/kbn-unsaved-changes-badge/index.ts b/packages/kbn-unsaved-changes-badge/index.ts
new file mode 100644
index 0000000000000..928e9129ef7ca
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export {
+  UnsavedChangesBadge,
+  type UnsavedChangesBadgeProps,
+} from './src/components/unsaved_changes_badge';
+
+export {
+  getTopNavUnsavedChangesBadge,
+  type TopNavUnsavedChangesBadgeParams,
+} from './src/utils/get_top_nav_unsaved_changes_badge';
diff --git a/packages/kbn-unsaved-changes-badge/jest.config.js b/packages/kbn-unsaved-changes-badge/jest.config.js
new file mode 100644
index 0000000000000..9c8319e692f9e
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+  preset: '@kbn/test',
+  rootDir: '../..',
+  roots: ['<rootDir>/packages/kbn-unsaved-changes-badge'],
+};
diff --git a/packages/kbn-unsaved-changes-badge/kibana.jsonc b/packages/kbn-unsaved-changes-badge/kibana.jsonc
new file mode 100644
index 0000000000000..0f64c4d4143fd
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/kibana.jsonc
@@ -0,0 +1,5 @@
+{
+  "type": "shared-common",
+  "id": "@kbn/unsaved-changes-badge",
+  "owner": "@elastic/kibana-data-discovery"
+}
diff --git a/packages/kbn-unsaved-changes-badge/package.json b/packages/kbn-unsaved-changes-badge/package.json
new file mode 100644
index 0000000000000..c9e7aaf964bf0
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/package.json
@@ -0,0 +1,10 @@
+{
+  "name": "@kbn/unsaved-changes-badge",
+  "private": true,
+  "version": "1.0.0",
+  "license": "SSPL-1.0 OR Elastic License 2.0",
+  "sideEffects": [
+    "*.css",
+    "*.scss"
+  ]
+}
\ No newline at end of file
diff --git a/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/__snapshots__/unsaved_changes_badge.test.tsx.snap b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/__snapshots__/unsaved_changes_badge.test.tsx.snap
new file mode 100644
index 0000000000000..441d85d917ef3
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/__snapshots__/unsaved_changes_badge.test.tsx.snap
@@ -0,0 +1,95 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`<UnsavedChangesBadge /> should show all menu items 1`] = `
+<div>
+  <div
+    class="euiPopover emotion-euiPopover"
+    id="unsavedChangesPopover_generated-id"
+  >
+    <div
+      class="euiPopover__anchor css-16vtueo-render"
+    >
+      <button
+        aria-label="View available actions"
+        class="euiBadge emotion-euiBadge-warning-clickable"
+        data-test-subj="unsavedChangesBadge"
+        title="test"
+      >
+        <span
+          class="euiBadge__content emotion-euiBadge__content"
+        >
+          <span
+            class="euiBadge__text emotion-euiBadge__text-clickable"
+          >
+            test
+          </span>
+          <span
+            class="euiBadge__icon emotion-euiBadge__icon-right"
+            color="inherit"
+            data-euiicon-type="arrowDown"
+          />
+        </span>
+      </button>
+    </div>
+  </div>
+</div>
+`;
+
+exports[`<UnsavedChangesBadge /> should show all menu items 2`] = `
+<div
+  class="euiContextMenuPanel emotion-euiContextMenuPanel"
+  data-test-subj="unsavedChangesBadgeMenuPanel"
+  tabindex="-1"
+>
+  <div>
+    <button
+      class="euiContextMenuItem emotion-euiContextMenuItem-s-center"
+      data-test-subj="saveUnsavedChangesButton"
+      type="button"
+    >
+      <span
+        class="euiContextMenu__icon emotion-euiContextMenu__icon"
+        color="inherit"
+        data-euiicon-type="save"
+      />
+      <span
+        class="euiContextMenuItem__text emotion-euiContextMenuItem__text-s"
+      >
+        Save
+      </span>
+    </button>
+    <button
+      class="euiContextMenuItem emotion-euiContextMenuItem-s-center"
+      data-test-subj="saveUnsavedChangesAsButton"
+      type="button"
+    >
+      <span
+        class="euiContextMenu__icon emotion-euiContextMenu__icon"
+        color="inherit"
+        data-euiicon-type="save"
+      />
+      <span
+        class="euiContextMenuItem__text emotion-euiContextMenuItem__text-s"
+      >
+        Save as
+      </span>
+    </button>
+    <button
+      class="euiContextMenuItem emotion-euiContextMenuItem-s-center"
+      data-test-subj="revertUnsavedChangesButton"
+      type="button"
+    >
+      <span
+        class="euiContextMenu__icon emotion-euiContextMenu__icon"
+        color="inherit"
+        data-euiicon-type="editorUndo"
+      />
+      <span
+        class="euiContextMenuItem__text emotion-euiContextMenuItem__text-s"
+      >
+        Revert changes
+      </span>
+    </button>
+  </div>
+</div>
+`;
diff --git a/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/index.ts b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/index.ts
new file mode 100644
index 0000000000000..0d7afa38c7d21
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/index.ts
@@ -0,0 +1,9 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export { UnsavedChangesBadge, type UnsavedChangesBadgeProps } from './unsaved_changes_badge';
diff --git a/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.test.tsx b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.test.tsx
new file mode 100644
index 0000000000000..4ba81214ed27e
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.test.tsx
@@ -0,0 +1,89 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import React from 'react';
+import { render, act, screen, waitFor } from '@testing-library/react';
+import { UnsavedChangesBadge } from './unsaved_changes_badge';
+
+describe('<UnsavedChangesBadge />', () => {
+  test('should render correctly', async () => {
+    const onRevert = jest.fn();
+    const { getByTestId, queryByTestId } = render(
+      <UnsavedChangesBadge badgeText="test" onRevert={onRevert} />
+    );
+    expect(getByTestId('unsavedChangesBadge')).toBeInTheDocument();
+
+    getByTestId('unsavedChangesBadge').click();
+    await waitFor(() => {
+      return Boolean(queryByTestId('unsavedChangesBadgeMenuPanel'));
+    });
+    expect(queryByTestId('revertUnsavedChangesButton')).toBeInTheDocument();
+    expect(queryByTestId('saveUnsavedChangesButton')).not.toBeInTheDocument();
+    expect(queryByTestId('saveUnsavedChangesAsButton')).not.toBeInTheDocument();
+
+    expect(onRevert).not.toHaveBeenCalled();
+
+    act(() => {
+      getByTestId('revertUnsavedChangesButton').click();
+    });
+    expect(onRevert).toHaveBeenCalled();
+  });
+
+  test('should show all menu items', async () => {
+    const onRevert = jest.fn().mockResolvedValue(true);
+    const onSave = jest.fn().mockResolvedValue(true);
+    const onSaveAs = jest.fn().mockResolvedValue(true);
+    const { getByTestId, queryByTestId, container } = render(
+      <UnsavedChangesBadge
+        badgeText="test"
+        onRevert={onRevert}
+        onSave={onSave}
+        onSaveAs={onSaveAs}
+      />
+    );
+
+    expect(container).toMatchSnapshot();
+
+    getByTestId('unsavedChangesBadge').click();
+    await waitFor(() => {
+      return Boolean(queryByTestId('unsavedChangesBadgeMenuPanel'));
+    });
+    expect(queryByTestId('revertUnsavedChangesButton')).toBeInTheDocument();
+    expect(queryByTestId('saveUnsavedChangesButton')).toBeInTheDocument();
+    expect(queryByTestId('saveUnsavedChangesAsButton')).toBeInTheDocument();
+
+    expect(screen.getByTestId('unsavedChangesBadgeMenuPanel')).toMatchSnapshot();
+  });
+
+  test('should call callbacks', async () => {
+    const onRevert = jest.fn().mockResolvedValue(true);
+    const onSave = jest.fn().mockResolvedValue(true);
+    const onSaveAs = jest.fn().mockResolvedValue(true);
+    const { getByTestId, queryByTestId } = render(
+      <UnsavedChangesBadge
+        badgeText="test"
+        onRevert={onRevert}
+        onSave={onSave}
+        onSaveAs={onSaveAs}
+      />
+    );
+    act(() => {
+      getByTestId('unsavedChangesBadge').click();
+    });
+    await waitFor(() => {
+      return Boolean(queryByTestId('unsavedChangesBadgeMenuPanel'));
+    });
+
+    expect(onSave).not.toHaveBeenCalled();
+
+    act(() => {
+      getByTestId('saveUnsavedChangesButton').click();
+    });
+    expect(onSave).toHaveBeenCalled();
+  });
+});
diff --git a/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx
new file mode 100644
index 0000000000000..a022214f0df79
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx
@@ -0,0 +1,175 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import React, { useState } from 'react';
+import useMountedState from 'react-use/lib/useMountedState';
+import {
+  EuiBadge,
+  EuiContextMenuItem,
+  EuiContextMenuPanel,
+  EuiPopover,
+  useGeneratedHtmlId,
+} from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+
+enum ProcessingType {
+  reverting = 'reverting',
+  saving = 'saving',
+  savingAs = 'savingAs',
+}
+
+/**
+ * Props for UnsavedChangesBadge
+ */
+export interface UnsavedChangesBadgeProps {
+  onRevert: () => Promise<unknown>;
+  onSave?: () => Promise<unknown>;
+  onSaveAs?: () => Promise<unknown>;
+  badgeText: string;
+}
+
+/**
+ * Badge component. It opens a menu panel with actions once pressed.
+ * @param badgeText
+ * @param onRevert
+ * @param onSave
+ * @param onSaveAs
+ * @constructor
+ */
+export const UnsavedChangesBadge: React.FC<UnsavedChangesBadgeProps> = ({
+  badgeText,
+  onRevert,
+  onSave,
+  onSaveAs,
+}) => {
+  const isMounted = useMountedState();
+  const [processingType, setProcessingType] = useState<ProcessingType | null>(null);
+  const [isPopoverOpen, setPopover] = useState(false);
+  const contextMenuPopoverId = useGeneratedHtmlId({
+    prefix: 'unsavedChangesPopover',
+  });
+
+  const togglePopover = () => {
+    setPopover((value) => !value);
+  };
+
+  const closePopover = () => {
+    setPopover(false);
+  };
+
+  const completeMenuItemAction = () => {
+    if (isMounted()) {
+      setProcessingType(null);
+      closePopover();
+    }
+  };
+
+  const handleMenuItem = async (type: ProcessingType, action: () => Promise<unknown>) => {
+    try {
+      setProcessingType(type);
+      await action();
+    } finally {
+      completeMenuItemAction();
+    }
+  };
+
+  const disabled = Boolean(processingType);
+  const isSaving = processingType === ProcessingType.saving;
+  const isSavingAs = processingType === ProcessingType.savingAs;
+  const isReverting = processingType === ProcessingType.reverting;
+
+  const items = [
+    ...(onSave
+      ? [
+          <EuiContextMenuItem
+            data-test-subj="saveUnsavedChangesButton"
+            key="save"
+            icon="save"
+            disabled={disabled}
+            onClick={async () => {
+              await handleMenuItem(ProcessingType.saving, onSave);
+            }}
+          >
+            {isSaving
+              ? i18n.translate('unsavedChangesBadge.contextMenu.savingChangesButtonStatus', {
+                  defaultMessage: 'Saving...',
+                })
+              : i18n.translate('unsavedChangesBadge.contextMenu.saveChangesButton', {
+                  defaultMessage: 'Save',
+                })}
+          </EuiContextMenuItem>,
+        ]
+      : []),
+    ...(onSaveAs
+      ? [
+          <EuiContextMenuItem
+            data-test-subj="saveUnsavedChangesAsButton"
+            key="saveAs"
+            icon="save"
+            disabled={disabled}
+            onClick={async () => {
+              await handleMenuItem(ProcessingType.savingAs, onSaveAs);
+            }}
+          >
+            {isSavingAs
+              ? i18n.translate('unsavedChangesBadge.contextMenu.savingChangesAsButtonStatus', {
+                  defaultMessage: 'Saving as...',
+                })
+              : i18n.translate('unsavedChangesBadge.contextMenu.saveChangesAsButton', {
+                  defaultMessage: 'Save as',
+                })}
+          </EuiContextMenuItem>,
+        ]
+      : []),
+    <EuiContextMenuItem
+      data-test-subj="revertUnsavedChangesButton"
+      key="revert"
+      icon="editorUndo"
+      disabled={disabled}
+      onClick={async () => {
+        await handleMenuItem(ProcessingType.reverting, onRevert);
+      }}
+    >
+      {isReverting
+        ? i18n.translate('unsavedChangesBadge.contextMenu.revertingChangesButtonStatus', {
+            defaultMessage: 'Reverting changes...',
+          })
+        : i18n.translate('unsavedChangesBadge.contextMenu.revertChangesButton', {
+            defaultMessage: 'Revert changes',
+          })}
+    </EuiContextMenuItem>,
+  ];
+
+  const button = (
+    <EuiBadge
+      data-test-subj="unsavedChangesBadge"
+      color="warning"
+      iconType="arrowDown"
+      iconSide="right"
+      onClick={togglePopover}
+      onClickAriaLabel={i18n.translate('unsavedChangesBadge.contextMenu.openButton', {
+        defaultMessage: 'View available actions',
+      })}
+    >
+      {badgeText}
+    </EuiBadge>
+  );
+
+  return (
+    <EuiPopover
+      id={contextMenuPopoverId}
+      button={button}
+      isOpen={isPopoverOpen}
+      closePopover={closePopover}
+      panelPaddingSize="none"
+      anchorPosition="downLeft"
+    >
+      <EuiContextMenuPanel size="s" items={items} data-test-subj="unsavedChangesBadgeMenuPanel" />
+    </EuiPopover>
+  );
+};
diff --git a/packages/kbn-unsaved-changes-badge/src/utils/__snapshots__/get_top_nav_unsaved_changes_badge.test.tsx.snap b/packages/kbn-unsaved-changes-badge/src/utils/__snapshots__/get_top_nav_unsaved_changes_badge.test.tsx.snap
new file mode 100644
index 0000000000000..eafe487e0265c
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/utils/__snapshots__/get_top_nav_unsaved_changes_badge.test.tsx.snap
@@ -0,0 +1,63 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`getTopNavUnsavedChangesBadge() should work correctly 1`] = `
+<div>
+  <div
+    class="euiPopover emotion-euiPopover"
+    id="unsavedChangesPopover_generated-id"
+  >
+    <div
+      class="euiPopover__anchor css-16vtueo-render"
+    >
+      <button
+        aria-label="View available actions"
+        class="euiBadge emotion-euiBadge-warning-clickable"
+        data-test-subj="unsavedChangesBadge"
+        title="Unsaved changes"
+      >
+        <span
+          class="euiBadge__content emotion-euiBadge__content"
+        >
+          <span
+            class="euiBadge__text emotion-euiBadge__text-clickable"
+          >
+            Unsaved changes
+          </span>
+          <span
+            class="euiBadge__icon emotion-euiBadge__icon-right"
+            color="inherit"
+            data-euiicon-type="arrowDown"
+          />
+        </span>
+      </button>
+    </div>
+  </div>
+</div>
+`;
+
+exports[`getTopNavUnsavedChangesBadge() should work correctly 2`] = `
+<div
+  class="euiContextMenuPanel emotion-euiContextMenuPanel"
+  data-test-subj="unsavedChangesBadgeMenuPanel"
+  tabindex="-1"
+>
+  <div>
+    <button
+      class="euiContextMenuItem emotion-euiContextMenuItem-s-center"
+      data-test-subj="revertUnsavedChangesButton"
+      type="button"
+    >
+      <span
+        class="euiContextMenu__icon emotion-euiContextMenu__icon"
+        color="inherit"
+        data-euiicon-type="editorUndo"
+      />
+      <span
+        class="euiContextMenuItem__text emotion-euiContextMenuItem__text-s"
+      >
+        Revert changes
+      </span>
+    </button>
+  </div>
+</div>
+`;
diff --git a/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.test.tsx b/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.test.tsx
new file mode 100644
index 0000000000000..f60b92fec5176
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.test.tsx
@@ -0,0 +1,28 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { render, waitFor, screen } from '@testing-library/react';
+import { getTopNavUnsavedChangesBadge } from './get_top_nav_unsaved_changes_badge';
+
+describe('getTopNavUnsavedChangesBadge()', () => {
+  test('should work correctly', async () => {
+    const onRevert = jest.fn().mockResolvedValue(true);
+    const badge = getTopNavUnsavedChangesBadge({ onRevert });
+    const { container, getByTestId, queryByTestId } = render(
+      badge.renderCustomBadge!({ badgeText: badge.badgeText })
+    );
+    expect(container).toMatchSnapshot();
+
+    getByTestId('unsavedChangesBadge').click();
+    await waitFor(() => {
+      return Boolean(queryByTestId('revertUnsavedChangesButton'));
+    });
+
+    expect(screen.getByTestId('unsavedChangesBadgeMenuPanel')).toMatchSnapshot();
+  });
+});
diff --git a/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx b/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx
new file mode 100644
index 0000000000000..af7cf915bb103
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx
@@ -0,0 +1,50 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import React from 'react';
+import { i18n } from '@kbn/i18n';
+import type { TopNavMenuBadgeProps } from '@kbn/navigation-plugin/public';
+import {
+  UnsavedChangesBadge,
+  type UnsavedChangesBadgeProps,
+} from '../components/unsaved_changes_badge';
+
+/**
+ * Params for getTopNavUnsavedChangesBadge
+ */
+export interface TopNavUnsavedChangesBadgeParams {
+  onRevert: UnsavedChangesBadgeProps['onRevert'];
+  onSave?: UnsavedChangesBadgeProps['onSave'];
+  onSaveAs?: UnsavedChangesBadgeProps['onSaveAs'];
+}
+
+/**
+ * Returns a badge object suitable for the top nav `badges` prop
+ * @param onRevert
+ * @param onSave
+ * @param onSaveAs
+ */
+export const getTopNavUnsavedChangesBadge = ({
+  onRevert,
+  onSave,
+  onSaveAs,
+}: TopNavUnsavedChangesBadgeParams): TopNavMenuBadgeProps => {
+  return {
+    badgeText: i18n.translate('unsavedChangesBadge.unsavedChangesTitle', {
+      defaultMessage: 'Unsaved changes',
+    }),
+    renderCustomBadge: ({ badgeText }) => (
+      <UnsavedChangesBadge
+        badgeText={badgeText}
+        onRevert={onRevert}
+        onSave={onSave}
+        onSaveAs={onSaveAs}
+      />
+    ),
+  };
+};
diff --git a/packages/kbn-unsaved-changes-badge/tsconfig.json b/packages/kbn-unsaved-changes-badge/tsconfig.json
new file mode 100644
index 0000000000000..1c80dd5dae638
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/tsconfig.json
@@ -0,0 +1,14 @@
+{
+  "extends": "../../tsconfig.base.json",
+  "compilerOptions": {
+    "outDir": "target/types"
+  },
+  "include": ["*.ts", "src/**/*", "__mocks__/**/*.ts"],
+  "exclude": [
+    "target/**/*"
+  ],
+  "kbn_references": [
+    "@kbn/i18n",
+    "@kbn/navigation-plugin",
+  ]
+}
diff --git a/packages/kbn-unsaved-changes-badge/types.ts b/packages/kbn-unsaved-changes-badge/types.ts
new file mode 100644
index 0000000000000..a2697b8ae7717
--- /dev/null
+++ b/packages/kbn-unsaved-changes-badge/types.ts
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export type { UnsavedChangesBadgeProps } from './src/components/unsaved_changes_badge';
+export type { TopNavUnsavedChangesBadgeParams } from './src/utils/get_top_nav_unsaved_changes_badge';
diff --git a/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts b/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts
index d681365767ce8..5a5c2bb039683 100644
--- a/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts
+++ b/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts
@@ -86,7 +86,6 @@ const getCommonProps = () => {
     inspectorAdapters: { requests: new RequestAdapter() },
     onChangeDataView: action('change the data view'),
     onUpdateQuery: action('update the query'),
-    resetSavedSearch: action('reset the saved search the query'),
     savedSearch: savedSearchMock,
     savedSearchRefetch$: new Subject(),
     searchSource: searchSourceMock,
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.test.tsx
index 832a37577fc89..9802b25d8fc92 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.test.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.test.tsx
@@ -29,7 +29,6 @@ import { Storage } from '@kbn/kibana-utils-plugin/public';
 import { createSearchSessionMock } from '../../../../__mocks__/search_session';
 import { searchSourceInstanceMock } from '@kbn/data-plugin/common/search/search_source/mocks';
 import { getSessionServiceMock } from '@kbn/data-plugin/public/search/session/mocks';
-import { ResetSearchButton } from './reset_search_button';
 import { getDiscoverStateMock } from '../../../../__mocks__/discover_state.mock';
 import { DiscoverMainProvider } from '../../services/discover_state_provider';
 import { act } from 'react-dom/test-utils';
@@ -162,25 +161,4 @@ describe('Discover histogram layout component', () => {
       expect(component.isEmptyRender()).toBe(false);
     });
   });
-
-  describe('reset search button', () => {
-    it('renders the button when there is a saved search', async () => {
-      const { component } = await mountComponent();
-      expect(component.find(ResetSearchButton).exists()).toBe(true);
-    });
-
-    it('does not render the button when there is no saved search', async () => {
-      const { component } = await mountComponent({
-        savedSearch: { ...savedSearchMock, id: undefined },
-      });
-      expect(component.find(ResetSearchButton).exists()).toBe(false);
-    });
-
-    it('should call resetSavedSearch when clicked', async () => {
-      const { component, stateContainer } = await mountComponent();
-      expect(component.find(ResetSearchButton).exists()).toBe(true);
-      component.find(ResetSearchButton).find('button').simulate('click');
-      expect(stateContainer.actions.undoSavedSearchChanges).toHaveBeenCalled();
-    });
-  });
 });
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.tsx
index 54447ebe06b06..d6bcd73c94d8e 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_histogram_layout.tsx
@@ -10,10 +10,8 @@ import React from 'react';
 import { UnifiedHistogramContainer } from '@kbn/unified-histogram-plugin/public';
 import { css } from '@emotion/react';
 import useObservable from 'react-use/lib/useObservable';
-import { useSavedSearchInitial } from '../../services/discover_state_provider';
 import { useDiscoverHistogram } from './use_discover_histogram';
 import { type DiscoverMainContentProps, DiscoverMainContent } from './discover_main_content';
-import { ResetSearchButton } from './reset_search_button';
 import { useAppStateSelector } from '../../services/discover_app_state_container';
 
 export interface DiscoverHistogramLayoutProps extends DiscoverMainContentProps {
@@ -32,7 +30,6 @@ export const DiscoverHistogramLayout = ({
   ...mainContentProps
 }: DiscoverHistogramLayoutProps) => {
   const { dataState } = stateContainer;
-  const savedSearch = useSavedSearchInitial();
   const searchSessionId = useObservable(stateContainer.searchSessionManager.searchSessionId$);
   const hideChart = useAppStateSelector((state) => state.hideChart);
   const unifiedHistogramProps = useDiscoverHistogram({
@@ -54,11 +51,6 @@ export const DiscoverHistogramLayout = ({
       searchSessionId={searchSessionId}
       requestAdapter={dataState.inspectorAdapters.requests}
       container={container}
-      appendHitsCounter={
-        savedSearch.id ? (
-          <ResetSearchButton resetSavedSearch={stateContainer.actions.undoSavedSearchChanges} />
-        ) : undefined
-      }
       css={histogramLayoutCss}
     >
       <DiscoverMainContent
diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx
index d4cfa7e049a46..d172782398b2c 100644
--- a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx
+++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx
@@ -119,7 +119,6 @@ async function mountComponent(
     navigateTo: jest.fn(),
     onChangeDataView: jest.fn(),
     onUpdateQuery: jest.fn(),
-    resetSavedSearch: jest.fn(),
     savedSearch: savedSearchMock,
     searchSource: searchSourceMock,
     state: { columns: [], query, hideChart: false, interval: 'auto' },
diff --git a/src/plugins/discover/public/application/main/components/layout/reset_search_button.test.tsx b/src/plugins/discover/public/application/main/components/layout/reset_search_button.test.tsx
deleted file mode 100644
index cde96ff72050f..0000000000000
--- a/src/plugins/discover/public/application/main/components/layout/reset_search_button.test.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import { mountWithIntl } from '@kbn/test-jest-helpers';
-import React from 'react';
-import { ResetSearchButton } from './reset_search_button';
-
-describe('ResetSearchButton', () => {
-  it('should call resetSavedSearch when the button is clicked', () => {
-    const resetSavedSearch = jest.fn();
-    const component = mountWithIntl(<ResetSearchButton resetSavedSearch={resetSavedSearch} />);
-    component.find('button[data-test-subj="resetSavedSearch"]').simulate('click');
-    expect(resetSavedSearch).toHaveBeenCalled();
-  });
-});
diff --git a/src/plugins/discover/public/application/main/components/layout/reset_search_button.tsx b/src/plugins/discover/public/application/main/components/layout/reset_search_button.tsx
deleted file mode 100644
index e9b0cc2417d97..0000000000000
--- a/src/plugins/discover/public/application/main/components/layout/reset_search_button.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-import React from 'react';
-import { EuiButtonEmpty, EuiFlexItem } from '@elastic/eui';
-import { i18n } from '@kbn/i18n';
-import { FormattedMessage } from '@kbn/i18n-react';
-import { css } from '@emotion/react';
-
-const resetSearchButtonWrapper = css`
-  overflow: hidden;
-`;
-
-export const ResetSearchButton = ({ resetSavedSearch }: { resetSavedSearch?: () => void }) => {
-  return (
-    <EuiFlexItem grow={false} css={resetSearchButtonWrapper}>
-      <EuiButtonEmpty
-        iconType="refresh"
-        data-test-subj="resetSavedSearch"
-        onClick={resetSavedSearch}
-        size="s"
-        aria-label={i18n.translate('discover.reloadSavedSearchButton', {
-          defaultMessage: 'Reset search',
-        })}
-      >
-        <FormattedMessage id="discover.reloadSavedSearchButton" defaultMessage="Reset search" />
-      </EuiButtonEmpty>
-    </EuiFlexItem>
-  );
-};
diff --git a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx
index 7b53587d08eb4..51484519ee7ac 100644
--- a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx
+++ b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx
@@ -6,6 +6,7 @@
  * Side Public License, v 1.
  */
 import React, { useCallback, useEffect, useMemo, useRef } from 'react';
+import useObservable from 'react-use/lib/useObservable';
 import type { Query, TimeRange, AggregateQuery } from '@kbn/es-query';
 import { DataViewType, type DataView } from '@kbn/data-views-plugin/public';
 import type { DataViewPickerProps } from '@kbn/unified-search-plugin/public';
@@ -14,6 +15,7 @@ import { useSavedSearchInitial } from '../../services/discover_state_provider';
 import { useInternalStateSelector } from '../../services/discover_internal_state_container';
 import { useDiscoverServices } from '../../../../hooks/use_discover_services';
 import { getTopNavLinks } from './get_top_nav_links';
+import { getTopNavBadges } from './get_top_nav_badges';
 import { getHeaderActionMenuMounter } from '../../../../kibana_services';
 import { DiscoverStateContainer } from '../../services/discover_state';
 import { onSaveSearch } from './on_save_search';
@@ -115,6 +117,20 @@ export const DiscoverTopNav = ({
 
   const topNavCustomization = useDiscoverCustomization('top_nav');
 
+  const hasSavedSearchChanges = useObservable(stateContainer.savedSearchState.getHasChanged$());
+  const hasUnsavedChanges =
+    hasSavedSearchChanges && Boolean(stateContainer.savedSearchState.getId());
+  const topNavBadges = useMemo(
+    () =>
+      getTopNavBadges({
+        stateContainer,
+        services,
+        hasUnsavedChanges,
+        topNavCustomization,
+      }),
+    [stateContainer, services, hasUnsavedChanges, topNavCustomization]
+  );
+
   const topNavMenu = useMemo(
     () =>
       getTopNavLinks({
@@ -216,6 +232,7 @@ export const DiscoverTopNav = ({
   return (
     <SearchBar
       appName="discover"
+      badges={topNavBadges}
       config={topNavMenu}
       indexPatterns={[dataView]}
       onQuerySubmit={updateQuery}
diff --git a/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts b/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts
new file mode 100644
index 0000000000000..165c48c8d23c4
--- /dev/null
+++ b/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts
@@ -0,0 +1,100 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { getTopNavBadges } from './get_top_nav_badges';
+import { discoverServiceMock } from '../../../../__mocks__/services';
+import { getDiscoverStateMock } from '../../../../__mocks__/discover_state.mock';
+
+const stateContainer = getDiscoverStateMock({ isTimeBased: true });
+
+describe('getTopNavBadges()', function () {
+  test('should not return the unsaved changes badge if no changes', () => {
+    const topNavBadges = getTopNavBadges({
+      hasUnsavedChanges: false,
+      services: discoverServiceMock,
+      stateContainer,
+      topNavCustomization: undefined,
+    });
+    expect(topNavBadges).toMatchInlineSnapshot(`Array []`);
+  });
+
+  test('should return the unsaved changes badge when has changes', () => {
+    const topNavBadges = getTopNavBadges({
+      hasUnsavedChanges: true,
+      services: discoverServiceMock,
+      stateContainer,
+      topNavCustomization: undefined,
+    });
+    expect(topNavBadges).toMatchInlineSnapshot(`
+      Array [
+        Object {
+          "badgeText": "Unsaved changes",
+          "renderCustomBadge": [Function],
+        },
+      ]
+    `);
+  });
+
+  test('should not return the unsaved changes badge when disabled in customization', () => {
+    const topNavBadges = getTopNavBadges({
+      hasUnsavedChanges: true,
+      services: discoverServiceMock,
+      stateContainer,
+      topNavCustomization: {
+        id: 'top_nav',
+        defaultBadges: {
+          unsavedChangesBadge: {
+            disabled: true,
+          },
+        },
+      },
+    });
+    expect(topNavBadges).toMatchInlineSnapshot(`Array []`);
+  });
+
+  test('should allow to render additional badges when customized', () => {
+    const topNavBadges = getTopNavBadges({
+      hasUnsavedChanges: true,
+      services: discoverServiceMock,
+      stateContainer,
+      topNavCustomization: {
+        id: 'top_nav',
+        getBadges: () => {
+          return [
+            {
+              data: {
+                badgeText: 'test10',
+              },
+              order: 10,
+            },
+            {
+              data: {
+                badgeText: 'test200',
+              },
+              order: 200,
+            },
+          ];
+        },
+      },
+    });
+    expect(topNavBadges).toMatchInlineSnapshot(`
+      Array [
+        Object {
+          "badgeText": "test10",
+        },
+        Object {
+          "badgeText": "Unsaved changes",
+          "renderCustomBadge": [Function],
+        },
+        Object {
+          "badgeText": "test200",
+        },
+      ]
+    `);
+  });
+});
diff --git a/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx b/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx
new file mode 100644
index 0000000000000..74547544848d9
--- /dev/null
+++ b/src/plugins/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx
@@ -0,0 +1,57 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import type { TopNavMenuBadgeProps } from '@kbn/navigation-plugin/public';
+import { getTopNavUnsavedChangesBadge } from '@kbn/unsaved-changes-badge';
+import { DiscoverStateContainer } from '../../services/discover_state';
+import type { TopNavCustomization } from '../../../../customizations';
+import { onSaveSearch } from './on_save_search';
+import { DiscoverServices } from '../../../../build_services';
+
+/**
+ * Helper function to build the top nav badges
+ */
+export const getTopNavBadges = ({
+  hasUnsavedChanges,
+  stateContainer,
+  services,
+  topNavCustomization,
+}: {
+  hasUnsavedChanges: boolean | undefined;
+  stateContainer: DiscoverStateContainer;
+  services: DiscoverServices;
+  topNavCustomization: TopNavCustomization | undefined;
+}): TopNavMenuBadgeProps[] => {
+  const saveSearch = (initialCopyOnSave?: boolean) =>
+    onSaveSearch({
+      initialCopyOnSave,
+      savedSearch: stateContainer.savedSearchState.getState(),
+      services,
+      state: stateContainer,
+    });
+
+  const defaultBadges = topNavCustomization?.defaultBadges;
+  const entries = [...(topNavCustomization?.getBadges?.() ?? [])];
+
+  if (hasUnsavedChanges && !defaultBadges?.unsavedChangesBadge?.disabled) {
+    entries.push({
+      data: getTopNavUnsavedChangesBadge({
+        onRevert: stateContainer.actions.undoSavedSearchChanges,
+        onSave: async () => {
+          await saveSearch();
+        },
+        onSaveAs: async () => {
+          await saveSearch(true);
+        },
+      }),
+      order: defaultBadges?.unsavedChangesBadge?.order ?? 100,
+    });
+  }
+
+  return entries.sort((a, b) => a.order - b.order).map((entry) => entry.data);
+};
diff --git a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx
index abae8e83b41a1..30d73a6280072 100644
--- a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx
+++ b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx
@@ -80,12 +80,14 @@ export async function onSaveSearch({
   savedSearch,
   services,
   state,
+  initialCopyOnSave,
   onClose,
   onSaveCb,
 }: {
   savedSearch: SavedSearch;
   services: DiscoverServices;
   state: DiscoverStateContainer;
+  initialCopyOnSave?: boolean;
   onClose?: () => void;
   onSaveCb?: () => void;
 }) {
@@ -173,6 +175,7 @@ export async function onSaveSearch({
       services={services}
       title={savedSearch.title ?? ''}
       showCopyOnSave={!!savedSearch.id}
+      initialCopyOnSave={initialCopyOnSave}
       description={savedSearch.description}
       timeRestore={savedSearch.timeRestore}
       tags={savedSearch.tags ?? []}
@@ -188,6 +191,7 @@ const SaveSearchObjectModal: React.FC<{
   services: DiscoverServices;
   title: string;
   showCopyOnSave: boolean;
+  initialCopyOnSave?: boolean;
   description?: string;
   timeRestore?: boolean;
   tags: string[];
@@ -200,6 +204,7 @@ const SaveSearchObjectModal: React.FC<{
   description,
   tags,
   showCopyOnSave,
+  initialCopyOnSave,
   timeRestore: savedTimeRestore,
   onSave,
   onClose,
@@ -263,6 +268,7 @@ const SaveSearchObjectModal: React.FC<{
     <SavedObjectSaveModal
       title={title}
       showCopyOnSave={showCopyOnSave}
+      initialCopyOnSave={initialCopyOnSave}
       description={description}
       objectType={i18n.translate('discover.localMenu.saveSaveSearchObjectType', {
         defaultMessage: 'search',
diff --git a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts
index b47ddd10c4149..8948c954d039c 100644
--- a/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts
+++ b/src/plugins/discover/public/application/main/services/discover_saved_search_container.ts
@@ -8,6 +8,7 @@
 
 import { SavedSearch } from '@kbn/saved-search-plugin/public';
 import { BehaviorSubject } from 'rxjs';
+import type { SearchSourceFields } from '@kbn/data-plugin/common';
 import type { DataView } from '@kbn/data-views-plugin/common';
 import { SavedObjectSaveOpts } from '@kbn/saved-objects-plugin/public';
 import { isEqual } from 'lodash';
@@ -245,19 +246,61 @@ export function isEqualSavedSearch(savedSearchPrev: SavedSearch, savedSearchNext
   const keys = new Set([
     ...Object.keys(prevSavedSearch),
     ...Object.keys(nextSavedSearchWithoutSearchSource),
-  ]);
-  const savedSearchDiff = [...keys].filter((key: string) => {
-    // @ts-expect-error
-    return !isEqual(prevSavedSearch[key], nextSavedSearchWithoutSearchSource[key]);
+  ] as Array<keyof Omit<SavedSearch, 'searchSource'>>);
+
+  // at least one change in saved search attributes
+  const hasChangesInSavedSearch = [...keys].some((key) => {
+    if (
+      ['usesAdHocDataView', 'hideChart'].includes(key) &&
+      typeof prevSavedSearch[key] === 'undefined' &&
+      nextSavedSearchWithoutSearchSource[key] === false
+    ) {
+      return false; // ignore when value was changed from `undefined` to `false` as it happens per app logic, not by a user action
+    }
+
+    const isSame = isEqual(prevSavedSearch[key], nextSavedSearchWithoutSearchSource[key]);
+
+    if (!isSame) {
+      addLog('[savedSearch] difference between initial and changed version', {
+        key,
+        before: prevSavedSearch[key],
+        after: nextSavedSearchWithoutSearchSource[key],
+      });
+    }
+
+    return !isSame;
   });
 
-  const searchSourceDiff =
-    !isEqual(prevSearchSource.getField('filter'), nextSearchSource.getField('filter')) ||
-    !isEqual(prevSearchSource.getField('query'), nextSearchSource.getField('query')) ||
-    !isEqual(prevSearchSource.getField('index'), nextSearchSource.getField('index'));
-  const hasChanged = Boolean(savedSearchDiff.length || searchSourceDiff);
-  if (hasChanged) {
-    addLog('[savedSearch] difference between initial and changed version', searchSourceDiff);
+  if (hasChangesInSavedSearch) {
+    return false;
   }
-  return !hasChanged;
+
+  // at least one change in search source fields
+  const hasChangesInSearchSource = (
+    ['filter', 'query', 'index'] as Array<keyof SearchSourceFields>
+  ).some((key) => {
+    const prevValue =
+      key === 'index' ? prevSearchSource.getField(key)?.id : prevSearchSource.getField(key);
+    const nextValue =
+      key === 'index' ? nextSearchSource.getField(key)?.id : nextSearchSource.getField(key);
+    const isSame = isEqual(prevValue, nextValue);
+
+    if (!isSame) {
+      addLog('[savedSearch] difference between initial and changed version', {
+        key,
+        before: prevValue,
+        after: nextValue,
+      });
+    }
+
+    return !isSame;
+  });
+
+  if (hasChangesInSearchSource) {
+    return false;
+  }
+
+  addLog('[savedSearch] no difference between initial and changed version');
+
+  return true;
 }
diff --git a/src/plugins/discover/public/application/main/services/discover_state.test.ts b/src/plugins/discover/public/application/main/services/discover_state.test.ts
index bcd96315ce575..dd2bc17bd891a 100644
--- a/src/plugins/discover/public/application/main/services/discover_state.test.ts
+++ b/src/plugins/discover/public/application/main/services/discover_state.test.ts
@@ -360,10 +360,16 @@ describe('Test discover state actions', () => {
     const { searchSource, ...savedSearch } = state.savedSearchState.getState();
     expect(savedSearch).toMatchInlineSnapshot(`
       Object {
+        "breakdownField": undefined,
         "columns": Array [
           "default_column",
         ],
+        "hideAggregatedPreview": undefined,
+        "hideChart": undefined,
         "refreshInterval": undefined,
+        "rowHeight": undefined,
+        "rowsPerPage": undefined,
+        "sampleSize": undefined,
         "sort": Array [],
         "timeRange": undefined,
         "usesAdHocDataView": false,
diff --git a/src/plugins/discover/public/application/main/services/discover_state.ts b/src/plugins/discover/public/application/main/services/discover_state.ts
index bb0fbed792d64..b3abfed5e6ecc 100644
--- a/src/plugins/discover/public/application/main/services/discover_state.ts
+++ b/src/plugins/discover/public/application/main/services/discover_state.ts
@@ -185,7 +185,7 @@ export interface DiscoverStateContainer {
     /**
      * Undo changes made to the saved search, e.g. when the user triggers the "Reset search" button
      */
-    undoSavedSearchChanges: () => void;
+    undoSavedSearchChanges: () => Promise<SavedSearch>;
     /**
      * When saving a saved search with an ad hoc data view, a new id needs to be generated for the data view
      * This is to prevent duplicate ids messing with our system
diff --git a/src/plugins/discover/public/application/main/utils/update_saved_search.ts b/src/plugins/discover/public/application/main/utils/update_saved_search.ts
index dc5e5307f5fe0..fb6ffd6621825 100644
--- a/src/plugins/discover/public/application/main/utils/update_saved_search.ts
+++ b/src/plugins/discover/public/application/main/utils/update_saved_search.ts
@@ -60,26 +60,17 @@ export function updateSavedSearch({
     if (state.grid) {
       savedSearch.grid = state.grid;
     }
-    if (typeof state.hideChart !== 'undefined') {
-      savedSearch.hideChart = state.hideChart;
-    }
-    if (typeof state.rowHeight !== 'undefined') {
-      savedSearch.rowHeight = state.rowHeight;
-    }
+    savedSearch.hideChart = state.hideChart;
+    savedSearch.rowHeight = state.rowHeight;
+    savedSearch.rowsPerPage = state.rowsPerPage;
+    savedSearch.sampleSize = state.sampleSize;
 
     if (state.viewMode) {
       savedSearch.viewMode = state.viewMode;
     }
 
-    if (typeof state.breakdownField !== 'undefined') {
-      savedSearch.breakdownField = state.breakdownField;
-    } else if (savedSearch.breakdownField) {
-      savedSearch.breakdownField = '';
-    }
-
-    if (state.hideAggregatedPreview) {
-      savedSearch.hideAggregatedPreview = state.hideAggregatedPreview;
-    }
+    savedSearch.breakdownField = state.breakdownField || undefined; // `undefined` instead of an empty string
+    savedSearch.hideAggregatedPreview = state.hideAggregatedPreview;
 
     // add a flag here to identify text based language queries
     // these should be filtered out from the visualize editor
diff --git a/src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts b/src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts
index 4699a4665902f..d57b898b15111 100644
--- a/src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts
+++ b/src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts
@@ -6,20 +6,20 @@
  * Side Public License, v 1.
  */
 
-import type { TopNavMenuData } from '@kbn/navigation-plugin/public';
+import type { TopNavMenuData, TopNavMenuBadgeProps } from '@kbn/navigation-plugin/public';
 
-export interface TopNavDefaultMenuItem {
+export interface TopNavDefaultItem {
   disabled?: boolean;
   order?: number;
 }
 
 export interface TopNavDefaultMenu {
-  newItem?: TopNavDefaultMenuItem;
-  openItem?: TopNavDefaultMenuItem;
-  shareItem?: TopNavDefaultMenuItem;
-  alertsItem?: TopNavDefaultMenuItem;
-  inspectItem?: TopNavDefaultMenuItem;
-  saveItem?: TopNavDefaultMenuItem;
+  newItem?: TopNavDefaultItem;
+  openItem?: TopNavDefaultItem;
+  shareItem?: TopNavDefaultItem;
+  alertsItem?: TopNavDefaultItem;
+  inspectItem?: TopNavDefaultItem;
+  saveItem?: TopNavDefaultItem;
 }
 
 export interface TopNavMenuItem {
@@ -27,8 +27,19 @@ export interface TopNavMenuItem {
   order: number;
 }
 
+export interface TopNavDefaultBadges {
+  unsavedChangesBadge?: TopNavDefaultItem;
+}
+
+export interface TopNavBadge {
+  data: TopNavMenuBadgeProps;
+  order: number;
+}
+
 export interface TopNavCustomization {
   id: 'top_nav';
   defaultMenu?: TopNavDefaultMenu;
   getMenuItems?: () => TopNavMenuItem[];
+  defaultBadges?: TopNavDefaultBadges;
+  getBadges?: () => TopNavBadge[];
 }
diff --git a/src/plugins/discover/tsconfig.json b/src/plugins/discover/tsconfig.json
index 6fca69dfaea5c..0a3d7e0947137 100644
--- a/src/plugins/discover/tsconfig.json
+++ b/src/plugins/discover/tsconfig.json
@@ -74,6 +74,7 @@
     "@kbn/rule-data-utils",
     "@kbn/global-search-plugin",
     "@kbn/resizable-layout",
+    "@kbn/unsaved-changes-badge",
     "@kbn/core-chrome-browser"
   ],
   "exclude": [
diff --git a/src/plugins/navigation/public/index.ts b/src/plugins/navigation/public/index.ts
index 904e4ed2c5e7c..7db4526995c04 100644
--- a/src/plugins/navigation/public/index.ts
+++ b/src/plugins/navigation/public/index.ts
@@ -13,7 +13,7 @@ export function plugin(initializerContext: PluginInitializerContext) {
   return new NavigationPublicPlugin(initializerContext);
 }
 
-export type { TopNavMenuData, TopNavMenuProps } from './top_nav_menu';
+export type { TopNavMenuData, TopNavMenuProps, TopNavMenuBadgeProps } from './top_nav_menu';
 export { TopNavMenu } from './top_nav_menu';
 
 export type { NavigationPublicPluginSetup, NavigationPublicPluginStart } from './types';
diff --git a/src/plugins/navigation/public/top_nav_menu/__snapshots__/top_nav_menu.test.tsx.snap b/src/plugins/navigation/public/top_nav_menu/__snapshots__/top_nav_menu.test.tsx.snap
new file mode 100644
index 0000000000000..08bcceb4c8116
--- /dev/null
+++ b/src/plugins/navigation/public/top_nav_menu/__snapshots__/top_nav_menu.test.tsx.snap
@@ -0,0 +1,48 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`TopNavMenu when setMenuMountPoint is provided should render badges and search bar 1`] = `
+<div
+  class="euiBadgeGroup kbnTopNavMenu__badgeGroup emotion-euiBadgeGroup-xs"
+>
+  <span
+    class="euiBadge emotion-euiBadge-default"
+    tabindex="0"
+    title="badge1"
+  >
+    <span
+      class="euiBadge__content emotion-euiBadge__content"
+    >
+      <span
+        class="euiBadge__text emotion-euiBadge__text"
+      >
+        badge1
+      </span>
+    </span>
+  </span>
+  <span
+    class="euiToolTipAnchor emotion-euiToolTipAnchor-inlineBlock"
+  >
+    <span
+      class="euiBadge emotion-euiBadge-warning"
+      data-test-subj="test2"
+      tabindex="0"
+      title=""
+    >
+      <span
+        class="euiBadge__content emotion-euiBadge__content"
+      >
+        <span
+          class="euiBadge__text emotion-euiBadge__text"
+        >
+          badge2
+        </span>
+      </span>
+    </span>
+  </span>
+  <div
+    data-test-subj="test3"
+  >
+    badge3
+  </div>
+</div>
+`;
diff --git a/src/plugins/navigation/public/top_nav_menu/index.ts b/src/plugins/navigation/public/top_nav_menu/index.ts
index 16c92aaaaf712..e6705273c2a1b 100644
--- a/src/plugins/navigation/public/top_nav_menu/index.ts
+++ b/src/plugins/navigation/public/top_nav_menu/index.ts
@@ -7,7 +7,7 @@
  */
 
 export { createTopNav } from './create_top_nav_menu';
-export type { TopNavMenuProps } from './top_nav_menu';
+export type { TopNavMenuProps, TopNavMenuBadgeProps } from './top_nav_menu';
 export { TopNavMenu } from './top_nav_menu';
 export type { TopNavMenuData } from './top_nav_menu_data';
 export type { TopNavMenuExtensionsRegistrySetup } from './top_nav_menu_extensions_registry';
diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx
index 127bd6e8482b1..218c620519cf2 100644
--- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx
+++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.test.tsx
@@ -10,10 +10,11 @@ import React from 'react';
 import { ReactWrapper } from 'enzyme';
 import { act } from 'react-dom/test-utils';
 import { MountPoint } from '@kbn/core/public';
-import { TopNavMenu } from './top_nav_menu';
+import { TopNavMenu, TopNavMenuBadgeProps } from './top_nav_menu';
 import { TopNavMenuData } from './top_nav_menu_data';
 import { shallowWithIntl, mountWithIntl } from '@kbn/test-jest-helpers';
 import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
+import { EuiToolTipProps } from '@elastic/eui';
 
 const unifiedSearch = {
   ui: {
@@ -24,6 +25,7 @@ const unifiedSearch = {
 
 describe('TopNavMenu', () => {
   const WRAPPER_SELECTOR = '.kbnTopNavMenu__wrapper';
+  const BADGES_GROUP_SELECTOR = '.kbnTopNavMenu__badgeGroup';
   const TOP_NAV_ITEM_SELECTOR = 'TopNavMenuItem';
   const SEARCH_BAR_SELECTOR = 'AggregateQuerySearchBar';
   const menuItems: TopNavMenuData[] = [
@@ -43,6 +45,25 @@ describe('TopNavMenu', () => {
       run: jest.fn(),
     },
   ];
+  const badges: TopNavMenuBadgeProps[] = [
+    {
+      badgeText: 'badge1',
+    },
+    {
+      'data-test-subj': 'test2',
+      badgeText: 'badge2',
+      title: '',
+      color: 'warning',
+      toolTipProps: {
+        content: 'tooltip content',
+        position: 'bottom',
+      } as EuiToolTipProps,
+    },
+    {
+      badgeText: 'badge3',
+      renderCustomBadge: ({ badgeText }) => <div data-test-subj="test3">{badgeText}</div>,
+    },
+  ];
 
   it('Should render nothing when no config is provided', () => {
     const component = shallowWithIntl(<TopNavMenu appName={'test'} />);
@@ -165,5 +186,26 @@ describe('TopNavMenu', () => {
       // menu is rendered outside of the component
       expect(component.find(TOP_NAV_ITEM_SELECTOR).length).toBe(0);
     });
+
+    it('should render badges and search bar', async () => {
+      const component = mountWithIntl(
+        <TopNavMenu
+          appName={'test'}
+          badges={badges}
+          showSearchBar={true}
+          unifiedSearch={unifiedSearch}
+          setMenuMountPoint={setMountPoint}
+        />
+      );
+
+      act(() => {
+        mountPoint(portalTarget);
+      });
+
+      await refresh();
+
+      expect(component.find(SEARCH_BAR_SELECTOR).length).toBe(1);
+      expect(portalTarget.querySelector(BADGES_GROUP_SELECTOR)).toMatchSnapshot();
+    });
   });
 });
diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx
index de060db9b6e3b..9c899cd9d7207 100644
--- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx
+++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx
@@ -6,7 +6,7 @@
  * Side Public License, v 1.
  */
 
-import React, { ReactElement } from 'react';
+import React, { ReactElement, Fragment } from 'react';
 import {
   EuiBadge,
   EuiBadgeGroup,
@@ -25,9 +25,10 @@ import { AggregateQuery, Query } from '@kbn/es-query';
 import { TopNavMenuData } from './top_nav_menu_data';
 import { TopNavMenuItem } from './top_nav_menu_item';
 
-type Badge = EuiBadgeProps & {
+export type TopNavMenuBadgeProps = EuiBadgeProps & {
   badgeText: string;
   toolTipProps?: Partial<EuiToolTipProps>;
+  renderCustomBadge?: (props: { badgeText: string }) => ReactElement;
 };
 
 export type TopNavMenuProps<QT extends Query | AggregateQuery = Query> = Omit<
@@ -35,7 +36,7 @@ export type TopNavMenuProps<QT extends Query | AggregateQuery = Query> = Omit<
   'kibana' | 'intl' | 'timeHistory'
 > & {
   config?: TopNavMenuData[];
-  badges?: Badge[];
+  badges?: TopNavMenuBadgeProps[];
   showSearchBar?: boolean;
   showQueryInput?: boolean;
   showDatePicker?: boolean;
@@ -82,14 +83,22 @@ export function TopNavMenu<QT extends AggregateQuery | Query = Query>(
     return null;
   }
 
-  function createBadge({ badgeText, toolTipProps, ...badgeProps }: Badge, i: number): ReactElement {
-    const Badge = ({ key, ...rest }: { key?: string }) => (
-      <EuiBadge key={key} tabIndex={0} {...rest} {...badgeProps}>
+  function createBadge(
+    { badgeText, toolTipProps, renderCustomBadge, ...badgeProps }: TopNavMenuBadgeProps,
+    i: number
+  ): ReactElement {
+    const key = `nav-menu-badge-${i}`;
+
+    const Badge = () => (
+      <EuiBadge tabIndex={0} {...badgeProps}>
         {badgeText}
       </EuiBadge>
     );
 
-    const key = `nav-menu-badge-${i}`;
+    if (renderCustomBadge) {
+      return <Fragment key={key}>{renderCustomBadge({ badgeText })}</Fragment>;
+    }
+
     return toolTipProps ? (
       <EuiToolTip key={key} {...toolTipProps}>
         <Badge />
diff --git a/test/functional/apps/discover/group1/_discover.ts b/test/functional/apps/discover/group1/_discover.ts
index 63f9109ba8bd2..a041939f2b809 100644
--- a/test/functional/apps/discover/group1/_discover.ts
+++ b/test/functional/apps/discover/group1/_discover.ts
@@ -138,7 +138,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
 
         // reset to persisted state
         await queryBar.clearQuery();
-        await PageObjects.discover.clickResetSavedSearchButton();
+        await PageObjects.discover.revertUnsavedChanges();
         const expectedHitCount = '14,004';
         await retry.try(async function () {
           expect(await queryBar.getQueryString()).to.be('');
diff --git a/test/functional/apps/discover/group1/_discover_histogram.ts b/test/functional/apps/discover/group1/_discover_histogram.ts
index d69bd153b3d56..43f39b417864c 100644
--- a/test/functional/apps/discover/group1/_discover_histogram.ts
+++ b/test/functional/apps/discover/group1/_discover_histogram.ts
@@ -320,7 +320,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
       });
       await PageObjects.discover.toggleChartVisibility();
       await PageObjects.discover.waitUntilSearchingHasFinished();
-      await PageObjects.discover.clickResetSavedSearchButton();
+      await PageObjects.discover.revertUnsavedChanges();
       await PageObjects.discover.waitUntilSearchingHasFinished();
       requestData = await testSubjects.getAttribute('unifiedHistogramChart', 'data-request-data');
       expect(JSON.parse(requestData)).to.eql({
diff --git a/test/functional/apps/discover/group3/_request_counts.ts b/test/functional/apps/discover/group3/_request_counts.ts
index fdee64ada9965..a1038b3f7e4ee 100644
--- a/test/functional/apps/discover/group3/_request_counts.ts
+++ b/test/functional/apps/discover/group3/_request_counts.ts
@@ -156,7 +156,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
         await queryBar.clickQuerySubmitButton();
         await waitForLoadingToFinish();
         await expectSearches(type, 2, async () => {
-          await PageObjects.discover.clickResetSavedSearchButton();
+          await PageObjects.discover.revertUnsavedChanges();
         });
         // clearing the saved search
         await expectSearches('ese', 2, async () => {
diff --git a/test/functional/apps/discover/group3/_unsaved_changes_badge.ts b/test/functional/apps/discover/group3/_unsaved_changes_badge.ts
new file mode 100644
index 0000000000000..292835b37ef10
--- /dev/null
+++ b/test/functional/apps/discover/group3/_unsaved_changes_badge.ts
@@ -0,0 +1,167 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import expect from '@kbn/expect';
+import { FtrProviderContext } from '../ftr_provider_context';
+
+const SAVED_SEARCH_NAME = 'test saved search';
+
+export default function ({ getService, getPageObjects }: FtrProviderContext) {
+  const esArchiver = getService('esArchiver');
+  const kibanaServer = getService('kibanaServer');
+  const testSubjects = getService('testSubjects');
+  const dataGrid = getService('dataGrid');
+  const PageObjects = getPageObjects([
+    'settings',
+    'common',
+    'discover',
+    'header',
+    'timePicker',
+    'dashboard',
+    'unifiedFieldList',
+  ]);
+  const security = getService('security');
+  const defaultSettings = {
+    defaultIndex: 'logstash-*',
+    hideAnnouncements: true,
+  };
+
+  describe('discover unsaved changes badge', function describeIndexTests() {
+    before(async () => {
+      await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']);
+      await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
+      await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover');
+    });
+
+    after(async () => {
+      await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover');
+      await kibanaServer.uiSettings.replace({});
+      await kibanaServer.savedObjects.cleanStandardList();
+    });
+
+    beforeEach(async function () {
+      await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
+      await kibanaServer.uiSettings.update(defaultSettings);
+      await PageObjects.common.navigateToApp('discover');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+    });
+
+    it('should not show the badge initially nor after changes to a draft saved search', async () => {
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      await PageObjects.unifiedFieldList.clickFieldListItemAdd('bytes');
+
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+    });
+
+    it('should show the badge only after changes to a persisted saved search', async () => {
+      await PageObjects.discover.saveSearch(SAVED_SEARCH_NAME);
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      await PageObjects.unifiedFieldList.clickFieldListItemAdd('bytes');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+
+      await testSubjects.existOrFail('unsavedChangesBadge');
+
+      await PageObjects.discover.saveUnsavedChanges();
+
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+    });
+
+    it('should not show a badge after loading a saved search, only after changes', async () => {
+      await PageObjects.discover.loadSavedSearch(SAVED_SEARCH_NAME);
+
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      await PageObjects.discover.chooseBreakdownField('_index');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+
+      await testSubjects.existOrFail('unsavedChangesBadge');
+    });
+
+    it('should allow to revert changes', async () => {
+      await PageObjects.discover.loadSavedSearch(SAVED_SEARCH_NAME);
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      // test changes to columns
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes']);
+      await PageObjects.unifiedFieldList.clickFieldListItemAdd('extension');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes', 'extension']);
+      await testSubjects.existOrFail('unsavedChangesBadge');
+      await PageObjects.discover.revertUnsavedChanges();
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes']);
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      // test changes to sample size
+      await dataGrid.clickGridSettings();
+      expect(await dataGrid.getCurrentSampleSizeValue()).to.be(500);
+      await dataGrid.changeSampleSizeValue(250);
+      await dataGrid.clickGridSettings();
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      await testSubjects.existOrFail('unsavedChangesBadge');
+      await dataGrid.clickGridSettings();
+      expect(await dataGrid.getCurrentSampleSizeValue()).to.be(250);
+      await dataGrid.clickGridSettings();
+      await PageObjects.discover.revertUnsavedChanges();
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+      await dataGrid.clickGridSettings();
+      expect(await dataGrid.getCurrentSampleSizeValue()).to.be(500);
+      await dataGrid.clickGridSettings();
+
+      // test changes to rows per page
+      await dataGrid.checkCurrentRowsPerPageToBe(100);
+      await dataGrid.changeRowsPerPageTo(25);
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      await testSubjects.existOrFail('unsavedChangesBadge');
+      await dataGrid.checkCurrentRowsPerPageToBe(25);
+      await PageObjects.discover.revertUnsavedChanges();
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+      await dataGrid.checkCurrentRowsPerPageToBe(100);
+    });
+
+    it('should hide the badge once user manually reverts changes', async () => {
+      await PageObjects.discover.loadSavedSearch(SAVED_SEARCH_NAME);
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      // changes to columns
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes']);
+      await PageObjects.unifiedFieldList.clickFieldListItemAdd('extension');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes', 'extension']);
+      await testSubjects.existOrFail('unsavedChangesBadge');
+      await PageObjects.unifiedFieldList.clickFieldListItemRemove('extension');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      expect(await dataGrid.getHeaderFields()).to.eql(['@timestamp', 'bytes']);
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+
+      // test changes to breakdown field
+      await PageObjects.discover.chooseBreakdownField('_index');
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      await testSubjects.existOrFail('unsavedChangesBadge');
+      await PageObjects.discover.clearBreakdownField();
+      await PageObjects.header.waitUntilLoadingHasFinished();
+      await PageObjects.discover.waitUntilSearchingHasFinished();
+      await testSubjects.missingOrFail('unsavedChangesBadge');
+    });
+  });
+}
diff --git a/test/functional/apps/discover/group3/index.ts b/test/functional/apps/discover/group3/index.ts
index 5827c1e7ed805..4ac4572014a52 100644
--- a/test/functional/apps/discover/group3/index.ts
+++ b/test/functional/apps/discover/group3/index.ts
@@ -25,5 +25,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
     loadTestFile(require.resolve('./_request_counts'));
     loadTestFile(require.resolve('./_doc_viewer'));
     loadTestFile(require.resolve('./_view_mode_toggle'));
+    loadTestFile(require.resolve('./_unsaved_changes_badge'));
   });
 }
diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts
index 47a79132212cc..6005bbd2de7ad 100644
--- a/test/functional/page_objects/discover_page.ts
+++ b/test/functional/page_objects/discover_page.ts
@@ -168,10 +168,30 @@ export class DiscoverPageObject extends FtrService {
     await this.testSubjects.click('discoverOpenButton');
   }
 
-  public async clickResetSavedSearchButton() {
-    await this.testSubjects.moveMouseTo('resetSavedSearch');
-    await this.testSubjects.click('resetSavedSearch');
+  public async revertUnsavedChanges() {
+    await this.testSubjects.moveMouseTo('unsavedChangesBadge');
+    await this.testSubjects.click('unsavedChangesBadge');
+    await this.retry.waitFor('popover is open', async () => {
+      return Boolean(await this.testSubjects.find('unsavedChangesBadgeMenuPanel'));
+    });
+    await this.testSubjects.click('revertUnsavedChangesButton');
     await this.header.waitUntilLoadingHasFinished();
+    await this.waitUntilSearchingHasFinished();
+  }
+
+  public async saveUnsavedChanges() {
+    await this.testSubjects.moveMouseTo('unsavedChangesBadge');
+    await this.testSubjects.click('unsavedChangesBadge');
+    await this.retry.waitFor('popover is open', async () => {
+      return Boolean(await this.testSubjects.find('unsavedChangesBadgeMenuPanel'));
+    });
+    await this.testSubjects.click('saveUnsavedChangesButton');
+    await this.retry.waitFor('modal is open', async () => {
+      return Boolean(await this.testSubjects.find('confirmSaveSavedObjectButton'));
+    });
+    await this.testSubjects.click('confirmSaveSavedObjectButton');
+    await this.header.waitUntilLoadingHasFinished();
+    await this.waitUntilSearchingHasFinished();
   }
 
   public async closeLoadSavedSearchPanel() {
@@ -199,6 +219,10 @@ export class DiscoverPageObject extends FtrService {
     await this.comboBox.set('unifiedHistogramBreakdownFieldSelector', field);
   }
 
+  public async clearBreakdownField() {
+    await this.comboBox.clear('unifiedHistogramBreakdownFieldSelector');
+  }
+
   public async chooseLensChart(chart: string) {
     await this.comboBox.set('unifiedHistogramSuggestionSelector', chart);
   }
diff --git a/tsconfig.base.json b/tsconfig.base.json
index c367ace533937..7faad08e28f0d 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -1572,6 +1572,8 @@
       "@kbn/unified-histogram-plugin/*": ["src/plugins/unified_histogram/*"],
       "@kbn/unified-search-plugin": ["src/plugins/unified_search"],
       "@kbn/unified-search-plugin/*": ["src/plugins/unified_search/*"],
+      "@kbn/unsaved-changes-badge": ["packages/kbn-unsaved-changes-badge"],
+      "@kbn/unsaved-changes-badge/*": ["packages/kbn-unsaved-changes-badge/*"],
       "@kbn/upgrade-assistant-plugin": ["x-pack/plugins/upgrade_assistant"],
       "@kbn/upgrade-assistant-plugin/*": ["x-pack/plugins/upgrade_assistant/*"],
       "@kbn/uptime-plugin": ["x-pack/plugins/uptime"],
diff --git a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
index e5fb09d56e5fa..bf3913dff5680 100644
--- a/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
+++ b/x-pack/plugins/log_explorer/public/customizations/log_explorer_profile.tsx
@@ -113,6 +113,9 @@ export const createLogExplorerProfileCustomizations =
         openItem: { disabled: true },
         saveItem: { disabled: true },
       },
+      defaultBadges: {
+        unsavedChangesBadge: { disabled: true },
+      },
     });
 
     /**
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index 2ec1a295cc065..ad8ed89bb8061 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -2455,7 +2455,6 @@
     "discover.notifications.notSavedSearchTitle": "La recherche \"{savedSearchTitle}\" n'a pas été enregistrée.",
     "discover.notifications.savedSearchTitle": "La recherche \"{savedSearchTitle}\" a été enregistrée.",
     "discover.pageTitleWithoutSavedSearch": "Discover - Recherche non encore enregistrée",
-    "discover.reloadSavedSearchButton": "Réinitialiser la recherche",
     "discover.rootBreadcrumb": "Découverte",
     "discover.sampleData.viewLinkLabel": "Découverte",
     "discover.savedSearch.savedObjectName": "Recherche enregistrée",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 626dabd7c69e6..f529bae21b70e 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -2469,7 +2469,6 @@
     "discover.notifications.notSavedSearchTitle": "検索「{savedSearchTitle}」は保存されませんでした。",
     "discover.notifications.savedSearchTitle": "検索「{savedSearchTitle}」が保存されました。",
     "discover.pageTitleWithoutSavedSearch": "Discover - 検索は保存されていません",
-    "discover.reloadSavedSearchButton": "検索をリセット",
     "discover.rootBreadcrumb": "Discover",
     "discover.sampleData.viewLinkLabel": "Discover",
     "discover.savedSearch.savedObjectName": "保存検索",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 6c9c7e2d37e7f..7ef6acf6b7b43 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -2469,7 +2469,6 @@
     "discover.notifications.notSavedSearchTitle": "搜索“{savedSearchTitle}”未保存。",
     "discover.notifications.savedSearchTitle": "搜索“{savedSearchTitle}”已保存",
     "discover.pageTitleWithoutSavedSearch": "Discover - 尚未保存搜索",
-    "discover.reloadSavedSearchButton": "重置搜索",
     "discover.rootBreadcrumb": "Discover",
     "discover.sampleData.viewLinkLabel": "Discover",
     "discover.savedSearch.savedObjectName": "已保存搜索",
diff --git a/yarn.lock b/yarn.lock
index dbf3facc5ec10..d1c704d5622c1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6048,6 +6048,10 @@
   version "0.0.0"
   uid ""
 
+"@kbn/unsaved-changes-badge@link:packages/kbn-unsaved-changes-badge":
+  version "0.0.0"
+  uid ""
+
 "@kbn/upgrade-assistant-plugin@link:x-pack/plugins/upgrade_assistant":
   version "0.0.0"
   uid ""

From 28d6d38ab8ace03fd8b4a5e7341305734477a56f Mon Sep 17 00:00:00 2001
From: amyjtechwriter <61687663+amyjtechwriter@users.noreply.github.com>
Date: Mon, 13 Nov 2023 13:21:54 +0000
Subject: [PATCH 124/147] [DOCS] 8.11.1 release notes (#171087)

The 8.11.1 release notes
---
 docs/CHANGELOG.asciidoc | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc
index c10d674fb4812..73bb3a87fbadb 100644
--- a/docs/CHANGELOG.asciidoc
+++ b/docs/CHANGELOG.asciidoc
@@ -10,6 +10,7 @@
 
 Review important information about the {kib} 8.x releases.
 
+* <<release-notes-8.11.1>>
 * <<release-notes-8.11.0>>
 * <<release-notes-8.10.4>>
 * <<release-notes-8.10.3>>
@@ -53,6 +54,28 @@ Review important information about the {kib} 8.x releases.
 * <<release-notes-8.0.0-alpha1>>
 
 --
+
+[[release-notes-8.11.1]]
+== {kib} 8.11.1
+
+The 8.11.1 release includes the following bug fixes.
+
+[float]
+[[fixes-v8.11.1]]
+=== Bug Fixes
+
+Fleet::
+* Fixes inability to upgrade agents from version 8.10.4 to version 8.11 ({kibana-pull}170974[#170974]).
+* Append space ID to security solution tag ({kibana-pull}170789[#170789]).
+* Modify bulk unenroll to include inactive agents ({kibana-pull}170249[#170249]).
+Lens & Visualizations::
+* Fixes error handling for ES|QL nested error messages ({kibana-pull}170005[#170005]).
+Machine Learning::
+* Disable anomaly detection job creation from ES|QL lens visualizations ({kibana-pull}170711[#170711]).
+Presentation::
+* Fixes vector tile layer with joins stuck in loading state when not visible ({kibana-pull}170984[#170984]).
+* Fixes expand layer control is not clickable when layers are loading ({kibana-pull}170912[#170912]).
+
 [[release-notes-8.11.0]]
 == {kib} 8.11.0
 

From 19e43c8508091ec74a963c2eb100ba2d9fe7ab0c Mon Sep 17 00:00:00 2001
From: Ignacio Rivas <rivasign@gmail.com>
Date: Mon, 13 Nov 2023 14:25:55 +0100
Subject: [PATCH 125/147] [Index management] Skip for create enrich policies
 tests for MKI  (#171072)

---
 .../common/management/index_management/create_enrich_policy.ts  | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
index f5b51c815e0fe..81a8551a0b8b4 100644
--- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
+++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/create_enrich_policy.ts
@@ -20,6 +20,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
   const POLICY_NAME = `policy-${Math.random()}`;
 
   describe('Create enrich policy', function () {
+    // TimeoutError:  Waiting for element to be located By(css selector, [data-test-subj="enrichPoliciesEmptyPromptCreateButton"])
+    this.tags(['failsOnMKI']);
     before(async () => {
       log.debug('Creating test index');
       try {

From ddc07c53a541e1e322ec238c554635f905ccc38a Mon Sep 17 00:00:00 2001
From: mohamedhamed-ahmed <mohamed.ahmed@elastic.co>
Date: Mon, 13 Nov 2023 13:51:33 +0000
Subject: [PATCH 126/147] [Log Stream] Support date nanos (#170308)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

closes #88290

## 📝  Summary

As described in #88290 we need to add `date_nanos` support to the Stream
UI page. In this PR the necessary changes have been made all over the
Stream UI and the usages of it.

## ✅  Testing

⚠️ Testing the Stream UI with old timestamp indices is important to make
sure that the behavior is still as before and not affected at all. This
can be done by running local env from the PR and simulating all
interactions on edge-lit cluster for example, to make sure that the
behavior is not changed.

For testing the new changes with support of `date_nano`:

1. You can use [the steps
here](https://github.com/elastic/kibana/issues/88290#issuecomment-1713400873)
to create and ingest documents with nano precision.
2. Navigate to the stream UI and the documents should be displayed
properly.
3. Sync with the URL state should be changed from timestamp to ISO
string date.
4. Changing time ranges should behave as before, as well as Text
Highlights.
5. Open the logs flyout and you should see the timestamp in nano
seconds.
6. Play around with the minimap, it should behave exactly as before.

### Stream UI:

<img width="2556" alt="Screenshot 2023-11-02 at 14 15 49"
src="https://github.com/elastic/kibana/assets/11225826/596966cd-0ee0-44ee-ba15-f387f3725f66">

- The stream UI has been affected in many areas:
- The logPosition key in the URL should now be in ISO string, but still
backward compatible incase the user has bookmarks with timestamps.
- The minimap should still behave as before in terms of navigation
onClick and also highlighting displayed areas

### Stream UI Flyout:

<img width="2556" alt="Screenshot 2023-11-02 at 14 15 23"
src="https://github.com/elastic/kibana/assets/11225826/6081533c-3bed-43e1-872d-c83fe78ab436">

- The logs flyout should now display the date in nanos format if the
document is ingested using a nano format.

### Anomalies:

<img width="1717" alt="Screenshot 2023-11-01 at 10 37 22"
src="https://github.com/elastic/kibana/assets/11225826/b6170d76-40a4-44db-85de-d8ae852bc17e">

-Anomalies tab under logs as a navigation to stream UI which should
still behave as before passing the filtration and time.

### Categories:

<img width="1705" alt="Screenshot 2023-11-01 at 10 38 19"
src="https://github.com/elastic/kibana/assets/11225826/c4c19202-d27f-410f-b94d-80507542c775">

-Categories tab under logs as a navigation to stream UI which should
still behave as before passing the filtration and time.

### External Links To Stream:
- All links to the Stream UI should still work as before:
   - APM Links for traces, containers, hosts
   - Infra links in Inventory and Hosts views

## 🎥 Demo


https://github.com/elastic/kibana/assets/11225826/9a39bc5a-ba37-49e0-b7f2-e73260fb01f0
---
 packages/kbn-io-ts-utils/index.ts             |   8 +
 .../kbn-io-ts-utils/src/time_key_rt/index.ts  |  53 +++
 .../infra/common/locators/locators.test.ts    |   2 +-
 x-pack/plugins/infra/common/time/time_key.ts  |   3 +-
 .../infra/common/url_state_storage_service.ts |   6 +-
 .../logging/log_minimap/log_minimap.tsx       |   7 +-
 .../log_entry_categories/module_descriptor.ts |   2 +-
 .../log_entry_rate/module_descriptor.ts       |   2 +-
 .../log_stream_page/state/src/types.ts        |   2 +-
 .../src/state_machine.ts                      |  16 +-
 .../src/url_state_storage_service.ts          |  11 -
 .../src/url_state_storage_service.ts          |   5 +-
 .../category_example_message.tsx              |   7 +-
 .../sections/anomalies/log_entry_example.tsx  |   2 +-
 .../public/pages/logs/stream/page_content.tsx |   2 +-
 .../pages/logs/stream/page_logs_content.tsx   |  10 +-
 .../infra/public/test_utils/entries.ts        |   6 +-
 x-pack/plugins/logs_shared/common/index.ts    |   2 +
 .../logs_shared/common/log_entry/log_entry.ts |   4 +-
 .../common/log_entry/log_entry_cursor.ts      |   4 +-
 .../logs_shared/common/time/time_key.ts       |  20 +-
 .../common/utils/date_helpers.test.ts         |  45 ++
 .../logs_shared/common/utils/date_helpers.ts  |  29 ++
 .../plugins/logs_shared/common/utils/index.ts |   8 +
 .../public/components/formatted_time.tsx      |   4 +-
 .../log_stream/log_stream.stories.tsx         |   2 +-
 .../components/log_stream/log_stream.tsx      |   2 +-
 .../log_entry_actions_menu.test.tsx           |  17 +-
 .../log_entry_fields_table.tsx                |   2 +-
 .../log_entry_flyout/log_entry_flyout.tsx     |   2 +-
 .../log_text_stream/column_headers.tsx        |   2 +-
 .../logging/log_text_stream/item.ts           |   9 +-
 .../logging/log_text_stream/log_date_row.tsx  |   6 +-
 .../log_text_stream/log_entry_column.tsx      |   3 +-
 .../logging/log_text_stream/log_entry_row.tsx |   2 +-
 .../log_entry_timestamp_column.tsx            |   4 +-
 .../scrollable_log_text_stream_view.tsx       |  17 +-
 .../log_highlights/log_entry_highlights.tsx   |   2 +-
 .../logs/log_highlights/log_highlights.tsx    |   3 +-
 .../logs/log_highlights/next_and_previous.tsx |   3 +-
 .../logs/log_position/use_log_position.ts     |   6 +-
 .../use_fetch_log_entries_around.ts           |   3 +-
 .../logs_shared/public/test_utils/entries.ts  |   6 +-
 .../utils/log_column_render_configuration.tsx |   2 +-
 .../public/utils/log_entry/log_entry.ts       |   5 +-
 .../log_entries/kibana_log_entries_adapter.ts |  21 +-
 .../log_entries_domain/log_entries_domain.ts  |   5 +-
 .../log_entries_search_strategy.test.ts       |   9 +-
 .../log_entries_search_strategy.ts            |   2 +-
 .../log_entry_search_strategy.test.ts         |   9 +-
 .../services/log_entries/queries/common.ts    |   6 +-
 .../log_entries/queries/log_entries.ts        |   4 +-
 .../services/log_entries/queries/log_entry.ts |  13 +-
 .../apis/metrics_ui/log_entry_highlights.ts   |   5 +-
 x-pack/test/functional/apps/infra/index.ts    |   1 +
 x-pack/test/functional/apps/infra/link_to.ts  |   7 +-
 .../apps/infra/log_stream_date_nano.ts        |  98 ++++
 .../infra/logs_with_nano_date/data.json.gz    | Bin 0 -> 338 bytes
 .../infra/logs_with_nano_date/mappings.json   | 419 ++++++++++++++++++
 .../functional/services/logs_ui/log_stream.ts |  26 ++
 60 files changed, 850 insertions(+), 133 deletions(-)
 create mode 100644 packages/kbn-io-ts-utils/src/time_key_rt/index.ts
 create mode 100644 x-pack/plugins/logs_shared/common/utils/date_helpers.test.ts
 create mode 100644 x-pack/plugins/logs_shared/common/utils/date_helpers.ts
 create mode 100644 x-pack/plugins/logs_shared/common/utils/index.ts
 create mode 100644 x-pack/test/functional/apps/infra/log_stream_date_nano.ts
 create mode 100644 x-pack/test/functional/es_archives/infra/logs_with_nano_date/data.json.gz
 create mode 100644 x-pack/test/functional/es_archives/infra/logs_with_nano_date/mappings.json

diff --git a/packages/kbn-io-ts-utils/index.ts b/packages/kbn-io-ts-utils/index.ts
index 57d9e7bb47713..8f1b974eccdcb 100644
--- a/packages/kbn-io-ts-utils/index.ts
+++ b/packages/kbn-io-ts-utils/index.ts
@@ -32,3 +32,11 @@ export {
 export { datemathStringRt } from './src/datemath_string_rt';
 
 export { createPlainError, decodeOrThrow, formatErrors, throwErrors } from './src/decode_or_throw';
+
+export {
+  DateFromStringOrNumber,
+  minimalTimeKeyRT,
+  type MinimalTimeKey,
+  type TimeKey,
+  type UniqueTimeKey,
+} from './src/time_key_rt';
diff --git a/packages/kbn-io-ts-utils/src/time_key_rt/index.ts b/packages/kbn-io-ts-utils/src/time_key_rt/index.ts
new file mode 100644
index 0000000000000..1884ea5a52e83
--- /dev/null
+++ b/packages/kbn-io-ts-utils/src/time_key_rt/index.ts
@@ -0,0 +1,53 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import * as rt from 'io-ts';
+import moment from 'moment';
+import { pipe } from 'fp-ts/lib/pipeable';
+import { chain } from 'fp-ts/lib/Either';
+
+const NANO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3,9}Z$/;
+
+export const DateFromStringOrNumber = new rt.Type<string, number | string>(
+  'DateFromStringOrNumber',
+  (input): input is string => typeof input === 'string',
+  (input, context) => {
+    if (typeof input === 'string') {
+      return NANO_DATE_PATTERN.test(input) ? rt.success(input) : rt.failure(input, context);
+    }
+    return pipe(
+      rt.number.validate(input, context),
+      chain((timestamp) => {
+        const momentValue = moment(timestamp);
+        return momentValue.isValid()
+          ? rt.success(momentValue.toISOString())
+          : rt.failure(timestamp, context);
+      })
+    );
+  },
+  String
+);
+
+export const minimalTimeKeyRT = rt.type({
+  time: DateFromStringOrNumber,
+  tiebreaker: rt.number,
+});
+export type MinimalTimeKey = rt.TypeOf<typeof minimalTimeKeyRT>;
+
+const timeKeyRT = rt.intersection([
+  minimalTimeKeyRT,
+  rt.partial({
+    gid: rt.string,
+    fromAutoReload: rt.boolean,
+  }),
+]);
+export type TimeKey = rt.TypeOf<typeof timeKeyRT>;
+
+export interface UniqueTimeKey extends TimeKey {
+  gid: string;
+}
diff --git a/x-pack/plugins/infra/common/locators/locators.test.ts b/x-pack/plugins/infra/common/locators/locators.test.ts
index fb6f8283b63fd..607fd41b1bab6 100644
--- a/x-pack/plugins/infra/common/locators/locators.test.ts
+++ b/x-pack/plugins/infra/common/locators/locators.test.ts
@@ -233,7 +233,7 @@ const constructLogView = (logView?: LogViewReference) => {
 };
 
 const constructLogPosition = (time: number = 1550671089404) => {
-  return `(position:(tiebreaker:0,time:${time}))`;
+  return `(position:(tiebreaker:0,time:'${moment(time).toISOString()}'))`;
 };
 
 const constructLogFilter = ({
diff --git a/x-pack/plugins/infra/common/time/time_key.ts b/x-pack/plugins/infra/common/time/time_key.ts
index efc5a8e7b8517..7acbef8b25025 100644
--- a/x-pack/plugins/infra/common/time/time_key.ts
+++ b/x-pack/plugins/infra/common/time/time_key.ts
@@ -5,12 +5,13 @@
  * 2.0.
  */
 
+import { DateFromStringOrNumber } from '@kbn/io-ts-utils';
 import { ascending, bisector } from 'd3-array';
 import * as rt from 'io-ts';
 import { pick } from 'lodash';
 
 export const minimalTimeKeyRT = rt.type({
-  time: rt.number,
+  time: DateFromStringOrNumber,
   tiebreaker: rt.number,
 });
 export type MinimalTimeKey = rt.TypeOf<typeof minimalTimeKeyRT>;
diff --git a/x-pack/plugins/infra/common/url_state_storage_service.ts b/x-pack/plugins/infra/common/url_state_storage_service.ts
index 5d701ad1876bb..ece3d1ccb09bf 100644
--- a/x-pack/plugins/infra/common/url_state_storage_service.ts
+++ b/x-pack/plugins/infra/common/url_state_storage_service.ts
@@ -24,18 +24,18 @@ export const defaultLogViewKey = 'logView';
 
 const encodeRisonUrlState = (state: any) => encode(state);
 
-// Used by linkTo components
+// Used by Locator components
 export const replaceLogPositionInQueryString = (time?: number) =>
   Number.isNaN(time) || time == null
     ? (value: string) => value
     : replaceStateKeyInQueryString<PositionStateInUrl>(defaultPositionStateKey, {
         position: {
-          time,
+          time: moment(time).toISOString(),
           tiebreaker: 0,
         },
       });
 
-// NOTE: Used by link-to components
+// NOTE: Used by Locator components
 export const replaceLogViewInQueryString = (logViewReference: LogViewReference) =>
   replaceStateKeyInQueryString(defaultLogViewKey, logViewReference);
 
diff --git a/x-pack/plugins/infra/public/components/logging/log_minimap/log_minimap.tsx b/x-pack/plugins/infra/public/components/logging/log_minimap/log_minimap.tsx
index df1591a96afa9..00c6bcc4a623f 100644
--- a/x-pack/plugins/infra/public/components/logging/log_minimap/log_minimap.tsx
+++ b/x-pack/plugins/infra/public/components/logging/log_minimap/log_minimap.tsx
@@ -12,6 +12,7 @@ import {
   LogEntryTime,
 } from '@kbn/logs-shared-plugin/common';
 import { scaleLinear } from 'd3-scale';
+import moment from 'moment';
 import * as React from 'react';
 import { DensityChart } from './density_chart';
 import { HighlightedInterval } from './highlighted_interval';
@@ -67,7 +68,7 @@ export class LogMinimap extends React.Component<LogMinimapProps, LogMinimapState
 
     this.props.jumpToTarget({
       tiebreaker: 0,
-      time: clickedTime,
+      time: moment(clickedTime).toISOString(),
     });
   };
 
@@ -142,9 +143,9 @@ export class LogMinimap extends React.Component<LogMinimapProps, LogMinimapState
 
         {highlightedInterval ? (
           <HighlightedInterval
-            end={highlightedInterval.end}
+            end={moment(highlightedInterval.end).valueOf()}
             getPositionOfTime={this.getPositionOfTime}
-            start={highlightedInterval.start}
+            start={moment(highlightedInterval.start).valueOf()}
             targetWidth={TIMERULER_WIDTH}
             width={width}
             target={target}
diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_categories/module_descriptor.ts b/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_categories/module_descriptor.ts
index 38a1c5c907528..07a183973178d 100644
--- a/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_categories/module_descriptor.ts
+++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_categories/module_descriptor.ts
@@ -146,7 +146,7 @@ const validateSetupIndices = async (
       fields: [
         {
           name: timestampField,
-          validTypes: ['date'],
+          validTypes: ['date', 'date_nanos'],
         },
         {
           name: partitionField,
diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_rate/module_descriptor.ts b/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_rate/module_descriptor.ts
index 8cb0bb8a21799..a2e0219da9915 100644
--- a/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_rate/module_descriptor.ts
+++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/modules/log_entry_rate/module_descriptor.ts
@@ -138,7 +138,7 @@ const validateSetupIndices = async (
       fields: [
         {
           name: timestampField,
-          validTypes: ['date'],
+          validTypes: ['date', 'date_nanos'],
         },
         {
           name: partitionField,
diff --git a/x-pack/plugins/infra/public/observability_logs/log_stream_page/state/src/types.ts b/x-pack/plugins/infra/public/observability_logs/log_stream_page/state/src/types.ts
index 12c707ebb91fd..31c808d307bbe 100644
--- a/x-pack/plugins/infra/public/observability_logs/log_stream_page/state/src/types.ts
+++ b/x-pack/plugins/infra/public/observability_logs/log_stream_page/state/src/types.ts
@@ -109,7 +109,7 @@ export type LogStreamPageContext = LogStreamPageTypestate['context'];
 export interface LogStreamPageCallbacks {
   updateTimeRange: (timeRange: Partial<TimeRange>) => void;
   jumpToTargetPosition: (targetPosition: TimeKey | null) => void;
-  jumpToTargetPositionTime: (time: number) => void;
+  jumpToTargetPositionTime: (time: string) => void;
   reportVisiblePositions: (visiblePositions: VisiblePositions) => void;
   startLiveStreaming: () => void;
   stopLiveStreaming: () => void;
diff --git a/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/state_machine.ts b/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/state_machine.ts
index 96b7dbb687851..868f29a5c07e9 100644
--- a/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/state_machine.ts
+++ b/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/state_machine.ts
@@ -7,6 +7,8 @@
 
 import { IToasts } from '@kbn/core-notifications-browser';
 import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public';
+import { convertISODateToNanoPrecision } from '@kbn/logs-shared-plugin/common';
+import moment from 'moment';
 import { actions, ActorRefFrom, createMachine, EmittedFrom, SpecialTargets } from 'xstate';
 import { isSameTimeKey } from '../../../../common/time';
 import { OmitDeprecatedState, sendIfDefined } from '../../xstate_helpers';
@@ -159,11 +161,19 @@ export const createPureLogStreamPositionStateMachine = (initialContext: LogStrea
         updatePositionsFromTimeChange: actions.assign((_context, event) => {
           if (!('timeRange' in event)) return {};
 
+          const {
+            timestamps: { startTimestamp, endTimestamp },
+          } = event;
+
           // Reset the target position if it doesn't fall within the new range.
+          const targetPositionNanoTime =
+            _context.targetPosition && convertISODateToNanoPrecision(_context.targetPosition.time);
+          const startNanoDate = convertISODateToNanoPrecision(moment(startTimestamp).toISOString());
+          const endNanoDate = convertISODateToNanoPrecision(moment(endTimestamp).toISOString());
+
           const targetPositionShouldReset =
-            _context.targetPosition &&
-            (event.timestamps.startTimestamp > _context.targetPosition.time ||
-              event.timestamps.endTimestamp < _context.targetPosition.time);
+            targetPositionNanoTime &&
+            (startNanoDate > targetPositionNanoTime || endNanoDate < targetPositionNanoTime);
 
           return {
             targetPosition: targetPositionShouldReset ? null : _context.targetPosition,
diff --git a/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/url_state_storage_service.ts b/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/url_state_storage_service.ts
index c98ab9e147444..5607bf9207054 100644
--- a/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/url_state_storage_service.ts
+++ b/x-pack/plugins/infra/public/observability_logs/log_stream_position_state/src/url_state_storage_service.ts
@@ -10,7 +10,6 @@ import { IKbnUrlStateStorage, withNotifyOnErrors } from '@kbn/kibana-utils-plugi
 import * as Either from 'fp-ts/lib/Either';
 import { pipe } from 'fp-ts/lib/function';
 import { InvokeCreator } from 'xstate';
-import { replaceStateKeyInQueryString } from '../../../../common/url_state_storage_service';
 import { minimalTimeKeyRT, pickTimeKey } from '../../../../common/time';
 import { createPlainError, formatErrors } from '../../../../common/runtime_types';
 import type { LogStreamPositionContext, LogStreamPositionEvent } from './types';
@@ -98,13 +97,3 @@ export type PositionStateInUrl = rt.TypeOf<typeof positionStateInUrlRT>;
 const decodePositionQueryValueFromUrl = (queryValueFromUrl: unknown) => {
   return positionStateInUrlRT.decode(queryValueFromUrl);
 };
-
-export const replaceLogPositionInQueryString = (time?: number) =>
-  Number.isNaN(time) || time == null
-    ? (value: string) => value
-    : replaceStateKeyInQueryString<PositionStateInUrl>(defaultPositionStateKey, {
-        position: {
-          time,
-          tiebreaker: 0,
-        },
-      });
diff --git a/x-pack/plugins/infra/public/observability_logs/log_stream_query_state/src/url_state_storage_service.ts b/x-pack/plugins/infra/public/observability_logs/log_stream_query_state/src/url_state_storage_service.ts
index fb65fcd987a11..1a4daad1832d9 100644
--- a/x-pack/plugins/infra/public/observability_logs/log_stream_query_state/src/url_state_storage_service.ts
+++ b/x-pack/plugins/infra/public/observability_logs/log_stream_query_state/src/url_state_storage_service.ts
@@ -17,6 +17,7 @@ import {
   defaultPositionStateKey,
   DEFAULT_REFRESH_INTERVAL,
 } from '@kbn/logs-shared-plugin/common';
+import moment from 'moment';
 import {
   getTimeRangeEndFromTime,
   getTimeRangeStartFromTime,
@@ -159,8 +160,8 @@ export const initializeFromUrl =
               Either.chain(({ position }) =>
                 position && position.time
                   ? Either.right({
-                      from: getTimeRangeStartFromTime(position.time),
-                      to: getTimeRangeEndFromTime(position.time),
+                      from: getTimeRangeStartFromTime(moment(position.time).valueOf()),
+                      to: getTimeRangeEndFromTime(moment(position.time).valueOf()),
                     })
                   : Either.left(null)
               )
diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_message.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_message.tsx
index 0811ec1708530..babd0e9a1ae3b 100644
--- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_message.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_message.tsx
@@ -58,7 +58,7 @@ export const CategoryExampleMessage: React.FunctionComponent<{
     search: {
       logPosition: encode({
         end: moment(timeRange.endTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
-        position: { tiebreaker, time: timestamp },
+        position: { tiebreaker, time: moment(timestamp).toISOString() },
         start: moment(timeRange.startTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
         streamLive: false,
       }),
@@ -128,7 +128,10 @@ export const CategoryExampleMessage: React.FunctionComponent<{
                     id,
                     index: '', // TODO: use real index when loading via async search
                     context,
-                    cursor: { time: timestamp, tiebreaker },
+                    cursor: {
+                      time: moment(timestamp).toISOString(),
+                      tiebreaker,
+                    },
                     columns: [],
                   };
                   trackMetric({ metric: 'view_in_context__categories' });
diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
index 288fc3df39c8e..174abbbe60bc4 100644
--- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx
@@ -102,7 +102,7 @@ export const LogEntryExampleMessage: React.FunctionComponent<Props> = ({
     search: {
       logPosition: encode({
         end: moment(timeRange.endTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
-        position: { tiebreaker, time: timestamp },
+        position: { tiebreaker, time: moment(timestamp).toISOString() },
         start: moment(timeRange.startTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
         streamLive: false,
       }),
diff --git a/x-pack/plugins/infra/public/pages/logs/stream/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/stream/page_content.tsx
index b011931adbd85..e14d52fe1693b 100644
--- a/x-pack/plugins/infra/public/pages/logs/stream/page_content.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/stream/page_content.tsx
@@ -38,7 +38,7 @@ export const ConnectedStreamPageContent: React.FC = () => {
       jumpToTargetPosition: (targetPosition: TimeKey | null) => {
         logStreamPageSend({ type: 'JUMP_TO_TARGET_POSITION', targetPosition });
       },
-      jumpToTargetPositionTime: (time: number) => {
+      jumpToTargetPositionTime: (time: string) => {
         logStreamPageSend({ type: 'JUMP_TO_TARGET_POSITION', targetPosition: { time } });
       },
       reportVisiblePositions: (visiblePositions: VisiblePositions) => {
diff --git a/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx b/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx
index 14ebe864d5d68..9841553ce9860 100644
--- a/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx
+++ b/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx
@@ -8,7 +8,7 @@
 import { EuiSpacer } from '@elastic/eui';
 import type { Query } from '@kbn/es-query';
 import { euiStyled } from '@kbn/kibana-react-plugin/common';
-import { LogEntry } from '@kbn/logs-shared-plugin/common';
+import { LogEntry, convertISODateToNanoPrecision } from '@kbn/logs-shared-plugin/common';
 import {
   LogEntryFlyout,
   LogEntryStreamItem,
@@ -117,8 +117,12 @@ export const StreamPageLogsContent = React.memo<{
 
     const isCenterPointOutsideLoadedRange =
       targetPosition != null &&
-      ((topCursor != null && targetPosition.time < topCursor.time) ||
-        (bottomCursor != null && targetPosition.time > bottomCursor.time));
+      ((topCursor != null &&
+        convertISODateToNanoPrecision(targetPosition.time) <
+          convertISODateToNanoPrecision(topCursor.time)) ||
+        (bottomCursor != null &&
+          convertISODateToNanoPrecision(targetPosition.time) >
+            convertISODateToNanoPrecision(bottomCursor.time)));
 
     const hasQueryChanged = filterQuery !== prevFilterQuery;
 
diff --git a/x-pack/plugins/infra/public/test_utils/entries.ts b/x-pack/plugins/infra/public/test_utils/entries.ts
index 35dad808cdf4f..0b04c90ee633d 100644
--- a/x-pack/plugins/infra/public/test_utils/entries.ts
+++ b/x-pack/plugins/infra/public/test_utils/entries.ts
@@ -18,14 +18,16 @@ export function generateFakeEntries(
   const timestampStep = Math.floor((endTimestamp - startTimestamp) / count);
   for (let i = 0; i < count; i++) {
     const timestamp = i === count - 1 ? endTimestamp : startTimestamp + timestampStep * i;
+    const date = new Date(timestamp).toISOString();
+
     entries.push({
       id: `entry-${i}`,
       index: 'logs-fake',
       context: {},
-      cursor: { time: timestamp, tiebreaker: i },
+      cursor: { time: date, tiebreaker: i },
       columns: columns.map((column) => {
         if ('timestampColumn' in column) {
-          return { columnId: column.timestampColumn.id, timestamp };
+          return { columnId: column.timestampColumn.id, time: date };
         } else if ('messageColumn' in column) {
           return {
             columnId: column.messageColumn.id,
diff --git a/x-pack/plugins/logs_shared/common/index.ts b/x-pack/plugins/logs_shared/common/index.ts
index 654e8e2e13335..99fd7c1166863 100644
--- a/x-pack/plugins/logs_shared/common/index.ts
+++ b/x-pack/plugins/logs_shared/common/index.ts
@@ -44,6 +44,8 @@ export {
 // eslint-disable-next-line @kbn/eslint/no_export_all
 export * from './log_entry';
 
+export { convertISODateToNanoPrecision } from './utils';
+
 // Http types
 export type { LogEntriesSummaryBucket, LogEntriesSummaryHighlightsBucket } from './http_api';
 
diff --git a/x-pack/plugins/logs_shared/common/log_entry/log_entry.ts b/x-pack/plugins/logs_shared/common/log_entry/log_entry.ts
index b1fc80634a922..24a04f4c2e38e 100644
--- a/x-pack/plugins/logs_shared/common/log_entry/log_entry.ts
+++ b/x-pack/plugins/logs_shared/common/log_entry/log_entry.ts
@@ -5,8 +5,8 @@
  * 2.0.
  */
 
+import { TimeKey } from '@kbn/io-ts-utils';
 import * as rt from 'io-ts';
-import { TimeKey } from '../time';
 import { jsonArrayRT } from '../typed_json';
 import { logEntryCursorRT } from './log_entry_cursor';
 
@@ -34,7 +34,7 @@ export type LogMessagePart = rt.TypeOf<typeof logMessagePartRT>;
  * columns
  */
 
-export const logTimestampColumnRT = rt.type({ columnId: rt.string, timestamp: rt.number });
+export const logTimestampColumnRT = rt.type({ columnId: rt.string, time: rt.string });
 export type LogTimestampColumn = rt.TypeOf<typeof logTimestampColumnRT>;
 
 export const logFieldColumnRT = rt.type({
diff --git a/x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts b/x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts
index 3cd69b4a6178c..158d14152ad4a 100644
--- a/x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts
+++ b/x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts
@@ -9,7 +9,7 @@ import * as rt from 'io-ts';
 import { decodeOrThrow } from '../runtime_types';
 
 export const logEntryCursorRT = rt.type({
-  time: rt.number,
+  time: rt.string,
   tiebreaker: rt.number,
 });
 export type LogEntryCursor = rt.TypeOf<typeof logEntryCursorRT>;
@@ -29,7 +29,7 @@ export const logEntryAroundCursorRT = rt.type({
 });
 export type LogEntryAroundCursor = rt.TypeOf<typeof logEntryAroundCursorRT>;
 
-export const getLogEntryCursorFromHit = (hit: { sort: [number, number] }) =>
+export const getLogEntryCursorFromHit = (hit: { sort: [string, number] }) =>
   decodeOrThrow(logEntryCursorRT)({
     time: hit.sort[0],
     tiebreaker: hit.sort[1],
diff --git a/x-pack/plugins/logs_shared/common/time/time_key.ts b/x-pack/plugins/logs_shared/common/time/time_key.ts
index 4c78158dd5bf6..1ff661af69d0a 100644
--- a/x-pack/plugins/logs_shared/common/time/time_key.ts
+++ b/x-pack/plugins/logs_shared/common/time/time_key.ts
@@ -5,26 +5,8 @@
  * 2.0.
  */
 
+import type { TimeKey } from '@kbn/io-ts-utils';
 import { ascending, bisector } from 'd3-array';
-import * as rt from 'io-ts';
-
-export const minimalTimeKeyRT = rt.type({
-  time: rt.number,
-  tiebreaker: rt.number,
-});
-
-export const timeKeyRT = rt.intersection([
-  minimalTimeKeyRT,
-  rt.partial({
-    gid: rt.string,
-    fromAutoReload: rt.boolean,
-  }),
-]);
-export type TimeKey = rt.TypeOf<typeof timeKeyRT>;
-
-export interface UniqueTimeKey extends TimeKey {
-  gid: string;
-}
 
 export type Comparator = (firstValue: any, secondValue: any) => number;
 
diff --git a/x-pack/plugins/logs_shared/common/utils/date_helpers.test.ts b/x-pack/plugins/logs_shared/common/utils/date_helpers.test.ts
new file mode 100644
index 0000000000000..fb04f64435611
--- /dev/null
+++ b/x-pack/plugins/logs_shared/common/utils/date_helpers.test.ts
@@ -0,0 +1,45 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { subtractMillisecondsFromDate } from './date_helpers';
+
+describe('Date Helpers', function () {
+  describe('subtractMillisecondsFromDate', function () {
+    it('should subtract milliseconds from the nano date correctly', () => {
+      const inputDate = '2023-10-30T12:00:00.001000000Z';
+      const millisecondsToSubtract = 1;
+
+      const result = subtractMillisecondsFromDate(inputDate, millisecondsToSubtract);
+
+      const expectedDate = '2023-10-30T12:00:00.000000000Z';
+
+      expect(result).toBe(expectedDate);
+    });
+
+    it('should subtract seconds from the date if no milliseconds available', () => {
+      const inputDate = '2023-10-30T12:00:00.000000000Z';
+      const millisecondsToSubtract = 1;
+
+      const result = subtractMillisecondsFromDate(inputDate, millisecondsToSubtract);
+
+      const expectedDate = '2023-10-30T11:59:59.999000000Z';
+
+      expect(result).toBe(expectedDate);
+    });
+
+    it('should convert date to nano and subtract milliseconds properly', () => {
+      const inputDate = '2023-10-30T12:00:00.000Z';
+      const millisecondsToSubtract = 1;
+
+      const result = subtractMillisecondsFromDate(inputDate, millisecondsToSubtract);
+
+      const expectedDate = '2023-10-30T11:59:59.999000000Z';
+
+      expect(result).toBe(expectedDate);
+    });
+  });
+});
diff --git a/x-pack/plugins/logs_shared/common/utils/date_helpers.ts b/x-pack/plugins/logs_shared/common/utils/date_helpers.ts
new file mode 100644
index 0000000000000..69af6c74110b5
--- /dev/null
+++ b/x-pack/plugins/logs_shared/common/utils/date_helpers.ts
@@ -0,0 +1,29 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import dateMath from '@kbn/datemath';
+
+export function convertISODateToNanoPrecision(date: string): string {
+  const dateParts = date.split('.');
+
+  const fractionSeconds = dateParts.length === 2 ? dateParts[1].replace('Z', '') : '';
+  const fractionSecondsInNanos =
+    fractionSeconds.length !== 9 ? fractionSeconds.padEnd(9, '0') : fractionSeconds;
+
+  return `${dateParts[0]}.${fractionSecondsInNanos}Z`;
+}
+
+export function subtractMillisecondsFromDate(date: string, milliseconds: number): string {
+  const dateInNano = convertISODateToNanoPrecision(date);
+
+  const dateParts = dateInNano.split('.');
+  const nanoPart = dateParts[1].substring(3, dateParts[1].length); // given 123456789Z => 456789Z
+
+  const isoDate = dateMath.parse(date)?.subtract(milliseconds, 'ms').toISOString();
+
+  return `${isoDate?.replace('Z', nanoPart)}`;
+}
diff --git a/x-pack/plugins/logs_shared/common/utils/index.ts b/x-pack/plugins/logs_shared/common/utils/index.ts
new file mode 100644
index 0000000000000..ba1e5fcefd1a4
--- /dev/null
+++ b/x-pack/plugins/logs_shared/common/utils/index.ts
@@ -0,0 +1,8 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+export * from './date_helpers';
diff --git a/x-pack/plugins/logs_shared/public/components/formatted_time.tsx b/x-pack/plugins/logs_shared/public/components/formatted_time.tsx
index 6c7309d814af4..4b65436a670a6 100644
--- a/x-pack/plugins/logs_shared/public/components/formatted_time.tsx
+++ b/x-pack/plugins/logs_shared/public/components/formatted_time.tsx
@@ -11,7 +11,7 @@ import { useMemo } from 'react';
 import { useKibanaUiSetting } from '../utils/use_kibana_ui_setting';
 
 const getFormattedTime = (
-  time: number,
+  time: string,
   userFormat: string | undefined,
   fallbackFormat: string = 'Y-MM-DD HH:mm:ss.SSS'
 ) => {
@@ -26,7 +26,7 @@ interface UseFormattedTimeOptions {
 }
 
 export const useFormattedTime = (
-  time: number,
+  time: string,
   { format = 'dateTime', fallbackFormat }: UseFormattedTimeOptions = {}
 ) => {
   // `dateFormat:scaled` is an array of `[key, format]` tuples.
diff --git a/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.stories.tsx b/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.stories.tsx
index 10561b24afb05..eeba1e0b448dd 100644
--- a/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.stories.tsx
+++ b/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.stories.tsx
@@ -38,7 +38,7 @@ export const BasicDateRange = LogStreamStoryTemplate.bind({});
 
 export const CenteredOnLogEntry = LogStreamStoryTemplate.bind({});
 CenteredOnLogEntry.args = {
-  center: { time: 1595146275000, tiebreaker: 150 },
+  center: { time: '2020-07-19T08:11:15.000Z', tiebreaker: 150 },
 };
 
 export const HighlightedLogEntry = LogStreamStoryTemplate.bind({});
diff --git a/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.tsx b/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.tsx
index 50871650da268..98be3f7567880 100644
--- a/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.tsx
+++ b/x-pack/plugins/logs_shared/public/components/log_stream/log_stream.tsx
@@ -40,7 +40,7 @@ interface CommonColumnDefinition {
 interface TimestampColumnDefinition extends CommonColumnDefinition {
   type: 'timestamp';
   /** Timestamp renderer. Takes a epoch_millis and returns a valid `ReactNode` */
-  render?: (timestamp: number) => React.ReactNode;
+  render?: (timestamp: string) => React.ReactNode;
 }
 
 interface MessageColumnDefinition extends CommonColumnDefinition {
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx
index 5a6639a1f2298..a6957524b2f97 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx
@@ -24,6 +24,7 @@ const ProviderWrapper: React.FC = ({ children }) => {
 };
 
 describe('LogEntryActionsMenu component', () => {
+  const time = new Date().toISOString();
   describe('uptime link', () => {
     it('renders with a host ip filter when present in log entry', () => {
       const elementWrapper = mount(
@@ -34,7 +35,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -64,7 +65,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -94,7 +95,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -128,7 +129,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -160,7 +161,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -194,7 +195,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -228,7 +229,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
@@ -258,7 +259,7 @@ describe('LogEntryActionsMenu component', () => {
               id: 'ITEM_ID',
               index: 'INDEX',
               cursor: {
-                time: 0,
+                time,
                 tiebreaker: 0,
               },
             }}
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_fields_table.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_fields_table.tsx
index 09b8381859354..dbde4085da289 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_fields_table.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_fields_table.tsx
@@ -10,9 +10,9 @@ import { EuiBasicTableColumn, EuiInMemoryTable } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import * as rt from 'io-ts';
 import React, { useMemo } from 'react';
+import { TimeKey } from '@kbn/io-ts-utils';
 import { LogEntryField } from '../../../../common/log_entry';
 import { LogEntry } from '../../../../common/search_strategies/log_entries/log_entry';
-import { TimeKey } from '../../../../common/time';
 import { JsonScalar, jsonScalarRT } from '../../../../common/typed_json';
 import { FieldValue } from '../log_text_stream/field_value';
 
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
index b66e864c2a499..99b89f0c1c432 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx
@@ -21,9 +21,9 @@ import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public';
 import React, { useCallback, useEffect, useRef } from 'react';
+import { TimeKey } from '@kbn/io-ts-utils';
 import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';
 import { LogViewReference } from '../../../../common/log_views';
-import { TimeKey } from '../../../../common/time';
 import { useLogEntry } from '../../../containers/logs/log_entry';
 import { CenteredEuiFlyoutBody } from '../../centered_flyout_body';
 import { DataSearchErrorCallout } from '../../data_search_error_callout';
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/column_headers.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/column_headers.tsx
index 3fd275ea56dc2..a1b1cbf8fe770 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/column_headers.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/column_headers.tsx
@@ -41,7 +41,7 @@ export const LogColumnHeaders: React.FunctionComponent<{
             columnHeader = columnConfiguration.timestampColumn.header;
           } else {
             columnHeader = firstVisiblePosition
-              ? localizedDate(firstVisiblePosition.time)
+              ? localizedDate(new Date(firstVisiblePosition.time))
               : i18n.translate('xpack.logsShared.logs.stream.timestampColumnTitle', {
                   defaultMessage: 'Timestamp',
                 });
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/item.ts b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/item.ts
index d6dc5fdbef4f6..86e2baa9d6f93 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/item.ts
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/item.ts
@@ -5,9 +5,10 @@
  * 2.0.
  */
 
+import type { TimeKey } from '@kbn/io-ts-utils';
 import { bisector } from 'd3-array';
-import { compareToTimeKey, TimeKey } from '../../../../common/time';
 import { LogEntry } from '../../../../common/log_entry';
+import { compareToTimeKey } from '../../../../common/time';
 
 export type StreamItem = LogEntryStreamItem;
 
@@ -27,17 +28,17 @@ export function getStreamItemTimeKey(item: StreamItem) {
 export function getStreamItemId(item: StreamItem) {
   switch (item.kind) {
     case 'logEntry':
-      return `${item.logEntry.cursor.time}:${item.logEntry.cursor.tiebreaker}:${item.logEntry.id}`;
+      return `${item.logEntry.cursor.time}/${item.logEntry.cursor.tiebreaker}/${item.logEntry.id}`;
   }
 }
 
 export function parseStreamItemId(id: string) {
-  const idFragments = id.split(':');
+  const idFragments = id.split('/');
 
   return {
     gid: idFragments.slice(2).join(':'),
     tiebreaker: parseInt(idFragments[1], 10),
-    time: parseInt(idFragments[0], 10),
+    time: idFragments[0],
   };
 }
 
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_date_row.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_date_row.tsx
index cd499b3ae3425..9bc6e29429ce5 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_date_row.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_date_row.tsx
@@ -10,14 +10,14 @@ import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiTitle } from '@elastic
 import { localizedDate } from '../../../../common/formatters/datetime';
 
 interface LogDateRowProps {
-  timestamp: number;
+  time: string;
 }
 
 /**
  * Show a row with the date in the log stream
  */
-export const LogDateRow: React.FC<LogDateRowProps> = ({ timestamp }) => {
-  const formattedDate = localizedDate(timestamp);
+export const LogDateRow: React.FC<LogDateRowProps> = ({ time }) => {
+  const formattedDate = localizedDate(new Date(time));
 
   return (
     <EuiFlexGroup alignItems="center" gutterSize="s">
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_column.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_column.tsx
index 81d6a43254ecb..7df56fb79c320 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_column.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_column.tsx
@@ -8,6 +8,7 @@
 import { useMemo } from 'react';
 
 import { euiStyled } from '@kbn/kibana-react-plugin/common';
+import moment from 'moment';
 import { TextScale } from '../../../../common/log_text_scale';
 import {
   LogColumnRenderConfiguration,
@@ -142,7 +143,7 @@ export const useColumnWidths = ({
   timeFormat?: TimeFormat;
 }) => {
   const { CharacterDimensionsProbe, dimensions } = useMeasuredCharacterDimensions(scale);
-  const referenceTime = useMemo(() => Date.now(), []);
+  const referenceTime = useMemo(() => moment().toISOString(), []);
   const formattedCurrentDate = useFormattedTime(referenceTime, { format: timeFormat });
   const columnWidths = useMemo(
     () => getColumnWidths(columnConfigurations, dimensions.width, formattedCurrentDate.length),
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx
index 5b100c4df4beb..b73da833032f4 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx
@@ -189,7 +189,7 @@ export const LogEntryRow = memo(
               >
                 {isTimestampColumn(column) ? (
                   <LogEntryTimestampColumn
-                    time={column.timestamp}
+                    time={column.time}
                     render={columnConfiguration.timestampColumn.render}
                   />
                 ) : null}
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_timestamp_column.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_timestamp_column.tsx
index 22a94f05ea265..0b145503ddf54 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_timestamp_column.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/log_entry_timestamp_column.tsx
@@ -13,8 +13,8 @@ import { LogEntryColumnContent } from './log_entry_column';
 
 interface LogEntryTimestampColumnProps {
   format?: TimeFormat;
-  time: number;
-  render?: (timestamp: number) => React.ReactNode;
+  time: string;
+  render?: (time: string) => React.ReactNode;
 }
 
 export const LogEntryTimestampColumn = memo<LogEntryTimestampColumnProps>(
diff --git a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/scrollable_log_text_stream_view.tsx b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/scrollable_log_text_stream_view.tsx
index c92347ce8c0bd..feae9b8b21d8a 100644
--- a/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/scrollable_log_text_stream_view.tsx
+++ b/x-pack/plugins/logs_shared/public/components/logging/log_text_stream/scrollable_log_text_stream_view.tsx
@@ -9,10 +9,9 @@ import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
 import React, { Fragment, GetDerivedStateFromProps } from 'react';
 import moment from 'moment';
-
 import { euiStyled } from '@kbn/kibana-react-plugin/common';
+import { TimeKey, UniqueTimeKey } from '@kbn/io-ts-utils';
 import { TextScale } from '../../../../common/log_text_scale';
-import { TimeKey, UniqueTimeKey } from '../../../../common/time';
 import { callWithoutRepeats } from '../../../utils/handlers';
 import { AutoSizer } from '../../auto_sizer';
 import { NoData } from '../../empty_states';
@@ -216,7 +215,7 @@ export class ScrollableLogTextStreamView extends React.PureComponent<
                                 position="start"
                                 isLoading={isLoadingMore}
                                 hasMore={hasMoreBeforeStart}
-                                timestamp={items[0].logEntry.cursor.time}
+                                timestamp={moment(items[0].logEntry.cursor.time).valueOf()}
                                 isStreaming={false}
                                 startDateExpression={startDateExpression}
                                 endDateExpression={endDateExpression}
@@ -225,17 +224,17 @@ export class ScrollableLogTextStreamView extends React.PureComponent<
                                 }
                               />
                               {items.map((item, idx) => {
-                                const currentTimestamp = item.logEntry.cursor.time;
+                                const currentTime = item.logEntry.cursor.time;
                                 let showDate = false;
 
                                 if (idx > 0) {
-                                  const prevTimestamp = items[idx - 1].logEntry.cursor.time;
-                                  showDate = !moment(currentTimestamp).isSame(prevTimestamp, 'day');
+                                  const prevTime = items[idx - 1].logEntry.cursor.time;
+                                  showDate = !moment(currentTime).isSame(prevTime, 'day');
                                 }
 
                                 return (
                                   <Fragment key={getStreamItemId(item)}>
-                                    {showDate && <LogDateRow timestamp={currentTimestamp} />}
+                                    {showDate && <LogDateRow time={currentTime} />}
                                     <MeasurableItemView
                                       register={registerChild}
                                       registrationKey={getStreamItemId(item)}
@@ -279,8 +278,8 @@ export class ScrollableLogTextStreamView extends React.PureComponent<
                                 isStreaming={isStreaming}
                                 timestamp={
                                   isStreaming && lastLoadedTime
-                                    ? lastLoadedTime.valueOf()
-                                    : items[items.length - 1].logEntry.cursor.time
+                                    ? lastLoadedTime.getTime()
+                                    : moment(items[items.length - 1].logEntry.cursor.time).valueOf()
                                 }
                                 startDateExpression={startDateExpression}
                                 endDateExpression={endDateExpression}
diff --git a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_entry_highlights.tsx b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_entry_highlights.tsx
index 6e13ff542add6..117a78d619596 100644
--- a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_entry_highlights.tsx
+++ b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_entry_highlights.tsx
@@ -5,11 +5,11 @@
  * 2.0.
  */
 
+import { TimeKey } from '@kbn/io-ts-utils';
 import { useEffect, useMemo, useState } from 'react';
 import { LogViewReference } from '../../../../common';
 import { LogEntriesHighlightsResponse } from '../../../../common/http_api';
 import { LogEntry } from '../../../../common/log_entry';
-import { TimeKey } from '../../../../common/time';
 import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';
 import { useTrackedPromise } from '../../../utils/use_tracked_promise';
 import { fetchLogEntriesHighlights } from './api/fetch_log_entries_highlights';
diff --git a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_highlights.tsx b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_highlights.tsx
index aa963925d7ac9..3317f02d034d3 100644
--- a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_highlights.tsx
+++ b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_highlights.tsx
@@ -8,12 +8,11 @@
 import createContainer from 'constate';
 import { useState } from 'react';
 import useThrottle from 'react-use/lib/useThrottle';
-
+import { TimeKey } from '@kbn/io-ts-utils';
 import { LogViewReference } from '../../../../common';
 import { useLogEntryHighlights } from './log_entry_highlights';
 import { useLogSummaryHighlights } from './log_summary_highlights';
 import { useNextAndPrevious } from './next_and_previous';
-import { TimeKey } from '../../../../common/time';
 import { useLogPositionStateContext } from '../log_position';
 
 const FETCH_THROTTLE_INTERVAL = 3000;
diff --git a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/next_and_previous.tsx b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/next_and_previous.tsx
index 784eb972ed11d..c76d66711b928 100644
--- a/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/next_and_previous.tsx
+++ b/x-pack/plugins/logs_shared/public/containers/logs/log_highlights/next_and_previous.tsx
@@ -7,8 +7,7 @@
 
 import { isNumber } from 'lodash';
 import { useCallback, useEffect, useMemo, useState } from 'react';
-
-import { TimeKey, UniqueTimeKey } from '../../../../common/time';
+import { TimeKey, UniqueTimeKey } from '@kbn/io-ts-utils';
 import {
   getLogEntryIndexAtTime,
   getLogEntryIndexBeforeTime,
diff --git a/x-pack/plugins/logs_shared/public/containers/logs/log_position/use_log_position.ts b/x-pack/plugins/logs_shared/public/containers/logs/log_position/use_log_position.ts
index 236e59093d450..cadc692ee93fe 100644
--- a/x-pack/plugins/logs_shared/public/containers/logs/log_position/use_log_position.ts
+++ b/x-pack/plugins/logs_shared/public/containers/logs/log_position/use_log_position.ts
@@ -6,10 +6,10 @@
  */
 
 import { TimeRange } from '@kbn/es-query';
+import { TimeKey } from '@kbn/io-ts-utils';
 import createContainer from 'constate';
 import { useMemo } from 'react';
 import { ActorRefWithDeprecatedState } from 'xstate';
-import { TimeKey } from '../../../../common/time';
 import {
   MatchedStateFromActor,
   OmitDeprecatedState,
@@ -52,7 +52,7 @@ export type LogPositionStateParams = DateRange & {
 
 export interface LogPositionCallbacks {
   jumpToTargetPosition: (pos: TimeKeyOrNull) => void;
-  jumpToTargetPositionTime: (time: number) => void;
+  jumpToTargetPositionTime: (time: string) => void;
   reportVisiblePositions: (visPos: VisiblePositions) => void;
   startLiveStreaming: () => void;
   stopLiveStreaming: () => void;
@@ -62,7 +62,7 @@ export interface LogPositionCallbacks {
 export interface LogStreamPageCallbacks {
   updateTimeRange: (timeRange: Partial<TimeRange>) => void;
   jumpToTargetPosition: (targetPosition: TimeKey | null) => void;
-  jumpToTargetPositionTime: (time: number) => void;
+  jumpToTargetPositionTime: (time: string) => void;
   reportVisiblePositions: (visiblePositions: VisiblePositions) => void;
   startLiveStreaming: () => void;
   stopLiveStreaming: () => void;
diff --git a/x-pack/plugins/logs_shared/public/containers/logs/log_stream/use_fetch_log_entries_around.ts b/x-pack/plugins/logs_shared/public/containers/logs/log_stream/use_fetch_log_entries_around.ts
index a6bd8ba794288..6dd2566392ee0 100644
--- a/x-pack/plugins/logs_shared/public/containers/logs/log_stream/use_fetch_log_entries_around.ts
+++ b/x-pack/plugins/logs_shared/public/containers/logs/log_stream/use_fetch_log_entries_around.ts
@@ -8,6 +8,7 @@
 import { useCallback } from 'react';
 import { combineLatest, Observable, ReplaySubject } from 'rxjs';
 import { last, map, startWith, switchMap } from 'rxjs/operators';
+import { subtractMillisecondsFromDate } from '../../../../common/utils';
 import { LogEntryCursor } from '../../../../common/log_entry';
 import { LogViewColumnConfiguration, LogViewReference } from '../../../../common/log_views';
 import { LogEntriesSearchRequestQuery } from '../../../../common/search_strategies/log_entries/log_entries';
@@ -73,7 +74,7 @@ export const useFetchLogEntriesAround = ({
         last(), // in the future we could start earlier if we receive partial results already
         map((lastBeforeSearchResponse) => {
           const cursorAfter = lastBeforeSearchResponse.response.data?.bottomCursor ?? {
-            time: cursor.time - 1,
+            time: subtractMillisecondsFromDate(cursor.time, 1),
             tiebreaker: 0,
           };
 
diff --git a/x-pack/plugins/logs_shared/public/test_utils/entries.ts b/x-pack/plugins/logs_shared/public/test_utils/entries.ts
index 4dc3732fd49d5..5277f49b1175e 100644
--- a/x-pack/plugins/logs_shared/public/test_utils/entries.ts
+++ b/x-pack/plugins/logs_shared/public/test_utils/entries.ts
@@ -27,14 +27,16 @@ export function generateFakeEntries(
   const timestampStep = Math.floor((endTimestamp - startTimestamp) / count);
   for (let i = 0; i < count; i++) {
     const timestamp = i === count - 1 ? endTimestamp : startTimestamp + timestampStep * i;
+    const date = new Date(timestamp).toISOString();
+
     entries.push({
       id: `entry-${i}`,
       index: 'logs-fake',
       context: {},
-      cursor: { time: timestamp, tiebreaker: i },
+      cursor: { time: date, tiebreaker: i },
       columns: columns.map((column) => {
         if ('timestampColumn' in column) {
-          return { columnId: column.timestampColumn.id, timestamp };
+          return { columnId: column.timestampColumn.id, time: date };
         } else if ('messageColumn' in column) {
           return {
             columnId: column.messageColumn.id,
diff --git a/x-pack/plugins/logs_shared/public/utils/log_column_render_configuration.tsx b/x-pack/plugins/logs_shared/public/utils/log_column_render_configuration.tsx
index ff4a24f1498a6..a1b23c9a0e3dd 100644
--- a/x-pack/plugins/logs_shared/public/utils/log_column_render_configuration.tsx
+++ b/x-pack/plugins/logs_shared/public/utils/log_column_render_configuration.tsx
@@ -19,7 +19,7 @@ interface CommonRenderConfiguration {
 
 interface TimestampColumnRenderConfiguration {
   timestampColumn: CommonRenderConfiguration & {
-    render?: (timestamp: number) => ReactNode;
+    render?: (time: string) => ReactNode;
   };
 }
 
diff --git a/x-pack/plugins/logs_shared/public/utils/log_entry/log_entry.ts b/x-pack/plugins/logs_shared/public/utils/log_entry/log_entry.ts
index 18d118750fdeb..e1027aeeb5799 100644
--- a/x-pack/plugins/logs_shared/public/utils/log_entry/log_entry.ts
+++ b/x-pack/plugins/logs_shared/public/utils/log_entry/log_entry.ts
@@ -5,8 +5,9 @@
  * 2.0.
  */
 
+import type { TimeKey, UniqueTimeKey } from '@kbn/io-ts-utils';
 import { bisector } from 'd3-array';
-import { compareToTimeKey, getIndexAtTimeKey, TimeKey, UniqueTimeKey } from '../../../common/time';
+import { compareToTimeKey, getIndexAtTimeKey } from '../../../common/time';
 import {
   LogEntry,
   LogColumn,
@@ -38,7 +39,7 @@ export const getLogEntryAtTime = (entries: LogEntry[], time: TimeKey) => {
 };
 
 export const isTimestampColumn = (column: LogColumn): column is LogTimestampColumn =>
-  column != null && 'timestamp' in column;
+  column != null && 'time' in column;
 
 export const isMessageColumn = (column: LogColumn): column is LogMessageColumn =>
   column != null && 'message' in column;
diff --git a/x-pack/plugins/logs_shared/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts b/x-pack/plugins/logs_shared/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts
index 66de5699cfb3e..e4eed9b61d349 100644
--- a/x-pack/plugins/logs_shared/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts
+++ b/x-pack/plugins/logs_shared/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts
@@ -62,7 +62,11 @@ export class LogsSharedKibanaLogEntriesAdapter implements LogEntriesAdapter {
       : {};
 
     const sort = {
-      [TIMESTAMP_FIELD]: sortDirection,
+      [TIMESTAMP_FIELD]: {
+        order: sortDirection,
+        format: 'strict_date_optional_time_nanos',
+        numeric_type: 'date_nanos',
+      },
       [TIEBREAKER_FIELD]: sortDirection,
     };
 
@@ -155,7 +159,16 @@ export class LogsSharedKibanaLogEntriesAdapter implements LogEntriesAdapter {
               top_hits_by_key: {
                 top_hits: {
                   size: 1,
-                  sort: [{ [TIMESTAMP_FIELD]: 'asc' }, { [TIEBREAKER_FIELD]: 'asc' }],
+                  sort: [
+                    {
+                      [TIMESTAMP_FIELD]: {
+                        order: 'asc',
+                        format: 'strict_date_optional_time_nanos',
+                        numeric_type: 'date_nanos',
+                      },
+                    },
+                    { [TIEBREAKER_FIELD]: 'asc' },
+                  ],
                   _source: false,
                 },
               },
@@ -265,7 +278,7 @@ const createQueryFilterClauses = (filterQuery: LogEntryQuery | undefined) =>
 
 function processCursor(cursor: LogEntriesParams['cursor']): {
   sortDirection: 'asc' | 'desc';
-  searchAfterClause: { search_after?: readonly [number, number] };
+  searchAfterClause: { search_after?: readonly [string, number] };
 } {
   if (cursor) {
     if ('before' in cursor) {
@@ -295,7 +308,7 @@ const LogSummaryDateRangeBucketRuntimeType = runtimeTypes.intersection([
       hits: runtimeTypes.type({
         hits: runtimeTypes.array(
           runtimeTypes.type({
-            sort: runtimeTypes.tuple([runtimeTypes.number, runtimeTypes.number]),
+            sort: runtimeTypes.tuple([runtimeTypes.string, runtimeTypes.number]),
           })
         ),
       }),
diff --git a/x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts b/x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts
index 92829c676b935..2601167f2d988 100644
--- a/x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts
+++ b/x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts
@@ -7,6 +7,7 @@
 
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
 import { JsonObject } from '@kbn/utility-types';
+import { subtractMillisecondsFromDate } from '../../../../common/utils';
 import {
   LogEntriesSummaryBucket,
   LogEntriesSummaryHighlightsBucket,
@@ -147,7 +148,7 @@ export class LogsSharedLogEntriesDomain implements ILogsSharedLogEntriesDomain {
     const cursorAfter =
       entriesBefore.length > 0
         ? entriesBefore[entriesBefore.length - 1].cursor
-        : { time: center.time - 1, tiebreaker: 0 };
+        : { time: subtractMillisecondsFromDate(center.time, 1), tiebreaker: 0 };
 
     const { entries: entriesAfter, hasMoreAfter } = await this.getLogEntries(
       requestContext,
@@ -200,7 +201,7 @@ export class LogsSharedLogEntriesDomain implements ILogsSharedLogEntriesDomain {
           if ('timestampColumn' in column) {
             return {
               columnId: column.timestampColumn.id,
-              timestamp: doc.cursor.time,
+              time: doc.cursor.time,
             };
           } else if ('messageColumn' in column) {
             return {
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.test.ts b/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.test.ts
index 305f6292deb28..177e6091dc06b 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.test.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.test.ts
@@ -95,6 +95,7 @@ describe('LogEntries search strategy', () => {
   });
 
   it('handles subsequent polling requests', async () => {
+    const date = new Date(1605116827143).toISOString();
     const esSearchStrategyMock = createEsSearchStrategyMock({
       id: 'ASYNC_REQUEST_ID',
       isRunning: false,
@@ -112,12 +113,12 @@ describe('LogEntries search strategy', () => {
               _score: 0,
               _source: null,
               fields: {
-                '@timestamp': [1605116827143],
+                '@timestamp': [date],
                 'event.dataset': ['HIT_DATASET'],
                 message: ['HIT_MESSAGE'],
                 'container.id': ['HIT_CONTAINER_ID'],
               },
-              sort: [1605116827143 as any, 1 as any], // incorrectly typed as string upstream
+              sort: [date as any, 1 as any], // incorrectly typed as string upstream
             },
           ],
         },
@@ -164,13 +165,13 @@ describe('LogEntries search strategy', () => {
         id: 'HIT_ID',
         index: 'HIT_INDEX',
         cursor: {
-          time: 1605116827143,
+          time: date,
           tiebreaker: 1,
         },
         columns: [
           {
             columnId: 'TIMESTAMP_COLUMN_ID',
-            timestamp: 1605116827143,
+            time: date,
           },
           {
             columnId: 'DATASET_COLUMN_ID',
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.ts b/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.ts
index f0f5c6304d615..fb305d9ae73e4 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/log_entries_search_strategy.ts
@@ -190,7 +190,7 @@ const getLogEntryFromHit =
         if ('timestampColumn' in column) {
           return {
             columnId: column.timestampColumn.id,
-            timestamp: cursor.time,
+            time: cursor.time,
           };
         } else if ('messageColumn' in column) {
           return {
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/log_entry_search_strategy.test.ts b/x-pack/plugins/logs_shared/server/services/log_entries/log_entry_search_strategy.test.ts
index 19d5345122374..a123536d5bb27 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/log_entry_search_strategy.test.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/log_entry_search_strategy.test.ts
@@ -99,6 +99,7 @@ describe('LogEntry search strategy', () => {
   });
 
   it('handles subsequent polling requests', async () => {
+    const date = new Date(1605116827143).toISOString();
     const esSearchStrategyMock = createEsSearchStrategyMock({
       id: 'ASYNC_REQUEST_ID',
       isRunning: false,
@@ -116,10 +117,10 @@ describe('LogEntry search strategy', () => {
               _score: 0,
               _source: null,
               fields: {
-                '@timestamp': [1605116827143],
+                '@timestamp': [date],
                 message: ['HIT_MESSAGE'],
               },
-              sort: [1605116827143 as any, 1 as any], // incorrectly typed as string upstream
+              sort: [date as any, 1 as any], // incorrectly typed as string upstream
             },
           ],
         },
@@ -163,11 +164,11 @@ describe('LogEntry search strategy', () => {
       id: 'HIT_ID',
       index: 'HIT_INDEX',
       cursor: {
-        time: 1605116827143,
+        time: date,
         tiebreaker: 1,
       },
       fields: [
-        { field: '@timestamp', value: [1605116827143] },
+        { field: '@timestamp', value: [date] },
         { field: 'message', value: ['HIT_MESSAGE'] },
       ],
     });
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/queries/common.ts b/x-pack/plugins/logs_shared/server/services/log_entries/queries/common.ts
index 296ac9e4d2f34..c40e2fb9418f2 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/queries/common.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/queries/common.ts
@@ -11,7 +11,11 @@ export const createSortClause = (
   tiebreakerField: string
 ) => ({
   sort: {
-    [timestampField]: sortDirection,
+    [timestampField]: {
+      order: sortDirection,
+      format: 'strict_date_optional_time_nanos',
+      numeric_type: 'date_nanos',
+    },
     [tiebreakerField]: sortDirection,
   },
 });
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entries.ts b/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entries.ts
index 18ee4b0104366..18992448fdfcc 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entries.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entries.ts
@@ -68,7 +68,7 @@ export const getSortDirection = (
 
 const createSearchAfterClause = (
   cursor: LogEntryBeforeCursor | LogEntryAfterCursor | null | undefined
-): { search_after?: [number, number] } => {
+): { search_after?: [string, number] } => {
   if (logEntryBeforeCursorRT.is(cursor) && cursor.before !== 'last') {
     return {
       search_after: [cursor.before.time, cursor.before.tiebreaker],
@@ -122,7 +122,7 @@ const createHighlightQuery = (
 export const logEntryHitRT = rt.intersection([
   commonHitFieldsRT,
   rt.type({
-    sort: rt.tuple([rt.number, rt.number]),
+    sort: rt.tuple([rt.string, rt.number]),
   }),
   rt.partial({
     fields: rt.record(rt.string, jsonArrayRT),
diff --git a/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entry.ts b/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entry.ts
index 57a644c79f01f..575541f3f7931 100644
--- a/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entry.ts
+++ b/x-pack/plugins/logs_shared/server/services/log_entries/queries/log_entry.ts
@@ -33,7 +33,16 @@ export const createGetLogEntryQuery = (
     },
     fields: ['*'],
     runtime_mappings: runtimeMappings,
-    sort: [{ [timestampField]: 'desc' }, { [tiebreakerField]: 'desc' }],
+    sort: [
+      {
+        [timestampField]: {
+          order: 'desc',
+          format: 'strict_date_optional_time_nanos',
+          numeric_type: 'date_nanos',
+        },
+      },
+      { [tiebreakerField]: 'desc' },
+    ],
     _source: false,
   },
 });
@@ -41,7 +50,7 @@ export const createGetLogEntryQuery = (
 export const logEntryHitRT = rt.intersection([
   commonHitFieldsRT,
   rt.type({
-    sort: rt.tuple([rt.number, rt.number]),
+    sort: rt.tuple([rt.string, rt.number]),
   }),
   rt.partial({
     fields: rt.record(rt.string, jsonArrayRT),
diff --git a/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts b/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts
index 1e565f63b0733..9910f4724045a 100644
--- a/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts
+++ b/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts
@@ -19,6 +19,7 @@ import {
   logEntriesHighlightsResponseRT,
 } from '@kbn/logs-shared-plugin/common';
 
+import moment from 'moment';
 import { FtrProviderContext } from '../../ftr_provider_context';
 
 const KEY_BEFORE_START = {
@@ -112,8 +113,8 @@ export default function ({ getService }: FtrProviderContext) {
 
           // Entries fall within range
           // @kbn/expect doesn't have a `lessOrEqualThan` or `moreOrEqualThan` comparators
-          expect(firstEntry.cursor.time >= KEY_BEFORE_START.time).to.be(true);
-          expect(lastEntry.cursor.time <= KEY_AFTER_END.time).to.be(true);
+          expect(firstEntry.cursor.time >= moment(KEY_BEFORE_START.time).toISOString()).to.be(true);
+          expect(lastEntry.cursor.time <= moment(KEY_AFTER_END.time).toISOString()).to.be(true);
 
           // All entries contain the highlights
           entries.forEach((entry) => {
diff --git a/x-pack/test/functional/apps/infra/index.ts b/x-pack/test/functional/apps/infra/index.ts
index b389d56b9032c..948d99f7cce5f 100644
--- a/x-pack/test/functional/apps/infra/index.ts
+++ b/x-pack/test/functional/apps/infra/index.ts
@@ -26,6 +26,7 @@ export default ({ loadTestFile }: FtrProviderContext) => {
       loadTestFile(require.resolve('./log_entry_categories_tab'));
       loadTestFile(require.resolve('./log_entry_rate_tab'));
       loadTestFile(require.resolve('./logs_source_configuration'));
+      loadTestFile(require.resolve('./log_stream_date_nano'));
       loadTestFile(require.resolve('./link_to'));
       loadTestFile(require.resolve('./log_stream'));
     });
diff --git a/x-pack/test/functional/apps/infra/link_to.ts b/x-pack/test/functional/apps/infra/link_to.ts
index 7ad37696f5a46..f0e8da90d14d7 100644
--- a/x-pack/test/functional/apps/infra/link_to.ts
+++ b/x-pack/test/functional/apps/infra/link_to.ts
@@ -18,7 +18,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
   const retry = getService('retry');
   const browser = getService('browser');
 
-  const timestamp = Date.now();
+  const date = new Date();
+  const timestamp = date.getTime();
   const startDate = new Date(timestamp - ONE_HOUR).toISOString();
   const endDate = new Date(timestamp + ONE_HOUR).toISOString();
 
@@ -52,7 +53,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
             `(query:(language:kuery,query:\'trace.id:${traceId}'),refreshInterval:(pause:!t,value:5000),timeRange:(from:'${startDate}',to:'${endDate}'))`
           );
           expect(parsedUrl.searchParams.get('logPosition')).to.be(
-            `(position:(tiebreaker:0,time:${timestamp}))`
+            `(position:(tiebreaker:0,time:'${date.toISOString()}'))`
           );
           expect(parsedUrl.searchParams.get('logView')).to.be(LOG_VIEW_REFERENCE);
           expect(documentTitle).to.contain('Stream - Logs - Observability - Elastic');
@@ -87,7 +88,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
             `(query:(language:kuery,query:\'(kubernetes.pod.uid: 1234) and (trace.id:${traceId})\'),refreshInterval:(pause:!t,value:5000),timeRange:(from:'${startDate}',to:'${endDate}'))`
           );
           expect(parsedUrl.searchParams.get('logPosition')).to.be(
-            `(position:(tiebreaker:0,time:${timestamp}))`
+            `(position:(tiebreaker:0,time:'${date.toISOString()}'))`
           );
           expect(parsedUrl.searchParams.get('logView')).to.be(LOG_VIEW_REFERENCE);
           expect(documentTitle).to.contain('Stream - Logs - Observability - Elastic');
diff --git a/x-pack/test/functional/apps/infra/log_stream_date_nano.ts b/x-pack/test/functional/apps/infra/log_stream_date_nano.ts
new file mode 100644
index 0000000000000..99541e29a2330
--- /dev/null
+++ b/x-pack/test/functional/apps/infra/log_stream_date_nano.ts
@@ -0,0 +1,98 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import expect from '@kbn/expect';
+import { URL } from 'url';
+import { FtrProviderContext } from '../../ftr_provider_context';
+import { DATES } from './constants';
+
+export default ({ getPageObjects, getService }: FtrProviderContext) => {
+  const retry = getService('retry');
+  const browser = getService('browser');
+  const esArchiver = getService('esArchiver');
+  const logsUi = getService('logsUi');
+  const find = getService('find');
+  const logFilter = {
+    timeRange: {
+      from: DATES.metricsAndLogs.stream.startWithData,
+      to: DATES.metricsAndLogs.stream.endWithData,
+    },
+  };
+
+  describe('Log stream supports nano precision', function () {
+    before(async () => {
+      await esArchiver.load('x-pack/test/functional/es_archives/infra/logs_with_nano_date');
+    });
+    after(async () => {
+      await esArchiver.unload('x-pack/test/functional/es_archives/infra/logs_with_nano_date');
+    });
+
+    it('should display logs entries containing date_nano timestamps properly ', async () => {
+      await logsUi.logStreamPage.navigateTo({ logFilter });
+
+      const logStreamEntries = await logsUi.logStreamPage.getStreamEntries();
+
+      expect(logStreamEntries.length).to.be(4);
+    });
+
+    it('should render timestamp column properly', async () => {
+      await logsUi.logStreamPage.navigateTo({ logFilter });
+
+      await retry.try(async () => {
+        const columnHeaderLabels = await logsUi.logStreamPage.getColumnHeaderLabels();
+        expect(columnHeaderLabels[0]).to.eql('Oct 17, 2018');
+      });
+    });
+
+    it('should render timestamp column values properly', async () => {
+      await logsUi.logStreamPage.navigateTo({ logFilter });
+
+      const logStreamEntries = await logsUi.logStreamPage.getStreamEntries();
+
+      const firstLogStreamEntry = logStreamEntries[0];
+
+      const entryTimestamp = await logsUi.logStreamPage.getLogEntryColumnValueByName(
+        firstLogStreamEntry,
+        'timestampLogColumn'
+      );
+
+      expect(entryTimestamp).to.be('19:43:22.111');
+    });
+
+    it('should properly sync logPosition in url', async () => {
+      const currentUrl = await browser.getCurrentUrl();
+      const parsedUrl = new URL(currentUrl);
+
+      expect(parsedUrl.searchParams.get('logPosition')).to.be(
+        `(position:(tiebreaker:3,time:\'2018-10-17T19:46:22.333333333Z\'))`
+      );
+    });
+
+    it('should properly render timestamp in flyout with nano precision', async () => {
+      await logsUi.logStreamPage.navigateTo({ logFilter });
+
+      const logStreamEntries = await logsUi.logStreamPage.getStreamEntries();
+      const firstLogStreamEntry = logStreamEntries[0];
+
+      await logsUi.logStreamPage.openLogEntryDetailsFlyout(firstLogStreamEntry);
+
+      const cells = await find.allByCssSelector('.euiTableCellContent');
+
+      let isFound = false;
+
+      for (const cell of cells) {
+        const cellText = await cell.getVisibleText();
+        if (cellText === '2018-10-17T19:43:22.111111111Z') {
+          isFound = true;
+          return;
+        }
+      }
+
+      expect(isFound).to.be(true);
+    });
+  });
+};
diff --git a/x-pack/test/functional/es_archives/infra/logs_with_nano_date/data.json.gz b/x-pack/test/functional/es_archives/infra/logs_with_nano_date/data.json.gz
new file mode 100644
index 0000000000000000000000000000000000000000..68e1284e7d1307a866a7cd0484dfaa19b2bf1642
GIT binary patch
literal 338
zcmV-Y0j>TYiwFpn4M=4G17u-zVJ>QOZ*BnPlFMp@FcgOOK1Fadn<nO>GwP}oN~eVm
zUAXF|r0RsU<Aq6-8N_#QVn<6a+i8U!h>&ys^Cvl<odbZYk9F?Gz|E@Ey|9Uv?;4xw
z%*JdpuKAPF`<xe6wyT7Kf)}zBkf&O<QXhvtBbAv|<R#Nh^?H>A{PvFBZ#D;9Pl__j
z4_1US1%I-F6jO$9h%kfL1{qsb)$G%cdzs9omPM{KFKX*ZF$p2TkgO6C#XgHEMP!V}
zlgqdFjAo`#a^qI>;S6_r+Ns`8{YIp?7(^tZ2qTJo3LseATqnSjg{dj;S)i9%fOV2Q
zcm&}Epcn({uh{b4uy^e09j7}F0yYN(zC}RCI4=Sk1QUZTZ)IAQ$b7yKU`rPM3V`i;
k4gdlR0Ef{(`};o)-~X%OFYWNz7;{DN2D}6`<^u)*0D%CVo&W#<

literal 0
HcmV?d00001

diff --git a/x-pack/test/functional/es_archives/infra/logs_with_nano_date/mappings.json b/x-pack/test/functional/es_archives/infra/logs_with_nano_date/mappings.json
new file mode 100644
index 0000000000000..294ee1f204e93
--- /dev/null
+++ b/x-pack/test/functional/es_archives/infra/logs_with_nano_date/mappings.json
@@ -0,0 +1,419 @@
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-gaming-activity",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-gaming-activity"
+      ],
+      "name": "logs-gaming-activity",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-gaming-events",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-gaming-events"
+      ],
+      "name": "logs-gaming-events",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-gaming-scores",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-gaming-scores"
+      ],
+      "name": "logs-gaming-scores",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-manufacturing-downtime",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-manufacturing-downtime"
+      ],
+      "name": "logs-manufacturing-downtime",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-manufacturing-output",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-manufacturing-output"
+      ],
+      "name": "logs-manufacturing-output",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-manufacturing-quality",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-manufacturing-quality"
+      ],
+      "name": "logs-manufacturing-quality",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-retail-customers",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-retail-customers"
+      ],
+      "name": "logs-retail-customers",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-retail-inventory",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-retail-inventory"
+      ],
+      "name": "logs-retail-inventory",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-retail-promotions",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-retail-promotions"
+      ],
+      "name": "logs-retail-promotions",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+{
+  "type": "data_stream",
+  "value": {
+    "data_stream": "logs-retail-sales",
+    "template": {
+      "_meta": {
+        "description": "Template for my time series data",
+        "my-custom-meta-field": "More arbitrary metadata"
+      },
+      "data_stream": {
+        "allow_custom_routing": false,
+        "hidden": false
+      },
+      "index_patterns": [
+        "logs-retail-sales"
+      ],
+      "name": "logs-retail-sales",
+      "priority": 500,
+      "template": {
+        "mappings": {
+          "properties": {
+            "@timestamp": {
+              "format": "strict_date_optional_time_nanos",
+              "type": "date_nanos"
+            },
+            "data_stream": {
+              "properties": {
+                "namespace": {
+                  "type": "constant_keyword"
+                }
+              }
+            },
+            "message": {
+              "type": "wildcard"
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/x-pack/test/functional/services/logs_ui/log_stream.ts b/x-pack/test/functional/services/logs_ui/log_stream.ts
index 214290bd21ef4..1a068439a2d2d 100644
--- a/x-pack/test/functional/services/logs_ui/log_stream.ts
+++ b/x-pack/test/functional/services/logs_ui/log_stream.ts
@@ -12,6 +12,7 @@ import { TabsParams } from '../../page_objects/infra_logs_page';
 export function LogStreamPageProvider({ getPageObjects, getService }: FtrProviderContext) {
   const pageObjects = getPageObjects(['infraLogs']);
   const retry = getService('retry');
+  const find = getService('find');
   const testSubjects = getService('testSubjects');
 
   return {
@@ -43,6 +44,31 @@ export function LogStreamPageProvider({ getPageObjects, getService }: FtrProvide
       return await testSubjects.findAllDescendant('~logColumn', entryElement);
     },
 
+    async getLogEntryColumnValueByName(
+      entryElement: WebElementWrapper,
+      column: string
+    ): Promise<string> {
+      const columnElement = await testSubjects.findDescendant(`~${column}`, entryElement);
+
+      const contentElement = await columnElement.findByCssSelector(
+        `[data-test-subj='LogEntryColumnContent']`
+      );
+
+      return await contentElement.getVisibleText();
+    },
+
+    async openLogEntryDetailsFlyout(entryElement: WebElementWrapper) {
+      await entryElement.click();
+
+      const menuButton = await testSubjects.findDescendant(
+        `~infraLogEntryContextMenuButton`,
+        entryElement
+      );
+      await menuButton.click();
+
+      await find.clickByButtonText('View details');
+    },
+
     async getNoLogsIndicesPrompt() {
       return await testSubjects.find('noLogsIndicesPrompt');
     },

From 19da2d527686b329b53aba0320ff8b1b1c0cd7fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?=
 <alejandro.haro@elastic.co>
Date: Mon, 13 Nov 2023 15:14:23 +0100
Subject: [PATCH 127/147] FullStory: Skip setup for Elasticians (#171041)

---
 .../cloud_full_story/public/plugin.test.ts          | 13 ++++++++++++-
 .../cloud_full_story/public/plugin.ts               |  6 ++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.test.ts b/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.test.ts
index 5f241f3ee7f9b..836cafa8ac7af 100644
--- a/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.test.ts
+++ b/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.test.ts
@@ -20,9 +20,11 @@ describe('Cloud Plugin', () => {
       const setupPlugin = async ({
         config = {},
         isCloudEnabled = true,
+        isElasticStaffOwned = false,
       }: {
         config?: Partial<CloudFullStoryConfigType>;
         isCloudEnabled?: boolean;
+        isElasticStaffOwned?: boolean;
       }) => {
         const initContext = coreMock.createPluginInitializerContext(config);
 
@@ -30,7 +32,7 @@ describe('Cloud Plugin', () => {
 
         const coreSetup = coreMock.createSetup();
 
-        const cloud = { ...cloudMock.createSetup(), isCloudEnabled };
+        const cloud = { ...cloudMock.createSetup(), isCloudEnabled, isElasticStaffOwned };
 
         plugin.setup(coreSetup, { cloud });
 
@@ -61,6 +63,15 @@ describe('Cloud Plugin', () => {
         expect(coreSetup.analytics.registerShipper).not.toHaveBeenCalled();
       });
 
+      it('does set up FullStory when isCloudEnabled=true but the deployment is owned by an Elastician', async () => {
+        const { coreSetup } = await setupPlugin({
+          config: { org_id: 'foo' },
+          isCloudEnabled: true,
+          isElasticStaffOwned: true,
+        });
+        expect(coreSetup.analytics.registerShipper).not.toHaveBeenCalled();
+      });
+
       it('does not call initializeFullStory when org_id is undefined', async () => {
         const { coreSetup } = await setupPlugin({ config: {} });
         expect(coreSetup.analytics.registerShipper).not.toHaveBeenCalled();
diff --git a/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.ts b/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.ts
index 66adac5f5fc22..a248b27f93714 100755
--- a/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.ts
+++ b/x-pack/plugins/cloud_integrations/cloud_full_story/public/plugin.ts
@@ -37,6 +37,12 @@ export class CloudFullStoryPlugin implements Plugin {
 
   public setup(core: CoreSetup, { cloud }: CloudFullStorySetupDeps) {
     if (cloud.isCloudEnabled) {
+      if (cloud.isElasticStaffOwned) {
+        this.initializerContext.logger
+          .get()
+          .info('Skipping FullStory setup for a Elastic-owned deployments');
+        return;
+      }
       this.setupFullStory({ analytics: core.analytics, basePath: core.http.basePath }).catch((e) =>
         // eslint-disable-next-line no-console
         console.debug(`Error setting up FullStory: ${e.toString()}`)

From b71a52c9f8ce739990d0cd360fc4d89d92a80b83 Mon Sep 17 00:00:00 2001
From: Shahzad <shahzad31comp@gmail.com>
Date: Mon, 13 Nov 2023 16:49:18 +0100
Subject: [PATCH 128/147] [Synthetics] Supress API key errors when we have no
 monitors (#171085)

---
 .../synthetics/server/synthetics_service/synthetics_service.ts | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
index aabedbe96443b..1602a7d29f12f 100644
--- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
+++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts
@@ -423,6 +423,9 @@ export class SyntheticsService {
     };
 
     for await (const result of finder.find()) {
+      if (result.saved_objects.length === 0) {
+        return;
+      }
       try {
         if (!output) {
           output = await this.getOutput();

From 69c9aee4f422e39273088f6b6db63111b1201424 Mon Sep 17 00:00:00 2001
From: Dmitrii Shevchenko <dmitrii.shevchenko@elastic.co>
Date: Mon, 13 Nov 2023 17:39:31 +0100
Subject: [PATCH 129/147] [Security Solution] Make rule schema
 forward-compatible (#170861)

**Resolves: https://github.com/elastic/security-team/issues/6888**

## Summary

The transition from io-ts to Zod has led to a new approach in request
validation where extra fields are allowed. Now, any unknown fields in
data structures sent to our API are stripped away silently, without
triggering validation errors. This change ensures the rule schema is
forward-compatible, facilitating scenarios such as:

- Users exporting a rule with a new field from the latest Kibana version
and importing it into the previous Kibana without issues.
- The TRADE team can avoid backporting rules with new fields for
out-of-band updates, as these fields will be ignored during the rule
installation process.

Forward-compatible rule schemas are supported by:
- All Rule CRUD operations
- All Bulk Rule CRUD operations
- Rule Import/Export functionality

### How to test this PR

1. In Kibana UI. Export a rule, append extra fields at any level, and
re-import it. All additional fields should be omitted in the final rule.
2. On the API level. Include extra fields in any CRUD rule request. Then
retrieve the rule, all extra fields should be missing.

### Note

Not all rule fields are validated; some fields are defined as
`Record<string, unknown>` like `RuleActionParams` or
`RuleActionAlertsFilter`. Any extra fields added to these structures
will be preserved.
---
 .../api/detection_engine/model/schemas.ts     |   9 +-
 .../import_rules/rule_to_import.mock.ts       |   3 +
 .../import_rules/rule_to_import.test.ts       | 932 +++++++-----------
 .../import_rules/rule_to_import.ts            |  44 +-
 .../api/rules/import_rules/route.test.ts      |   4 +-
 .../api/rules/import_rules/route.ts           |   3 -
 .../import_rule_action_connectors.test.ts     |   3 +
 .../create_rules_stream_from_ndjson.test.ts   |   2 +-
 .../import/create_rules_stream_from_ndjson.ts |  47 +-
 .../logic/import/import_rules_utils.test.ts   |  24 -
 .../logic/import/import_rules_utils.ts        |  12 +-
 .../rule_management/utils/utils.ts            |   2 +-
 .../basic/tests/import_rules.ts               |   4 +-
 .../group10/import_rules.ts                   | 102 +-
 14 files changed, 478 insertions(+), 713 deletions(-)

diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
index 35a394edcb6ad..bfbba49bb80ea 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts
@@ -8,7 +8,7 @@
 /* eslint-disable @typescript-eslint/naming-convention */
 
 import * as t from 'io-ts';
-import { IsoDateString, PositiveInteger } from '@kbn/securitysolution-io-ts-types';
+import { PositiveInteger } from '@kbn/securitysolution-io-ts-types';
 
 export const file_name = t.string;
 export type FileName = t.TypeOf<typeof file_name>;
@@ -42,13 +42,6 @@ export const signal_status_query = t.object;
 export const alert_tag_ids = t.array(t.string);
 export type AlertTagIds = t.TypeOf<typeof alert_tag_ids>;
 
-export const created_at = IsoDateString;
-export const updated_at = IsoDateString;
-export const created_by = t.string;
-export const updated_by = t.string;
-
-export const revision = PositiveInteger;
-
 export const indexRecord = t.record(
   t.string,
   t.type({
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts
index cec58d1c5fdc6..6161e2a00f960 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts
@@ -16,6 +16,7 @@ export const getImportRulesSchemaMock = (ruleId = 'rule-1'): RuleToImport => ({
   risk_score: 55,
   language: 'kuery',
   rule_id: ruleId,
+  immutable: false,
 });
 
 export const getImportRulesWithIdSchemaMock = (ruleId = 'rule-1'): RuleToImport => ({
@@ -28,6 +29,7 @@ export const getImportRulesWithIdSchemaMock = (ruleId = 'rule-1'): RuleToImport
   risk_score: 55,
   language: 'kuery',
   rule_id: ruleId,
+  immutable: false,
 });
 
 /**
@@ -79,6 +81,7 @@ export const getImportThreatMatchRulesSchemaMock = (ruleId = 'rule-1'): RuleToIm
       },
     },
   ],
+  immutable: false,
 });
 
 export const webHookConnector = {
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts
index 29ad45c10bf84..f53f67757ccdb 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts
@@ -5,11 +5,9 @@
  * 2.0.
  */
 
-import { left } from 'fp-ts/lib/Either';
-import { pipe } from 'fp-ts/lib/pipeable';
-import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils';
-
+import { expectParseError, expectParseSuccess, stringifyZodError } from '@kbn/zod-helpers';
 import { getListArrayMock } from '../../../../detection_engine/schemas/types/lists.mock';
+import type { RuleToImportInput } from './rule_to_import';
 import { RuleToImport } from './rule_to_import';
 import {
   getImportRulesSchemaMock,
@@ -18,193 +16,72 @@ import {
 
 describe('RuleToImport', () => {
   test('empty objects do not validate', () => {
-    const payload: Partial<RuleToImport> = {};
+    const payload: Partial<RuleToImportInput> = {};
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "description"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "name"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "rule_id"'
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, description: Required, risk_score: Required, severity: Required, rule_id: Required, and 25 more"`
     );
-    expect(message.schema).toEqual({});
   });
 
-  test('made up values do not validate', () => {
-    const payload: RuleToImport & { madeUp: string } = {
+  test('extra properties are removed', () => {
+    const payload: RuleToImportInput & { madeUp: string } = {
       ...getImportRulesSchemaMock(),
       madeUp: 'hi',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['invalid keys "madeUp"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseSuccess(result);
+
+    expect(result.data).toEqual(getImportRulesSchemaMock());
   });
 
   test('[rule_id] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "description"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "name"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, description: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", and 24 more"`
     );
-    expect(message.schema).toEqual({});
   });
 
   test('[rule_id, description] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
       description: 'some description',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "name"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, and 23 more"`
     );
-    expect(message.schema).toEqual({});
   });
 
   test('[rule_id, description, from] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
       description: 'some description',
       from: 'now-5m',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "name"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
-    );
-    expect(message.schema).toEqual({});
-  });
-
-  test('[rule_id, description, from, to] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
-      rule_id: 'rule-1',
-      description: 'some description',
-      from: 'now-5m',
-      to: 'now',
-    };
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "name"'
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"name: Required, risk_score: Required, severity: Required, type: Invalid literal value, expected \\"eql\\", query: Required, and 23 more"`
     );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
-    );
-    expect(message.schema).toEqual({});
-  });
-
-  test('[rule_id, description, from, to, name] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
-      rule_id: 'rule-1',
-      description: 'some description',
-      from: 'now-5m',
-      to: 'now',
-      name: 'some-name',
-    };
-
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "severity"'
-    );
-    expect(message.schema).toEqual({});
-  });
-
-  test('[rule_id, description, from, to, name, severity] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
-      rule_id: 'rule-1',
-      description: 'some description',
-      from: 'now-5m',
-      to: 'now',
-      name: 'some-name',
-      severity: 'low',
-    };
-
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toContain(
-      'Invalid value "undefined" supplied to "risk_score"'
-    );
-    expect(message.schema).toEqual({});
-  });
-
-  test('[rule_id, description, from, to, name, severity, type] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
-      rule_id: 'rule-1',
-      description: 'some description',
-      from: 'now-5m',
-      to: 'now',
-      name: 'some-name',
-      severity: 'low',
-      type: 'query',
-    };
-
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "risk_score"',
-    ]);
-    expect(message.schema).toEqual({});
   });
 
   test('[rule_id, description, from, to, name, severity, type, interval] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
       description: 'some description',
       from: 'now-5m',
@@ -215,17 +92,14 @@ describe('RuleToImport', () => {
       type: 'query',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "risk_score"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"risk_score: Required"`);
   });
 
   test('[rule_id, description, from, to, name, severity, type, interval, index] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
       description: 'some description',
       from: 'now-5m',
@@ -237,17 +111,14 @@ describe('RuleToImport', () => {
       index: ['index-1'],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "risk_score"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"risk_score: Required"`);
   });
 
   test('[rule_id, description, from, to, name, severity, type, query, index, interval] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       risk_score: 50,
       description: 'some description',
@@ -261,14 +132,13 @@ describe('RuleToImport', () => {
       interval: '5m',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, query, language] does not validate', () => {
-    const payload: Partial<RuleToImport> = {
+    const payload: Partial<RuleToImportInput> = {
       rule_id: 'rule-1',
       description: 'some description',
       from: 'now-5m',
@@ -282,17 +152,14 @@ describe('RuleToImport', () => {
       language: 'kuery',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "risk_score"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"risk_score: Required"`);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, query, language, risk_score] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       risk_score: 50,
       description: 'some description',
@@ -307,14 +174,13 @@ describe('RuleToImport', () => {
       language: 'kuery',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, query, language, risk_score, output_index] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       output_index: '.siem-signals',
       risk_score: 50,
@@ -330,14 +196,13 @@ describe('RuleToImport', () => {
       language: 'kuery',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, filter, risk_score] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       description: 'some description',
       from: 'now-5m',
@@ -350,14 +215,13 @@ describe('RuleToImport', () => {
       risk_score: 50,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, filter, risk_score, output_index] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       output_index: '.siem-signals',
       risk_score: 50,
@@ -371,26 +235,24 @@ describe('RuleToImport', () => {
       type: 'query',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You can send in an empty array to threat', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       threat: [],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('[rule_id, description, from, to, index, name, severity, interval, type, filter, risk_score, output_index, threat] does validate', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       rule_id: 'rule-1',
       output_index: '.siem-signals',
       risk_score: 50,
@@ -421,81 +283,78 @@ describe('RuleToImport', () => {
       ],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('allows references to be sent as valid', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       references: ['index-1'],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('defaults references to an array if it is not sent in', () => {
     const { references, ...noReferences } = getImportRulesSchemaMock();
-    const decoded = RuleToImport.decode(noReferences);
-    const checked = exactCheck(noReferences, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(noReferences);
+
+    expectParseSuccess(result);
   });
 
   test('references cannot be numbers', () => {
-    const payload: Omit<RuleToImport, 'references'> & { references: number[] } = {
+    const payload: Omit<RuleToImportInput, 'references'> & { references: number[] } = {
       ...getImportRulesSchemaMock(),
       references: [5],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "references"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"references.0: Expected string, received number"`
+    );
   });
 
   test('indexes cannot be numbers', () => {
-    const payload: Omit<RuleToImport, 'index'> & { index: number[] } = {
+    const payload: Omit<RuleToImportInput, 'index'> & { index: number[] } = {
       ...getImportRulesSchemaMock(),
       index: [5],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "index"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", index.0: Expected string, received number, index.0: Expected string, received number, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('defaults interval to 5 min', () => {
     const { interval, ...noInterval } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noInterval,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('defaults max signals to 100', () => {
     // eslint-disable-next-line @typescript-eslint/naming-convention
     const { max_signals, ...noMaxSignals } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noMaxSignals,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('saved_query type can have filters with it', () => {
@@ -504,25 +363,23 @@ describe('RuleToImport', () => {
       filters: [],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('filters cannot be a string', () => {
-    const payload: Omit<RuleToImport, 'filters'> & { filters: string } = {
+    const payload: Omit<RuleToImportInput, 'filters'> & { filters: string } = {
       ...getImportRulesSchemaMock(),
       filters: 'some string',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "some string" supplied to "filters"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", filters: Expected array, received string, filters: Expected array, received string, type: Invalid literal value, expected \\"saved_query\\", and 20 more"`
+    );
   });
 
   test('language validates with kuery', () => {
@@ -531,10 +388,9 @@ describe('RuleToImport', () => {
       language: 'kuery',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('language validates with lucene', () => {
@@ -543,99 +399,92 @@ describe('RuleToImport', () => {
       language: 'lucene',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('language does not validate with something made up', () => {
-    const payload: Omit<RuleToImport, 'language'> & { language: string } = {
+    const payload: Omit<RuleToImportInput, 'language'> & { language: string } = {
       ...getImportRulesSchemaMock(),
       language: 'something-made-up',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "something-made-up" supplied to "language"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"type: Invalid literal value, expected \\"eql\\", language: Invalid literal value, expected \\"eql\\", language: Invalid enum value. Expected 'kuery' | 'lucene', received 'something-made-up', type: Invalid literal value, expected \\"saved_query\\", saved_id: Required, and 19 more"`
+    );
   });
 
   test('max_signals cannot be negative', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       max_signals: -1,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "-1" supplied to "max_signals"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"max_signals: Number must be greater than or equal to 1"`
+    );
   });
 
   test('max_signals cannot be zero', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       max_signals: 0,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "0" supplied to "max_signals"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"max_signals: Number must be greater than or equal to 1"`
+    );
   });
 
   test('max_signals can be 1', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       max_signals: 1,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You can optionally send in an array of tags', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       tags: ['tag_1', 'tag_2'],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot send in an array of tags that are numbers', () => {
-    const payload: Omit<RuleToImport, 'tags'> & { tags: number[] } = {
+    const payload: Omit<RuleToImportInput, 'tags'> & { tags: number[] } = {
       ...getImportRulesSchemaMock(),
       tags: [0, 1, 2],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "0" supplied to "tags"',
-      'Invalid value "1" supplied to "tags"',
-      'Invalid value "2" supplied to "tags"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"tags.0: Expected string, received number, tags.1: Expected string, received number, tags.2: Expected string, received number"`
+    );
   });
 
   test('You cannot send in an array of threat that are missing "framework"', () => {
-    const payload: Omit<RuleToImport, 'threat'> & {
-      threat: Array<Partial<Omit<RuleToImport['threat'], 'framework'>>>;
+    const payload: Omit<RuleToImportInput, 'threat'> & {
+      threat: Array<Partial<Omit<RuleToImportInput['threat'], 'framework'>>>;
     } = {
       ...getImportRulesSchemaMock(),
       threat: [
@@ -656,18 +505,15 @@ describe('RuleToImport', () => {
       ],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "threat,framework"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"threat.0.framework: Required"`);
   });
 
   test('You cannot send in an array of threat that are missing "tactic"', () => {
-    const payload: Omit<RuleToImport, 'threat'> & {
-      threat: Array<Partial<Omit<RuleToImport['threat'], 'tactic'>>>;
+    const payload: Omit<RuleToImportInput, 'threat'> & {
+      threat: Array<Partial<Omit<RuleToImportInput['threat'], 'tactic'>>>;
     } = {
       ...getImportRulesSchemaMock(),
       threat: [
@@ -684,18 +530,15 @@ describe('RuleToImport', () => {
       ],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "threat,tactic"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"threat.0.tactic: Required"`);
   });
 
   test('You can send in an array of threat that are missing "technique"', () => {
-    const payload: Omit<RuleToImport, 'threat'> & {
-      threat: Array<Partial<Omit<RuleToImport['threat'], 'technique'>>>;
+    const payload: Omit<RuleToImportInput, 'threat'> & {
+      threat: Array<Partial<Omit<RuleToImportInput['threat'], 'technique'>>>;
     } = {
       ...getImportRulesSchemaMock(),
       threat: [
@@ -710,206 +553,194 @@ describe('RuleToImport', () => {
       ],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You can optionally send in an array of false positives', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       false_positives: ['false_1', 'false_2'],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot send in an array of false positives that are numbers', () => {
-    const payload: Omit<RuleToImport, 'false_positives'> & { false_positives: number[] } = {
+    const payload: Omit<RuleToImportInput, 'false_positives'> & { false_positives: number[] } = {
       ...getImportRulesSchemaMock(),
       false_positives: [5, 4],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "5" supplied to "false_positives"',
-      'Invalid value "4" supplied to "false_positives"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"false_positives.0: Expected string, received number, false_positives.1: Expected string, received number"`
+    );
   });
 
   test('You cannot set the immutable to a number when trying to create a rule', () => {
-    const payload: Omit<RuleToImport, 'immutable'> & { immutable: number } = {
+    const payload: Omit<RuleToImportInput, 'immutable'> & { immutable: number } = {
       ...getImportRulesSchemaMock(),
       immutable: 5,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "immutable"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"immutable: Invalid literal value, expected false"`
+    );
   });
 
   test('You can optionally set the immutable to be false', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       immutable: false,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot set the immutable to be true', () => {
-    const payload: RuleToImport = {
+    const payload: Omit<RuleToImportInput, 'immutable'> & { immutable: true } = {
       ...getImportRulesSchemaMock(),
       immutable: true,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "true" supplied to "immutable"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"immutable: Invalid literal value, expected false"`
+    );
   });
 
   test('You cannot set the immutable to be a number', () => {
-    const payload: Omit<RuleToImport, 'immutable'> & { immutable: number } = {
+    const payload: Omit<RuleToImportInput, 'immutable'> & { immutable: number } = {
       ...getImportRulesSchemaMock(),
       immutable: 5,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "immutable"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"immutable: Invalid literal value, expected false"`
+    );
   });
 
   test('You cannot set the risk_score to 101', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       risk_score: 101,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "101" supplied to "risk_score"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Number must be less than or equal to 100"`
+    );
   });
 
   test('You cannot set the risk_score to -1', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       risk_score: -1,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "-1" supplied to "risk_score"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"risk_score: Number must be greater than or equal to 0"`
+    );
   });
 
   test('You can set the risk_score to 0', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       risk_score: 0,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You can set the risk_score to 100', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       risk_score: 100,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You can set meta to any object you want', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       meta: {
         somethingMadeUp: { somethingElse: true },
       },
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot create meta as a string', () => {
-    const payload: Omit<RuleToImport, 'meta'> & { meta: string } = {
+    const payload: Omit<RuleToImportInput, 'meta'> & { meta: string } = {
       ...getImportRulesSchemaMock(),
       meta: 'should not work',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "should not work" supplied to "meta"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"meta: Expected object, received string"`
+    );
   });
 
   test('validates with timeline_id and timeline_title', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       timeline_id: 'timeline-id',
       timeline_title: 'timeline-title',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('rule_id is required and you cannot get by with just id', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       id: 'c4e80a0d-e20f-4efc-84c1-08112da5a612',
     };
     // @ts-expect-error
     delete payload.rule_id;
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "rule_id"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"rule_id: Required"`);
   });
 
   test('it validates with created_at, updated_at, created_by, updated_by values', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       created_at: '2020-01-09T06:15:24.749Z',
       updated_at: '2020-01-09T06:15:24.749Z',
@@ -917,153 +748,134 @@ describe('RuleToImport', () => {
       updated_by: 'Evan Hassanabad',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('it does not validate with epoch strings for created_at', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       created_at: '1578550728650',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "1578550728650" supplied to "created_at"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"created_at: Invalid datetime"`);
   });
 
   test('it does not validate with epoch strings for updated_at', () => {
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...getImportRulesSchemaMock(),
       updated_at: '1578550728650',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "1578550728650" supplied to "updated_at"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"updated_at: Invalid datetime"`);
   });
 
   test('The default for "from" will be "now-6m"', () => {
     const { from, ...noFrom } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noFrom,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('The default for "to" will be "now"', () => {
     const { to, ...noTo } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noTo,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot set the severity to a value other than low, medium, high, or critical', () => {
-    const payload: Omit<RuleToImport, 'severity'> & { severity: string } = {
+    const payload: Omit<RuleToImportInput, 'severity'> & { severity: string } = {
       ...getImportRulesSchemaMock(),
       severity: 'junk',
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual(['Invalid value "junk" supplied to "severity"']);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"severity: Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical', received 'junk'"`
+    );
   });
 
   test('The default for "actions" will be an empty array', () => {
     const { actions, ...noActions } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noActions,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+
+    expectParseSuccess(result);
   });
 
   test('You cannot send in an array of actions that are missing "group"', () => {
-    const payload: Omit<RuleToImport['actions'], 'group'> = {
+    const payload: Omit<RuleToImportInput['actions'], 'group'> = {
       ...getImportRulesSchemaMock(),
       actions: [{ id: 'id', action_type_id: 'action_type_id', params: {} }],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "actions,group"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"actions.0.group: Required"`);
   });
 
   test('You cannot send in an array of actions that are missing "id"', () => {
-    const payload: Omit<RuleToImport['actions'], 'id'> = {
+    const payload: Omit<RuleToImportInput['actions'], 'id'> = {
       ...getImportRulesSchemaMock(),
       actions: [{ group: 'group', action_type_id: 'action_type_id', params: {} }],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "actions,id"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"actions.0.id: Required"`);
   });
 
   test('You cannot send in an array of actions that are missing "action_type_id"', () => {
-    const payload: Omit<RuleToImport['actions'], 'action_type_id'> = {
+    const payload: Omit<RuleToImportInput['actions'], 'action_type_id'> = {
       ...getImportRulesSchemaMock(),
       actions: [{ group: 'group', id: 'id', params: {} }],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "actions,action_type_id"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.action_type_id: Required"`
+    );
   });
 
   test('You cannot send in an array of actions that are missing "params"', () => {
-    const payload: Omit<RuleToImport['actions'], 'params'> = {
+    const payload: Omit<RuleToImportInput['actions'], 'params'> = {
       ...getImportRulesSchemaMock(),
       actions: [{ group: 'group', id: 'id', action_type_id: 'action_type_id' }],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "actions,params"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(`"actions.0.params: Required"`);
   });
 
   test('You cannot send in an array of actions that are including "actionTypeId"', () => {
-    const payload: Omit<RuleToImport['actions'], 'actions'> = {
+    const payload: Omit<RuleToImportInput['actions'], 'actions'> = {
       ...getImportRulesSchemaMock(),
       actions: [
         {
@@ -1075,25 +887,22 @@ describe('RuleToImport', () => {
       ],
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([
-      'Invalid value "undefined" supplied to "actions,action_type_id"',
-    ]);
-    expect(message.schema).toEqual({});
+    const result = RuleToImport.safeParse(payload);
+    expectParseError(result);
+
+    expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+      `"actions.0.action_type_id: Required"`
+    );
   });
 
   test('The default for "throttle" will be null', () => {
     const { throttle, ...noThrottle } = getImportRulesSchemaMock();
-    const payload: RuleToImport = {
+    const payload: RuleToImportInput = {
       ...noThrottle,
     };
 
-    const decoded = RuleToImport.decode(payload);
-    const checked = exactCheck(payload, decoded);
-    const message = pipe(checked, foldLeftRight);
-    expect(getPaths(left(message.errors))).toEqual([]);
+    const result = RuleToImport.safeParse(payload);
+    expectParseSuccess(result);
   });
 
   describe('note', () => {
@@ -1103,43 +912,38 @@ describe('RuleToImport', () => {
         note: '# documentation markdown here',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     test('You can set note to an empty string', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         ...getImportRulesSchemaMock(),
         note: '',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     test('You cannot create note as an object', () => {
-      const payload: Omit<RuleToImport, 'note'> & { note: {} } = {
+      const payload: Omit<RuleToImportInput, 'note'> & { note: {} } = {
         ...getImportRulesSchemaMock(),
         note: {
           somethingHere: 'something else',
         },
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([
-        'Invalid value "{"somethingHere":"something else"}" supplied to "note"',
-      ]);
-      expect(message.schema).toEqual({});
+      const result = RuleToImport.safeParse(payload);
+      expectParseError(result);
+
+      expect(stringifyZodError(result.error)).toMatchInlineSnapshot(
+        `"note: Expected string, received object"`
+      );
     });
 
     test('[rule_id, description, from, to, index, name, severity, interval, type, filter, risk_score, note] does validate', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         description: 'some description',
         from: 'now-5m',
@@ -1153,16 +957,14 @@ describe('RuleToImport', () => {
         note: '# some markdown',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
   });
 
   describe('exception_list', () => {
     test('[rule_id, description, from, to, index, name, severity, interval, type, filters, risk_score, note, and exceptions_list] does validate', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         description: 'some description',
         from: 'now-5m',
@@ -1178,14 +980,12 @@ describe('RuleToImport', () => {
         exceptions_list: getListArrayMock(),
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     test('[rule_id, description, from, to, index, name, severity, interval, type, filter, risk_score, note, and empty exceptions_list] does validate', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         description: 'some description',
         from: 'now-5m',
@@ -1201,10 +1001,8 @@ describe('RuleToImport', () => {
         exceptions_list: [],
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     test('rule_id, description, from, to, index, name, severity, interval, type, filters, risk_score, note, and invalid exceptions_list] does NOT validate', () => {
@@ -1224,19 +1022,16 @@ describe('RuleToImport', () => {
         exceptions_list: [{ id: 'uuid_here', namespace_type: 'not a namespace type' }],
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([
-        'Invalid value "undefined" supplied to "exceptions_list,list_id"',
-        'Invalid value "undefined" supplied to "exceptions_list,type"',
-        'Invalid value "not a namespace type" supplied to "exceptions_list,namespace_type"',
-      ]);
-      expect(message.schema).toEqual({});
+      const result = RuleToImport.safeParse(payload);
+      expectParseError(result);
+
+      expect(stringifyZodError(result.error)).toEqual(
+        "exceptions_list.0.list_id: Required, exceptions_list.0.type: Required, exceptions_list.0.namespace_type: Invalid enum value. Expected 'agnostic' | 'single', received 'not a namespace type'"
+      );
     });
 
     test('[rule_id, description, from, to, index, name, severity, interval, type, filters, risk_score, note, and non-existent exceptions_list] does validate with empty exceptions_list', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         description: 'some description',
         from: 'now-5m',
@@ -1251,26 +1046,22 @@ describe('RuleToImport', () => {
         note: '# some markdown',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
   });
 
   describe('threat_mapping', () => {
     test('You can set a threat query, index, mapping, filters on an imported rule', () => {
       const payload = getImportThreatMatchRulesSchemaMock();
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
   });
 
   describe('data_view_id', () => {
     test('Defined data_view_id and empty index does validate', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         risk_score: 50,
         description: 'some description',
@@ -1285,15 +1076,13 @@ describe('RuleToImport', () => {
         interval: '5m',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     // Both can be defined, but if a data_view_id is defined, rule will use that one
     test('Defined data_view_id and index does validate', () => {
-      const payload: RuleToImport = {
+      const payload: RuleToImportInput = {
         rule_id: 'rule-1',
         risk_score: 50,
         description: 'some description',
@@ -1308,25 +1097,20 @@ describe('RuleToImport', () => {
         interval: '5m',
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([]);
+      const result = RuleToImport.safeParse(payload);
+      expectParseSuccess(result);
     });
 
     test('data_view_id cannot be a number', () => {
-      const payload: Omit<RuleToImport, 'data_view_id'> & { data_view_id: number } = {
+      const payload: Omit<RuleToImportInput, 'data_view_id'> & { data_view_id: number } = {
         ...getImportRulesSchemaMock(),
         data_view_id: 5,
       };
 
-      const decoded = RuleToImport.decode(payload);
-      const checked = exactCheck(payload, decoded);
-      const message = pipe(checked, foldLeftRight);
-      expect(getPaths(left(message.errors))).toEqual([
-        'Invalid value "5" supplied to "data_view_id"',
-      ]);
-      expect(message.schema).toEqual({});
+      const result = RuleToImport.safeParse(payload);
+      expectParseError(result);
+
+      expect(stringifyZodError(result.error)).toContain('data_view_id: Expected string');
     });
   });
 });
diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts
index d494461d2cdb1..5c9514943ac41 100644
--- a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts
+++ b/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts
@@ -5,21 +5,13 @@
  * 2.0.
  */
 
-import * as t from 'io-ts';
-import { OnlyFalseAllowed } from '@kbn/securitysolution-io-ts-types';
-
-// TODO https://github.com/elastic/security-team/issues/7491
-// eslint-disable-next-line no-restricted-imports
+import * as z from 'zod';
 import {
-  RelatedIntegrationArray,
-  RequiredFieldArray,
-  RuleObjectId,
-  RuleSignatureId,
-  SetupGuide,
   BaseCreateProps,
+  ResponseRequiredFields,
+  RuleSignatureId,
   TypeSpecificCreateProps,
-} from '../../model/rule_schema_legacy';
-import { created_at, updated_at, created_by, updated_by, revision } from '../../model';
+} from '../../model/rule_schema';
 
 /**
  * Differences from this and the createRulesSchema are
@@ -31,23 +23,11 @@ import { created_at, updated_at, created_by, updated_by, revision } from '../../
  *   - created_by is optional (but ignored in the import code)
  *   - updated_by is optional (but ignored in the import code)
  */
-export type RuleToImport = t.TypeOf<typeof RuleToImport>;
-export const RuleToImport = t.intersection([
-  BaseCreateProps,
-  TypeSpecificCreateProps,
-  t.exact(t.type({ rule_id: RuleSignatureId })),
-  t.exact(
-    t.partial({
-      id: RuleObjectId,
-      immutable: OnlyFalseAllowed,
-      updated_at,
-      updated_by,
-      created_at,
-      created_by,
-      related_integrations: RelatedIntegrationArray,
-      required_fields: RequiredFieldArray,
-      revision,
-      setup: SetupGuide,
-    })
-  ),
-]);
+export type RuleToImport = z.infer<typeof RuleToImport>;
+export type RuleToImportInput = z.input<typeof RuleToImport>;
+export const RuleToImport = BaseCreateProps.and(TypeSpecificCreateProps).and(
+  ResponseRequiredFields.partial().extend({
+    rule_id: RuleSignatureId,
+    immutable: z.literal(false).default(false),
+  })
+);
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts
index fda5fbe5b2800..f383a9d11cc00 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts
@@ -311,14 +311,14 @@ describe('Import rules route', () => {
         errors: [
           {
             error: {
-              message: 'Invalid value "undefined" supplied to "rule_id"',
+              message: 'rule_id: Required',
               status_code: 400,
             },
             rule_id: '(unknown id)',
           },
           {
             error: {
-              message: 'Invalid value "undefined" supplied to "rule_id"',
+              message: 'rule_id: Required',
               status_code: 400,
             },
             rule_id: '(unknown id)',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts
index eb622884bc7a9..5867d099fb8de 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts
@@ -165,9 +165,6 @@ export const importRulesRoute = (
             mlAuthz,
             overwriteRules: request.query.overwrite,
             rulesClient,
-            savedObjectsClient,
-            exceptionsClient,
-            spaceId: ctx.securitySolution.getSpaceId(),
             existingLists: foundReferencedExceptionLists,
             allowMissingConnectorSecrets: !!actionConnectors.length,
           });
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts
index 7b161f1ab27f2..8afecd245e2a9 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts
@@ -419,6 +419,7 @@ describe('importRuleActionConnectors', () => {
           },
         ],
         description: 'some description',
+        immutable: false,
         language: 'kuery',
         name: 'Query with a rule id',
         query: 'user.name: root or user.name: admin',
@@ -529,6 +530,7 @@ describe('importRuleActionConnectors', () => {
           },
         ],
         description: 'some description',
+        immutable: false,
         language: 'kuery',
         name: 'Query with a rule id',
         query: 'user.name: root or user.name: admin',
@@ -547,6 +549,7 @@ describe('importRuleActionConnectors', () => {
           },
         ],
         description: 'some description',
+        immutable: false,
         language: 'kuery',
         name: 'Query with a rule id',
         id: '0abc78e0-7031-11ed-b076-53cc4d57aaf1',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts
index 22c7130d8a15f..be9561598fd08 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts
@@ -283,7 +283,7 @@ describe('create_rules_stream_from_ndjson', () => {
         immutable: false,
       });
       expect(resultOrError[1].message).toContain(
-        'Invalid value "undefined" supplied to "name",Invalid value "undefined" supplied to "description",Invalid value "undefined" supplied to "risk_score",Invalid value "undefined" supplied to "severity"'
+        'name: Required, description: Required, risk_score: Required, severity: Required, rule_id: Required, and 25 more'
       );
       expect(resultOrError[2]).toEqual({
         rule_id: 'rule-2',
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts
index af90eb560579f..a14b02df8ce71 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts
@@ -6,9 +6,6 @@
  */
 
 import { has } from 'lodash/fp';
-import { pipe } from 'fp-ts/lib/pipeable';
-import { fold } from 'fp-ts/lib/Either';
-import type * as t from 'io-ts';
 import type { Transform } from 'stream';
 import {
   createSplitStream,
@@ -18,13 +15,14 @@ import {
 } from '@kbn/utils';
 
 import { BadRequestError } from '@kbn/securitysolution-es-utils';
-import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils';
 import type {
   ImportExceptionListItemSchema,
   ImportExceptionsListSchema,
 } from '@kbn/securitysolution-io-ts-list-types';
 
 import type { SavedObject } from '@kbn/core-saved-objects-server';
+import { stringifyZodError } from '@kbn/zod-helpers';
+import type { RuleToImportInput } from '../../../../../../common/api/detection_engine/rule_management';
 import {
   RuleToImport,
   validateRuleToImport,
@@ -42,7 +40,7 @@ import {
 export const validateRulesStream = (): Transform => {
   return createMapStream<{
     exceptions: Array<ImportExceptionsListSchema | ImportExceptionListItemSchema | Error>;
-    rules: Array<RuleToImport | Error>;
+    rules: Array<RuleToImportInput | Error>;
     actionConnectors: SavedObject[];
   }>((items) => ({
     actionConnectors: items.actionConnectors,
@@ -51,26 +49,25 @@ export const validateRulesStream = (): Transform => {
   }));
 };
 
-export const validateRules = (rules: Array<RuleToImport | Error>): Array<RuleToImport | Error> => {
-  return rules.map((obj: RuleToImport | Error) => {
-    if (!(obj instanceof Error)) {
-      const decoded = RuleToImport.decode(obj);
-      const checked = exactCheck(obj, decoded);
-      const onLeft = (errors: t.Errors): BadRequestError | RuleToImport => {
-        return new BadRequestError(formatErrors(errors).join());
-      };
-      const onRight = (schema: RuleToImport): BadRequestError | RuleToImport => {
-        const validationErrors = validateRuleToImport(schema);
-        if (validationErrors.length) {
-          return new BadRequestError(validationErrors.join());
-        } else {
-          return schema;
-        }
-      };
-      return pipe(checked, fold(onLeft, onRight));
-    } else {
+export const validateRules = (
+  rules: Array<RuleToImportInput | Error>
+): Array<RuleToImport | Error> => {
+  return rules.map((obj: RuleToImportInput | Error) => {
+    if (obj instanceof Error) {
       return obj;
     }
+
+    const result = RuleToImport.safeParse(obj);
+    if (!result.success) {
+      return new BadRequestError(stringifyZodError(result.error));
+    }
+
+    const validationErrors = validateRuleToImport(result.data);
+    if (validationErrors.length) {
+      return new BadRequestError(validationErrors.join());
+    }
+
+    return result.data;
   });
 };
 
@@ -83,7 +80,7 @@ export const validateRules = (rules: Array<RuleToImport | Error>): Array<RuleToI
 export const sortImports = (): Transform => {
   return createReduceStream<{
     exceptions: Array<ImportExceptionsListSchema | ImportExceptionListItemSchema | Error>;
-    rules: Array<RuleToImport | Error>;
+    rules: Array<RuleToImportInput | Error>;
     actionConnectors: SavedObject[];
   }>(
     (acc, importItem) => {
@@ -105,7 +102,7 @@ export const sortImports = (): Transform => {
 };
 
 export const migrateLegacyInvestigationFields = (): Transform => {
-  return createMapStream<RuleToImport | RulesObjectsExportResultDetails>((obj) => {
+  return createMapStream<RuleToImportInput | RulesObjectsExportResultDetails>((obj) => {
     if (obj != null && 'investigation_fields' in obj && Array.isArray(obj.investigation_fields)) {
       if (obj.investigation_fields.length) {
         return {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.test.ts
index 96bc58ee6d441..0b601be81dd62 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.test.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.test.ts
@@ -44,10 +44,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: false,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -60,10 +57,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: false,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -91,10 +85,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: false,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -118,10 +109,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: false,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -150,10 +138,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: true,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -177,10 +162,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: true,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -212,10 +194,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: false,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
@@ -246,10 +225,7 @@ describe('importRules', () => {
       rulesResponseAcc: [],
       mlAuthz,
       overwriteRules: true,
-      savedObjectsClient: context.core.savedObjects.client,
       rulesClient: context.alerting.getRulesClient(),
-      exceptionsClient: context.lists?.getExceptionListClient(),
-      spaceId: 'default',
       existingLists: {},
     });
 
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts
index a2618f4af7e22..81940848b7dc4 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server';
+import type { SavedObject } from '@kbn/core/server';
 import type {
   ImportExceptionsListSchema,
   ImportExceptionListItemSchema,
@@ -13,7 +13,6 @@ import type {
 } from '@kbn/securitysolution-io-ts-list-types';
 
 import type { RulesClient } from '@kbn/alerting-plugin/server';
-import type { ExceptionListClient } from '@kbn/lists-plugin/server';
 
 import type { RuleToImport } from '../../../../../../common/api/detection_engine/rule_management';
 import type { ImportRuleResponse } from '../../../routes/utils';
@@ -42,9 +41,6 @@ export interface RuleExceptionsPromiseFromStreams {
  * @param overwriteRules {boolean} - whether to overwrite existing rules
  * with imported rules if their rule_id matches
  * @param rulesClient {object}
- * @param savedObjectsClient {object}
- * @param exceptionsClient {object}
- * @param spaceId {string} - space being used during import
  * @param existingLists {object} - all exception lists referenced by
  * rules that were found to exist
  * @returns {Promise} an array of error and success messages from import
@@ -55,9 +51,6 @@ export const importRules = async ({
   mlAuthz,
   overwriteRules,
   rulesClient,
-  savedObjectsClient,
-  exceptionsClient,
-  spaceId,
   existingLists,
   allowMissingConnectorSecrets,
 }: {
@@ -66,9 +59,6 @@ export const importRules = async ({
   mlAuthz: MlAuthz;
   overwriteRules: boolean;
   rulesClient: RulesClient;
-  savedObjectsClient: SavedObjectsClientContract;
-  exceptionsClient: ExceptionListClient | undefined;
-  spaceId: string;
   existingLists: Record<string, ExceptionListSchema>;
   allowMissingConnectorSecrets?: boolean;
 }) => {
diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts
index 8a9370c64d099..3e486c37e56e8 100644
--- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts
+++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts
@@ -248,7 +248,7 @@ export const migrateLegacyActionsIds = async (
         // can we swap the pre 8.0 action connector(s) id with the new,
         // post-8.0 action id (swap the originId for the new _id?)
         const newActions: Array<RuleAction | Error> = await pMap(
-          rule.actions ?? [],
+          (rule.actions as RuleAction[]) ?? [],
           (action: RuleAction) => swapActionIds(action, savedObjectsClient),
           { concurrency: MAX_CONCURRENT_SEARCHES }
         );
diff --git a/x-pack/test/detection_engine_api_integration/basic/tests/import_rules.ts b/x-pack/test/detection_engine_api_integration/basic/tests/import_rules.ts
index b79bbf13c1cc6..bf22875e23712 100644
--- a/x-pack/test/detection_engine_api_integration/basic/tests/import_rules.ts
+++ b/x-pack/test/detection_engine_api_integration/basic/tests/import_rules.ts
@@ -119,7 +119,7 @@ export default ({ getService }: FtrProviderContext): void => {
           .attach('file', fileNdJson, 'rules.ndjson')
           .expect(200);
 
-        expect(body.errors[0].error.message).to.eql('Failed to parse "from" on rule param');
+        expect(body.errors[0].error.message).to.eql('from: Failed to parse date-math expression');
       });
 
       it('should fail validation when importing two rules and one has a malformed "from" params', async () => {
@@ -141,7 +141,7 @@ export default ({ getService }: FtrProviderContext): void => {
 
         // should result in one success and a failure message
         expect(body.success_count).to.eql(1);
-        expect(body.errors[0].error.message).to.eql('Failed to parse "from" on rule param');
+        expect(body.errors[0].error.message).to.eql('from: Failed to parse date-math expression');
       });
 
       it('should be able to import two rules', async () => {
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts
index dae7835c16020..c92591e8f3f74 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts
@@ -24,9 +24,7 @@ import {
 import { ROLES } from '@kbn/security-solution-plugin/common/test';
 import { FtrProviderContext } from '../../common/ftr_provider_context';
 import {
-  createSignalsIndex,
   deleteAllRules,
-  deleteAllAlerts,
   getSimpleRule,
   getSimpleRuleAsNdjson,
   getRulesAsNdjson,
@@ -204,6 +202,9 @@ export default ({ getService }: FtrProviderContext): void => {
   const es = getService('es');
 
   describe('import_rules', () => {
+    beforeEach(async () => {
+      await deleteAllRules(supertest, log);
+    });
     describe('importing rules with different roles', () => {
       before(async () => {
         await createUserAndRole(getService, ROLES.hunter_no_actions);
@@ -213,14 +214,6 @@ export default ({ getService }: FtrProviderContext): void => {
         await deleteUserAndRole(getService, ROLES.hunter_no_actions);
         await deleteUserAndRole(getService, ROLES.hunter);
       });
-      beforeEach(async () => {
-        await createSignalsIndex(supertest, log);
-      });
-
-      afterEach(async () => {
-        await deleteAllAlerts(supertest, log, es);
-        await deleteAllRules(supertest, log);
-      });
       it('should successfully import rules without actions when user has no actions privileges', async () => {
         const { body } = await supertestWithoutAuth
           .post(`${DETECTION_ENGINE_RULES_URL}/_import`)
@@ -419,7 +412,8 @@ export default ({ getService }: FtrProviderContext): void => {
         expect(body.errors[0]).to.eql({
           rule_id: '(unknown id)',
           error: {
-            message: 'Invalid value "undefined" supplied to "threshold"',
+            message:
+              'type: Invalid literal value, expected "eql", language: Invalid literal value, expected "eql", type: Invalid literal value, expected "query", type: Invalid literal value, expected "saved_query", saved_id: Required, and 14 more',
             status_code: 400,
           },
         });
@@ -469,7 +463,7 @@ export default ({ getService }: FtrProviderContext): void => {
         expect(body.errors[0]).to.eql({
           rule_id: '(unknown id)',
           error: {
-            message: 'Invalid value "0" supplied to "threshold,value"',
+            message: 'threshold.value: Number must be greater than or equal to 1',
             status_code: 400,
           },
         });
@@ -506,16 +500,75 @@ export default ({ getService }: FtrProviderContext): void => {
       });
     });
 
-    describe('importing rules with an index', () => {
-      beforeEach(async () => {
-        await createSignalsIndex(supertest, log);
-      });
+    describe('forward compatibility', () => {
+      it('should remove any extra rule fields when importing', async () => {
+        const rule: QueryRuleCreateProps = {
+          ...getSimpleRule('rule-1'),
+          extraField: true,
+          risk_score_mapping: [
+            {
+              field: 'host.name',
+              value: 'host.name',
+              operator: 'equals',
+              risk_score: 50,
+              // @ts-expect-error
+              extraField: true,
+            },
+          ],
+          severity_mapping: [
+            {
+              field: 'host.name',
+              value: 'host.name',
+              operator: 'equals',
+              severity: 'low',
+              // @ts-expect-error
+              extraField: true,
+            },
+          ],
+          threat: [
+            {
+              framework: 'MITRE ATT&CK',
+              extraField: true,
+              tactic: {
+                id: 'TA0001',
+                name: 'Initial Access',
+                reference: 'https://attack.mitre.org/tactics/TA0001',
+                // @ts-expect-error
+                extraField: true,
+              },
+              technique: [],
+            },
+          ],
+          investigation_fields: {
+            field_names: ['host.name'],
+            // @ts-expect-error
+            extraField: true,
+          },
+        };
+        const payload = Buffer.from(JSON.stringify(rule));
+        await supertest
+          .post(`${DETECTION_ENGINE_RULES_URL}/_import`)
+          .set('kbn-xsrf', 'true')
+          .set('elastic-api-version', '2023-10-31')
+          .attach('file', payload, 'rules.ndjson')
+          .expect(200);
+
+        const { body } = await supertest
+          .get(`${DETECTION_ENGINE_RULES_URL}?rule_id=rule-1`)
+          .set('elastic-api-version', '2023-10-31')
+          .send()
+          .expect(200);
 
-      afterEach(async () => {
-        await deleteAllAlerts(supertest, log, es);
-        await deleteAllRules(supertest, log);
+        expect(Object.hasOwn(body, 'extraField')).to.eql(false);
+        expect(Object.hasOwn(body.risk_score_mapping[0], 'extraField')).to.eql(false);
+        expect(Object.hasOwn(body.severity_mapping[0], 'extraField')).to.eql(false);
+        expect(Object.hasOwn(body.threat[0], 'extraField')).to.eql(false);
+        expect(Object.hasOwn(body.threat[0].tactic, 'extraField')).to.eql(false);
+        expect(Object.hasOwn(body.investigation_fields, 'extraField')).to.eql(false);
       });
+    });
 
+    describe('importing rules with an index', () => {
       it('should set the response content types to be expected', async () => {
         await supertest
           .post(`${DETECTION_ENGINE_RULES_URL}/_import`)
@@ -1905,17 +1958,6 @@ export default ({ getService }: FtrProviderContext): void => {
     });
 
     describe('legacy investigation fields', () => {
-      beforeEach(async () => {
-        await deleteAllAlerts(supertest, log, es);
-        await deleteAllRules(supertest, log);
-        await createSignalsIndex(supertest, log);
-      });
-
-      afterEach(async () => {
-        await deleteAllAlerts(supertest, log, es);
-        await deleteAllRules(supertest, log);
-      });
-
       it('imports rule with investigation fields as array', async () => {
         await supertest
           .post(`${DETECTION_ENGINE_RULES_URL}/_import`)

From f5c6737fff248aa48cfbbe43b0dee569170474ac Mon Sep 17 00:00:00 2001
From: Liam Thompson <32779855+leemthompo@users.noreply.github.com>
Date: Mon, 13 Nov 2023 18:30:48 +0100
Subject: [PATCH 130/147] [ES3] Update connectors python link (#171106)

https://github.com/elastic/connectors ~~-python~~

Changes URL and UI link text
---
 .../components/connectors/connector_config/connector_link.tsx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx
index ddf8d990fe482..0d373b820f258 100644
--- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx
+++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx
@@ -74,7 +74,7 @@ export const ConnectorLinkElasticsearch: React.FC<ConnectorLinkElasticsearchProp
             <span>
               <EuiButton
                 iconType={`${assetBasePath}/github_white.svg`}
-                href="https://github.com/elastic/connectors-python"
+                href="https://github.com/elastic/connectors"
                 fill
               >
                 {i18n.translate('xpack.serverlessSearch.connectors.runFromSourceLink', {
@@ -92,7 +92,7 @@ export const ConnectorLinkElasticsearch: React.FC<ConnectorLinkElasticsearchProp
                 {i18n.translate('xpack.serverlessSearch.connectors.variablesTitle', {
                   defaultMessage: 'Variables for your ',
                 })}
-                <EuiCode>connectors-python/config.yml</EuiCode>
+                <EuiCode>elastic/connectors/config.yml</EuiCode>
               </h3>
             </EuiTitle>
             <EuiSpacer />

From 44341ac01c38f066fc81e71c772d1d0487117965 Mon Sep 17 00:00:00 2001
From: Dan Panzarella <pzl@users.noreply.github.com>
Date: Mon, 13 Nov 2023 12:47:49 -0500
Subject: [PATCH 131/147] [Security Solution] Do not install prerelease
 endpoint in serverless (#170975)

---
 packages/kbn-optimizer/limits.yml             |  2 +-
 .../common/lib/kibana/__mocks__/index.ts      |  1 +
 .../public/common/lib/kibana/services.ts      | 11 +++++
 .../mock/endpoint/app_context_render.tsx      |  1 +
 .../use_upgrade_secuirty_packages.test.tsx    | 49 ++++++++++++++++++-
 .../logic/use_upgrade_security_packages.ts    |  7 +--
 .../security_solution/public/plugin.tsx       |  6 +++
 7 files changed, 71 insertions(+), 6 deletions(-)

diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml
index d7a5d1c9d09f2..e79e6b4fa8be9 100644
--- a/packages/kbn-optimizer/limits.yml
+++ b/packages/kbn-optimizer/limits.yml
@@ -124,7 +124,7 @@ pageLoadAssetSize:
   screenshotting: 22870
   searchprofiler: 67080
   security: 81771
-  securitySolution: 66738
+  securitySolution: 67584
   securitySolutionEss: 16573
   securitySolutionServerless: 62488
   serverless: 16573
diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts
index 2822a48669b32..954f4fd0b74bc 100644
--- a/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts
+++ b/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts
@@ -37,6 +37,7 @@ export const KibanaServices = {
   }),
   getKibanaVersion: jest.fn(() => '8.0.0'),
   getKibanaBranch: jest.fn(() => 'main'),
+  getBuildFlavor: jest.fn(() => 'traditional'),
   getPrebuiltRulesPackageVersion: jest.fn(() => undefined),
 };
 export const useKibana = jest.fn().mockReturnValue({
diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/services.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/services.ts
index 695245a85e746..fff266b8a5cda 100644
--- a/x-pack/plugins/security_solution/public/common/lib/kibana/services.ts
+++ b/x-pack/plugins/security_solution/public/common/lib/kibana/services.ts
@@ -12,6 +12,7 @@ type GlobalServices = Pick<CoreStart, 'application' | 'http' | 'uiSettings' | 'n
   Pick<StartPlugins, 'data' | 'unifiedSearch' | 'expressions'>;
 
 export class KibanaServices {
+  private static buildFlavor?: string;
   private static kibanaBranch?: string;
   private static kibanaVersion?: string;
   private static prebuiltRulesPackageVersion?: string;
@@ -24,6 +25,7 @@ export class KibanaServices {
     unifiedSearch,
     kibanaBranch,
     kibanaVersion,
+    buildFlavor,
     prebuiltRulesPackageVersion,
     uiSettings,
     notifications,
@@ -31,6 +33,7 @@ export class KibanaServices {
   }: GlobalServices & {
     kibanaBranch: string;
     kibanaVersion: string;
+    buildFlavor: string;
     prebuiltRulesPackageVersion?: string;
   }) {
     this.services = {
@@ -44,6 +47,7 @@ export class KibanaServices {
     };
     this.kibanaBranch = kibanaBranch;
     this.kibanaVersion = kibanaVersion;
+    this.buildFlavor = buildFlavor;
     this.prebuiltRulesPackageVersion = prebuiltRulesPackageVersion;
   }
 
@@ -75,6 +79,13 @@ export class KibanaServices {
     return this.prebuiltRulesPackageVersion;
   }
 
+  public static getBuildFlavor(): string {
+    if (!this.buildFlavor) {
+      this.throwUninitializedError();
+    }
+    return this.buildFlavor;
+  }
+
   private static throwUninitializedError(): never {
     throw new Error(
       'Kibana services not initialized - are you trying to import this module from outside of the SIEM app?'
diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx
index 575c159d29d72..c8c2b80506210 100644
--- a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx
+++ b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx
@@ -313,6 +313,7 @@ export const createAppRootMockRenderer = (): AppContextTestRender => {
     ...startServices,
     kibanaVersion: '8.0.0',
     kibanaBranch: 'main',
+    buildFlavor: 'traditional',
   };
 
   if (jest.isMockFunction(KibanaServices.get)) {
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_secuirty_packages.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_secuirty_packages.test.tsx
index dd01465b8875a..9454a1c4dfb16 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_secuirty_packages.test.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_secuirty_packages.test.tsx
@@ -26,6 +26,7 @@ const mockGetPrebuiltRulesPackageVersion =
   KibanaServices.getPrebuiltRulesPackageVersion as jest.Mock;
 const mockGetKibanaVersion = KibanaServices.getKibanaVersion as jest.Mock;
 const mockGetKibanaBranch = KibanaServices.getKibanaBranch as jest.Mock;
+const mockBuildFlavor = KibanaServices.getBuildFlavor as jest.Mock;
 const useKibanaMock = useKibana as jest.MockedFunction<typeof useKibana>;
 
 describe('When using the `useUpgradeSecurityPackages()` hook', () => {
@@ -51,9 +52,50 @@ describe('When using the `useUpgradeSecurityPackages()` hook', () => {
     );
   });
 
-  it('should send upgrade request with prerelease:false if branch is not `main` and build does not include `-SNAPSHOT`', async () => {
+  it('should send upgrade request with prerelease:false if in serverless', async () => {
+    mockGetKibanaVersion.mockReturnValue('8.0.0');
+    mockGetKibanaBranch.mockReturnValue('main');
+    mockBuildFlavor.mockReturnValue('serverless');
+
+    const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
+      wrapper: TestProviders,
+    });
+
+    await waitFor(() => (useKibanaMock().services.http.post as jest.Mock).mock.calls.length > 0);
+
+    expect(useKibanaMock().services.http.post).toHaveBeenCalledWith(
+      `${epmRouteService.getBulkInstallPath()}`,
+      expect.objectContaining({
+        body: '{"packages":["endpoint","security_detection_engine"]}',
+        query: expect.objectContaining({ prerelease: false }),
+      })
+    );
+  });
+
+  it('should send upgrade request with prerelease:false if in serverless SNAPSHOT', async () => {
+    mockGetKibanaVersion.mockReturnValue('8.0.0-SNAPSHOT');
+    mockGetKibanaBranch.mockReturnValue('main');
+    mockBuildFlavor.mockReturnValue('serverless');
+
+    const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
+      wrapper: TestProviders,
+    });
+
+    await waitFor(() => (useKibanaMock().services.http.post as jest.Mock).mock.calls.length > 0);
+
+    expect(useKibanaMock().services.http.post).toHaveBeenCalledWith(
+      `${epmRouteService.getBulkInstallPath()}`,
+      expect.objectContaining({
+        body: '{"packages":["endpoint","security_detection_engine"]}',
+        query: expect.objectContaining({ prerelease: false }),
+      })
+    );
+  });
+
+  it('should send upgrade request with prerelease:false if build does not include `-SNAPSHOT`', async () => {
     mockGetKibanaVersion.mockReturnValue('8.0.0');
     mockGetKibanaBranch.mockReturnValue('release');
+    mockBuildFlavor.mockReturnValue('traditional');
 
     const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
       wrapper: TestProviders,
@@ -70,9 +112,10 @@ describe('When using the `useUpgradeSecurityPackages()` hook', () => {
     );
   });
 
-  it('should send upgrade request with prerelease:true if branch is `main` AND build includes `-SNAPSHOT`', async () => {
+  it('should send upgrade request with prerelease:true if not serverless and branch is `main` AND build includes `-SNAPSHOT`', async () => {
     mockGetKibanaVersion.mockReturnValue('8.0.0-SNAPSHOT');
     mockGetKibanaBranch.mockReturnValue('main');
+    mockBuildFlavor.mockReturnValue('traditional');
 
     const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
       wrapper: TestProviders,
@@ -92,6 +135,7 @@ describe('When using the `useUpgradeSecurityPackages()` hook', () => {
   it('should send upgrade request with prerelease:true if branch is `release` and build includes `-SNAPSHOT`', async () => {
     mockGetKibanaVersion.mockReturnValue('8.0.0-SNAPSHOT');
     mockGetKibanaBranch.mockReturnValue('release');
+    mockBuildFlavor.mockReturnValue('traditional');
 
     const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
       wrapper: TestProviders,
@@ -111,6 +155,7 @@ describe('When using the `useUpgradeSecurityPackages()` hook', () => {
   it('should send upgrade request with prerelease:true if branch is `main` and build does not include `-SNAPSHOT`', async () => {
     mockGetKibanaVersion.mockReturnValue('8.0.0');
     mockGetKibanaBranch.mockReturnValue('main');
+    mockBuildFlavor.mockReturnValue('traditional');
 
     const { waitFor } = renderHook(() => useUpgradeSecurityPackages(), {
       wrapper: TestProviders,
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts
index f48d446482316..8ad266169231d 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts
@@ -38,10 +38,11 @@ export const useUpgradeSecurityPackages = () => {
       // Make sure fleet is initialized first
       await context.services.fleet?.isInitialized();
 
-      // Always install the latest package if in dev env or snapshot build
+      // Install the latest prerelease if in non-production non-serverless environments
       const prerelease =
-        KibanaServices.getKibanaVersion().includes('-SNAPSHOT') ||
-        KibanaServices.getKibanaBranch() === 'main';
+        KibanaServices.getBuildFlavor() === 'traditional' &&
+        (KibanaServices.getKibanaVersion().includes('-SNAPSHOT') ||
+          KibanaServices.getKibanaBranch() === 'main');
 
       const prebuiltRulesPackageVersion = KibanaServices.getPrebuiltRulesPackageVersion();
       // ignore the response for now since we aren't notifying the user
diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/plugins/security_solution/public/plugin.tsx
index e7bb9294a90f2..c07273e59ed4a 100644
--- a/x-pack/plugins/security_solution/public/plugin.tsx
+++ b/x-pack/plugins/security_solution/public/plugin.tsx
@@ -68,6 +68,10 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
    * The current Kibana version. e.g. '8.0.0' or '8.0.0-SNAPSHOT'
    */
   readonly kibanaVersion: string;
+  /**
+   * Whether the environment is 'serverless' or 'traditional'
+   */
+  readonly buildFlavor: string;
   /**
    * For internal use. Specify which version of the Detection Rules fleet package to install
    * when upgrading rules. If not provided, the latest compatible package will be installed,
@@ -97,6 +101,7 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
     this.configSettings = parseConfigSettings(this.config.offeringSettings ?? {}).settings;
     this.kibanaVersion = initializerContext.env.packageInfo.version;
     this.kibanaBranch = initializerContext.env.packageInfo.branch;
+    this.buildFlavor = initializerContext.env.packageInfo.buildFlavor;
     this.prebuiltRulesPackageVersion = this.config.prebuiltRulesPackageVersion;
     this.contract = new PluginContract(this.experimentalFeatures);
     this.telemetry = new TelemetryService();
@@ -281,6 +286,7 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
       ...plugins,
       kibanaBranch: this.kibanaBranch,
       kibanaVersion: this.kibanaVersion,
+      buildFlavor: this.buildFlavor,
       prebuiltRulesPackageVersion: this.prebuiltRulesPackageVersion,
     });
     ExperimentalFeaturesService.init({ experimentalFeatures: this.experimentalFeatures });

From 259a8fc0abe843dee8b03f46c6ac2c25ad4a6655 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?=
 <alejandro.haro@elastic.co>
Date: Mon, 13 Nov 2023 19:35:39 +0100
Subject: [PATCH 132/147] [Telemetry Tools] Add support for ExportSpecifier in
 constrains (#171111)

---
 packages/kbn-telemetry-tools/src/tools/serializer.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/kbn-telemetry-tools/src/tools/serializer.ts b/packages/kbn-telemetry-tools/src/tools/serializer.ts
index ab891f1220323..4501477ed7d7e 100644
--- a/packages/kbn-telemetry-tools/src/tools/serializer.ts
+++ b/packages/kbn-telemetry-tools/src/tools/serializer.ts
@@ -102,7 +102,7 @@ export function getConstraints(node: ts.Node, program: ts.Program): any {
     return node.text;
   }
 
-  if (ts.isImportSpecifier(node)) {
+  if (ts.isImportSpecifier(node) || ts.isExportSpecifier(node)) {
     const source = node.getSourceFile();
     const importedModuleName = getModuleSpecifier(node);
 

From 75ea3e229db39dc35dfc307bdf2b781a82432190 Mon Sep 17 00:00:00 2001
From: Rodney Norris <rodney.norris@elastic.co>
Date: Mon, 13 Nov 2023 12:37:18 -0600
Subject: [PATCH 133/147] [Serverless Search] connectors callout (#171043)

## Summary

Replace console callout with Connectors callout on the Getting started
page.


![image](https://github.com/elastic/kibana/assets/1972968/522268ce-62c3-464e-ae77-583a14b8ecdd)

### Notes
I had to wrap some things in `<p>` tags to match the bottom margin on
the Icons. This is due to styles from EUI and may get resolved later and
we would then remove these `<p>` tags.
---
 .../components/select_client.tsx              |  44 ++++----
 .../components/connectors_callout.tsx         | 101 ++++++++++++++++++
 .../components/connectors_overview.tsx        |  34 +-----
 .../application/components/overview.tsx       |  11 +-
 .../hooks/api/use_create_connector.tsx        |  41 +++++++
 5 files changed, 172 insertions(+), 59 deletions(-)
 create mode 100644 x-pack/plugins/serverless_search/public/application/components/connectors_callout.tsx
 create mode 100644 x-pack/plugins/serverless_search/public/application/hooks/api/use_create_connector.tsx

diff --git a/packages/kbn-search-api-panels/components/select_client.tsx b/packages/kbn-search-api-panels/components/select_client.tsx
index 4b8d1547d35c5..8328a32bca75b 100644
--- a/packages/kbn-search-api-panels/components/select_client.tsx
+++ b/packages/kbn-search-api-panels/components/select_client.tsx
@@ -29,6 +29,7 @@ export interface SelectClientPanelProps {
   http: HttpStart;
   isPanelLeft?: boolean;
   overviewPanelProps?: Partial<EuiPanelProps>;
+  callout?: React.ReactNode;
 }
 
 export const SelectClientPanel: React.FC<SelectClientPanelProps> = ({
@@ -37,6 +38,7 @@ export const SelectClientPanel: React.FC<SelectClientPanelProps> = ({
   http,
   isPanelLeft = true,
   overviewPanelProps,
+  callout,
 }) => {
   const panelContent = (
     <>
@@ -56,28 +58,30 @@ export const SelectClientPanel: React.FC<SelectClientPanelProps> = ({
         {children}
       </EuiFlexGroup>
       <EuiSpacer size="l" />
-      <EuiCallOut
-        title={i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.title', {
-          defaultMessage: 'Try it now in Console',
-        })}
-        size="m"
-        iconType="iInCircle"
-      >
-        <p>
-          {i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.description', {
-            defaultMessage:
-              'With Console, you can get started right away with our REST APIs. No installation required.',
+      {callout || (
+        <EuiCallOut
+          title={i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.title', {
+            defaultMessage: 'Try it now in Console',
           })}
+          size="m"
+          iconType="iInCircle"
+        >
+          <p>
+            {i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.description', {
+              defaultMessage:
+                'With Console, you can get started right away with our REST APIs. No installation required.',
+            })}
 
-          <span>
-            <EuiLink target="_blank" href={http.basePath.prepend(`/app/dev_tools#/console`)}>
-              {i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.link', {
-                defaultMessage: 'Try Console now',
-              })}
-            </EuiLink>
-          </span>
-        </p>
-      </EuiCallOut>
+            <span>
+              <EuiLink target="_blank" href={http.basePath.prepend(`/app/dev_tools#/console`)}>
+                {i18n.translate('searchApiPanels.welcomeBanner.selectClient.callout.link', {
+                  defaultMessage: 'Try Console now',
+                })}
+              </EuiLink>
+            </span>
+          </p>
+        </EuiCallOut>
+      )}
     </>
   );
   return (
diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors_callout.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors_callout.tsx
new file mode 100644
index 0000000000000..85d3db211c479
--- /dev/null
+++ b/x-pack/plugins/serverless_search/public/application/components/connectors_callout.tsx
@@ -0,0 +1,101 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import React from 'react';
+import {
+  EuiButton,
+  EuiCallOut,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiIcon,
+  EuiText,
+  EuiToolTip,
+} from '@elastic/eui';
+import { i18n } from '@kbn/i18n';
+import { FormattedMessage } from '@kbn/i18n-react';
+
+import { useConnectorTypes } from '../hooks/api/use_connector_types';
+import { useCreateConnector } from '../hooks/api/use_create_connector';
+
+const CONNECTOR_TYPES_DISPLAY = [
+  'azure_blob_storage',
+  'sharepoint_online',
+  's3',
+  'mongodb',
+  'google_cloud_storage',
+];
+
+export const ConnectorsCallout = () => {
+  const { data } = useConnectorTypes();
+  const { createConnector, isLoading } = useCreateConnector();
+
+  const allConnectorTypes = data?.connectors;
+  const connectorTypes = allConnectorTypes
+    ? CONNECTOR_TYPES_DISPLAY.map(
+        (type) => allConnectorTypes.find((connType) => connType.serviceType === type)!
+      )
+    : undefined;
+  const showConnectors = connectorTypes && connectorTypes.length;
+  return (
+    <EuiCallOut
+      title={i18n.translate('xpack.serverlessSearch.selectClient.connectorsCallout.title', {
+        defaultMessage: 'Sync your data using a connector client',
+      })}
+      size="m"
+      iconType="iInCircle"
+    >
+      <p>
+        <FormattedMessage
+          id="xpack.serverlessSearch.selectClient.connectorsCallout.description"
+          defaultMessage="Sync a range of popular third-party data sources to Elasticsearch, by deploying open code Elastic connectors on your own infrastructure."
+        />
+      </p>
+      <EuiFlexGroup alignItems="center" gutterSize="m">
+        <EuiFlexItem grow={false}>
+          <p>
+            <EuiButton
+              color="primary"
+              fill
+              data-test-subj="connectors-callout-cta"
+              onClick={() => createConnector()}
+              isLoading={isLoading}
+            >
+              {i18n.translate('xpack.serverlessSearch.selectClient.connectorsCallout.cta', {
+                defaultMessage: 'Create a connector',
+              })}
+            </EuiButton>
+          </p>
+        </EuiFlexItem>
+        <EuiFlexItem />
+        {showConnectors &&
+          connectorTypes.map((connectorType) => (
+            <EuiFlexItem grow={false} key={connectorType.serviceType}>
+              <EuiToolTip content={connectorType.name}>
+                <EuiIcon
+                  size="xxl"
+                  title={connectorType.name}
+                  id={connectorType.serviceType}
+                  type={connectorType.iconPath}
+                />
+              </EuiToolTip>
+            </EuiFlexItem>
+          ))}
+        {showConnectors && (
+          <EuiFlexItem grow={false}>
+            <p>
+              <EuiText color="subdued" size="s">
+                <FormattedMessage
+                  id="xpack.serverlessSearch.selectClient.connectorsCallout.etc"
+                  defaultMessage="and more"
+                />
+              </EuiText>
+            </p>
+          </EuiFlexItem>
+        )}
+      </EuiFlexGroup>
+    </EuiCallOut>
+  );
+};
diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors_overview.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors_overview.tsx
index f79dce303617b..ebd7afc288d27 100644
--- a/x-pack/plugins/serverless_search/public/application/components/connectors_overview.tsx
+++ b/x-pack/plugins/serverless_search/public/application/components/connectors_overview.tsx
@@ -14,49 +14,23 @@ import {
   EuiPageTemplate,
   EuiText,
 } from '@elastic/eui';
-import { Connector } from '@kbn/search-connectors';
 import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
-import { useMutation } from '@tanstack/react-query';
-import React, { useEffect } from 'react';
+import React from 'react';
 
-import { generatePath } from 'react-router-dom';
 import { LEARN_MORE_LABEL } from '../../../common/i18n_string';
 import { PLUGIN_ID } from '../../../common';
 import { useConnectors } from '../hooks/api/use_connectors';
+import { useCreateConnector } from '../hooks/api/use_create_connector';
 import { useKibanaServices } from '../hooks/use_kibana';
 import { EmptyConnectorsPrompt } from './connectors/empty_connectors_prompt';
 import { ConnectorsTable } from './connectors/connectors_table';
-import { EDIT_CONNECTOR_PATH } from './connectors_router';
 
 export const ConnectorsOverview = () => {
   const { data, isLoading: connectorsLoading } = useConnectors();
-  const {
-    application: { navigateToUrl },
-    http,
-  } = useKibanaServices();
+  const { http } = useKibanaServices();
 
-  const {
-    data: connector,
-    isLoading,
-    isSuccess,
-    mutate,
-  } = useMutation({
-    mutationFn: async () => {
-      const result = await http.post<{ connector: Connector }>(
-        '/internal/serverless_search/connectors'
-      );
-      return result.connector;
-    },
-  });
-
-  useEffect(() => {
-    if (isSuccess) {
-      navigateToUrl(generatePath(EDIT_CONNECTOR_PATH, { id: connector?.id || '' }));
-    }
-  }, [connector, isSuccess, navigateToUrl]);
-
-  const createConnector = () => mutate();
+  const { createConnector, isLoading } = useCreateConnector();
 
   return (
     <EuiPageTemplate offset={0} grow restrictWidth data-test-subj="svlSearchConnectorsPage">
diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.tsx
index bf66ae62855a5..cb32a66cea20d 100644
--- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx
+++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx
@@ -37,8 +37,6 @@ import type {
   LanguageDefinition,
   LanguageDefinitionSnippetArguments,
 } from '@kbn/search-api-panels';
-import { useQuery } from '@tanstack/react-query';
-import { Connector } from '@kbn/search-connectors';
 import { useLocation } from 'react-router-dom';
 import { docLinks } from '../../../common/doc_links';
 import { PLUGIN_ID } from '../../../common';
@@ -53,6 +51,7 @@ import { languageDefinitions } from './languages/languages';
 import { LanguageGrid } from './languages/language_grid';
 import './overview.scss';
 import { ApiKeyPanel } from './api_key/api_key';
+import { ConnectorsCallout } from './connectors_callout';
 
 export const ElasticsearchOverview = () => {
   const [selectedLanguage, setSelectedLanguage] = useState<LanguageDefinition>(javaDefinition);
@@ -82,12 +81,6 @@ export const ElasticsearchOverview = () => {
     }
   }, [hash]);
 
-  const { data: _data } = useQuery({
-    queryKey: ['fetchConnectors'],
-    queryFn: () =>
-      http.fetch<{ connectors: Connector[] }>('/internal/serverless_search/connectors'),
-  });
-
   return (
     <EuiPageTemplate offset={0} grow restrictWidth data-test-subj="svlSearchOverviewPage">
       <EuiPageTemplate.Section alignment="top" className="serverlessSearchHeaderSection">
@@ -100,7 +93,7 @@ export const ElasticsearchOverview = () => {
         bottomBorder="extended"
         data-test-subj="select-client-section"
       >
-        <SelectClientPanel docLinks={docLinks} http={http}>
+        <SelectClientPanel docLinks={docLinks} http={http} callout={<ConnectorsCallout />}>
           <EuiFlexItem>
             <LanguageGrid
               assetBasePath={assetBasePath}
diff --git a/x-pack/plugins/serverless_search/public/application/hooks/api/use_create_connector.tsx b/x-pack/plugins/serverless_search/public/application/hooks/api/use_create_connector.tsx
new file mode 100644
index 0000000000000..fc9c74b94b84b
--- /dev/null
+++ b/x-pack/plugins/serverless_search/public/application/hooks/api/use_create_connector.tsx
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+import { useEffect } from 'react';
+import { generatePath } from 'react-router-dom';
+import { useMutation } from '@tanstack/react-query';
+import { Connector } from '@kbn/search-connectors';
+import { EDIT_CONNECTOR_PATH } from '../../components/connectors_router';
+import { useKibanaServices } from '../use_kibana';
+
+export const useCreateConnector = () => {
+  const {
+    application: { navigateToUrl },
+    http,
+  } = useKibanaServices();
+  const {
+    data: connector,
+    isLoading,
+    isSuccess,
+    mutate,
+  } = useMutation({
+    mutationFn: async () => {
+      const result = await http.post<{ connector: Connector }>(
+        '/internal/serverless_search/connectors'
+      );
+      return result.connector;
+    },
+  });
+
+  useEffect(() => {
+    if (isSuccess) {
+      navigateToUrl(generatePath(EDIT_CONNECTOR_PATH, { id: connector?.id || '' }));
+    }
+  }, [connector, isSuccess, navigateToUrl]);
+
+  const createConnector = () => mutate();
+  return { createConnector, isLoading };
+};

From 49b488270e8b4395cf8a571280e3fc85fc2cb1cb Mon Sep 17 00:00:00 2001
From: Rickyanto Ang <rickyangwyn@gmail.com>
Date: Mon, 13 Nov 2023 10:38:35 -0800
Subject: [PATCH 134/147] [Cloud Security][FTR]Fix for flaky add integration
 FTR (#171053)

## Summary

This PR is to address Flaky FTR
https://github.com/elastic/kibana/issues/170886
https://github.com/elastic/kibana/issues/170633
https://github.com/elastic/kibana/issues/171050

Tested on Flaky test runner for 850 cycles (0 failure)
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3971
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3972
---
 .../page_objects/add_cis_integration_form_page.ts           | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts
index 0500a68e8654d..b4cfc2eaa8dd3 100644
--- a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts
+++ b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts
@@ -144,7 +144,11 @@ export function AddCisIntegrationFormPageProvider({
   const navigateToIntegrationCspList = async () => {
     await PageObjects.common.navigateToActualUrl(
       'integrations', // Defined in Security Solution plugin
-      '/detail/cloud_security_posture/policies'
+      '/detail/cloud_security_posture/policies',
+      {
+        ensureCurrentUrl: false,
+        shouldLoginIfPrompted: false,
+      }
     );
   };
 

From 8613b0f17d228fdaa3c9e3d1e79979ae82b7a981 Mon Sep 17 00:00:00 2001
From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com>
Date: Mon, 13 Nov 2023 15:10:55 -0500
Subject: [PATCH 135/147] [Security Solution][Endpoint] several refactors of
 CLI tooling and associated common services (#169987)

## Summary

PR makes a series of refactors to CLI scripts and common services used
in CLI scripts and CI, including:

- Standard interface for interacting with Host VMs that abstracts away
the need to know what VM manager was used to start that VM
- Reduce/eliminate the need to have conditional code when interacting
directly with a VM (ex. executing bash commands, stop/kill/delete VM,
etc)
- Removed use of `endpoint_agent_runner` (CLI script) private
implementation methods from Cypress and replace them with calls to
common services
- Removed duplicate code from `endpoint_agent_runner` CLI script and
replace it with calls to common services
- Enhanced the `run_sentinelone_host.js` script so that it also ensures
that the SentinenlOne fleet integration/policy (agentless policy) has at
least one VM host running
    - The VM ensures that the data from S1 is pulled into ES
- FYI: once changes for SentinelOne are merged and the Connector
available, script will also be updated to create an SentinelOne
connector instance under `"Stack Management > Connectors"`
- Added support for `WITH_FLEET_SERVER` to the Cypress config. When set
to `true`, fleet server will be automatically started and connected to
the stack
- Cypress parallel runner will now start fleet if this variable is true,
right after setting up the stack
---
 src/dev/precommit_hook/casing_check_config.js |   2 +-
 .../common/endpoint/data_loaders/utils.ts     |  24 +-
 .../public/management/cypress/cypress.d.ts    |  11 +-
 .../management/cypress/cypress_base.config.ts |   8 +-
 ...ging_policy_from_disabled_to_enabled.cy.ts |   7 +-
 ...ging_policy_from_enabled_to_disabled.cy.ts |   4 +-
 ...nging_policy_from_enabled_to_enabled.cy.ts |   7 +-
 ...ging_policy_from_disabled_to_enabled.cy.ts |   7 +-
 ...ging_policy_from_enabled_to_disabled.cy.ts |   4 +-
 ...nging_policy_from_enabled_to_enabled.cy.ts |   7 +-
 .../cypress/support/agent_actions.ts          |  60 +--
 .../management/cypress/support/common.ts      |  39 ++
 .../cypress/support/data_loaders.ts           | 119 +---
 .../public/management/cypress/support/e2e.ts  |   6 +-
 .../cypress/support/response_actions.ts       |  11 +-
 .../support/setup_tooling_log_level.ts        |   7 +-
 .../public/management/cypress/tasks/fleet.ts  |  59 +-
 .../public/management/cypress/tasks/logger.ts |  19 +
 .../public/management/cypress/types.ts        |   6 +
 .../common/agent_downloads_service.ts         |  13 +
 .../endpoint/common/endpoint_host_services.ts | 350 ++----------
 .../fleet_server/fleet_server_services.ts     | 108 ++--
 .../scripts/endpoint/common/fleet_services.ts | 115 ++--
 .../scripts/endpoint/common/types.ts          |  10 +
 .../scripts/endpoint/common/utils.ts          |  63 +++
 .../vagrant}/Vagrantfile                      |   4 +
 .../scripts/endpoint/common/vm_services.ts    | 280 +++++++++-
 .../endpoint_agent_runner/elastic_endpoint.ts |  51 +-
 .../endpoint_agent_runner/fleet_server.ts     | 506 ------------------
 .../endpoint/endpoint_agent_runner/index.ts   |   2 -
 .../endpoint/endpoint_agent_runner/setup.ts   |  11 +-
 .../endpoint/sentinelone_host/index.ts        | 107 ++--
 .../scripts/run_cypress/parallel.ts           | 107 ++--
 x-pack/test/osquery_cypress/agent.ts          |  18 +-
 x-pack/test/osquery_cypress/fleet_server.ts   |  40 +-
 x-pack/test/osquery_cypress/runner.ts         |  37 +-
 36 files changed, 975 insertions(+), 1254 deletions(-)
 create mode 100644 x-pack/plugins/security_solution/public/management/cypress/support/common.ts
 create mode 100644 x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts
 create mode 100644 x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts
 rename x-pack/plugins/security_solution/scripts/endpoint/{endpoint_agent_runner => common/vagrant}/Vagrantfile (76%)
 delete mode 100644 x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts

diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js
index 93eba1bb171b2..acf4748055589 100644
--- a/src/dev/precommit_hook/casing_check_config.js
+++ b/src/dev/precommit_hook/casing_check_config.js
@@ -44,7 +44,7 @@ export const IGNORE_FILE_GLOBS = [
   'packages/kbn-test/jest-preset.js',
   'packages/kbn-test/*/jest-preset.js',
   'test/package/Vagrantfile',
-  'x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile',
+  'x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile',
   '**/test/**/fixtures/**/*',
 
   // Required to match the name in the docs.elastic.dev repo.
diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts b/x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts
index c27fb5fc7154d..0586aca1d0c76 100644
--- a/x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts
+++ b/x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts
@@ -8,6 +8,7 @@
 import { mergeWith } from 'lodash';
 import type { ToolingLogTextWriterConfig } from '@kbn/tooling-log';
 import { ToolingLog } from '@kbn/tooling-log';
+import type { Flags } from '@kbn/dev-cli-runner';
 
 export const RETRYABLE_TRANSIENT_ERRORS: Readonly<Array<string | RegExp>> = [
   'no_shard_available_action_exception',
@@ -117,12 +118,20 @@ interface CreateLoggerInterface {
    * on input.
    */
   defaultLogLevel: ToolingLogTextWriterConfig['level'];
+
+  /**
+   * Set the default logging level based on the flag arguments provide to a CLI script that runs
+   * via `@kbn/dev-cli-runner`
+   * @param flags
+   */
+  setDefaultLogLevelFromCliFlags: (flags: Flags) => void;
 }
 
 /**
  * Creates an instance of `ToolingLog` that outputs to `stdout`.
- * The default log `level` for all instances can be set by setting the function's `defaultLogLevel`.
- * Log level can also be explicitly set on input.
+ * The default log `level` for all instances can be set by setting the function's `defaultLogLevel`
+ * property. Default logging level can also be set from CLI scripts that use the `@kbn/dev-cli-runner`
+ * by calling the `setDefaultLogLevelFromCliFlags(flags)` and passing in the `flags` property.
  *
  * @param level
  *
@@ -137,3 +146,14 @@ export const createToolingLogger: CreateLoggerInterface = (level): ToolingLog =>
   });
 };
 createToolingLogger.defaultLogLevel = 'info';
+createToolingLogger.setDefaultLogLevelFromCliFlags = (flags) => {
+  createToolingLogger.defaultLogLevel = flags.verbose
+    ? 'verbose'
+    : flags.debug
+    ? 'debug'
+    : flags.silent
+    ? 'silent'
+    : flags.quiet
+    ? 'error'
+    : 'info';
+};
diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts b/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts
index bd4c34b36de59..0ae9db14cbce3 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts
@@ -24,6 +24,7 @@ import type {
   CreateUserAndRoleCyTaskOptions,
   UninstallAgentFromHostTaskOptions,
   IsAgentAndEndpointUninstalledFromHostTaskOptions,
+  LogItTaskOptions,
 } from './types';
 import type {
   DeleteIndexedFleetEndpointPoliciesResponse,
@@ -86,13 +87,15 @@ declare global {
        * or fail if `timeout` is reached.
        * @param fn
        * @param options
+       * @param message
        */
       waitUntil(
         fn: (subject?: any) => boolean | Promise<boolean> | Chainable<boolean>,
         options?: Partial<{
           interval: number;
           timeout: number;
-        }>
+        }>,
+        message?: string
       ): Chainable<Subject>;
 
       task(
@@ -217,6 +220,12 @@ declare global {
         arg: IsAgentAndEndpointUninstalledFromHostTaskOptions,
         options?: Partial<Loggable & Timeoutable>
       ): Chainable<boolean>;
+
+      task(
+        name: 'logIt',
+        arg: LogItTaskOptions,
+        options?: Partial<Loggable & Timeoutable>
+      ): Chainable<null>;
     }
   }
 }
diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts b/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts
index 8938f1a4ec7b0..6ed65f031d714 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts
@@ -56,6 +56,11 @@ export const getCypressBaseConfig = (
         // to `debug` or `verbose` when wanting to debug tooling used by tests (ex. data indexer functions).
         TOOLING_LOG_LEVEL: 'info',
 
+        // Variable works in conjunction with the Cypress parallel runner. When set to true, fleet server
+        // will be setup right after the Kibana stack, so that by the time cypress tests `.run()`/`.open()`,
+        // the env. will be all setup and we don't have to explicitly setup fleet from a test file
+        WITH_FLEET_SERVER: true,
+
         // grep related configs
         grepFilterSpecs: true,
         grepOmitFiltered: true,
@@ -69,11 +74,12 @@ export const getCypressBaseConfig = (
         experimentalRunAllSpecs: true,
         experimentalMemoryManagement: true,
         experimentalInteractiveRunEvents: true,
-        setupNodeEvents: (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => {
+        setupNodeEvents: async (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => {
           // IMPORTANT: setting the log level should happen before any tooling is called
           setupToolingLogLevel(config);
 
           dataLoaders(on, config);
+
           // Data loaders specific to "real" Endpoint testing
           dataLoadersForRealEndpoints(on, config);
 
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
index d30345d8d5486..3d92528c2eee7 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts
@@ -14,7 +14,7 @@ import {
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
   unenrollAgent,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
 } from '../../../tasks/fleet';
 
 import { login } from '../../../tasks/login';
@@ -79,10 +79,9 @@ describe(
     it('should unenroll from fleet without issues', () => {
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
       // Change agent policy and wait for action to be completed
-      changeAgentPolicy(
+      reAssignFleetAgentToPolicy(
         createdHost.agentId,
-        policyWithAgentTamperProtectionEnabled.policy_id,
-        3
+        policyWithAgentTamperProtectionEnabled.policy_id
       ).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
         unenrollAgent(createdHost.agentId).then((isUnenrolled) => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts
index 59c70d85118dd..a9508a13f719b 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts
@@ -14,7 +14,7 @@ import {
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
   unenrollAgent,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
 } from '../../../tasks/fleet';
 
 import { login } from '../../../tasks/login';
@@ -79,7 +79,7 @@ describe(
     it('should unenroll from fleet without issues', () => {
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
       // Change agent policy and wait for action to be completed
-      changeAgentPolicy(createdHost.agentId, policy.policy_id, 3).then((hasChanged) => {
+      reAssignFleetAgentToPolicy(createdHost.agentId, policy.policy_id).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
         unenrollAgent(createdHost.agentId).then((isUnenrolled) => {
           expect(isUnenrolled).to.eql(true);
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts
index 3a897bc544ea8..a5654734c15e4 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts
@@ -14,7 +14,7 @@ import {
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
   unenrollAgent,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
 } from '../../../tasks/fleet';
 
 import { login } from '../../../tasks/login';
@@ -81,10 +81,9 @@ describe(
     it('should unenroll from fleet without issues', () => {
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
       // Change agent policy and wait for action to be completed
-      changeAgentPolicy(
+      reAssignFleetAgentToPolicy(
         createdHost.agentId,
-        secondPolicyWithAgentTamperProtectionEnabled.policy_id,
-        3
+        secondPolicyWithAgentTamperProtectionEnabled.policy_id
       ).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
         unenrollAgent(createdHost.agentId).then((isUnenrolled) => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
index 5950288f2313e..bbb675cf56d5e 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts
@@ -14,7 +14,7 @@ import {
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
   getUninstallToken,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
   isAgentAndEndpointUninstalledFromHost,
   uninstallAgentFromHost,
 } from '../../../tasks/fleet';
@@ -82,10 +82,9 @@ describe(
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
 
       // Change agent policy and wait for action to be completed
-      changeAgentPolicy(
+      reAssignFleetAgentToPolicy(
         createdHost.agentId,
-        policyWithAgentTamperProtectionEnabled.policy_id,
-        3
+        policyWithAgentTamperProtectionEnabled.policy_id
       ).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
 
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts
index e949851677f2a..f5665d830eb4a 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts
@@ -13,7 +13,7 @@ import {
   getEndpointIntegrationVersion,
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
   isAgentAndEndpointUninstalledFromHost,
   uninstallAgentFromHost,
 } from '../../../tasks/fleet';
@@ -81,7 +81,7 @@ describe.skip(
     it('should uninstall from host without issues', () => {
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
 
-      changeAgentPolicy(createdHost.agentId, policy.policy_id, 3).then((hasChanged) => {
+      reAssignFleetAgentToPolicy(createdHost.agentId, policy.policy_id).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
         uninstallAgentFromHost(createdHost.hostname).then((responseWithoutToken) => {
           expect(responseWithoutToken).to.not.match(/(.*)Invalid uninstall token(.*)/);
diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
index 15fd02ad14511..d8630a50a83b9 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts
@@ -14,7 +14,7 @@ import {
   createAgentPolicyTask,
   enableAgentTamperProtectionFeatureFlagInPolicy,
   getUninstallToken,
-  changeAgentPolicy,
+  reAssignFleetAgentToPolicy,
   isAgentAndEndpointUninstalledFromHost,
   uninstallAgentFromHost,
 } from '../../../tasks/fleet';
@@ -85,10 +85,9 @@ describe(
       waitForEndpointListPageToBeLoaded(createdHost.hostname);
 
       // Change agent policy and wait for action to be completed
-      changeAgentPolicy(
+      reAssignFleetAgentToPolicy(
         createdHost.agentId,
-        secondPolicyWithAgentTamperProtectionEnabled.policy_id,
-        3
+        secondPolicyWithAgentTamperProtectionEnabled.policy_id
       ).then((hasChanged) => {
         expect(hasChanged).to.eql(true);
 
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts b/x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts
index 11a8b30a5e187..5ad564aaa14ba 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts
@@ -6,10 +6,8 @@
  */
 
 // / <reference types="cypress" />
-import type { ExecaReturnValue } from 'execa';
-import execa from 'execa';
 
-import { VAGRANT_CWD } from '../../../../scripts/endpoint/common/endpoint_host_services';
+import { getHostVmClient } from '../../../../scripts/endpoint/common/vm_services';
 
 export const agentActions = (on: Cypress.PluginEvents): void => {
   on('task', {
@@ -20,40 +18,19 @@ export const agentActions = (on: Cypress.PluginEvents): void => {
       hostname: string;
       uninstallToken?: string;
     }): Promise<string> => {
-      let result;
+      const hostVmClient = getHostVmClient(hostname);
+
       try {
-        if (process.env.CI) {
-          result = await execa(
-            'vagrant',
-            [
-              'ssh',
-              '--',
-              `sudo elastic-agent uninstall -f ${
-                uninstallToken ? `--uninstall-token ${uninstallToken}` : ''
-              }`,
-            ],
-            {
-              env: {
-                VAGRANT_CWD,
-              },
-            }
-          );
-        } else {
-          result = await execa(`multipass`, [
-            'exec',
-            hostname,
-            '--',
-            'sh',
-            '-c',
+        return (
+          await hostVmClient.exec(
             `sudo elastic-agent uninstall -f ${
               uninstallToken ? `--uninstall-token ${uninstallToken}` : ''
-            }`,
-          ]);
-        }
+            }`
+          )
+        ).stdout;
       } catch (err) {
         return err.stderr;
       }
-      return result.stdout;
     },
 
     isAgentAndEndpointUninstalledFromHost: async ({
@@ -62,25 +39,10 @@ export const agentActions = (on: Cypress.PluginEvents): void => {
       hostname: string;
       uninstallToken?: string;
     }): Promise<boolean> => {
-      let execaReturnValue: ExecaReturnValue<string>;
-      if (process.env.CI) {
-        execaReturnValue = await execa('vagrant', ['ssh', '--', `ls /opt/Elastic`], {
-          env: {
-            VAGRANT_CWD,
-          },
-        });
-      } else {
-        execaReturnValue = await execa(`multipass`, [
-          'exec',
-          hostname,
-          '--',
-          'sh',
-          '-c',
-          `ls /opt/Elastic`,
-        ]);
-      }
+      const hostVmClient = getHostVmClient(hostname);
+      const lsOutput = await hostVmClient.exec('ls /opt/Elastic');
 
-      if (execaReturnValue.stdout === '') {
+      if (lsOutput.stdout === '') {
         return true;
       }
 
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/common.ts b/x-pack/plugins/security_solution/public/management/cypress/support/common.ts
new file mode 100644
index 0000000000000..c356536cc03d4
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/common.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { prefixedOutputLogger } from '../../../../scripts/endpoint/common/utils';
+import type { RuntimeServices } from '../../../../scripts/endpoint/common/stack_services';
+import { createRuntimeServices } from '../../../../scripts/endpoint/common/stack_services';
+
+const RUNTIME_SERVICES_CACHE = new WeakMap<Cypress.PluginConfigOptions, RuntimeServices>();
+
+export const setupStackServicesUsingCypressConfig = async (config: Cypress.PluginConfigOptions) => {
+  if (RUNTIME_SERVICES_CACHE.has(config)) {
+    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+    return RUNTIME_SERVICES_CACHE.get(config)!;
+  }
+
+  const stackServices = await createRuntimeServices({
+    kibanaUrl: config.env.KIBANA_URL,
+    elasticsearchUrl: config.env.ELASTICSEARCH_URL,
+    fleetServerUrl: config.env.FLEET_SERVER_URL,
+    username: config.env.KIBANA_USERNAME,
+    password: config.env.KIBANA_PASSWORD,
+    esUsername: config.env.ELASTICSEARCH_USERNAME,
+    esPassword: config.env.ELASTICSEARCH_PASSWORD,
+    asSuperuser: true,
+  }).then(({ log, ...others }) => {
+    return {
+      ...others,
+      log: prefixedOutputLogger('cy.dfw', log),
+    };
+  });
+
+  RUNTIME_SERVICES_CACHE.set(config, stackServices);
+
+  return stackServices;
+};
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts
index fcead968801af..99ea877053c91 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts
@@ -11,14 +11,14 @@ import type { CasePostRequest } from '@kbn/cases-plugin/common';
 import execa from 'execa';
 import type { KbnClient } from '@kbn/test';
 import type { ToolingLog } from '@kbn/tooling-log';
+import { getHostVmClient } from '../../../../scripts/endpoint/common/vm_services';
+import { setupStackServicesUsingCypressConfig } from './common';
 import type { KibanaKnownUserAccounts } from '../common/constants';
 import { KIBANA_KNOWN_DEFAULT_ACCOUNTS } from '../common/constants';
 import type { EndpointSecurityRoleNames } from '../../../../scripts/endpoint/common/roles_users';
 import { SECURITY_SERVERLESS_ROLE_NAMES } from '../../../../scripts/endpoint/common/roles_users';
 import type { LoadedRoleAndUser } from '../../../../scripts/endpoint/common/role_and_user_loader';
 import { EndpointSecurityTestRolesLoader } from '../../../../scripts/endpoint/common/role_and_user_loader';
-import { startRuntimeServices } from '../../../../scripts/endpoint/endpoint_agent_runner/runtime';
-import { runFleetServerIfNeeded } from '../../../../scripts/endpoint/endpoint_agent_runner/fleet_server';
 import {
   sendEndpointActionResponse,
   sendFleetActionResponse,
@@ -35,7 +35,6 @@ import {
   destroyEndpointHost,
   startEndpointHost,
   stopEndpointHost,
-  VAGRANT_CWD,
 } from '../../../../scripts/endpoint/common/endpoint_host_services';
 import type { IndexedEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_endpoint_policy_response';
 import {
@@ -47,6 +46,7 @@ import type {
   IndexEndpointHostsCyTaskOptions,
   LoadUserAndRoleCyTaskOptions,
   CreateUserAndRoleCyTaskOptions,
+  LogItTaskOptions,
 } from '../types';
 import type {
   DeletedIndexedEndpointRuleAlerts,
@@ -60,7 +60,6 @@ import type { IndexedHostsAndAlertsResponse } from '../../../../common/endpoint/
 import { deleteIndexedHostsAndAlerts } from '../../../../common/endpoint/index_data';
 import type { IndexedCase } from '../../../../common/endpoint/data_loaders/index_case';
 import { deleteIndexedCase, indexCase } from '../../../../common/endpoint/data_loaders/index_case';
-import { createRuntimeServices } from '../../../../scripts/endpoint/common/stack_services';
 import type { IndexedFleetEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy';
 import {
   deleteIndexedFleetEndpointPolicies,
@@ -128,18 +127,7 @@ export const dataLoaders = (
 ): void => {
   // Env. variable is set by `cypress_serverless.config.ts`
   const isServerless = config.env.IS_SERVERLESS;
-
-  const stackServicesPromise = createRuntimeServices({
-    kibanaUrl: config.env.KIBANA_URL,
-    elasticsearchUrl: config.env.ELASTICSEARCH_URL,
-    fleetServerUrl: config.env.FLEET_SERVER_URL,
-    username: config.env.KIBANA_USERNAME,
-    password: config.env.KIBANA_PASSWORD,
-    esUsername: config.env.ELASTICSEARCH_USERNAME,
-    esPassword: config.env.ELASTICSEARCH_PASSWORD,
-    asSuperuser: true,
-  });
-
+  const stackServicesPromise = setupStackServicesUsingCypressConfig(config);
   const roleAndUserLoaderPromise: Promise<TestRoleAndUserLoader> = stackServicesPromise.then(
     ({ kbnClient, log }) => {
       return new TestRoleAndUserLoader(kbnClient, log, isServerless);
@@ -147,6 +135,14 @@ export const dataLoaders = (
   );
 
   on('task', {
+    logIt: async ({ level = 'info', data }: LogItTaskOptions): Promise<null> => {
+      return stackServicesPromise
+        .then(({ log }) => {
+          log[level](data);
+        })
+        .then(() => null);
+    },
+
     indexFleetEndpointPolicy: async ({
       policyName,
       endpointPackageVersion,
@@ -290,42 +286,7 @@ export const dataLoadersForRealEndpoints = (
   on: Cypress.PluginEvents,
   config: Cypress.PluginConfigOptions
 ): void => {
-  let fleetServerContainerId: string | undefined;
-
-  const stackServicesPromise = createRuntimeServices({
-    kibanaUrl: config.env.KIBANA_URL,
-    elasticsearchUrl: config.env.ELASTICSEARCH_URL,
-    fleetServerUrl: config.env.FLEET_SERVER_URL,
-    username: config.env.KIBANA_USERNAME,
-    password: config.env.KIBANA_PASSWORD,
-    esUsername: config.env.ELASTICSEARCH_USERNAME,
-    esPassword: config.env.ELASTICSEARCH_PASSWORD,
-    asSuperuser: true,
-  });
-
-  on('before:run', async () => {
-    await startRuntimeServices({
-      kibanaUrl: config.env.KIBANA_URL,
-      elasticUrl: config.env.ELASTICSEARCH_URL,
-      fleetServerUrl: config.env.FLEET_SERVER_URL,
-      username: config.env.KIBANA_USERNAME,
-      password: config.env.KIBANA_PASSWORD,
-      asSuperuser: true,
-    });
-    const data = await runFleetServerIfNeeded();
-    fleetServerContainerId = data?.fleetServerContainerId;
-  });
-
-  on('after:run', async () => {
-    const { log } = await stackServicesPromise;
-    if (fleetServerContainerId) {
-      try {
-        execa.sync('docker', ['kill', fleetServerContainerId]);
-      } catch (error) {
-        log.error(error);
-      }
-    }
-  });
+  const stackServicesPromise = setupStackServicesUsingCypressConfig(config);
 
   on('task', {
     createEndpointHost: async (
@@ -383,15 +344,7 @@ export const dataLoadersForRealEndpoints = (
       path: string;
       content: string;
     }): Promise<null> => {
-      if (process.env.CI) {
-        await execa('vagrant', ['ssh', '--', `echo ${content} > ${path}`], {
-          env: {
-            VAGRANT_CWD,
-          },
-        });
-      } else {
-        await execa(`multipass`, ['exec', hostname, '--', 'sh', '-c', `echo ${content} > ${path}`]);
-      }
+      await getHostVmClient(hostname).exec(`echo ${content} > ${path}`);
       return null;
     },
 
@@ -404,16 +357,7 @@ export const dataLoadersForRealEndpoints = (
       srcPath: string;
       destPath: string;
     }): Promise<null> => {
-      if (process.env.CI) {
-        await execa('vagrant', ['upload', srcPath, destPath], {
-          env: {
-            VAGRANT_CWD,
-          },
-        });
-      } else {
-        await execa(`multipass`, ['transfer', srcPath, `${hostname}:${destPath}`]);
-      }
-
+      await getHostVmClient(hostname).transfer(srcPath, destPath);
       return null;
     },
 
@@ -444,38 +388,19 @@ export const dataLoadersForRealEndpoints = (
       path: string;
       password?: string;
     }): Promise<string> => {
-      let result;
-
-      if (process.env.CI) {
-        result = await execa(
-          `vagrant`,
-          ['ssh', '--', `unzip -p ${password ? `-P ${password} ` : ''}${path}`],
-          {
-            env: {
-              VAGRANT_CWD,
-            },
-          }
-        );
-      } else {
-        result = await execa(`multipass`, [
-          'exec',
-          hostname,
-          '--',
-          'sh',
-          '-c',
-          `unzip -p ${password ? `-P ${password} ` : ''}${path}`,
-        ]);
-      }
-
-      return result.stdout;
+      return (
+        await getHostVmClient(hostname).exec(`unzip -p ${password ? `-P ${password} ` : ''}${path}`)
+      ).stdout;
     },
 
     stopEndpointHost: async (hostName) => {
-      return stopEndpointHost(hostName);
+      await stopEndpointHost(hostName);
+      return null;
     },
 
     startEndpointHost: async (hostName) => {
-      return startEndpointHost(hostName);
+      await startEndpointHost(hostName);
+      return null;
     },
   });
 };
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts b/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts
index 29173c03c3c77..38abf64ce202e 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts
@@ -64,7 +64,7 @@ Cypress.Commands.addQuery<'findByTestSubj'>(
 Cypress.Commands.add(
   'waitUntil',
   { prevSubject: 'optional' },
-  (subject, fn, { interval = 500, timeout = 30000 } = {}) => {
+  (subject, fn, { interval = 500, timeout = 30000 } = {}, msg = 'waitUntil()') => {
     let attempts = Math.floor(timeout / interval);
 
     const completeOrRetry = (result: boolean) => {
@@ -72,7 +72,7 @@ Cypress.Commands.add(
         return result;
       }
       if (attempts < 1) {
-        throw new Error(`Timed out while retrying, last result was: {${result}}`);
+        throw new Error(`${msg}: Timed out while retrying - last result was: [${result}]`);
       }
       cy.wait(interval, { log: false }).then(() => {
         attempts--;
@@ -90,7 +90,7 @@ Cypress.Commands.add(
         return result.then(completeOrRetry);
       } else {
         throw new Error(
-          `Unknown return type from callback: ${Object.prototype.toString.call(result)}`
+          `${msg}: Unknown return type from callback: ${Object.prototype.toString.call(result)}`
         );
       }
     };
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts b/x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts
index baaf0e12c10e2..d0d9befddd6a1 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts
@@ -9,25 +9,18 @@
 
 import { get } from 'lodash';
 
+import { setupStackServicesUsingCypressConfig } from './common';
 import {
   getLatestActionDoc,
   updateActionDoc,
   waitForNewActionDoc,
 } from '../../../../scripts/endpoint/common/response_actions';
-import { createRuntimeServices } from '../../../../scripts/endpoint/common/stack_services';
 
 export const responseActionTasks = (
   on: Cypress.PluginEvents,
   config: Cypress.PluginConfigOptions
 ): void => {
-  const stackServicesPromise = createRuntimeServices({
-    kibanaUrl: config.env.KIBANA_URL,
-    elasticsearchUrl: config.env.ELASTICSEARCH_URL,
-    fleetServerUrl: config.env.FLEET_SERVER_URL,
-    username: config.env.KIBANA_USERNAME,
-    password: config.env.KIBANA_PASSWORD,
-    asSuperuser: true,
-  });
+  const stackServicesPromise = setupStackServicesUsingCypressConfig(config);
 
   on('task', {
     getLatestActionDoc: async () => {
diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts b/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts
index c4c1acd428355..b4901bef9321a 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts
@@ -13,12 +13,13 @@ import { createToolingLogger } from '../../../../common/endpoint/data_loaders/ut
  * @param config
  */
 export const setupToolingLogLevel = (config: Cypress.PluginConfigOptions) => {
+  const log = createToolingLogger();
   const defaultToolingLogLevel = config.env.TOOLING_LOG_LEVEL;
 
+  log.info(`Cypress config 'env.TOOLING_LOG_LEVEL': ${defaultToolingLogLevel}`);
+
   if (defaultToolingLogLevel && defaultToolingLogLevel !== createToolingLogger.defaultLogLevel) {
     createToolingLogger.defaultLogLevel = defaultToolingLogLevel;
-    createToolingLogger().info(
-      `Default log level for 'createToolingLogger()' set to ${defaultToolingLogLevel}`
-    );
+    log.info(`Default log level for 'createToolingLogger()' set to ${defaultToolingLogLevel}`);
   }
 };
diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
index bc0f94d712058..aa2568268f020 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts
@@ -10,6 +10,7 @@ import type {
   GetAgentsResponse,
   GetInfoResponse,
   GetPackagePoliciesResponse,
+  GetOneAgentPolicyResponse,
 } from '@kbn/fleet-plugin/common';
 import {
   agentRouteService,
@@ -26,6 +27,7 @@ import type {
 import { uninstallTokensRouteService } from '@kbn/fleet-plugin/common/services/routes';
 import type { GetUninstallTokensMetadataResponse } from '@kbn/fleet-plugin/common/types/rest_spec/uninstall_token';
 import type { UninstallToken } from '@kbn/fleet-plugin/common/types/models/uninstall_token';
+import { logger } from './logger';
 import type { IndexedFleetEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy';
 import { request } from './common';
 
@@ -138,21 +140,33 @@ export const unenrollAgent = (agentId: string): Cypress.Chainable<boolean> => {
   });
 };
 
-export const changeAgentPolicy = (
+export const fetchFleetAgentPolicy = (
+  agentPolicyId: string
+): Cypress.Chainable<GetOneAgentPolicyResponse['item']> => {
+  return request<GetOneAgentPolicyResponse>({
+    method: 'GET',
+    url: agentPolicyRouteService.getInfoPath(agentPolicyId),
+  }).then((res) => res.body.item);
+};
+
+export const reAssignFleetAgentToPolicy = (
   agentId: string,
-  policyId: string,
-  policyRevision: number
+  policyId: string
 ): Cypress.Chainable<boolean> => {
-  return request({
-    method: 'POST',
-    url: agentRouteService.getReassignPath(agentId),
-    body: {
-      policy_id: policyId,
-    },
-    headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 },
-  }).then(() => {
-    return waitForHasAgentPolicyChanged(agentId, policyId, policyRevision);
-  });
+  return fetchFleetAgentPolicy(policyId)
+    .then((agentPolicy) => {
+      return request({
+        method: 'POST',
+        url: agentRouteService.getReassignPath(agentId),
+        body: {
+          policy_id: policyId,
+        },
+        headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 },
+      }).then(() => agentPolicy);
+    })
+    .then((agentPolicy) => {
+      return waitForHasAgentPolicyChanged(agentId, policyId, agentPolicy.revision);
+    });
 };
 
 // only used in "real" endpoint tests not in mocked ones
@@ -205,9 +219,11 @@ const waitForIsAgentUnenrolled = (agentId: string): Cypress.Chainable<boolean> =
 const waitForHasAgentPolicyChanged = (
   agentId: string,
   policyId: string,
+  /** The minimum revision number that the agent must report before it is considered "changed" */
   policyRevision: number
 ): Cypress.Chainable<boolean> => {
   let isPolicyUpdated = false;
+
   return cy
     .waitUntil(
       () => {
@@ -218,19 +234,24 @@ const waitForHasAgentPolicyChanged = (
             'elastic-api-version': API_VERSIONS.public.v1,
           },
         }).then((response) => {
+          // eslint-disable-next-line @typescript-eslint/naming-convention
+          const { status, policy_revision, policy_id } = response.body.item;
+
+          logger.debug('Checking policy data:', { status, policy_revision, policy_id });
+
           if (
-            response.body.item.status !== 'updating' &&
-            response.body.item?.policy_revision === policyRevision &&
-            response.body.item?.policy_id === policyId
+            status !== 'updating' &&
+            (policy_revision ?? 0) >= policyRevision &&
+            policy_id === policyId
           ) {
             isPolicyUpdated = true;
-            return true;
           }
 
-          return false;
+          return cy.wrap(isPolicyUpdated);
         });
       },
-      { timeout: 120000 }
+      { timeout: 120000 },
+      `Wait for Fleet Agent to report policy id [${policyId}] with revision [${policyRevision}]`
     )
     .then(() => {
       return isPolicyUpdated;
diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts b/x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts
new file mode 100644
index 0000000000000..053ee123c5954
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts
@@ -0,0 +1,19 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+/* eslint-disable @typescript-eslint/no-explicit-any */
+export const logger = Object.freeze({
+  info: (...data: any): Cypress.Chainable<null> => {
+    return cy.task('logIt', { level: 'info', data });
+  },
+  debug: (...data: any): Cypress.Chainable<null> => {
+    return cy.task('logIt', { level: 'info', data });
+  },
+  verbose: (...data: any): Cypress.Chainable<null> => {
+    return cy.task('logIt', { level: 'info', data });
+  },
+});
diff --git a/x-pack/plugins/security_solution/public/management/cypress/types.ts b/x-pack/plugins/security_solution/public/management/cypress/types.ts
index 6c5dae16100de..8beb150a64d5a 100644
--- a/x-pack/plugins/security_solution/public/management/cypress/types.ts
+++ b/x-pack/plugins/security_solution/public/management/cypress/types.ts
@@ -8,6 +8,7 @@
 /* eslint-disable @typescript-eslint/no-explicit-any */
 
 import type { Role } from '@kbn/security-plugin/common';
+import type { ToolingLog } from '@kbn/tooling-log';
 import type { ActionDetails } from '../../../common/endpoint/types';
 import type { CyLoadEndpointDataOptions } from './support/plugin_handlers/endpoint_data_loader';
 import type { SecurityTestUser } from './common/constants';
@@ -75,3 +76,8 @@ export interface UninstallAgentFromHostTaskOptions {
 export interface IsAgentAndEndpointUninstalledFromHostTaskOptions {
   hostname: string;
 }
+
+export interface LogItTaskOptions {
+  level: keyof Pick<ToolingLog, 'info' | 'debug' | 'verbose'>;
+  data: any;
+}
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts
index 6f392006df8bf..34f473a854460 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts
@@ -10,6 +10,7 @@ import { join } from 'path';
 import fs from 'fs';
 import nodeFetch from 'node-fetch';
 import { finished } from 'stream/promises';
+import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils';
 import { SettingsStorage } from './settings_storage';
 
 export interface DownloadedAgentInfo {
@@ -40,6 +41,7 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
   private downloadsFolderExists = false;
   private readonly downloadsDirName = 'agent_download_storage';
   private readonly downloadsDirFullPath: string;
+  private readonly log = createToolingLogger();
 
   constructor() {
     super('agent_download_storage_settings.json', {
@@ -57,6 +59,7 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
 
     if (!this.downloadsFolderExists) {
       await mkdir(this.downloadsDirFullPath, { recursive: true });
+      this.log.debug(`Created directory [this.downloadsDirFullPath] for cached agent downloads`);
       this.downloadsFolderExists = true;
     }
   }
@@ -74,6 +77,8 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
   }
 
   public async downloadAndStore(agentDownloadUrl: string): Promise<DownloadedAgentInfo> {
+    this.log.debug(`Downloading and storing: ${agentDownloadUrl}`);
+
     // TODO: should we add "retry" attempts to file downloads?
 
     await this.ensureExists();
@@ -82,6 +87,7 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
 
     // If download is already present on disk, then just return that info. No need to re-download it
     if (fs.existsSync(newDownloadInfo.fullFilePath)) {
+      this.log.debug(`Download already cached at [${newDownloadInfo.fullFilePath}]`);
       return newDownloadInfo;
     }
 
@@ -104,10 +110,14 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
       throw e;
     }
 
+    await this.cleanupDownloads();
+
     return newDownloadInfo;
   }
 
   public async cleanupDownloads(): Promise<{ deleted: string[] }> {
+    this.log.debug(`Performing cleanup of cached Agent downlaods`);
+
     const settings = await this.get();
     const maxAgeDate = new Date();
     const response: { deleted: string[] } = { deleted: [] };
@@ -139,6 +149,9 @@ class AgentDownloadStorage extends SettingsStorage<AgentDownloadStorageSettings>
 
     await Promise.allSettled(deleteFilePromises);
 
+    this.log.debug(`Deleted [${response.deleted.length}] file(s)`);
+    this.log.verbose(`files deleted:\n`, response.deleted.join('\n'));
+
     return response;
   }
 }
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts
index 303ae81a9197a..cb2718e72ba26 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts
@@ -8,22 +8,15 @@
 import { kibanaPackageJson } from '@kbn/repo-info';
 import type { KbnClient } from '@kbn/test';
 import type { ToolingLog } from '@kbn/tooling-log';
-import execa from 'execa';
-import assert from 'assert';
-import type { DownloadedAgentInfo } from './agent_downloads_service';
-import { cleanupDownloads, downloadAndStoreAgent } from './agent_downloads_service';
-import {
-  fetchAgentPolicyEnrollmentKey,
-  fetchFleetServerUrl,
-  getAgentDownloadUrl,
-  unEnrollFleetAgent,
-  waitForHostToEnroll,
-} from './fleet_services';
-
-export const VAGRANT_CWD = `${__dirname}/../endpoint_agent_runner/`;
+import { prefixedOutputLogger } from './utils';
+import type { HostVm } from './types';
+import type { BaseVmCreateOptions } from './vm_services';
+import { createVm, getHostVmClient } from './vm_services';
+import { downloadAndStoreAgent } from './agent_downloads_service';
+import { enrollHostVmWithFleet, getAgentDownloadUrl, unEnrollFleetAgent } from './fleet_services';
 
 export interface CreateAndEnrollEndpointHostOptions
-  extends Pick<CreateMultipassVmOptions, 'disk' | 'cpus' | 'memory'> {
+  extends Pick<BaseVmCreateOptions, 'disk' | 'cpus' | 'memory'> {
   kbnClient: KbnClient;
   log: ToolingLog;
   /** The fleet Agent Policy ID to use for enrolling the agent */
@@ -41,6 +34,7 @@ export interface CreateAndEnrollEndpointHostOptions
 export interface CreateAndEnrollEndpointHostResponse {
   hostname: string;
   agentId: string;
+  hostVm: HostVm;
 }
 
 /**
@@ -48,7 +42,7 @@ export interface CreateAndEnrollEndpointHostResponse {
  */
 export const createAndEnrollEndpointHost = async ({
   kbnClient,
-  log,
+  log: _log,
   agentPolicyId,
   cpus,
   disk,
@@ -58,85 +52,47 @@ export const createAndEnrollEndpointHost = async ({
   useClosestVersionMatch = false,
   useCache = true,
 }: CreateAndEnrollEndpointHostOptions): Promise<CreateAndEnrollEndpointHostResponse> => {
-  let cacheCleanupPromise: ReturnType<typeof cleanupDownloads> = Promise.resolve({
-    deleted: [],
-  });
-
+  const log = prefixedOutputLogger('createAndEnrollEndpointHost()', _log);
+  const isRunningInCI = Boolean(process.env.CI);
   const vmName = hostname ?? `test-host-${Math.random().toString().substring(2, 6)}`;
-
-  const agentDownload = await getAgentDownloadUrl(version, useClosestVersionMatch, log).then<{
-    url: string;
-    cache?: DownloadedAgentInfo;
-  }>(({ url }) => {
-    if (useCache) {
-      cacheCleanupPromise = cleanupDownloads();
-
-      return downloadAndStoreAgent(url).then((cache) => {
-        return {
-          url,
-          cache,
-        };
+  const { url: agentUrl } = await getAgentDownloadUrl(version, useClosestVersionMatch, log);
+  const agentDownload = isRunningInCI ? await downloadAndStoreAgent(agentUrl) : undefined;
+
+  // TODO: remove dependency on env. var and keep function pure
+  const hostVm = process.env.CI
+    ? await createVm({
+        type: 'vagrant',
+        name: vmName,
+        log,
+        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+        agentDownload: agentDownload!,
+        disk,
+        cpus,
+        memory,
+      })
+    : await createVm({
+        type: 'multipass',
+        log,
+        name: vmName,
+        disk,
+        cpus,
+        memory,
       });
-    }
-
-    return { url };
-  });
-
-  const [vm, fleetServerUrl, enrollmentToken] = await Promise.all([
-    process.env.CI
-      ? createVagrantVm({
-          vmName,
-          log,
-          cachedAgentDownload: agentDownload.cache as DownloadedAgentInfo,
-        })
-      : createMultipassVm({
-          vmName,
-          disk,
-          cpus,
-          memory,
-        }),
-
-    fetchFleetServerUrl(kbnClient),
 
-    fetchAgentPolicyEnrollmentKey(kbnClient, agentPolicyId),
-  ]);
-
-  if (!process.env.CI) {
-    log.verbose(await execa('multipass', ['info', vm.vmName]));
-  }
-
-  // Some validations before we proceed
-  assert(agentDownload.url, 'Missing agent download URL');
-  assert(fleetServerUrl, 'Fleet server URL not set');
-  assert(enrollmentToken, `No enrollment token for agent policy id [${agentPolicyId}]`);
-
-  log.verbose(`Enrolling host [${vm.vmName}]
-  with fleet-server [${fleetServerUrl}]
-  using enrollment token [${enrollmentToken}]`);
-
-  const { agentId } = await enrollHostWithFleet({
+  const { id: agentId } = await enrollHostVmWithFleet({
     kbnClient,
     log,
-    fleetServerUrl,
-    agentDownloadUrl: agentDownload.url,
-    cachedAgentDownload: agentDownload.cache,
-    enrollmentToken,
-    vmName: vm.vmName,
-  });
-
-  await cacheCleanupPromise.then((results) => {
-    if (results.deleted.length > 0) {
-      log.verbose(`Agent Downloads cache directory was cleaned up and the following ${
-        results.deleted.length
-      } were deleted:
-${results.deleted.join('\n')}
-`);
-    }
+    hostVm,
+    agentPolicyId,
+    version,
+    closestVersionMatch: useClosestVersionMatch,
+    useAgentCache: useCache,
   });
 
   return {
-    hostname: vm.vmName,
+    hostname: hostVm.name,
     agentId,
+    hostVm,
   };
 };
 
@@ -147,7 +103,7 @@ ${results.deleted.join('\n')}
  */
 export const destroyEndpointHost = async (
   kbnClient: KbnClient,
-  createdHost: CreateAndEnrollEndpointHostResponse
+  createdHost: Pick<CreateAndEnrollEndpointHostResponse, 'hostname' | 'agentId'>
 ): Promise<void> => {
   await Promise.all([
     deleteMultipassVm(createdHost.hostname),
@@ -155,226 +111,14 @@ export const destroyEndpointHost = async (
   ]);
 };
 
-interface CreateVmResponse {
-  vmName: string;
-}
-
-interface CreateVagrantVmOptions {
-  vmName: string;
-  cachedAgentDownload: DownloadedAgentInfo;
-  log: ToolingLog;
-}
-
-/**
- * Creates a new VM using `vagrant`
- */
-const createVagrantVm = async ({
-  vmName,
-  cachedAgentDownload,
-  log,
-}: CreateVagrantVmOptions): Promise<CreateVmResponse> => {
-  try {
-    await execa.command(`vagrant destroy -f`, {
-      env: {
-        VAGRANT_CWD,
-      },
-      // Only `pipe` STDERR to parent process
-      stdio: ['inherit', 'inherit', 'pipe'],
-    });
-    // eslint-disable-next-line no-empty
-  } catch (e) {}
-
-  try {
-    await execa.command(`vagrant up`, {
-      env: {
-        VAGRANT_DISABLE_VBOXSYMLINKCREATE: '1',
-        VAGRANT_CWD,
-        VMNAME: vmName,
-        CACHED_AGENT_SOURCE: cachedAgentDownload.fullFilePath,
-        CACHED_AGENT_FILENAME: cachedAgentDownload.filename,
-      },
-      // Only `pipe` STDERR to parent process
-      stdio: ['inherit', 'inherit', 'pipe'],
-    });
-  } catch (e) {
-    log.error(e);
-    throw e;
-  }
-
-  return {
-    vmName,
-  };
-};
-
-interface CreateMultipassVmOptions {
-  vmName: string;
-  /** Number of CPUs */
-  cpus?: number;
-  /** Disk size */
-  disk?: string;
-  /** Amount of memory */
-  memory?: string;
-}
-
-/**
- * Creates a new VM using `multipass`
- */
-const createMultipassVm = async ({
-  vmName,
-  disk = '8G',
-  cpus = 1,
-  memory = '1G',
-}: CreateMultipassVmOptions): Promise<CreateVmResponse> => {
-  await execa.command(
-    `multipass launch --name ${vmName} --disk ${disk} --cpus ${cpus} --memory ${memory}`
-  );
-
-  return {
-    vmName,
-  };
-};
-
 export const deleteMultipassVm = async (vmName: string): Promise<void> => {
-  if (process.env.CI) {
-    await execa.command(`vagrant destroy -f`, {
-      env: {
-        VAGRANT_CWD,
-      },
-    });
-  } else {
-    await execa.command(`multipass delete -p ${vmName}`);
-  }
+  await getHostVmClient(vmName).destroy();
 };
 
-interface EnrollHostWithFleetOptions {
-  kbnClient: KbnClient;
-  log: ToolingLog;
-  vmName: string;
-  agentDownloadUrl: string;
-  cachedAgentDownload?: DownloadedAgentInfo;
-  fleetServerUrl: string;
-  enrollmentToken: string;
-}
-
-const enrollHostWithFleet = async ({
-  kbnClient,
-  log,
-  vmName,
-  fleetServerUrl,
-  agentDownloadUrl,
-  cachedAgentDownload,
-  enrollmentToken,
-}: EnrollHostWithFleetOptions): Promise<{ agentId: string }> => {
-  const agentDownloadedFile = agentDownloadUrl.substring(agentDownloadUrl.lastIndexOf('/') + 1);
-  const vmDirName = agentDownloadedFile.replace(/\.tar\.gz$/, '');
-
-  if (cachedAgentDownload) {
-    log.verbose(
-      `Installing agent on host using cached download from [${cachedAgentDownload.fullFilePath}]`
-    );
-
-    if (!process.env.CI) {
-      // mount local folder on VM
-      await execa.command(
-        `multipass mount ${cachedAgentDownload.directory} ${vmName}:~/_agent_downloads`
-      );
-      await execa.command(
-        `multipass exec ${vmName} -- tar -zxf _agent_downloads/${cachedAgentDownload.filename}`
-      );
-      await execa.command(`multipass unmount ${vmName}:~/_agent_downloads`);
-    }
-  } else {
-    log.verbose(`downloading and installing agent from URL [${agentDownloadUrl}]`);
-
-    if (!process.env.CI) {
-      // download into VM
-      await execa.command(
-        `multipass exec ${vmName} -- curl -L ${agentDownloadUrl} -o ${agentDownloadedFile}`
-      );
-      await execa.command(`multipass exec ${vmName} -- tar -zxf ${agentDownloadedFile}`);
-      await execa.command(`multipass exec ${vmName} -- rm -f ${agentDownloadedFile}`);
-    }
-  }
-
-  const agentInstallArguments = [
-    'sudo',
-
-    './elastic-agent',
-
-    'install',
-
-    '--insecure',
-
-    '--force',
-
-    '--url',
-    fleetServerUrl,
-
-    '--enrollment-token',
-    enrollmentToken,
-  ];
-
-  log.info(`Enrolling elastic agent with Fleet`);
-  if (process.env.CI) {
-    log.verbose(`Command: vagrant ${agentInstallArguments.join(' ')}`);
-
-    await execa(`vagrant`, ['ssh', '--', `cd ${vmDirName} && ${agentInstallArguments.join(' ')}`], {
-      env: {
-        VAGRANT_CWD,
-      },
-      // Only `pipe` STDERR to parent process
-      stdio: ['inherit', 'inherit', 'pipe'],
-    });
-  } else {
-    log.verbose(`Command: multipass ${agentInstallArguments.join(' ')}`);
-
-    await execa(`multipass`, [
-      'exec',
-      vmName,
-      '--working-directory',
-      `/home/ubuntu/${vmDirName}`,
-
-      '--',
-      ...agentInstallArguments,
-    ]);
-  }
-  log.info(`Waiting for Agent to check-in with Fleet`);
-
-  const agent = await waitForHostToEnroll(kbnClient, vmName, 8 * 60 * 1000);
-
-  log.info(`Agent enrolled with Fleet, status: `, agent.status);
-
-  return {
-    agentId: agent.id,
-  };
-};
-
-export async function getEndpointHosts(): Promise<
-  Array<{ name: string; state: string; ipv4: string; image: string }>
-> {
-  const output = await execa('multipass', ['list', '--format', 'json']);
-  return JSON.parse(output.stdout).list;
-}
-
-export function stopEndpointHost(hostName: string) {
-  if (process.env.CI) {
-    return execa('vagrant', ['suspend'], {
-      env: {
-        VAGRANT_CWD,
-        VMNAME: hostName,
-      },
-    });
-  }
-  return execa('multipass', ['stop', hostName]);
+export async function stopEndpointHost(hostName: string): Promise<void> {
+  await getHostVmClient(hostName).stop();
 }
 
-export function startEndpointHost(hostName: string) {
-  if (process.env.CI) {
-    return execa('vagrant', ['up'], {
-      env: {
-        VAGRANT_CWD,
-      },
-    });
-  }
-  return execa('multipass', ['start', hostName]);
+export async function startEndpointHost(hostName: string): Promise<void> {
+  await getHostVmClient(hostName).start();
 }
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts
index 50384b3541f5c..f6590e5ef9e2e 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts
@@ -42,6 +42,7 @@ import {
 import { maybeCreateDockerNetwork, SERVERLESS_NODES, verifyDockerInstalled } from '@kbn/es';
 import { resolve } from 'path';
 import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
+import { captureCallingStack, prefixedOutputLogger } from '../utils';
 import {
   createToolingLogger,
   RETRYABLE_TRANSIENT_ERRORS,
@@ -51,6 +52,7 @@ import { isServerlessKibanaFlavor } from '../stack_services';
 import type { FormattedAxiosError } from '../format_axios_error';
 import { catchAxiosErrorFormatAndThrow } from '../format_axios_error';
 import {
+  ensureFleetSetup,
   fetchFleetOutputs,
   fetchFleetServerHostList,
   fetchFleetServerUrl,
@@ -77,6 +79,8 @@ interface StartedServer {
   url: string;
   /** Stop server */
   stop: () => Promise<void>;
+  /** Stop server synchronously. Sometimes useful when called from nodeJS unexpected exits. */
+  stopNow: () => void;
   /** Any information about the server */
   info?: string;
 }
@@ -94,24 +98,34 @@ interface StartFleetServerOptions {
   port?: number;
 }
 
-interface StartedFleetServer extends StartedServer {
-  /** The policy id that the fleet-server agent is running with */
+export interface StartedFleetServer extends StartedServer {
+  /** The Fleet Agent policy id that the fleet-server agent is running with */
   policyId: string;
 }
 
+/**
+ * Starts Fleet Server and connectors it to the stack
+ * @param kbnClient
+ * @param logger
+ * @param policy
+ * @param version
+ * @param force
+ * @param port
+ */
 export const startFleetServer = async ({
   kbnClient,
-  logger,
+  logger: _logger,
   policy,
   version,
   force = false,
   port = 8220,
 }: StartFleetServerOptions): Promise<StartedFleetServer> => {
+  const logger = prefixedOutputLogger('startFleetServer()', _logger);
+
   logger.info(`Starting Fleet Server and connecting it to Kibana`);
+  logger.debug(captureCallingStack());
 
   return logger.indent(4, async () => {
-    const isServerless = await isServerlessKibanaFlavor(kbnClient);
-
     // Check if fleet already running if `force` is false
     if (!force && (await isFleetServerRunning(kbnClient))) {
       throw new Error(
@@ -119,6 +133,9 @@ export const startFleetServer = async ({
       );
     }
 
+    await ensureFleetSetup(kbnClient, logger);
+
+    const isServerless = await isServerlessKibanaFlavor(kbnClient);
     const policyId =
       policy || !isServerless ? await getOrCreateFleetServerAgentPolicyId(kbnClient, logger) : '';
     const serviceToken = isServerless ? '' : await generateFleetServiceToken(kbnClient, logger);
@@ -138,6 +155,18 @@ export const startFleetServer = async ({
   });
 };
 
+/**
+ * Checks if fleet server is already running and if not, then it will attempt to start
+ * one and connect it to the stack
+ */
+export const startFleetServerIfNecessary = async (
+  options: StartFleetServerOptions
+): Promise<StartedFleetServer | void> => {
+  if (options.force || !(await isFleetServerRunning(options.kbnClient, options.logger))) {
+    return startFleetServer(options);
+  }
+};
+
 const getOrCreateFleetServerAgentPolicyId = async (
   kbnClient: KbnClient,
   log: ToolingLog
@@ -216,13 +245,15 @@ const startFleetServerWithDocker = async ({
   await verifyDockerInstalled(log);
 
   let agentVersion = version || (await getAgentVersionMatchingCurrentStack(kbnClient));
+  const localhostRealIp = getLocalhostRealIp();
+  const fleetServerUrl = `https://${localhostRealIp}:${port}`;
 
-  log.info(`Starting a new fleet server using Docker (version: ${agentVersion})`);
+  log.info(
+    `Starting a new fleet server using Docker\n    Agent version: ${agentVersion}\n    Server URL: ${fleetServerUrl}`
+  );
 
   const response: StartedServer = await log.indent(4, async () => {
     const isServerless = await isServerlessKibanaFlavor(kbnClient);
-    const localhostRealIp = getLocalhostRealIp();
-    const fleetServerUrl = `https://${localhostRealIp}:${port}`;
     const esURL = new URL(await getFleetElasticsearchOutputHost(kbnClient));
     const containerName = `dev-fleet-server.${port}`;
     const hostname = `dev-fleet-server.${port}.${Math.random().toString(32).substring(2, 6)}`;
@@ -239,12 +270,14 @@ const startFleetServerWithDocker = async ({
   - version adjusted to [latest] from [${agentVersion}]`);
 
       agentVersion = 'latest';
-      await maybeCreateDockerNetwork(log);
     } else {
       assert.ok(!!policyId, '`policyId` is required');
       assert.ok(!!serviceToken, '`serviceToken` is required');
     }
 
+    // Create the `elastic` network to use with all containers
+    await maybeCreateDockerNetwork(log);
+
     try {
       const dockerArgs = isServerless
         ? getFleetServerStandAloneDockerArgs({
@@ -266,7 +299,7 @@ const startFleetServerWithDocker = async ({
 
       await execa('docker', ['kill', containerName])
         .then(() => {
-          log.verbose(
+          log.info(
             `Killed an existing container with name [${containerName}]. New one will be started.`
           );
         })
@@ -294,25 +327,27 @@ const startFleetServerWithDocker = async ({
 
         await waitForFleetServerToRegisterWithElasticsearch(kbnClient, hostname, 120000);
       } else {
-        log.info('Waiting for server to show up in Kibana Fleet');
-
-        const fleetServerAgent = await waitForHostToEnroll(kbnClient, hostname, 120000);
-
-        log.verbose(`Fleet server enrolled agent:\n${JSON.stringify(fleetServerAgent, null, 2)}`);
+        await waitForHostToEnroll(kbnClient, log, hostname, 120000);
       }
 
-      fleetServerVersionInfo = (
-        await execa('docker', [
-          'exec',
-          containerName,
-          '/bin/bash',
-          '-c',
-          './elastic-agent version',
-        ]).catch((err) => {
-          log.verbose(`Failed to retrieve agent version information from running instance.`, err);
-          return { stdout: 'Unable to retrieve version information' };
-        })
-      ).stdout;
+      fleetServerVersionInfo = isServerless
+        ? // `/usr/bin/fleet-server` process does not seem to support a `--version` type of argument
+          'Running latest standalone fleet server'
+        : (
+            await execa('docker', [
+              'exec',
+              containerName,
+              '/bin/bash',
+              '-c',
+              '/usr/share/elastic-agent/elastic-agent version',
+            ]).catch((err) => {
+              log.verbose(
+                `Failed to retrieve agent version information from running instance.`,
+                err
+              );
+              return { stdout: 'Unable to retrieve version information' };
+            })
+          ).stdout;
     } catch (error) {
       log.error(dump(error));
       throw error;
@@ -335,8 +370,17 @@ Kill container:       ${chalk.cyan(`docker kill ${containerId}`)}
       url: fleetServerUrl,
       info,
       stop: async () => {
+        log.info(
+          `Stopping (kill) fleet server. Container name [${containerName}] id [${containerId}]`
+        );
         await execa('docker', ['kill', containerId]);
       },
+      stopNow: () => {
+        log.info(
+          `Stopping (kill) fleet server. Container name [${containerName}] id [${containerId}]`
+        );
+        execa.sync('docker', ['kill', containerId]);
+      },
     };
   });
 
@@ -371,6 +415,9 @@ const getFleetServerManagedDockerArgs = ({
     '--restart',
     'no',
 
+    '--net',
+    'elastic',
+
     '--add-host',
     'host.docker.internal:host-gateway',
 
@@ -494,7 +541,7 @@ const addFleetServerHostToFleetSettings = async (
       const newFleetHostEntry: PostFleetServerHostsRequest['body'] = {
         name: `Dev fleet server running on localhost`,
         host_urls: [fleetServerHostUrl],
-        is_default: !exitingFleetServerHostList.total,
+        is_default: true,
       };
 
       const { item } = await kbnClient
@@ -630,12 +677,13 @@ export const isFleetServerRunning = async (
       httpsAgent: new https.Agent({ rejectUnauthorized: false }),
     })
     .then((response) => {
-      log.verbose(`Fleet server is up and running as [${fleetServerUrl}]`, response.data);
+      log.debug(`Fleet server is up and running at [${fleetServerUrl}]. Status: `, response.data);
       return true;
     })
     .catch(catchAxiosErrorFormatAndThrow)
     .catch((e) => {
-      log.verbose(`Fleet server not up. Attempt to call [${url.toString()}] failed with:`, e);
+      log.debug(`Fleet server not up at [${fleetServerUrl}]`);
+      log.verbose(`Call to [${url.toString()}] failed with:`, e);
       return false;
     });
 };
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts
index 80825c84fb195..26ca9d6474393 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts
@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-import { map, pick } from 'lodash';
+import { map, memoize, pick } from 'lodash';
 import type { Client, estypes } from '@elastic/elasticsearch';
 import type {
   Agent,
@@ -23,6 +23,7 @@ import type {
   PackagePolicy,
   GetInfoResponse,
   GetOneAgentPolicyResponse,
+  PostFleetSetupResponse,
 } from '@kbn/fleet-plugin/common';
 import {
   AGENT_API_ROUTES,
@@ -35,6 +36,7 @@ import {
   APP_API_ROUTES,
   epmRouteService,
   PACKAGE_POLICY_API_ROUTES,
+  SETUP_API_ROUTE,
 } from '@kbn/fleet-plugin/common';
 import type { ToolingLog } from '@kbn/tooling-log';
 import type { KbnClient } from '@kbn/test';
@@ -56,6 +58,7 @@ import nodeFetch from 'node-fetch';
 import semver from 'semver';
 import axios from 'axios';
 import { userInfo } from 'os';
+import { isFleetServerRunning } from './fleet_server/fleet_server_services';
 import { getEndpointPackageInfo } from '../../../common/endpoint/utils/package';
 import type { DownloadAndStoreAgentResponse } from './agent_downloads_service';
 import { downloadAndStoreAgent } from './agent_downloads_service';
@@ -72,6 +75,9 @@ import { FleetAgentGenerator } from '../../../common/endpoint/data_generators/fl
 
 const fleetGenerator = new FleetAgentGenerator();
 const CURRENT_USERNAME = userInfo().username.toLowerCase();
+const DEFAULT_AGENT_POLICY_NAME = `${CURRENT_USERNAME} test policy`;
+/** A Fleet agent policy that includes integrations that don't actually require an agent to run on a host. Example: SenttinelOne */
+export const DEFAULT_AGENTLESS_INTEGRATIONS_AGENT_POLICY_NAME = `${CURRENT_USERNAME} - agentless integrations`;
 
 export const checkInFleetAgent = async (
   esClient: Client,
@@ -151,14 +157,18 @@ export const fetchFleetAgents = async (
  * Will keep querying Fleet list of agents until the given `hostname` shows up as healthy
  *
  * @param kbnClient
+ * @param log
  * @param hostname
  * @param timeoutMs
  */
 export const waitForHostToEnroll = async (
   kbnClient: KbnClient,
+  log: ToolingLog,
   hostname: string,
   timeoutMs: number = 30000
 ): Promise<Agent> => {
+  log.info(`Waiting for host [${hostname}] to enroll with fleet`);
+
   const started = new Date();
   const hasTimedOut = (): boolean => {
     const elapsedTime = Date.now() - started.getTime();
@@ -190,14 +200,17 @@ export const waitForHostToEnroll = async (
   if (!found) {
     throw Object.assign(
       new Error(
-        `Timed out waiting for host [${hostname}] to show up in Fleet in ${
-          timeoutMs / 60 / 1000
+        `Timed out waiting for host [${hostname}] to show up in Fleet. Waited ${
+          timeoutMs / 1000
         } seconds`
       ),
       { agentId, hostname }
     );
   }
 
+  log.debug(`Host [${hostname}] has been enrolled with fleet`);
+  log.verbose(found);
+
   return found;
 };
 
@@ -544,7 +557,10 @@ export const fetchFleetOutputs = async (kbnClient: KbnClient): Promise<GetOutput
     .catch(catchAxiosErrorFormatAndThrow);
 };
 
-export const getFleetElasticsearchOutputHost = async (kbnClient: KbnClient): Promise<string> => {
+export const getFleetElasticsearchOutputHost = async (
+  kbnClient: KbnClient,
+  log: ToolingLog = createToolingLogger()
+): Promise<string> => {
   const outputs = await fetchFleetOutputs(kbnClient);
   let host: string = '';
 
@@ -555,6 +571,7 @@ export const getFleetElasticsearchOutputHost = async (kbnClient: KbnClient): Pro
   }
 
   if (!host) {
+    log.error(`Outputs returned from Fleet:\n${JSON.stringify(outputs, null, 2)}`);
     throw new Error(`An output for Elasticsearch was not found in Fleet settings`);
   }
 
@@ -578,7 +595,10 @@ interface EnrollHostVmWithFleetOptions {
 }
 
 /**
- * Installs the Elastic agent on the provided Host VM and enrolls with it Fleet
+ * Installs the Elastic agent on the provided Host VM and enrolls with it Fleet.
+ *
+ * NOTE: this method assumes that FLeet-Server is already setup and running.
+ *
  * @param hostVm
  * @param kbnClient
  * @param log
@@ -600,6 +620,10 @@ export const enrollHostVmWithFleet = async ({
 }: EnrollHostVmWithFleetOptions): Promise<Agent> => {
   log.info(`Enrolling host VM [${hostVm.name}] with Fleet`);
 
+  if (!(await isFleetServerRunning(kbnClient))) {
+    throw new Error(`Fleet server does not seem to be running on this instance of kibana!`);
+  }
+
   const agentVersion = version || (await getAgentVersionMatchingCurrentStack(kbnClient));
   const agentUrlInfo = await getAgentDownloadUrl(agentVersion, closestVersionMatch, log);
 
@@ -609,26 +633,30 @@ export const enrollHostVmWithFleet = async ({
 
   log.info(`Installing Elastic Agent`);
 
-  // Mount the directory where the agent download cache is located
-  if (useAgentCache) {
-    const hostVmDownloadsDir = '/home/ubuntu/_agent_downloads';
+  // For multipass, we need to place the Agent archive in the VM - either mounting local cache
+  // directory or downloading it directly from inside of the VM.
+  // For Vagrant, the archive is already in the VM - it was done during VM creation.
+  if (hostVm.type === 'multipass') {
+    if (useAgentCache) {
+      const hostVmDownloadsDir = '/home/ubuntu/_agent_downloads';
 
-    log.debug(
-      `Mounting agents download cache directory [${agentDownload.directory}] to Host VM at [${hostVmDownloadsDir}]`
-    );
-    const downloadsMount = await hostVm.mount(agentDownload.directory, hostVmDownloadsDir);
+      log.debug(
+        `Mounting agents download cache directory [${agentDownload.directory}] to Host VM at [${hostVmDownloadsDir}]`
+      );
+      const downloadsMount = await hostVm.mount(agentDownload.directory, hostVmDownloadsDir);
 
-    log.debug(`Extracting download archive on host VM`);
-    await hostVm.exec(`tar -zxf ${downloadsMount.hostDir}/${agentDownload.filename}`);
+      log.debug(`Extracting download archive on host VM`);
+      await hostVm.exec(`tar -zxf ${downloadsMount.hostDir}/${agentDownload.filename}`);
 
-    await downloadsMount.unmount();
-  } else {
-    log.debug(`Downloading Elastic Agent to host VM`);
-    await hostVm.exec(`curl -L ${agentDownload.url} -o ${agentDownload.filename}`);
+      await downloadsMount.unmount();
+    } else {
+      log.debug(`Downloading Elastic Agent to host VM`);
+      await hostVm.exec(`curl -L ${agentDownload.url} -o ${agentDownload.filename}`);
 
-    log.debug(`Extracting download archive on host VM`);
-    await hostVm.exec(`tar -zxf ${agentDownload.filename}`);
-    await hostVm.exec(`rm -f ${agentDownload.filename}`);
+      log.debug(`Extracting download archive on host VM`);
+      await hostVm.exec(`tar -zxf ${agentDownload.filename}`);
+      await hostVm.exec(`rm -f ${agentDownload.filename}`);
+    }
   }
 
   const policyId = agentPolicyId || (await getOrCreateDefaultAgentPolicy({ kbnClient, log })).id;
@@ -640,7 +668,7 @@ export const enrollHostVmWithFleet = async ({
   const agentEnrollCommand = [
     'sudo',
 
-    `/home/ubuntu/${agentUrlInfo.dirName}/elastic-agent`,
+    `./${agentUrlInfo.dirName}/elastic-agent`,
 
     'install',
 
@@ -660,15 +688,13 @@ export const enrollHostVmWithFleet = async ({
 
   await hostVm.exec(agentEnrollCommand);
 
-  log.info(`Waiting for Agent to check-in with Fleet`);
-  const agent = await waitForHostToEnroll(kbnClient, hostVm.name, timeoutMs);
-
-  return agent;
+  return waitForHostToEnroll(kbnClient, log, hostVm.name, timeoutMs);
 };
 
 interface GetOrCreateDefaultAgentPolicyOptions {
   kbnClient: KbnClient;
   log: ToolingLog;
+  policyName?: string;
 }
 
 /**
@@ -676,14 +702,15 @@ interface GetOrCreateDefaultAgentPolicyOptions {
  * policy already exists, then it will be reused.
  * @param kbnClient
  * @param log
+ * @param policyName
  */
 export const getOrCreateDefaultAgentPolicy = async ({
   kbnClient,
   log,
+  policyName = DEFAULT_AGENT_POLICY_NAME,
 }: GetOrCreateDefaultAgentPolicyOptions): Promise<AgentPolicy> => {
-  const agentPolicyName = `${CURRENT_USERNAME} test policy`;
   const existingPolicy = await fetchAgentPolicyList(kbnClient, {
-    kuery: `${AGENT_POLICY_SAVED_OBJECT_TYPE}.name: "${agentPolicyName}"`,
+    kuery: `${AGENT_POLICY_SAVED_OBJECT_TYPE}.name: "${policyName}"`,
   });
 
   if (existingPolicy.items[0]) {
@@ -696,13 +723,13 @@ export const getOrCreateDefaultAgentPolicy = async ({
   log.info(`Creating new default test/dev Fleet agent policy`);
 
   const newAgentPolicyData: CreateAgentPolicyRequest['body'] = {
-    name: agentPolicyName,
-    description: `Policy created by security solution tooling`,
+    name: policyName,
+    description: `Policy created by security solution tooling: ${__filename}`,
     namespace: 'default',
     monitoring_enabled: ['logs', 'metrics'],
   };
 
-  const newAgentPolicy = kbnClient
+  const newAgentPolicy = await kbnClient
     .request<CreateAgentPolicyResponse>({
       path: AGENT_POLICY_API_ROUTES.CREATE_PATTERN,
       headers: {
@@ -793,7 +820,7 @@ export const addSentinelOneIntegrationToAgentPolicy = async ({
   agentPolicyId,
   consoleUrl,
   apiToken,
-  integrationPolicyName = `SentinelOne policy (${Math.random().toString().substring(3)})`,
+  integrationPolicyName = `SentinelOne policy (${Math.random().toString().substring(2, 6)})`,
   force = false,
 }: AddSentinelOneIntegrationToAgentPolicyOptions): Promise<PackagePolicy> => {
   // If `force` is `false and agent policy already has a SentinelOne integration, exit here
@@ -1092,3 +1119,27 @@ export const addEndpointIntegrationToAgentPolicy = async ({
 
   return newIntegrationPolicy;
 };
+
+/**
+ * Calls the fleet setup API to ensure fleet configured with default settings
+ * @param kbnClient
+ * @param log
+ */
+export const ensureFleetSetup = memoize(
+  async (kbnClient: KbnClient, log: ToolingLog): Promise<PostFleetSetupResponse> => {
+    const setupResponse = await kbnClient
+      .request<PostFleetSetupResponse>({
+        path: SETUP_API_ROUTE,
+        headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 },
+        method: 'POST',
+      })
+      .catch(catchAxiosErrorFormatAndThrow);
+
+    if (!setupResponse.data.isInitialized) {
+      log.verbose(`Fleet setup response:`, setupResponse);
+      throw new Error(`Call to initialize Fleet [${SETUP_API_ROUTE}] failed`);
+    }
+
+    return setupResponse.data;
+  }
+);
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts
index 44bdcff328401..38256f1c774bd 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts
@@ -14,8 +14,12 @@ export interface HostVm {
   exec: (command: string) => Promise<HostVmExecResponse>;
   mount: (localDir: string, hostVmDir: string) => Promise<HostVmMountResponse>;
   unmount: (hostVmDir: string) => Promise<void>;
+  /** Uploads/copies a file from the local machine to the VM */
+  transfer: (localFilePath: string, destFilePath: string) => Promise<HostVmTransferResponse>;
   destroy: () => Promise<void>;
   info: () => string;
+  stop: () => void;
+  start: () => void;
 }
 
 export type SupportedVmManager = 'multipass' | 'vagrant';
@@ -28,3 +32,9 @@ export interface HostVmMountResponse {
   hostDir: string;
   unmount: () => Promise<void>;
 }
+export interface HostVmTransferResponse {
+  /** The file path of the file on the host vm */
+  filePath: string;
+  /** Delete the file from the host VM */
+  delete: () => Promise<HostVmExecResponse>;
+}
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts
new file mode 100644
index 0000000000000..3c8e227c89271
--- /dev/null
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts
@@ -0,0 +1,63 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+/* eslint-disable @typescript-eslint/no-explicit-any */
+
+import type { ToolingLog } from '@kbn/tooling-log';
+import chalk from 'chalk';
+
+/**
+ * Capture and return the calling stack for the context that called this utility.
+ */
+export const captureCallingStack = () => {
+  const s = { stack: '' };
+  Error.captureStackTrace(s);
+  return `Called from:\n${s.stack.split('\n').slice(3).join('\n')}`;
+};
+
+/**
+ * Returns a logger that intercepts calls to the ToolingLog instance methods passed in input
+ * and prefix it with the provided value. Useful in order to track log entries, especially when
+ * logging output from multiple sources is concurrently being output to the same source
+ * (ex. CI jobs and output to stdout).
+ *
+ * @param prefix
+ * @param log
+ *
+ * @example
+ * const logger = new ToolingLog();
+ * const prefixedLogger = prefixedOutputLogger('my_log', logger);
+ *
+ * prefixedLogger.info('log something'); // => info [my_log] log something
+ */
+export const prefixedOutputLogger = (prefix: string, log: ToolingLog): ToolingLog => {
+  const styledPrefix = `[${chalk.grey(prefix)}]`;
+  const logIt = (type: keyof ToolingLog, ...args: any) => {
+    return log[type](styledPrefix, ...args);
+  };
+
+  const logger: Partial<ToolingLog> = {
+    info: logIt.bind(null, 'info'),
+    debug: logIt.bind(null, 'debug'),
+    verbose: logIt.bind(null, 'verbose'),
+    success: logIt.bind(null, 'success'),
+    warning: logIt.bind(null, 'warning'),
+    write: logIt.bind(null, 'write'),
+  };
+
+  const proxy = new Proxy(log, {
+    get(target: ToolingLog, prop: keyof ToolingLog, receiver: any): any {
+      if (prop in logger) {
+        return logger[prop];
+      }
+
+      return log[prop];
+    },
+  });
+
+  return proxy;
+};
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile b/x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile
similarity index 76%
rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile
rename to x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile
index a6b93e8de47b5..fd33efaeab625 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/Vagrantfile
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile
@@ -1,3 +1,7 @@
+# ------------------------------------------------------------------------------------
+# Vagrant setup for running Elastic agent on the created VM.0
+# This setup is mostly used for CI runs, since multipass is not used in that env.
+# ------------------------------------------------------------------------------------
 hostname = ENV["VMNAME"] || 'ubuntu'
 cachedAgentSource = ENV["CACHED_AGENT_SOURCE"] || ''
 cachedAgentFilename = ENV["CACHED_AGENT_FILENAME"] || ''
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts
index ca0a83d2cdd41..a0efd908f80d7 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts
@@ -8,10 +8,17 @@
 import type { ToolingLog } from '@kbn/tooling-log';
 import execa from 'execa';
 import chalk from 'chalk';
+import { userInfo } from 'os';
+import { join as pathJoin, dirname } from 'path';
+import type { DownloadedAgentInfo } from './agent_downloads_service';
+import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator';
 import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils';
 import type { HostVm, HostVmExecResponse, SupportedVmManager } from './types';
 
-interface BaseVmCreateOptions {
+const baseGenerator = new BaseDataGenerator();
+export const DEFAULT_VAGRANTFILE = pathJoin(__dirname, 'vagrant', 'Vagrantfile');
+
+export interface BaseVmCreateOptions {
   name: string;
   /** Number of CPUs */
   cpus?: number;
@@ -21,24 +28,21 @@ interface BaseVmCreateOptions {
   memory?: string;
 }
 
-interface CreateVmOptions extends BaseVmCreateOptions {
-  /** The type of VM manager to use when creating the VM host */
-  type: SupportedVmManager;
-  log?: ToolingLog;
-}
+type CreateVmOptions = CreateMultipassVmOptions | CreateVagrantVmOptions;
 
 /**
  * Creates a new VM
  */
-export const createVm = async ({ type, ...options }: CreateVmOptions): Promise<HostVm> => {
-  if (type === 'multipass') {
+export const createVm = async (options: CreateVmOptions): Promise<HostVm> => {
+  if (options.type === 'multipass') {
     return createMultipassVm(options);
   }
 
-  throw new Error(`VM type ${type} not yet supported`);
+  return createVagrantVm(options);
 };
 
 interface CreateMultipassVmOptions extends BaseVmCreateOptions {
+  type: SupportedVmManager & 'multipass';
   name: string;
   log?: ToolingLog;
 }
@@ -97,11 +101,13 @@ export const createMultipassHostVmClient = (
   };
 
   const unmount = async (hostVmDir: string) => {
-    await execa.command(`multipass unmount ${name}:${hostVmDir}`);
+    const response = await execa.command(`multipass unmount ${name}:${hostVmDir}`);
+    log.verbose(`multipass unmount response:\n`, response);
   };
 
   const mount = async (localDir: string, hostVmDir: string) => {
-    await execa.command(`multipass mount ${localDir} ${name}:${hostVmDir}`);
+    const response = await execa.command(`multipass mount ${localDir} ${name}:${hostVmDir}`);
+    log.verbose(`multipass mount response:\n`, response);
 
     return {
       hostDir: hostVmDir,
@@ -109,6 +115,30 @@ export const createMultipassHostVmClient = (
     };
   };
 
+  const start = async () => {
+    const response = await execa.command(`multipass start ${name}`);
+    log.verbose(`multipass start response:\n`, response);
+  };
+
+  const stop = async () => {
+    const response = await execa.command(`multipass stop ${name}`);
+    log.verbose(`multipass stop response:\n`, response);
+  };
+
+  const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => {
+    const response = await execa.command(
+      `multipass transfer ${localFilePath} ${name}:${destFilePath}`
+    );
+    log.verbose(`Transferred file to VM [${name}]:`, response);
+
+    return {
+      filePath: destFilePath,
+      delete: async () => {
+        return exec(`rm ${destFilePath}`);
+      },
+    };
+  };
+
   return {
     type: 'multipass',
     name,
@@ -117,5 +147,233 @@ export const createMultipassHostVmClient = (
     info,
     mount,
     unmount,
+    transfer,
+    start,
+    stop,
   };
 };
+
+/**
+ * Generates a unique Virtual Machine name using the current user's `username`
+ * @param identifier
+ */
+export const generateVmName = (identifier: string = baseGenerator.randomUser()): string => {
+  return `${userInfo().username.toLowerCase().replaceAll('.', '-')}-${identifier
+    .toLowerCase()
+    .replace('.', '-')}-${Math.random().toString().substring(2, 6)}`;
+};
+
+/**
+ * Checks if the count of VM running under Multipass is greater than the `threshold` passed on
+ * input and if so, it will return a message indicate so. Useful to remind users of the amount of
+ * VM currently running.
+ * @param threshold
+ */
+export const getMultipassVmCountNotice = async (threshold: number = 1): Promise<string> => {
+  const response = await execa.command(`multipass list --format=json`);
+
+  const output: { list: Array<{ ipv4: string; name: string; release: string; state: string }> } =
+    JSON.parse(response.stdout);
+
+  if (output.list.length > threshold) {
+    return `-----------------------------------------------------------------
+${chalk.red('NOTE:')} ${chalk.bold(
+      chalk.cyan(`You currently have ${chalk.red(output.list.length)} VMs running.`)
+    )} Remember to delete those
+      no longer being used.
+      View running VMs: ${chalk.bold('multipass list')}
+  -----------------------------------------------------------------
+`;
+  }
+
+  return '';
+};
+
+interface CreateVagrantVmOptions extends BaseVmCreateOptions {
+  type: SupportedVmManager & 'vagrant';
+
+  name: string;
+  /**
+   * The downloaded agent information. The Agent file will be uploaded to the Vagrant VM and
+   * made available under the default login home directory (`~/agent-filename`)
+   */
+  agentDownload: DownloadedAgentInfo;
+  /**
+   * The path to the Vagrantfile to use to provision the VM. Defaults to Vagrantfile under:
+   * `x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile`
+   */
+  vagrantFile?: string;
+  log?: ToolingLog;
+}
+
+/**
+ * Creates a new VM using `vagrant`
+ */
+const createVagrantVm = async ({
+  name,
+  log = createToolingLogger(),
+  agentDownload: { fullFilePath: agentFullFilePath, filename: agentFileName },
+  vagrantFile = DEFAULT_VAGRANTFILE,
+  memory,
+  cpus,
+  disk,
+}: CreateVagrantVmOptions): Promise<HostVm> => {
+  log.debug(`Using Vagrantfile: ${vagrantFile}`);
+
+  const VAGRANT_CWD = dirname(vagrantFile);
+
+  // Destroy the VM running (if any) with the provided vagrant file before re-creating it
+  try {
+    await execa.command(`vagrant destroy -f`, {
+      env: {
+        VAGRANT_CWD,
+      },
+      // Only `pipe` STDERR to parent process
+      stdio: ['inherit', 'inherit', 'pipe'],
+    });
+    // eslint-disable-next-line no-empty
+  } catch (e) {}
+
+  if (memory || cpus || disk) {
+    log.warning(
+      `cpu, memory and disk options ignored for creation of vm via Vagrant. These should be defined in the Vagrantfile`
+    );
+  }
+
+  try {
+    const vagrantUpResponse = (
+      await execa.command(`vagrant up`, {
+        env: {
+          VAGRANT_DISABLE_VBOXSYMLINKCREATE: '1',
+          VAGRANT_CWD,
+          VMNAME: name,
+          CACHED_AGENT_SOURCE: agentFullFilePath,
+          CACHED_AGENT_FILENAME: agentFileName,
+        },
+        // Only `pipe` STDERR to parent process
+        stdio: ['inherit', 'inherit', 'pipe'],
+      })
+    ).stdout;
+
+    log.debug(`Vagrant up command response: `, vagrantUpResponse);
+  } catch (e) {
+    log.error(e);
+    throw e;
+  }
+
+  return createVagrantHostVmClient(name, undefined, log);
+};
+
+/**
+ * Creates a generic interface (`HotVm`) for interacting with a VM created by Vagrant
+ * @param name
+ * @param log
+ * @param vagrantFile
+ */
+export const createVagrantHostVmClient = (
+  name: string,
+  vagrantFile: string = DEFAULT_VAGRANTFILE,
+  log: ToolingLog = createToolingLogger()
+): HostVm => {
+  const VAGRANT_CWD = dirname(vagrantFile);
+  const execaOptions: execa.Options = {
+    env: {
+      VAGRANT_CWD,
+    },
+    stdio: ['inherit', 'pipe', 'pipe'],
+  };
+
+  log.debug(`Creating Vagrant VM client for [${name}] with vagrantfile [${vagrantFile}]`);
+
+  const exec = async (command: string): Promise<HostVmExecResponse> => {
+    const execResponse = await execa.command(`vagrant ssh -- ${command}`, execaOptions);
+
+    log.verbose(execResponse);
+
+    return {
+      stdout: execResponse.stdout,
+      stderr: execResponse.stderr,
+      exitCode: execResponse.exitCode,
+    };
+  };
+
+  const destroy = async (): Promise<void> => {
+    const destroyResponse = await execa.command(`vagrant destroy -f`, execaOptions);
+
+    log.debug(`VM [${name}] was destroyed successfully`, destroyResponse);
+  };
+
+  const info = () => {
+    return `VM created using Vagrant.
+  VM Name: ${name}
+
+  Shell access: ${chalk.cyan(`vagrant ssh ${name}`)}
+  Delete VM:    ${chalk.cyan(`vagrant destroy ${name} -f`)}
+`;
+  };
+
+  const unmount = async (_: string) => {
+    throw new Error('VM action `unmount`` not currently supported for vagrant');
+  };
+
+  const mount = async (_: string, __: string) => {
+    throw new Error('VM action `mount` not currently supported for vagrant');
+  };
+
+  const start = async () => {
+    const response = await execa.command(`vagrant up`, execaOptions);
+    log.verbose('vagrant up response:\n', response);
+  };
+
+  const stop = async () => {
+    const response = await execa.command(`vagrant suspend`, execaOptions);
+    log.verbose('vagrant suspend response:\n', response);
+  };
+
+  const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => {
+    const response = await execa.command(
+      `vagrant upload ${localFilePath} ${destFilePath}`,
+      execaOptions
+    );
+    log.verbose(`Transferred file to VM [${name}]:`, response);
+
+    return {
+      filePath: destFilePath,
+      delete: async () => {
+        return exec(`rm ${destFilePath}`);
+      },
+    };
+  };
+
+  return {
+    type: 'vagrant',
+    name,
+    exec,
+    destroy,
+    info,
+    mount,
+    unmount,
+    transfer,
+    start,
+    stop,
+  };
+};
+
+/**
+ * create and return a Host VM client client
+ * @param hostname
+ * @param type
+ * @param vagrantFile
+ * @param log
+ */
+export const getHostVmClient = (
+  hostname: string,
+  type: SupportedVmManager = process.env.CI ? 'vagrant' : 'multipass',
+  /** Will only be used if `type` is `vagrant` */
+  vagrantFile: string = DEFAULT_VAGRANTFILE,
+  log: ToolingLog = createToolingLogger()
+): HostVm => {
+  return type === 'vagrant'
+    ? createVagrantHostVmClient(hostname, vagrantFile, log)
+    : createMultipassHostVmClient(hostname, log);
+};
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts
index 0c07013f8c7b7..e569580eb7357 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts
@@ -5,9 +5,7 @@
  * 2.0.
  */
 
-import { userInfo } from 'os';
-import execa from 'execa';
-import chalk from 'chalk';
+import { generateVmName } from '../common/vm_services';
 import { createAndEnrollEndpointHost } from '../common/endpoint_host_services';
 import {
   addEndpointIntegrationToAgentPolicy,
@@ -18,6 +16,7 @@ import { dump } from './utils';
 
 export const enrollEndpointHost = async (): Promise<string | undefined> => {
   let vmName;
+
   const {
     log,
     kbnClient,
@@ -28,8 +27,6 @@ export const enrollEndpointHost = async (): Promise<string | undefined> => {
   log.indent(4);
 
   try {
-    const uniqueId = Math.random().toString().substring(2, 6);
-    const username = userInfo().username.toLowerCase().replaceAll('.', '-'); // Multipass doesn't like periods in username
     const policyId: string = policy || (await getOrCreateAgentPolicyId());
 
     if (!policyId) {
@@ -40,11 +37,11 @@ export const enrollEndpointHost = async (): Promise<string | undefined> => {
       throw new Error(`No 'version' specified`);
     }
 
-    vmName = `${username}-dev-${uniqueId}`;
+    vmName = generateVmName('dev');
 
     log.info(`Creating VM named: ${vmName}`);
 
-    await createAndEnrollEndpointHost({
+    const { hostVm } = await createAndEnrollEndpointHost({
       kbnClient,
       log,
       hostname: vmName,
@@ -54,23 +51,7 @@ export const enrollEndpointHost = async (): Promise<string | undefined> => {
       disk: '8G',
     });
 
-    if (process.env.CI) {
-      log.info(`VM created using Vagrant.
-      VM Name: ${vmName}
-      Elastic Agent Version: ${version}
-
-      Shell access: ${chalk.bold(`vagrant ssh ${vmName}`)}
-      Delete VM:    ${chalk.bold(`vagrant destroy ${vmName} -f`)}
-  `);
-    } else {
-      log.info(`VM created using Multipass.
-        VM Name: ${vmName}
-        Elastic Agent Version: ${version}
-
-        Shell access: ${chalk.bold(`multipass shell ${vmName}`)}
-        Delete VM:    ${chalk.bold(`multipass delete -p ${vmName}${await getVmCountNotice()}`)}
-    `);
-    }
+    log.info(hostVm.info());
   } catch (error) {
     log.error(dump(error));
     log.indent(-4);
@@ -90,25 +71,3 @@ const getOrCreateAgentPolicyId = async (): Promise<string> => {
 
   return agentPolicy.id;
 };
-
-const getVmCountNotice = async (threshold: number = 1): Promise<string> => {
-  const response = await execa.command(`multipass list --format=json`);
-
-  const output: { list: Array<{ ipv4: string; name: string; release: string; state: string }> } =
-    JSON.parse(response.stdout);
-
-  if (output.list.length > threshold) {
-    return `
-
------------------------------------------------------------------
-${chalk.red('NOTE:')} ${chalk.bold(
-      `You currently have ${output.list.length} VMs running.`
-    )} Remember to delete those
-      no longer being used.
-      View running VMs: ${chalk.bold('multipass list')}
-  -----------------------------------------------------------------
-`;
-  }
-
-  return '';
-};
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts
deleted file mode 100644
index ec13f2f6ff1b1..0000000000000
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/fleet_server.ts
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import {
-  CA_TRUSTED_FINGERPRINT,
-  FLEET_SERVER_CERT_PATH,
-  FLEET_SERVER_KEY_PATH,
-  fleetServerDevServiceAccount,
-} from '@kbn/dev-utils';
-import type {
-  AgentPolicy,
-  CreateAgentPolicyResponse,
-  GetPackagePoliciesResponse,
-  Output,
-  PackagePolicy,
-} from '@kbn/fleet-plugin/common';
-import {
-  AGENT_POLICY_API_ROUTES,
-  API_VERSIONS,
-  APP_API_ROUTES,
-  FLEET_SERVER_PACKAGE,
-  PACKAGE_POLICY_API_ROUTES,
-  PACKAGE_POLICY_SAVED_OBJECT_TYPE,
-} from '@kbn/fleet-plugin/common';
-import type {
-  FleetServerHost,
-  GenerateServiceTokenResponse,
-  GetOneOutputResponse,
-  GetOutputsResponse,
-  PutOutputRequest,
-} from '@kbn/fleet-plugin/common/types';
-import {
-  fleetServerHostsRoutesService,
-  outputRoutesService,
-} from '@kbn/fleet-plugin/common/services';
-import execa from 'execa';
-import type {
-  PostFleetServerHostsRequest,
-  PostFleetServerHostsResponse,
-} from '@kbn/fleet-plugin/common/types/rest_spec/fleet_server_hosts';
-import chalk from 'chalk';
-import { maybeCreateDockerNetwork, SERVERLESS_NODES, verifyDockerInstalled } from '@kbn/es';
-import { FLEET_SERVER_CUSTOM_CONFIG } from '../common/fleet_server/fleet_server_services';
-import { isServerlessKibanaFlavor } from '../common/stack_services';
-import type { FormattedAxiosError } from '../common/format_axios_error';
-import { catchAxiosErrorFormatAndThrow } from '../common/format_axios_error';
-import { isLocalhost } from '../common/is_localhost';
-import { dump } from './utils';
-import { fetchFleetServerUrl, waitForHostToEnroll } from '../common/fleet_services';
-import { getRuntimeServices } from './runtime';
-
-export const runFleetServerIfNeeded = async (): Promise<
-  { fleetServerContainerId: string; fleetServerAgentPolicyId: string | undefined } | undefined
-> => {
-  let fleetServerContainerId;
-  let fleetServerAgentPolicyId;
-  let serviceToken;
-
-  const {
-    log,
-    kibana: { isLocalhost: isKibanaOnLocalhost },
-    kbnClient,
-  } = getRuntimeServices();
-
-  log.info(`Setting up fleet server (if necessary)`);
-  log.indent(4);
-  const isServerless = await isServerlessKibanaFlavor(kbnClient);
-
-  await verifyDockerInstalled(log);
-  await maybeCreateDockerNetwork(log);
-
-  try {
-    if (isServerless) {
-      fleetServerContainerId = await startFleetServerStandAloneWithDocker();
-    } else {
-      fleetServerAgentPolicyId = await getOrCreateFleetServerAgentPolicyId();
-      serviceToken = await generateFleetServiceToken();
-      if (isKibanaOnLocalhost) {
-        await configureFleetIfNeeded();
-      }
-      fleetServerContainerId = await startFleetServerWithDocker({
-        policyId: fleetServerAgentPolicyId,
-        serviceToken,
-      });
-    }
-  } catch (error) {
-    log.error(dump(error));
-    log.indent(-4);
-    throw error;
-  }
-
-  log.indent(-4);
-
-  return { fleetServerContainerId, fleetServerAgentPolicyId };
-};
-
-const getFleetServerPackagePolicy = async (): Promise<PackagePolicy | undefined> => {
-  const { kbnClient } = getRuntimeServices();
-
-  return kbnClient
-    .request<GetPackagePoliciesResponse>({
-      method: 'GET',
-      path: PACKAGE_POLICY_API_ROUTES.LIST_PATTERN,
-      headers: {
-        'elastic-api-version': API_VERSIONS.public.v1,
-      },
-      query: {
-        perPage: 1,
-        kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name: "${FLEET_SERVER_PACKAGE}"`,
-      },
-    })
-    .then((response) => response.data.items[0]);
-};
-
-const getOrCreateFleetServerAgentPolicyId = async (): Promise<string> => {
-  const { log, kbnClient } = getRuntimeServices();
-
-  const existingFleetServerIntegrationPolicy = await getFleetServerPackagePolicy();
-
-  if (existingFleetServerIntegrationPolicy) {
-    log.verbose(
-      `Found existing Fleet Server Policy: ${JSON.stringify(
-        existingFleetServerIntegrationPolicy,
-        null,
-        2
-      )}`
-    );
-    log.info(
-      `Using existing Fleet Server agent policy id: ${existingFleetServerIntegrationPolicy.policy_id}`
-    );
-
-    return existingFleetServerIntegrationPolicy.policy_id;
-  }
-
-  log.info(`Creating new Fleet Server policy`);
-
-  const createdFleetServerPolicy: AgentPolicy = await kbnClient
-    .request<CreateAgentPolicyResponse>({
-      method: 'POST',
-      path: AGENT_POLICY_API_ROUTES.CREATE_PATTERN,
-      headers: {
-        'elastic-api-version': API_VERSIONS.public.v1,
-      },
-      body: {
-        name: `Fleet Server policy (${Math.random().toString(32).substring(2)})`,
-        description: `Created by CLI Tool via: ${__filename}`,
-        namespace: 'default',
-        monitoring_enabled: ['logs', 'metrics'],
-        // This will ensure the Fleet Server integration policy
-        // is also created and added to the agent policy
-        has_fleet_server: true,
-      },
-    })
-    .then((response) => response.data.item);
-
-  log.indent(4);
-  log.info(
-    `Agent Policy created: ${createdFleetServerPolicy.name} (${createdFleetServerPolicy.id})`
-  );
-  log.verbose(createdFleetServerPolicy);
-  log.indent(-4);
-
-  return createdFleetServerPolicy.id;
-};
-
-const generateFleetServiceToken = async (): Promise<string> => {
-  const { kbnClient, log } = getRuntimeServices();
-
-  const serviceToken: string = await kbnClient
-    .request<GenerateServiceTokenResponse>({
-      method: 'POST',
-      path: APP_API_ROUTES.GENERATE_SERVICE_TOKEN_PATTERN,
-      headers: {
-        'elastic-api-version': API_VERSIONS.public.v1,
-      },
-      body: {},
-    })
-    .then((response) => response.data.value);
-
-  log.info(`New service token created.`);
-
-  return serviceToken;
-};
-
-export const startFleetServerWithDocker = async ({
-  policyId,
-  serviceToken,
-}: {
-  policyId: string;
-  serviceToken: string;
-}) => {
-  let containerId;
-  const {
-    log,
-    localhostRealIp,
-    elastic: { url: elasticUrl, isLocalhost: isElasticOnLocalhost },
-    fleetServer: { port: fleetServerPort },
-    kbnClient,
-    options: { version },
-  } = getRuntimeServices();
-
-  log.info(`Starting a new fleet server using Docker`);
-  log.indent(4);
-
-  const esURL = new URL(elasticUrl);
-  const containerName = `dev-fleet-server.${fleetServerPort}`;
-  let esUrlWithRealIp: string = elasticUrl;
-
-  if (isElasticOnLocalhost) {
-    esURL.hostname = localhostRealIp;
-    esUrlWithRealIp = esURL.toString();
-  }
-
-  try {
-    const dockerArgs = [
-      'run',
-      '--restart',
-      'no',
-      '--net',
-      'elastic',
-      '--add-host',
-      'host.docker.internal:host-gateway',
-      '--rm',
-      '--detach',
-      '--name',
-      containerName,
-      // The container's hostname will appear in Fleet when the agent enrolls
-      '--hostname',
-      containerName,
-      '--env',
-      'FLEET_SERVER_ENABLE=1',
-      '--env',
-      `FLEET_SERVER_ELASTICSEARCH_HOST=${esUrlWithRealIp}`,
-      '--env',
-      `FLEET_SERVER_SERVICE_TOKEN=${serviceToken}`,
-      '--env',
-      `FLEET_SERVER_POLICY=${policyId}`,
-      '--publish',
-      `${fleetServerPort}:8220`,
-      `docker.elastic.co/beats/elastic-agent:${version}`,
-    ];
-
-    await execa('docker', ['kill', containerName])
-      .then(() => {
-        log.verbose(
-          `Killed an existing container with name [${containerName}]. New one will be started.`
-        );
-      })
-      .catch((error) => {
-        log.verbose(`Attempt to kill currently running fleet-server container (if any) with name [${containerName}] was unsuccessful:
-  ${error}
-(This is ok if one was not running already)`);
-      });
-
-    await addFleetServerHostToFleetSettings(`https://${localhostRealIp}:${fleetServerPort}`);
-
-    log.verbose(`docker arguments:\n${dockerArgs.join(' ')}`);
-
-    containerId = (await execa('docker', dockerArgs)).stdout;
-
-    const fleetServerAgent = await waitForHostToEnroll(kbnClient, containerName, 120000);
-
-    log.verbose(`Fleet server enrolled agent:\n${JSON.stringify(fleetServerAgent, null, 2)}`);
-
-    log.info(`Done. Fleet Server is running and connected to Fleet.
-  Container Name: ${containerName}
-  Container Id:   ${containerId}
-
-  View running output:  ${chalk.bold(`docker attach ---sig-proxy=false ${containerName}`)}
-  Shell access:         ${chalk.bold(`docker exec -it ${containerName} /bin/bash`)}
-  Kill container:       ${chalk.bold(`docker kill ${containerId}`)}
-`);
-  } catch (error) {
-    log.error(dump(error));
-    log.indent(-4);
-    throw error;
-  }
-
-  log.indent(-4);
-
-  return containerId;
-};
-
-export const startFleetServerStandAloneWithDocker = async () => {
-  let containerId;
-  const {
-    log,
-    elastic: { url: elasticUrl },
-    fleetServer: { port: fleetServerPort },
-  } = getRuntimeServices();
-
-  log.info(`Starting a new fleet server using Docker`);
-  log.indent(4);
-  const esURL = new URL(elasticUrl);
-
-  esURL.hostname = SERVERLESS_NODES[0].name;
-
-  const esUrlWithRealIp = esURL.toString();
-
-  const containerName = `dev-fleet-server.${fleetServerPort}`;
-  try {
-    const dockerArgs = [
-      'run',
-      '--restart',
-      'no',
-      '--net',
-      'elastic',
-      '--add-host',
-      'host.docker.internal:host-gateway',
-      '--rm',
-      '--detach',
-      '--name',
-      containerName,
-      // The container's hostname will appear in Fleet when the agent enrolls
-      '--hostname',
-      containerName,
-      '--volume',
-      `${FLEET_SERVER_CERT_PATH}:/fleet-server.crt`,
-      '--volume',
-      `${FLEET_SERVER_KEY_PATH}:/fleet-server.key`,
-      '--env',
-      'FLEET_SERVER_CERT=/fleet-server.crt',
-      '--env',
-      'FLEET_SERVER_CERT_KEY=/fleet-server.key',
-      '--env',
-      `ELASTICSEARCH_HOSTS=${esUrlWithRealIp}`,
-      '--env',
-      `ELASTICSEARCH_SERVICE_TOKEN=${fleetServerDevServiceAccount.token}`,
-      '--env',
-      `ELASTICSEARCH_CA_TRUSTED_FINGERPRINT=${CA_TRUSTED_FINGERPRINT}`,
-      '--volume',
-      `${FLEET_SERVER_CUSTOM_CONFIG}:/etc/fleet-server.yml:ro`,
-      '--publish',
-      `${fleetServerPort}:8220`,
-      `docker.elastic.co/observability-ci/fleet-server:latest`,
-    ];
-
-    await execa('docker', ['kill', containerName])
-      .then(() => {
-        log.verbose(
-          `Killed an existing container with name [${containerName}]. New one will be started.`
-        );
-      })
-      .catch((error) => {
-        log.verbose(`Attempt to kill currently running fleet-server container (if any) with name [${containerName}] was unsuccessful:
-  ${error}
-(This is ok if one was not running already)`);
-      });
-
-    log.verbose(`docker arguments:\n${dockerArgs.join(' ')}`);
-
-    containerId = (await execa('docker', dockerArgs)).stdout;
-
-    log.info(`Done. Fleet Server Stand Alone is running and connected to Fleet.
-  Container Name: ${containerName}
-  Container Id:   ${containerId}
-
-  View running output:  ${chalk.bold(`docker attach ---sig-proxy=false ${containerName}`)}
-  Shell access:         ${chalk.bold(`docker exec -it ${containerName} /bin/bash`)}
-  Kill container:       ${chalk.bold(`docker kill ${containerId}`)}
-`);
-  } catch (error) {
-    log.error(dump(error));
-    log.indent(-4);
-    throw error;
-  }
-
-  log.indent(-4);
-
-  return containerId;
-};
-
-const configureFleetIfNeeded = async () => {
-  const { log, kbnClient, localhostRealIp } = getRuntimeServices();
-
-  log.info('Checking if Fleet needs to be configured');
-  log.indent(4);
-
-  try {
-    // make sure that all ES hostnames are using localhost real IP
-    const fleetOutputs = await kbnClient
-      .request<GetOutputsResponse>({
-        method: 'GET',
-        headers: {
-          'elastic-api-version': API_VERSIONS.public.v1,
-        },
-        path: outputRoutesService.getListPath(),
-      })
-      .then((response) => response.data);
-
-    for (const { id, ...output } of fleetOutputs.items) {
-      if (output.type === 'elasticsearch') {
-        if (output.hosts) {
-          let needsUpdating = false;
-          const updatedHosts: Output['hosts'] = [];
-
-          for (const host of output.hosts) {
-            const hostURL = new URL(host);
-
-            if (isLocalhost(hostURL.hostname)) {
-              needsUpdating = true;
-              hostURL.hostname = localhostRealIp;
-              updatedHosts.push(hostURL.toString());
-
-              log.verbose(
-                `Fleet Settings for Elasticsearch Output [Name: ${
-                  output.name
-                } (id: ${id})]: Host [${host}] updated to [${hostURL.toString()}]`
-              );
-            } else {
-              updatedHosts.push(host);
-            }
-          }
-
-          if (needsUpdating) {
-            const update: PutOutputRequest['body'] = {
-              ...(output as PutOutputRequest['body']), // cast needed to quite TS - looks like the types for Output in fleet differ a bit between create/update
-              hosts: updatedHosts,
-            };
-
-            log.info(`Updating Fleet Settings for Output [${output.name} (${id})]`);
-
-            await kbnClient
-              .request<GetOneOutputResponse>({
-                method: 'PUT',
-                headers: {
-                  'elastic-api-version': API_VERSIONS.public.v1,
-                },
-                path: outputRoutesService.getUpdatePath(id),
-                body: update,
-              })
-              .catch(catchAxiosErrorFormatAndThrow);
-          }
-        }
-      }
-    }
-  } catch (error) {
-    log.error(dump(error));
-    log.indent(-4);
-    throw error;
-  }
-
-  log.indent(-4);
-};
-
-const addFleetServerHostToFleetSettings = async (
-  fleetServerHostUrl: string
-): Promise<FleetServerHost> => {
-  const { kbnClient, log } = getRuntimeServices();
-
-  log.info(`Updating Fleet with new fleet server host: ${fleetServerHostUrl}`);
-  log.indent(4);
-
-  try {
-    const exitingFleetServerHostUrl = await fetchFleetServerUrl(kbnClient);
-
-    const newFleetHostEntry: PostFleetServerHostsRequest['body'] = {
-      name: `Dev fleet server running on localhost`,
-      host_urls: [fleetServerHostUrl],
-      is_default: !exitingFleetServerHostUrl,
-    };
-
-    const { item } = await kbnClient
-      .request<PostFleetServerHostsResponse>({
-        method: 'POST',
-        path: fleetServerHostsRoutesService.getCreatePath(),
-        headers: {
-          'elastic-api-version': API_VERSIONS.public.v1,
-        },
-        body: newFleetHostEntry,
-      })
-      .catch(catchAxiosErrorFormatAndThrow)
-      .catch((error: FormattedAxiosError) => {
-        if (
-          error.response.status === 403 &&
-          ((error.response?.data?.message as string) ?? '').includes('disabled')
-        ) {
-          log.error(`Update failed with [403: ${error.response.data.message}].
-
-${chalk.red('Are you running this utility against a Serverless project?')}
-If so, the following entry should be added to your local
-'config/serverless.[project_type].dev.yml' (ex. 'serverless.security.dev.yml'):
-
-${chalk.bold(chalk.cyan('xpack.fleet.internal.fleetServerStandalone: false'))}
-
-`);
-        }
-
-        throw error;
-      })
-      .then((response) => response.data);
-
-    log.verbose(item);
-    log.indent(-4);
-
-    return item;
-  } catch (error) {
-    log.error(dump(error));
-    log.indent(-4);
-    throw error;
-  }
-};
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts
index 5e596c0c51a76..51fb0ea3b5148 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts
@@ -47,7 +47,6 @@ export const cli = () => {
         default: {
           kibanaUrl: 'http://127.0.0.1:5601',
           elasticUrl: 'http://127.0.0.1:9200',
-          fleetServerUrl: 'https://127.0.0.1:8220',
           username: 'elastic',
           password: 'changeme',
           version: '',
@@ -65,7 +64,6 @@ export const cli = () => {
         --password          Optional. Password associated with the username (Default: changeme)
         --kibanaUrl         Optional. The url to Kibana (Default: http://127.0.0.1:5601)
         --elasticUrl        Optional. The url to Elasticsearch (Default: http://127.0.0.1:9200)
-        --fleetServerUrl    Optional. The url to Fleet Server (Default: https://127.0.0.1:8220)
       `,
       },
     }
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts
index 18ef51a35bcca..c851b6ee34dbe 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts
@@ -5,18 +5,23 @@
  * 2.0.
  */
 
-import { runFleetServerIfNeeded } from './fleet_server';
-import { startRuntimeServices, stopRuntimeServices } from './runtime';
+import { getRuntimeServices, startRuntimeServices, stopRuntimeServices } from './runtime';
 import { checkDependencies } from './pre_check';
 import { enrollEndpointHost } from './elastic_endpoint';
 import type { StartRuntimeServicesOptions } from './types';
+import { startFleetServerIfNecessary } from '../common/fleet_server/fleet_server_services';
 
 export const setupAll = async (options: StartRuntimeServicesOptions) => {
   await startRuntimeServices(options);
 
+  const { kbnClient, log } = getRuntimeServices();
+
   await checkDependencies();
 
-  await runFleetServerIfNeeded();
+  await startFleetServerIfNecessary({
+    kbnClient,
+    logger: log,
+  });
 
   await enrollEndpointHost();
 
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts
index a5aec7a52aec9..3fad8bf0223bb 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts
@@ -7,27 +7,37 @@
 
 import type { RunFn } from '@kbn/dev-cli-runner';
 import { run } from '@kbn/dev-cli-runner';
-import { userInfo } from 'os';
 import { ok } from 'assert';
+import {
+  isFleetServerRunning,
+  startFleetServer,
+} from '../common/fleet_server/fleet_server_services';
+import type { HostVm } from '../common/types';
 import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils';
 import {
   addSentinelOneIntegrationToAgentPolicy,
+  DEFAULT_AGENTLESS_INTEGRATIONS_AGENT_POLICY_NAME,
+  enrollHostVmWithFleet,
+  fetchAgentPolicy,
   getOrCreateDefaultAgentPolicy,
 } from '../common/fleet_services';
 import { installSentinelOneAgent, S1Client } from './common';
-import { createVm } from '../common/vm_services';
-import { createRuntimeServices } from '../common/stack_services';
+import { createVm, generateVmName, getMultipassVmCountNotice } from '../common/vm_services';
+import { createKbnClient } from '../common/stack_services';
 
 export const cli = async () => {
   // TODO:PT add support for CPU, Disk and Memory input args
 
   return run(runCli, {
-    description:
-      'Creates a new VM and runs both SentinelOne agent and elastic agent with the SentinelOne integration',
+    description: `Sets up the kibana system so that SentinelOne hosts data can be be streamed to Elasticsearch.
+It will first setup a host VM that runs the SentinelOne agent on it. This VM will ensure that data is being
+created in SentinelOne.
+It will then also setup a second VM (if necessary) that runs Elastic Agent along with the SentinelOne integration
+policy (an agent-less integration) - this is the process that then connects to the SentinelOne management
+console and pushes the data to Elasticsearch.`,
     flags: {
       string: [
         'kibanaUrl',
-        'elasticUrl',
         'username',
         'password',
         'version',
@@ -36,29 +46,28 @@ export const cli = async () => {
         's1ApiToken',
         'vmName',
       ],
-      boolean: ['force'],
+      boolean: ['forceFleetServer'],
       default: {
         kibanaUrl: 'http://127.0.0.1:5601',
-        elasticUrl: 'http://127.0.0.1:9200',
         username: 'elastic',
         password: 'changeme',
-        version: '',
         policy: '',
-        force: false,
       },
       help: `
       --s1Url             Required. The base URL for SentinelOne management console.
                           Ex: https://usea1-partners.sentinelone.net (valid as of Oct. 2023)
       --s1ApiToken        Required. The API token for SentinelOne
-      --vmName            Optional. The name for the VM
+      --vmName            Optional. The name for the VM.
+                          Default: [current login user name]-sentinelone-[unique number]
       --policy            Optional. The UUID of the Fleet Agent Policy that should be used to setup
                           the SentinelOne Integration
                           Default: re-uses existing dev policy (if found) or creates a new one
+      --forceFleetServer  Optional. If fleet server should be started/configured even if it seems
+                          like it is already setup.
       --username          Optional. User name to be used for auth against elasticsearch and
                           kibana (Default: elastic).
       --password          Optional. Password associated with the username (Default: changeme)
       --kibanaUrl         Optional. The url to Kibana (Default: http://127.0.0.1:5601)
-      --elasticUrl        Optional. The url to Elasticsearch (Default: http://127.0.0.1:9200)
 `,
     },
   });
@@ -68,38 +77,24 @@ const runCli: RunFn = async ({ log, flags }) => {
   const username = flags.username as string;
   const password = flags.password as string;
   const kibanaUrl = flags.kibanaUrl as string;
-  const elasticUrl = flags.elasticUrl as string;
   const s1Url = flags.s1Url as string;
   const s1ApiToken = flags.s1ApiToken as string;
   const policy = flags.policy as string;
-
-  createToolingLogger.defaultLogLevel = flags.verbose
-    ? 'verbose'
-    : flags.debug
-    ? 'debug'
-    : flags.silent
-    ? 'silent'
-    : flags.quiet
-    ? 'error'
-    : 'info';
-
+  const forceFleetServer = flags.forceFleetServer as boolean;
   const getRequiredArgMessage = (argName: string) => `${argName} argument is required`;
 
+  createToolingLogger.setDefaultLogLevelFromCliFlags(flags);
+
   ok(s1Url, getRequiredArgMessage('s1Url'));
   ok(s1ApiToken, getRequiredArgMessage('s1ApiToken'));
 
-  const vmName =
-    (flags.vmName as string) ||
-    `${userInfo().username.toLowerCase().replaceAll('.', '-')}-sentinelone-${Math.random()
-      .toString()
-      .substring(2, 6)}`;
+  const vmName = (flags.vmName as string) || generateVmName('sentinelone');
   const s1Client = new S1Client({ url: s1Url, apiToken: s1ApiToken, log });
-  const { kbnClient } = await createRuntimeServices({
-    kibanaUrl,
-    elasticsearchUrl: elasticUrl,
+  const kbnClient = createKbnClient({
+    log,
+    url: kibanaUrl,
     username,
     password,
-    log,
   });
 
   const hostVm = await createVm({
@@ -116,7 +111,17 @@ const runCli: RunFn = async ({ log, flags }) => {
     s1Client,
   });
 
-  const agentPolicyId = policy || (await getOrCreateDefaultAgentPolicy({ kbnClient, log })).id;
+  const {
+    id: agentPolicyId,
+    agents = 0,
+    name: agentPolicyName,
+  } = policy
+    ? await fetchAgentPolicy(kbnClient, policy)
+    : await getOrCreateDefaultAgentPolicy({
+        kbnClient,
+        log,
+        policyName: DEFAULT_AGENTLESS_INTEGRATIONS_AGENT_POLICY_NAME,
+      });
 
   await addSentinelOneIntegrationToAgentPolicy({
     kbnClient,
@@ -126,10 +131,42 @@ const runCli: RunFn = async ({ log, flags }) => {
     apiToken: s1ApiToken,
   });
 
+  let agentPolicyVm: HostVm | undefined;
+
+  // If no agents are running against the given Agent policy for agentless integrations, then add one now
+  if (!agents) {
+    log.info(`Creating VM and enrolling it with Fleet using policy [${agentPolicyName}]`);
+
+    agentPolicyVm = await createVm({
+      type: 'multipass',
+      name: generateVmName('agentless-integrations'),
+    });
+
+    if (forceFleetServer || !(await isFleetServerRunning(kbnClient, log))) {
+      await startFleetServer({
+        kbnClient,
+        logger: log,
+        force: forceFleetServer,
+      });
+    }
+
+    await enrollHostVmWithFleet({
+      hostVm: agentPolicyVm,
+      kbnClient,
+      log,
+      agentPolicyId,
+    });
+  } else {
+    log.info(
+      `No host VM created for Fleet agent policy [${agentPolicyName}]. It already shows to have [${agents}] enrolled`
+    );
+  }
+
   log.info(`Done!
 
 ${hostVm.info()}
-
+${agentPolicyVm ? `${agentPolicyVm.info()}\n` : ''}
+${await getMultipassVmCountNotice(2)}
 SentinelOne Agent Status:
 ${s1Info.status}
 `);
diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts
index b7cfabb2bc937..b5ab801c3fa21 100644
--- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts
+++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts
@@ -10,7 +10,6 @@ import yargs from 'yargs';
 import _ from 'lodash';
 import globby from 'globby';
 import pMap from 'p-map';
-import { ToolingLog } from '@kbn/tooling-log';
 import { withProcRunner } from '@kbn/dev-proc-runner';
 import cypress from 'cypress';
 import { findChangedFiles } from 'find-cypress-specs';
@@ -27,18 +26,18 @@ import {
 
 import { createFailError } from '@kbn/dev-cli-errors';
 import pRetry from 'p-retry';
+import { prefixedOutputLogger } from '../endpoint/common/utils';
+import { createToolingLogger } from '../../common/endpoint/data_loaders/utils';
+import { createKbnClient } from '../endpoint/common/stack_services';
+import type { StartedFleetServer } from '../endpoint/common/fleet_server/fleet_server_services';
+import { startFleetServer } from '../endpoint/common/fleet_server/fleet_server_services';
 import { renderSummaryTable } from './print_run';
 import { parseTestFileConfig, retrieveIntegrations } from './utils';
 import { getFTRConfig } from './get_ftr_config';
 
 export const cli = () => {
   run(
-    async () => {
-      const log = new ToolingLog({
-        level: 'info',
-        writeTo: process.stdout,
-      });
-
+    async ({ log: _cliLogger }) => {
       const { argv } = yargs(process.argv.slice(2))
         .coerce('configFile', (arg) => (_.isArray(arg) ? _.last(arg) : arg))
         .coerce('spec', (arg) => (_.isArray(arg) ? _.last(arg) : arg))
@@ -55,7 +54,7 @@ export const cli = () => {
         )
         .boolean('inspect');
 
-      log.info(`
+      _cliLogger.info(`
 ----------------------------------------------
 Script arguments:
 ----------------------------------------------
@@ -66,10 +65,15 @@ ${JSON.stringify(argv, null, 2)}
 `);
 
       const isOpen = argv._.includes('open');
-
       const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string;
       const cypressConfigFile = await import(cypressConfigFilePath);
 
+      if (cypressConfigFile.env?.TOOLING_LOG_LEVEL) {
+        createToolingLogger.defaultLogLevel = cypressConfigFile.env.TOOLING_LOG_LEVEL;
+      }
+
+      const log = prefixedOutputLogger('cy.parallel()', createToolingLogger());
+
       log.info(`
 ----------------------------------------------
 Cypress config for file: ${cypressConfigFilePath}:
@@ -234,6 +238,34 @@ ${JSON.stringify(cypressConfigFile, null, 2)}
               isOpen,
             });
 
+            const createUrlFromFtrConfig = (
+              type: 'elasticsearch' | 'kibana' | 'fleetserver',
+              withAuth: boolean = false
+            ): string => {
+              const getKeyPath = (keyPath: string = ''): string => {
+                return `servers.${type}${keyPath ? `.${keyPath}` : ''}`;
+              };
+
+              if (!config.get(getKeyPath())) {
+                throw new Error(`Unable to create URL for ${type}. Not found in FTR config at `);
+              }
+
+              const url = new URL('http://localhost');
+
+              url.port = config.get(getKeyPath('port'));
+              url.protocol = config.get(getKeyPath('protocol'));
+              url.hostname = config.get(getKeyPath('hostname'));
+
+              if (withAuth) {
+                url.username = config.get(getKeyPath('username'));
+                url.password = config.get(getKeyPath('password'));
+              }
+
+              return url.toString().replace(/\/$/, '');
+            };
+
+            const baseUrl = createUrlFromFtrConfig('kibana');
+
             log.info(`
 ----------------------------------------------
 Cypress FTR setup for file: ${filePath}:
@@ -294,6 +326,31 @@ ${JSON.stringify(
               inspect: argv.inspect,
             });
 
+            // Setup fleet if Cypress config requires it
+            let fleetServer: void | StartedFleetServer;
+            if (cypressConfigFile.env?.WITH_FLEET_SERVER) {
+              log.info(`Setting up fleet-server for this Cypress config`);
+
+              const kbnClient = createKbnClient({
+                url: baseUrl,
+                username: config.get('servers.kibana.username'),
+                password: config.get('servers.kibana.password'),
+                log,
+              });
+
+              fleetServer = await startFleetServer({
+                kbnClient,
+                logger: log,
+                port:
+                  fleetServerPort ?? config.has('servers.fleetserver.port')
+                    ? (config.get('servers.fleetserver.port') as number)
+                    : undefined,
+                // `force` is needed to ensure that any currently running fleet server (perhaps left
+                // over from an interrupted run) is killed and a new one restarted
+                force: true,
+              });
+            }
+
             await providers.loadAll();
 
             const functionalTestRunner = new FunctionalTestRunner(
@@ -302,34 +359,6 @@ ${JSON.stringify(
               EsVersion.getDefault()
             );
 
-            const createUrlFromFtrConfig = (
-              type: 'elasticsearch' | 'kibana' | 'fleetserver',
-              withAuth: boolean = false
-            ): string => {
-              const getKeyPath = (keyPath: string = ''): string => {
-                return `servers.${type}${keyPath ? `.${keyPath}` : ''}`;
-              };
-
-              if (!config.get(getKeyPath())) {
-                throw new Error(`Unable to create URL for ${type}. Not found in FTR config at `);
-              }
-
-              const url = new URL('http://localhost');
-
-              url.port = config.get(getKeyPath('port'));
-              url.protocol = config.get(getKeyPath('protocol'));
-              url.hostname = config.get(getKeyPath('hostname'));
-
-              if (withAuth) {
-                url.username = config.get(getKeyPath('username'));
-                url.password = config.get(getKeyPath('password'));
-              }
-
-              return url.toString().replace(/\/$/, '');
-            };
-
-            const baseUrl = createUrlFromFtrConfig('kibana');
-
             const ftrEnv = await pRetry(() => functionalTestRunner.run(abortCtrl.signal), {
               retries: 1,
             });
@@ -408,6 +437,10 @@ ${JSON.stringify(cyCustomEnv, null, 2)}
               }
             }
 
+            if (fleetServer) {
+              await fleetServer.stop();
+            }
+
             await procs.stop('kibana');
             await shutdownEs();
             cleanupServerPorts({ esPort, kibanaPort, fleetServerPort });
diff --git a/x-pack/test/osquery_cypress/agent.ts b/x-pack/test/osquery_cypress/agent.ts
index cd7969703c483..63429fb4e5b7e 100644
--- a/x-pack/test/osquery_cypress/agent.ts
+++ b/x-pack/test/osquery_cypress/agent.ts
@@ -8,7 +8,10 @@
 import execa from 'execa';
 import { ToolingLog } from '@kbn/tooling-log';
 import { KbnClient } from '@kbn/test';
-import { waitForHostToEnroll } from '@kbn/security-solution-plugin/scripts/endpoint/common/fleet_services';
+import {
+  fetchFleetServerUrl,
+  waitForHostToEnroll,
+} from '@kbn/security-solution-plugin/scripts/endpoint/common/fleet_services';
 
 import { getLatestVersion } from './artifact_manager';
 import { Manager } from './resource_manager';
@@ -40,6 +43,9 @@ export class AgentManager extends Manager {
     const artifact = `docker.elastic.co/beats/elastic-agent:${await getLatestVersion()}`;
     this.log.info(artifact);
     const containerName = generateRandomString(12);
+    const fleetServerUrl =
+      (await fetchFleetServerUrl(this.kbnClient)) ??
+      `https://host.docker.internal:${this.fleetServerPort}`;
 
     const dockerArgs = [
       'run',
@@ -55,7 +61,7 @@ export class AgentManager extends Manager {
       '--env',
       'FLEET_ENROLL=1',
       '--env',
-      `FLEET_URL=https://host.docker.internal:${this.fleetServerPort}`,
+      `FLEET_URL=${fleetServerUrl}`,
       '--env',
       `FLEET_ENROLLMENT_TOKEN=${this.policyEnrollmentKey}`,
       '--env',
@@ -64,8 +70,12 @@ export class AgentManager extends Manager {
       artifact,
     ];
 
-    this.agentContainerId = (await execa('docker', dockerArgs)).stdout;
-    await waitForHostToEnroll(this.kbnClient, containerName);
+    const startedContainer = await execa('docker', dockerArgs);
+
+    this.log.info(`agent docker container started:\n${JSON.stringify(startedContainer, null, 2)}`);
+
+    this.agentContainerId = startedContainer.stdout;
+    await waitForHostToEnroll(this.kbnClient, this.log, containerName, 240000);
   }
 
   public cleanup() {
diff --git a/x-pack/test/osquery_cypress/fleet_server.ts b/x-pack/test/osquery_cypress/fleet_server.ts
index f1fa7a174ae37..264bf9f869891 100644
--- a/x-pack/test/osquery_cypress/fleet_server.ts
+++ b/x-pack/test/osquery_cypress/fleet_server.ts
@@ -6,40 +6,52 @@
  */
 
 import { ToolingLog } from '@kbn/tooling-log';
-import execa from 'execa';
-import { runFleetServerIfNeeded } from '@kbn/security-solution-plugin/scripts/endpoint/endpoint_agent_runner/fleet_server';
+import { KbnClient } from '@kbn/test';
+import {
+  StartedFleetServer,
+  startFleetServer,
+} from '@kbn/security-solution-plugin/scripts/endpoint/common/fleet_server/fleet_server_services';
 import { Manager } from './resource_manager';
+import { getLatestAvailableAgentVersion } from './utils';
 
 export class FleetManager extends Manager {
-  private fleetContainerId?: string;
-  private log: ToolingLog;
+  private fleetServer: StartedFleetServer | undefined = undefined;
 
-  constructor(log: ToolingLog) {
+  constructor(
+    private readonly kbnClient: KbnClient,
+    private readonly log: ToolingLog,
+    private readonly port: number
+  ) {
     super();
-    this.log = log;
   }
 
   public async setup(): Promise<void> {
-    const fleetServerConfig = await runFleetServerIfNeeded();
-
-    if (!fleetServerConfig) {
-      throw new Error('Fleet server config not found');
+    const version = await getLatestAvailableAgentVersion(this.kbnClient);
+    this.fleetServer = await startFleetServer({
+      kbnClient: this.kbnClient,
+      logger: this.log,
+      port: this.port,
+      force: true,
+      version,
+    });
+
+    if (!this.fleetServer) {
+      throw new Error('Fleet server was not started');
     }
-
-    this.fleetContainerId = fleetServerConfig.fleetServerContainerId;
   }
 
   public cleanup() {
     super.cleanup();
 
     this.log.info('Removing old fleet config');
-    if (this.fleetContainerId) {
+    if (this.fleetServer) {
       this.log.info('Closing fleet process');
 
       try {
-        execa.sync('docker', ['kill', this.fleetContainerId]);
+        this.fleetServer.stopNow();
       } catch (err) {
         this.log.error('Error closing fleet server process');
+        this.log.verbose(err);
       }
       this.log.info('Fleet server process closed');
     }
diff --git a/x-pack/test/osquery_cypress/runner.ts b/x-pack/test/osquery_cypress/runner.ts
index 7e7ac5e652fd7..486305a41cfc0 100644
--- a/x-pack/test/osquery_cypress/runner.ts
+++ b/x-pack/test/osquery_cypress/runner.ts
@@ -8,45 +8,30 @@
 import Url from 'url';
 
 import { verifyDockerInstalled, maybeCreateDockerNetwork } from '@kbn/es';
-import { startRuntimeServices } from '@kbn/security-solution-plugin/scripts/endpoint/endpoint_agent_runner/runtime';
+import { createToolingLogger } from '@kbn/security-solution-plugin/common/endpoint/data_loaders/utils';
+import { prefixedOutputLogger } from '@kbn/security-solution-plugin/scripts/endpoint/common/utils';
 import { FtrProviderContext } from './ftr_provider_context';
 
 import { AgentManager } from './agent';
 import { FleetManager } from './fleet_server';
-import { createAgentPolicy, getLatestAvailableAgentVersion } from './utils';
+import { createAgentPolicy } from './utils';
 
 async function setupFleetAgent({ getService }: FtrProviderContext) {
-  const log = getService('log');
+  // Un-comment line below to set tooling log levels to verbose. Useful when debugging
+  // createToolingLogger.defaultLogLevel = 'verbose';
+
+  // const log = getService('log');
   const config = getService('config');
   const kbnClient = getService('kibanaServer');
 
-  const elasticUrl = Url.format(config.get('servers.elasticsearch'));
-  const kibanaUrl = Url.format(config.get('servers.kibana'));
-  const fleetServerUrl = Url.format({
-    protocol: config.get('servers.kibana.protocol'),
-    hostname: config.get('servers.kibana.hostname'),
-    port: config.get('servers.fleetserver.port'),
-  });
-  const username = config.get('servers.elasticsearch.username');
-  const password = config.get('servers.elasticsearch.password');
+  const log = prefixedOutputLogger('cy.OSQuery', createToolingLogger());
 
   await verifyDockerInstalled(log);
   await maybeCreateDockerNetwork(log);
+  await new FleetManager(kbnClient, log, config.get('servers.fleetserver.port')).setup();
 
-  await startRuntimeServices({
-    log,
-    elasticUrl,
-    kibanaUrl,
-    fleetServerUrl,
-    username,
-    password,
-    version: await getLatestAvailableAgentVersion(kbnClient),
-  });
-
-  await new FleetManager(log).setup();
-
-  const policyEnrollmentKey = await createAgentPolicy(kbnClient, log, 'Default policy');
-  const policyEnrollmentKeyTwo = await createAgentPolicy(kbnClient, log, 'Osquery policy');
+  const policyEnrollmentKey = await createAgentPolicy(kbnClient, log, `Default policy`);
+  const policyEnrollmentKeyTwo = await createAgentPolicy(kbnClient, log, `Osquery policy`);
 
   const port = config.get('servers.fleetserver.port');
 

From 2365f518cad487cc4042b00aa4c6401cca0552e5 Mon Sep 17 00:00:00 2001
From: JD Kurma <JDKurma@gmail.com>
Date: Mon, 13 Nov 2023 14:15:39 -0600
Subject: [PATCH 136/147] [Security Solution] Remove Logs (#171119)

## Summary

Remove endpoint metadata task logs

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
---
 .../security_solution/server/lib/telemetry/sender.ts  |  2 +-
 .../server/lib/telemetry/tasks/endpoint.ts            | 11 -----------
 .../server/lib/telemetry/tasks/security_lists.ts      |  5 -----
 .../server/lib/telemetry/tasks/timelines.ts           |  1 -
 4 files changed, 1 insertion(+), 18 deletions(-)

diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts
index 848f66c3aaf0a..39af813916cdd 100644
--- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts
+++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts
@@ -409,7 +409,7 @@ export class TelemetryEventsSender implements ITelemetryEventsSender {
         counterType: 'docs_sent',
         incrementBy: events.length,
       });
-      tlog(this.logger, `Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}`);
+      tlog(this.logger, `Events sent!. Response: ${resp.status}`);
     } catch (err) {
       tlog(this.logger, `Error sending events: ${err}`);
       const errorStatus = err?.response?.status;
diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts
index d3c40b29e218f..2c5eabe612c09 100644
--- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts
+++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts
@@ -167,12 +167,10 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) {
             policyInfo !== undefined &&
             !endpointPolicyCache.has(policyInfo)
           ) {
-            tlog(logger, `policy info exists as ${policyInfo}`);
             const agentPolicy = await receiver.fetchPolicyConfigs(policyInfo);
             const packagePolicies = agentPolicy?.package_policies;
 
             if (packagePolicies !== undefined && isPackagePolicyList(packagePolicies)) {
-              tlog(logger, `package policy exists as ${JSON.stringify(packagePolicies)}`);
               packagePolicies
                 .map((pPolicy) => pPolicy as PolicyData)
                 .forEach((pPolicy) => {
@@ -221,11 +219,6 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) {
             )
           : new Map<string, EndpointPolicyResponseDocument>();
 
-        tlog(
-          logger,
-          `policy responses exists as ${JSON.stringify(Object.fromEntries(policyResponses))}`
-        );
-
         /** STAGE 4 - Fetch Endpoint Agent Metadata
          *
          * Reads Endpoint Agent metadata out of the `.ds-metrics-endpoint.metadata` data stream
@@ -254,10 +247,6 @@ export function createTelemetryEndpointTaskConfig(maxTelemetryBatch: number) {
             },
             new Map<string, EndpointMetadataDocument>()
           );
-        tlog(
-          logger,
-          `endpoint metadata exists as ${JSON.stringify(Object.fromEntries(endpointMetadata))}`
-        );
         /** STAGE 5 - Create the telemetry log records
          *
          * Iterates through the endpoint metrics documents at STAGE 1 and joins them together
diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts
index 68a6fb643e1ba..04312e8843e28 100644
--- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts
+++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts
@@ -21,7 +21,6 @@ import type { ESClusterInfo, ESLicense } from '../types';
 import {
   batchTelemetryRecords,
   templateExceptionList,
-  tlog,
   createTaskMetric,
   formatValueListMetaData,
 } from '../helpers';
@@ -72,7 +71,6 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number)
             licenseInfo,
             LIST_TRUSTED_APPLICATION
           );
-          tlog(logger, `Trusted Apps: ${trustedAppsJson}`);
           count += trustedAppsJson.length;
 
           const batches = batchTelemetryRecords(trustedAppsJson, maxTelemetryBatch);
@@ -91,7 +89,6 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number)
             licenseInfo,
             LIST_ENDPOINT_EXCEPTION
           );
-          tlog(logger, `EP Exceptions: ${epExceptionsJson}`);
           count += epExceptionsJson.length;
 
           const batches = batchTelemetryRecords(epExceptionsJson, maxTelemetryBatch);
@@ -110,7 +107,6 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number)
             licenseInfo,
             LIST_ENDPOINT_EVENT_FILTER
           );
-          tlog(logger, `EP Event Filters: ${epFiltersJson}`);
           count += epFiltersJson.length;
 
           const batches = batchTelemetryRecords(epFiltersJson, maxTelemetryBatch);
@@ -128,7 +124,6 @@ export function createTelemetrySecurityListTaskConfig(maxTelemetryBatch: number)
           clusterInfo,
           licenseInfo
         );
-        tlog(logger, `Value List Meta Data: ${JSON.stringify(valueListMetaData)}`);
         if (valueListMetaData?.total_list_count) {
           await sender.sendOnDemand(TELEMETRY_CHANNEL_LISTS, [valueListMetaData]);
         }
diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts
index b6f7a4426f0c6..bd50ffcd92817 100644
--- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts
+++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts
@@ -115,7 +115,6 @@ export function createTelemetryTimelineTaskConfig() {
           // Fetch event lineage
 
           const timelineEvents = await receiver.fetchTimelineEvents(nodeIds);
-          tlog(logger, `Timeline Events: ${JSON.stringify(timelineEvents)}`);
           const eventsStore = new Map<string, SafeEndpointEvent>();
           for (const event of timelineEvents.hits.hits) {
             const doc = event._source;

From af32b980a4ebb4ab5f8548e5ab386a7eda056846 Mon Sep 17 00:00:00 2001
From: Philippe Oberti <philippe.oberti@elastic.co>
Date: Mon, 13 Nov 2023 17:10:14 -0600
Subject: [PATCH 137/147] [Security Solution] unskip tests in expandable flyout
 right panel overview (#170282)

---
 .../flyout/document_details/left/test_ids.ts  |   8 +-
 .../right/components/test_ids.ts              |   8 +-
 .../components/visualizations_section.tsx     |   4 +-
 ...ert_details_right_panel_overview_tab.cy.ts | 322 +++++++++---------
 .../alert_details_left_panel.ts               |   6 +
 .../alert_details_right_panel_overview_tab.ts |  19 --
 .../screens/expandable_flyout/common.ts       |   2 +
 .../alert_details_right_panel_overview_tab.ts |  48 +--
 .../cypress/tasks/expandable_flyout/common.ts |   4 +
 9 files changed, 214 insertions(+), 207 deletions(-)

diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts
index 3c0ba8b2a1c0c..beb7971b3a861 100644
--- a/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts
+++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts
@@ -7,7 +7,7 @@
 
 import { PREFIX } from '../../shared/test_ids';
 
-export const VISUALIZE_TAB_TEST_ID = `${PREFIX}FlyoutVisualizeTab` as const;
-export const INSIGHTS_TAB_TEST_ID = `${PREFIX}FlyoutInsightsTab` as const;
-export const INVESTIGATION_TAB_TEST_ID = `${PREFIX}FlyoutInvestigationTab` as const;
-export const RESPONSE_TAB_TEST_ID = `${PREFIX}FlyoutResponseTab` as const;
+export const VISUALIZE_TAB_TEST_ID = `${PREFIX}VisualizeTab` as const;
+export const INSIGHTS_TAB_TEST_ID = `${PREFIX}InsightsTab` as const;
+export const INVESTIGATION_TAB_TEST_ID = `${PREFIX}InvestigationTab` as const;
+export const RESPONSE_TAB_TEST_ID = `${PREFIX}ResponseTab` as const;
diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts
index 08c20e38f0e28..1140e8952aaff 100644
--- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts
+++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts
@@ -17,7 +17,6 @@ export const SEVERITY_VALUE_TEST_ID = 'severity' as const;
 export const RISK_SCORE_TITLE_TEST_ID = `${FLYOUT_HEADER_TEST_ID}RiskScoreTitle` as const;
 export const RISK_SCORE_VALUE_TEST_ID = `${FLYOUT_HEADER_TEST_ID}RiskScoreValue` as const;
 export const SHARE_BUTTON_TEST_ID = `${FLYOUT_HEADER_TEST_ID}ShareButton` as const;
-export const CHAT_BUTTON_TEST_ID = 'newChatById' as const;
 
 /* About section */
 
@@ -125,15 +124,12 @@ export const PREVALENCE_TEST_ID = `${PREFIX}InsightsPrevalence` as const;
 
 /* Visualizations section */
 
-const VISUALIZATIONS_TEST_ID = `${PREFIX}Visualizations` as const;
-export const VISUALIZATIONS_SECTION_TEST_ID = `${VISUALIZATIONS_TEST_ID}Title` as const;
-export const VISUALIZATIONS_SECTION_HEADER_TEST_ID =
-  `${VISUALIZATIONS_TEST_ID}TitleHeader` as const;
+export const VISUALIZATIONS_TEST_ID = `${PREFIX}Visualizations` as const;
+export const VISUALIZATIONS_SECTION_HEADER_TEST_ID = `${VISUALIZATIONS_TEST_ID}Header` as const;
 export const ANALYZER_PREVIEW_TEST_ID = `${PREFIX}AnalyzerPreview` as const;
 export const ANALYZER_PREVIEW_LOADING_TEST_ID = `${ANALYZER_PREVIEW_TEST_ID}Loading` as const;
 
 export const SESSION_PREVIEW_TEST_ID = `${PREFIX}SessionPreview` as const;
-export const SESSION_PREVIEW_UPSELL_TEST_ID = `${SESSION_PREVIEW_TEST_ID}UpSell` as const;
 
 /* Response section */
 
diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx
index 4b53911bea590..000e1c11528cc 100644
--- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx
+++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx
@@ -11,7 +11,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
 import { AnalyzerPreviewContainer } from './analyzer_preview_container';
 import { SessionPreviewContainer } from './session_preview_container';
 import { ExpandableSection } from './expandable_section';
-import { VISUALIZATIONS_SECTION_TEST_ID } from './test_ids';
+import { VISUALIZATIONS_TEST_ID } from './test_ids';
 
 export interface VisualizationsSectionProps {
   /**
@@ -35,7 +35,7 @@ export const VisualizationsSection: React.FC<VisualizationsSectionProps> = ({
           defaultMessage="Visualizations"
         />
       }
-      data-test-subj={VISUALIZATIONS_SECTION_TEST_ID}
+      data-test-subj={VISUALIZATIONS_TEST_ID}
     >
       <SessionPreviewContainer />
 
diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts
index bea868ac48828..33bcb93caacf0 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts
@@ -7,13 +7,11 @@
 
 import { deleteAlertsAndRules } from '../../../../tasks/common';
 import { collapseDocumentDetailsExpandableFlyoutLeftSection } from '../../../../tasks/expandable_flyout/alert_details_right_panel';
-import { DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB_CONTENT } from '../../../../screens/expandable_flyout/alert_details_left_panel_investigation_tab';
 import {
   createNewCaseFromExpandableFlyout,
   expandFirstAlertExpandableFlyout,
 } from '../../../../tasks/expandable_flyout/common';
 import {
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_PREVIEW_CONTAINER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS,
@@ -21,21 +19,16 @@ import {
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITLE,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_ANCESTRY,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SESSION,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_CASES,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_VALUES,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON,
-  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_CONTENT,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_DETAILS,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_TITLE,
@@ -45,6 +38,7 @@ import {
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SAME_SOURCE_EVENT,
 } from '../../../../screens/expandable_flyout/alert_details_right_panel_overview_tab';
 import {
   navigateToCorrelationsDetails,
@@ -55,6 +49,9 @@ import {
   toggleOverviewTabInvestigationSection,
   toggleOverviewTabResponseSection,
   toggleOverviewTabVisualizationsSection,
+  navigateToEntitiesDetails,
+  navigateToThreatIntelligenceDetails,
+  navigateToResponseDetails,
 } from '../../../../tasks/expandable_flyout/alert_details_right_panel_overview_tab';
 import { login } from '../../../../tasks/login';
 import { visit } from '../../../../tasks/navigation';
@@ -63,10 +60,18 @@ import { getNewRule } from '../../../../objects/rule';
 import { ALERTS_URL } from '../../../../urls/navigation';
 import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
 import {
-  DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT,
+  DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS,
   DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS,
 } from '../../../../screens/expandable_flyout/alert_details_left_panel_entities_tab';
+import {
+  DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB,
+  DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB,
+  DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB,
+} from '../../../../screens/expandable_flyout/alert_details_left_panel';
+import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON } from '../../../../screens/expandable_flyout/alert_details_left_panel_correlations_tab';
+import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON } from '../../../../screens/expandable_flyout/alert_details_left_panel_threat_intelligence_tab';
+import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON } from '../../../../screens/expandable_flyout/alert_details_left_panel_prevalence_tab';
 
 describe(
   'Alert details expandable flyout right panel overview tab',
@@ -87,70 +92,73 @@ describe(
       it('should display about section', () => {
         cy.log('header and content');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER)
-          .should('be.visible')
-          .and('have.text', 'About');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_CONTENT).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER).should(
+          'have.text',
+          'About'
+        );
 
         cy.log('description');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE)
-          .should('be.visible')
-          .and('contain.text', 'Rule description');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE)
-          .should('be.visible')
-          .within(() => {
-            cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON)
-              .should('be.visible')
-              .and('have.text', 'Show rule summary');
-          });
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS)
-          .should('be.visible')
-          .and('have.text', rule.description);
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE).and(
+          'contain.text',
+          'Rule description'
+        );
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE).within(() => {
+          cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON).should(
+            'have.text',
+            'Show rule summary'
+          );
+        });
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS).should(
+          'have.text',
+          rule.description
+        );
 
         cy.log('reason');
 
         cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE)
-          .should('be.visible')
-          .and('contain.text', 'Alert reason')
+          .should('contain.text', 'Alert reason')
           .and('contain.text', 'Show full reason');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_DETAILS)
-          .should('be.visible')
-          .and('contain.text', rule.name);
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_DETAILS).should(
+          'contain.text',
+          rule.name
+        );
 
         cy.log('mitre attack');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_TITLE)
-          .should('be.visible')
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_TITLE).should(
+          'contain.text',
           // @ts-ignore
-          .and('contain.text', rule.threat[0].framework);
+          rule.threat[0].framework
+        );
 
         cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_DETAILS)
-          .should('be.visible')
           // @ts-ignore
-          .and('contain.text', rule.threat[0].technique[0].name)
+          .should('contain.text', rule.threat[0].technique[0].name)
           // @ts-ignore
           .and('contain.text', rule.threat[0].tactic.name);
       });
     });
 
-    // FLAKY: https://github.com/elastic/kibana/issues/168222
-    describe.skip('visualizations section', () => {
+    describe('visualizations section', () => {
       it('should display analyzer and session previews', () => {
         toggleOverviewTabAboutSection();
+        toggleOverviewTabInvestigationSection();
         toggleOverviewTabVisualizationsSection();
 
-        cy.log('analyzer graph preview');
+        cy.log('session view preview');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_PREVIEW_CONTAINER).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_PREVIEW_CONTAINER).should(
-          'be.visible'
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW_CONTAINER).should(
+          'contain.text',
+          'You can only view Linux session details if you’ve enabled the Include session data setting in your Elastic Defend integration policy. Refer to Enable Session View data(opens in a new tab or window) for more information.'
         );
 
-        cy.log('session view preview');
+        cy.log('analyzer graph preview');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW_CONTAINER).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW_CONTAINER).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ANALYZER_PREVIEW_CONTAINER).should(
+          'contain.text',
+          'zsh'
+        );
       });
     });
 
@@ -160,68 +168,69 @@ describe(
 
         cy.log('header and content');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER)
-          .should('be.visible')
-          .and('have.text', 'Investigation');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_CONTENT).should(
-          'be.visible'
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER).should(
+          'have.text',
+          'Investigation'
         );
 
         cy.log('investigation guide button');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON)
-          .should('be.visible')
-          .and('have.text', 'Show investigation guide');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON).should(
+          'have.text',
+          'Show investigation guide'
+        );
 
         cy.log('should navigate to left Investigation tab');
 
         clickInvestigationGuideButton();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB_CONTENT).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB_CONTENT).should('be.visible');
+
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB)
+          .should('have.text', 'Investigation')
+          .and('have.class', 'euiTab-isSelected');
 
         cy.log('highlighted fields section');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITLE)
-          .should('be.visible')
-          .and('have.text', 'Highlighted fields');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS).should(
-          'be.visible'
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITLE).should(
+          'have.text',
+          'Highlighted fields'
         );
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS).should('exist');
 
         cy.log('custom highlighted fields');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL)
-          .should('be.visible')
-          .and('contain.text', 'host.os.name');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL).should(
+          'contain.text',
+          'host.os.name'
+        );
         const customHighlightedField =
           DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL('Mac OS X');
-        cy.get(customHighlightedField).should('be.visible').and('have.text', 'Mac OS X');
+        cy.get(customHighlightedField).and('have.text', 'Mac OS X');
 
         cy.log('system defined highlighted fields');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL)
-          .should('be.visible')
-          .and('contain.text', 'host.name');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL).should(
+          'contain.text',
+          'host.name'
+        );
         const hostNameCell =
           DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL('siem-kibana');
-        cy.get(hostNameCell).should('be.visible').and('have.text', 'siem-kibana');
+        cy.get(hostNameCell).and('have.text', 'siem-kibana');
 
         cy.get(hostNameCell).click();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS).should('exist');
 
         collapseDocumentDetailsExpandableFlyoutLeftSection();
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL)
-          .should('be.visible')
-          .and('contain.text', 'user.name');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL).should(
+          'contain.text',
+          'user.name'
+        );
         const userNameCell =
           DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL('test');
-        cy.get(userNameCell).should('be.visible').and('have.text', 'test');
+        cy.get(userNameCell).should('have.text', 'test');
 
         cy.get(userNameCell).click();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS).should('exist');
       });
     });
 
@@ -233,18 +242,20 @@ describe(
 
         cy.log('header and content');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER)
-          .should('be.visible')
-          .and('have.text', 'Entities');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_CONTENT).should('be.visible');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).should(
+          'have.text',
+          'Entities'
+        );
 
         cy.log('should navigate to left panel Entities tab');
 
-        // TODO: skipping this section as Cypress can't seem to find the element (though it's in the DOM)
-        // navigateToEntitiesDetails();
-        // cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT).should('be.visible');
+        navigateToEntitiesDetails();
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB)
+          .should('have.text', 'Insights')
+          .and('have.class', 'euiTab-isSelected');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON)
+          .should('have.text', 'Entities')
+          .and('have.class', 'euiButtonGroupButton-isSelected');
       });
 
       it('should display threat intelligence section', () => {
@@ -254,40 +265,32 @@ describe(
 
         cy.log('header and content');
 
-        cy.get(
-          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER
-        ).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER)
-          .should('be.visible')
-          .and('have.text', 'Threat intelligence');
-        cy.get(
-          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_CONTENT
-        ).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_CONTENT)
-          .should('be.visible')
-          .within(() => {
-            // threat match detected
-            cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES)
-              .eq(0)
-              .should('be.visible')
-              .and('have.text', '0 threat matches detected'); // TODO work on getting proper IoC data to get proper data here
-
-            // field with threat enrichement
-            cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES)
-              .eq(1)
-              .should('be.visible')
-              .and('have.text', '0 fields enriched with threat intelligence'); // TODO work on getting proper IoC data to get proper data here
-          });
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER).should(
+          'have.text',
+          'Threat intelligence'
+        );
+
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES)
+          .eq(0)
+          .should('have.text', '0 threat matches detected'); // TODO work on getting proper IoC data to get proper data here
+
+        // field with threat enrichement
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES)
+          .eq(1)
+          .should('have.text', '0 fields enriched with threat intelligence'); // TODO work on getting proper IoC data to get proper data here
 
         cy.log('should navigate to left panel Threat Intelligence tab');
 
-        // TODO: skipping this section as Cypress can't seem to find the element (though it's in the DOM)
-        // navigateToThreatIntelligenceDetails();
-        // cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT).should('be.visible'); // TODO update when we can navigate to Threat Intelligence sub tab directly
+        navigateToThreatIntelligenceDetails();
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB)
+          .should('have.text', 'Insights')
+          .and('have.class', 'euiTab-isSelected');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON)
+          .should('have.text', 'Threat intelligence')
+          .and('have.class', 'euiButtonGroupButton-isSelected');
       });
 
-      // TODO: skipping this due to flakiness
-      it.skip('should display correlations section', () => {
+      it('should display correlations section', () => {
         cy.log('link the alert to a new case');
 
         createNewCaseFromExpandableFlyout();
@@ -298,67 +301,64 @@ describe(
 
         cy.log('header and content');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER)
-          .should('be.visible')
-          .and('have.text', 'Correlations');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT)
-          .should('be.visible')
-          .within(() => {
-            // cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_SUPPRESSED_ALERTS)
-            //   .should('be.visible')
-            //   .and('have.text', '1 suppressed alert'); // TODO populate rule with alert suppression
-            cy.get(
-              DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_ANCESTRY
-            )
-              .should('be.visible')
-              .and('have.text', '1 alert related by ancestry');
-            // cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SAME_SOURCE_EVENT)
-            //   .should('be.visible')
-            //   .and('have.text', '1 alert related by the same source event'); // TODO work on getting proper data to display some same source data here
-            cy.get(
-              DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SESSION
-            )
-              .should('be.visible')
-              .and('have.text', '1 alert related by session');
-            cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_CASES)
-              .should('be.visible')
-              .and('have.text', '1 related case');
-          });
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER).should(
+          'have.text',
+          'Correlations'
+        );
+        // cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_SUPPRESSED_ALERTS)
+        //   .should('be.visible')
+        //   .and('have.text', '1 suppressed alert'); // TODO populate rule with alert suppression
+        cy.get(
+          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_ANCESTRY
+        ).should('have.text', '1 alert related by ancestry');
+        cy.get(
+          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SAME_SOURCE_EVENT
+        ).should('have.text', '1 alert related by source event');
+        cy.get(
+          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_SESSION
+        ).should('have.text', '1 alert related by session');
+        cy.get(
+          DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_CASES
+        ).should('have.text', '1 related case');
 
         cy.log('should navigate to left panel Correlations tab');
 
         navigateToCorrelationsDetails();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT).should('be.visible'); // TODO update when we can navigate to Correlations sub tab directly
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB)
+          .should('have.text', 'Insights')
+          .and('have.class', 'euiTab-isSelected');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON)
+          .should('have.text', 'Correlations')
+          .and('have.class', 'euiButtonGroupButton-isSelected');
       });
 
       // TODO work on getting proper data to make the prevalence section work here
       //  we need to generate enough data to have at least one field with prevalence
-      it.skip('should display prevalence section', () => {
+      it('should display prevalence section', () => {
         toggleOverviewTabAboutSection();
         toggleOverviewTabInvestigationSection();
         toggleOverviewTabInsightsSection();
 
         cy.log('header and content');
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER)
-          .should('be.visible')
-          .and('have.text', 'Prevalence');
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_CONTENT).scrollIntoView();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_CONTENT)
-          .should('be.visible')
-          .within(() => {
-            cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_VALUES)
-              .should('be.visible')
-              .and('have.text', 'is uncommon');
-          });
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER).should(
+          'have.text',
+          'Prevalence'
+        );
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_CONTENT).should(
+          'have.text',
+          'No prevalence data available.'
+        );
 
         cy.log('should navigate to left panel Prevalence tab');
 
         navigateToPrevalenceDetails();
-        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT).should('be.visible'); // TODO update when we can navigate to Prevalence sub tab directly
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB)
+          .should('have.text', 'Insights')
+          .and('have.class', 'euiTab-isSelected');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON)
+          .should('have.text', 'Prevalence')
+          .and('have.class', 'euiButtonGroupButton-isSelected');
       });
     });
 
@@ -368,7 +368,15 @@ describe(
         toggleOverviewTabInvestigationSection();
         toggleOverviewTabResponseSection();
 
-        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).should('be.visible');
+        cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).should(
+          'have.text',
+          'Response'
+        );
+
+        navigateToResponseDetails();
+        cy.get(DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB)
+          .should('have.text', 'Response')
+          .and('have.class', 'euiTab-isSelected');
       });
     });
   }
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts
index 678ed9484fb00..5b8c8255dffee 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts
@@ -11,6 +11,8 @@ import {
 } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids';
 import {
   INSIGHTS_TAB_TEST_ID,
+  INVESTIGATION_TAB_TEST_ID,
+  RESPONSE_TAB_TEST_ID,
   VISUALIZE_TAB_TEST_ID,
 } from '@kbn/security-solution-plugin/public/flyout/document_details/left/test_ids';
 import { getDataTestSubjectSelector } from '../../helpers/common';
@@ -19,6 +21,10 @@ export const DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB =
   getDataTestSubjectSelector(INSIGHTS_TAB_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB =
   getDataTestSubjectSelector(VISUALIZE_TAB_TEST_ID);
+export const DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB =
+  getDataTestSubjectSelector(INVESTIGATION_TAB_TEST_ID);
+export const DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB =
+  getDataTestSubjectSelector(RESPONSE_TAB_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_BUTTON_GROUP = getDataTestSubjectSelector(
   VISUALIZE_TAB_BUTTON_GROUP_TEST_ID
 );
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts
index d288f259f9e2d..e7095ac71b236 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts
@@ -10,7 +10,6 @@ import {
   EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID,
 } from '@kbn/security-solution-plugin/public/flyout/shared/components/test_ids';
 import {
-  ABOUT_SECTION_CONTENT_TEST_ID,
   ABOUT_SECTION_HEADER_TEST_ID,
   DESCRIPTION_DETAILS_TEST_ID,
   DESCRIPTION_TITLE_TEST_ID,
@@ -19,7 +18,6 @@ import {
   HIGHLIGHTED_FIELDS_TITLE_TEST_ID,
   INSIGHTS_HEADER_TEST_ID,
   INVESTIGATION_GUIDE_BUTTON_TEST_ID,
-  INVESTIGATION_SECTION_CONTENT_TEST_ID,
   INVESTIGATION_SECTION_HEADER_TEST_ID,
   MITRE_ATTACK_DETAILS_TEST_ID,
   MITRE_ATTACK_TITLE_TEST_ID,
@@ -28,7 +26,6 @@ import {
   VISUALIZATIONS_SECTION_HEADER_TEST_ID,
   HIGHLIGHTED_FIELDS_CELL_TEST_ID,
   RESPONSE_SECTION_HEADER_TEST_ID,
-  RESPONSE_EMPTY_TEST_ID,
   INSIGHTS_THREAT_INTELLIGENCE_TEST_ID,
   CORRELATIONS_TEST_ID,
   PREVALENCE_TEST_ID,
@@ -51,8 +48,6 @@ import { getDataTestSubjectSelector } from '../../helpers/common';
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER = getDataTestSubjectSelector(
   ABOUT_SECTION_HEADER_TEST_ID
 );
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_CONTENT =
-  getDataTestSubjectSelector(ABOUT_SECTION_CONTENT_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE =
   getDataTestSubjectSelector(DESCRIPTION_TITLE_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS = getDataTestSubjectSelector(
@@ -77,8 +72,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_MITRE_ATTACK_DETAILS = getData
 
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER =
   getDataTestSubjectSelector(INVESTIGATION_SECTION_HEADER_TEST_ID);
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_CONTENT =
-  getDataTestSubjectSelector(INVESTIGATION_SECTION_CONTENT_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITLE =
   getDataTestSubjectSelector(HIGHLIGHTED_FIELDS_TITLE_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS =
@@ -100,8 +93,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_SECTION_HEADER =
 
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER =
   getDataTestSubjectSelector(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_ENTITIES_TEST_ID));
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_CONTENT =
-  getDataTestSubjectSelector(EXPANDABLE_PANEL_CONTENT_TEST_ID(INSIGHTS_ENTITIES_TEST_ID));
 
 /* Insights Threat Intelligence */
 
@@ -109,10 +100,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_H
   getDataTestSubjectSelector(
     EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_THREAT_INTELLIGENCE_TEST_ID)
   );
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_CONTENT =
-  getDataTestSubjectSelector(
-    EXPANDABLE_PANEL_CONTENT_TEST_ID(INSIGHTS_THREAT_INTELLIGENCE_TEST_ID)
-  );
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VALUES =
   getDataTestSubjectSelector(SUMMARY_ROW_VALUE_TEST_ID(INSIGHTS_THREAT_INTELLIGENCE_TEST_ID));
 
@@ -120,8 +107,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_V
 
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER =
   getDataTestSubjectSelector(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(CORRELATIONS_TEST_ID));
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT =
-  getDataTestSubjectSelector(EXPANDABLE_PANEL_CONTENT_TEST_ID(CORRELATIONS_TEST_ID));
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_SUPPRESSED_ALERTS =
   getDataTestSubjectSelector(SUMMARY_ROW_VALUE_TEST_ID(CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID));
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES_RELATED_ALERTS_BY_ANCESTRY =
@@ -145,8 +130,6 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER =
   getDataTestSubjectSelector(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(PREVALENCE_TEST_ID));
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_CONTENT =
   getDataTestSubjectSelector(EXPANDABLE_PANEL_CONTENT_TEST_ID(PREVALENCE_TEST_ID));
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_VALUES =
-  getDataTestSubjectSelector(PREVALENCE_TEST_ID);
 
 /* Visualization section */
 
@@ -163,5 +146,3 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_HEADER =
   getDataTestSubjectSelector(RESPONSE_SECTION_HEADER_TEST_ID);
 export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON =
   getDataTestSubjectSelector(RESPONSE_BUTTON_TEST_ID);
-export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_EMPTY_RESPONSE =
-  getDataTestSubjectSelector(RESPONSE_EMPTY_TEST_ID);
diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
index f3c0df5cf8f31..808a508044c5f 100644
--- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
+++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/common.ts
@@ -11,6 +11,8 @@ import {
 } from '../../helpers/common';
 
 export const VIEW_CASE_TOASTER_LINK = getDataTestSubjectSelector('toaster-content-case-view-link');
+export const VIEW_CASE_TOASTER_CLOSE_BUTTON = getDataTestSubjectSelector('toastCloseButton');
+export const CREATE_CASE_BUTTON = `[data-test-subj="createNewCaseBtn"]`;
 export const NEW_CASE_NAME_INPUT = `[data-test-subj="input"][aria-describedby="caseTitle"]`;
 export const NEW_CASE_DESCRIPTION_INPUT = getDataTestSubjectSelector('euiMarkdownEditorTextArea');
 export const EXISTING_CASE_SELECT_BUTTON =
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts
index 85b5b9f586e79..7c5a1006e8a3c 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts
@@ -5,13 +5,6 @@
  * 2.0.
  */
 
-import { EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/shared/components/test_ids';
-import {
-  CORRELATIONS_TEST_ID,
-  INSIGHTS_ENTITIES_TEST_ID,
-  PREVALENCE_TEST_ID,
-  INSIGHTS_THREAT_INTELLIGENCE_TEST_ID,
-} from '@kbn/security-solution-plugin/public/flyout/document_details/right/components/test_ids';
 import {
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER,
@@ -23,6 +16,11 @@ import {
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_HEADER,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE,
   DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_ALERT_REASON_PREVIEW_BUTTON,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER,
+  DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON,
 } from '../../screens/expandable_flyout/alert_details_right_panel_overview_tab';
 
 /* About section */
@@ -61,36 +59,40 @@ export const toggleOverviewTabInsightsSection = () => {
  * Click on the header in the right section, Insights, Entities
  */
 export const navigateToEntitiesDetails = () => {
-  const TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_ENTITIES_TEST_ID);
-  cy.get(TEST_ID).scrollIntoView();
-  cy.get(TEST_ID).should('be.visible').click();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).scrollIntoView();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER)
+    .should('be.visible')
+    .click();
 };
 
 /**
  * Click on the header in the right section, Insights, Threat Intelligence
  */
 export const navigateToThreatIntelligenceDetails = () => {
-  const TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_THREAT_INTELLIGENCE_TEST_ID);
-  cy.get(TEST_ID).scrollIntoView();
-  cy.get(TEST_ID).should('be.visible').click();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER).scrollIntoView();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER)
+    .should('be.visible')
+    .click();
 };
 
 /**
  * Click on the header in the right section, Insights, Correlations
  */
 export const navigateToCorrelationsDetails = () => {
-  const TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(CORRELATIONS_TEST_ID);
-  cy.get(TEST_ID).scrollIntoView();
-  cy.get(TEST_ID).should('be.visible').click();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER).scrollIntoView();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER)
+    .should('be.visible')
+    .click();
 };
 
 /**
  * Click on the view all button under the right section, Insights, Prevalence
  */
 export const navigateToPrevalenceDetails = () => {
-  const TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(PREVALENCE_TEST_ID);
-  cy.get(TEST_ID).scrollIntoView();
-  cy.get(TEST_ID).should('be.visible').click();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER).scrollIntoView();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER)
+    .should('be.visible')
+    .click();
 };
 
 /* Visualizations section */
@@ -150,3 +152,11 @@ export const clickAlertReasonButton = () => {
         .click();
     });
 };
+
+/**
+ * Click the Response button to open the response detail tab in the left section
+ */
+export const navigateToResponseDetails = () => {
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).scrollIntoView();
+  cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).should('be.visible').click();
+};
diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
index bc1d8e1cd8171..cd244f192bd52 100644
--- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
+++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts
@@ -11,6 +11,7 @@ import {
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_DESCRIPTION_INPUT,
   DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_NAME_INPUT,
+  VIEW_CASE_TOASTER_CLOSE_BUTTON,
   VIEW_CASE_TOASTER_LINK,
 } from '../../screens/expandable_flyout/common';
 import { openTakeActionButtonAndSelectItem } from './alert_details_right_panel';
@@ -33,4 +34,7 @@ export const createNewCaseFromExpandableFlyout = () => {
 
   // NOTE: wait for case link (case created)
   cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible');
+
+  // NOTE: close pop up to limit interaction with flyout behind
+  cy.get(VIEW_CASE_TOASTER_CLOSE_BUTTON).should('be.visible').click();
 };

From a37806a4f4c17e8fdee36b4ea9ada9a261437f16 Mon Sep 17 00:00:00 2001
From: "Christiane (Tina) Heiligers" <christiane.heiligers@elastic.co>
Date: Mon, 13 Nov 2023 16:11:56 -0700
Subject: [PATCH 138/147] [Core] Clean up excess logs (#171143)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
---
 .../src/environment_service.test.ts                    | 10 ----------
 .../src/environment_service.ts                         | 10 ----------
 2 files changed, 20 deletions(-)

diff --git a/packages/core/environment/core-environment-server-internal/src/environment_service.test.ts b/packages/core/environment/core-environment-server-internal/src/environment_service.test.ts
index d13f78609ed8d..42063306652f6 100644
--- a/packages/core/environment/core-environment-server-internal/src/environment_service.test.ts
+++ b/packages/core/environment/core-environment-server-internal/src/environment_service.test.ts
@@ -120,16 +120,6 @@ describe('UuidService', () => {
     });
 
     describe('process warnings', () => {
-      it('logs warnings coming from the process', async () => {
-        await service.preboot({ analytics });
-
-        const warning = new Error('something went wrong');
-        process.emit('warning', warning);
-
-        expect(logger.get('process').warn).toHaveBeenCalledTimes(1);
-        expect(logger.get('process').warn).toHaveBeenCalledWith(warning);
-      });
-
       it('does not log deprecation warnings', async () => {
         await service.preboot({ analytics });
 
diff --git a/packages/core/environment/core-environment-server-internal/src/environment_service.ts b/packages/core/environment/core-environment-server-internal/src/environment_service.ts
index cb09b1b587e74..26e328e2aad71 100644
--- a/packages/core/environment/core-environment-server-internal/src/environment_service.ts
+++ b/packages/core/environment/core-environment-server-internal/src/environment_service.ts
@@ -46,13 +46,11 @@ export type InternalEnvironmentServiceSetup = InternalEnvironmentServicePreboot;
 /** @internal */
 export class EnvironmentService {
   private readonly log: Logger;
-  private readonly processLogger: Logger;
   private readonly configService: IConfigService;
   private uuid: string = '';
 
   constructor(core: CoreContext) {
     this.log = core.logger.get('environment');
-    this.processLogger = core.logger.get('process');
     this.configService = core.configService;
   }
 
@@ -71,14 +69,6 @@ export class EnvironmentService {
       this.log.warn(`Detected an unhandled Promise rejection: ${message}`);
     });
 
-    process.on('warning', (warning) => {
-      // deprecation warnings do no reflect a current problem for the user and should be filtered out.
-      if (warning.name === 'DeprecationWarning') {
-        return;
-      }
-      this.processLogger.warn(warning);
-    });
-
     await createDataFolder({ pathConfig, logger: this.log });
     await writePidFile({ pidConfig, logger: this.log });
 

From b5b182621b901f2e584f2e35c813afe3d4325e6e Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Tue, 14 Nov 2023 01:15:50 +0000
Subject: [PATCH 139/147] chore(NA): update versions after v8.11.2 bump
 (#171135)

This PR is a simple update of our versions file after the recent bumps.
---
 versions.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions.json b/versions.json
index f904685d12776..edfa040d52444 100644
--- a/versions.json
+++ b/versions.json
@@ -8,7 +8,7 @@
       "currentMinor": true
     },
     {
-      "version": "8.11.1",
+      "version": "8.11.2",
       "branch": "8.11",
       "currentMajor": true,
       "previousMinor": true

From a73899316ad464c34cdd4c9c8a46df3e857a3782 Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Tue, 14 Nov 2023 02:30:35 +0000
Subject: [PATCH 140/147] skip flaky suite (#170691)

---
 .../cypress/e2e/investigations/timelines/creation.cy.ts        | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/creation.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/creation.cy.ts
index 2bb739cc70d97..dc292818a3395 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/creation.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/creation.cy.ts
@@ -148,7 +148,8 @@ describe('Timelines', (): void => {
     }
   );
 
-  describe('shows the different timeline states', () => {
+  // FLAKY: https://github.com/elastic/kibana/issues/170691
+  describe.skip('shows the different timeline states', () => {
     before(() => {
       login();
       visitWithTimeRange(OVERVIEW_URL);

From a7ca0d40e267b4c408ff7aa0a2654eed1480054e Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Tue, 14 Nov 2023 02:31:48 +0000
Subject: [PATCH 141/147] skip flaky suite (#170846)

---
 .../e2e/investigations/alerts/ransomware_detection.cy.ts       | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts
index 0c1bd2ad48880..0e1f95b1e23a9 100644
--- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts
+++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts
@@ -48,7 +48,8 @@ describe('Ransomware Detection Alerts', { tags: ['@ess', '@serverless'] }, () =>
     });
   });
 
-  describe('Ransomware in Timelines', () => {
+  // FLAKY: https://github.com/elastic/kibana/issues/170846
+  describe.skip('Ransomware in Timelines', () => {
     before(() => {
       login();
       visitWithTimeRange(TIMELINES_URL);

From 9961efc04700a9974ba36ec7a94b05bbfb9a103b Mon Sep 17 00:00:00 2001
From: Tiago Costa <tiago.costa@elastic.co>
Date: Tue, 14 Nov 2023 02:33:03 +0000
Subject: [PATCH 142/147] skip flaky suite (#169664)

---
 .../workflows/role_based_rule_exceptions_workflows.ts          | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
index 1e20d8d52c83a..f62501b026c20 100644
--- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
+++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/exceptions/workflows/role_based_rule_exceptions_workflows.ts
@@ -561,7 +561,8 @@ export default ({ getService }: FtrProviderContext) => {
         });
       });
 
-      describe('tests with auditbeat data', () => {
+      // FLAKY: https://github.com/elastic/kibana/issues/169664
+      describe.skip('tests with auditbeat data', () => {
         before(async () => {
           await esArchiver.load(path);
         });

From 2b743f34108ef962cd2c22cb31605625ee087de2 Mon Sep 17 00:00:00 2001
From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Date: Tue, 14 Nov 2023 01:10:05 -0500
Subject: [PATCH 143/147] [api-docs] 2023-11-14 Daily api_docs build (#171152)

Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/521
---
 api_docs/actions.mdx                          |   2 +-
 api_docs/advanced_settings.mdx                |   2 +-
 api_docs/aiops.mdx                            |   2 +-
 api_docs/alerting.mdx                         |   2 +-
 api_docs/apm.mdx                              |   2 +-
 api_docs/apm_data_access.mdx                  |   2 +-
 api_docs/asset_manager.mdx                    |   2 +-
 api_docs/banners.mdx                          |   2 +-
 api_docs/bfetch.mdx                           |   2 +-
 api_docs/canvas.mdx                           |   2 +-
 api_docs/cases.mdx                            |   2 +-
 api_docs/charts.mdx                           |   2 +-
 api_docs/cloud.mdx                            |   2 +-
 api_docs/cloud_data_migration.mdx             |   2 +-
 api_docs/cloud_defend.mdx                     |   2 +-
 api_docs/cloud_experiments.mdx                |   2 +-
 api_docs/cloud_security_posture.mdx           |   2 +-
 api_docs/console.mdx                          |   2 +-
 api_docs/content_management.mdx               |   2 +-
 api_docs/controls.mdx                         |   2 +-
 api_docs/custom_integrations.mdx              |   2 +-
 api_docs/dashboard.mdx                        |   2 +-
 api_docs/dashboard_enhanced.mdx               |   2 +-
 api_docs/data.mdx                             |   2 +-
 api_docs/data_query.mdx                       |   2 +-
 api_docs/data_search.mdx                      |   2 +-
 api_docs/data_view_editor.mdx                 |   2 +-
 api_docs/data_view_field_editor.mdx           |   2 +-
 api_docs/data_view_management.mdx             |   2 +-
 api_docs/data_views.mdx                       |   2 +-
 api_docs/data_visualizer.mdx                  |   2 +-
 api_docs/dataset_quality.mdx                  |   2 +-
 api_docs/deprecations_by_api.mdx              |   3 +-
 api_docs/deprecations_by_plugin.mdx           |  24 +-
 api_docs/deprecations_by_team.mdx             |   4 +-
 api_docs/dev_tools.mdx                        |   2 +-
 api_docs/discover.devdocs.json                |  57 ++-
 api_docs/discover.mdx                         |   4 +-
 api_docs/discover_enhanced.mdx                |   2 +-
 api_docs/ecs_data_quality_dashboard.mdx       |   2 +-
 api_docs/elastic_assistant.mdx                |   2 +-
 api_docs/embeddable.mdx                       |   2 +-
 api_docs/embeddable_enhanced.mdx              |   2 +-
 api_docs/encrypted_saved_objects.mdx          |   2 +-
 api_docs/enterprise_search.mdx                |   2 +-
 api_docs/es_ui_shared.mdx                     |   2 +-
 api_docs/event_annotation.mdx                 |   2 +-
 api_docs/event_annotation_listing.mdx         |   2 +-
 api_docs/event_log.mdx                        |   2 +-
 api_docs/exploratory_view.mdx                 |   2 +-
 api_docs/expression_error.mdx                 |   2 +-
 api_docs/expression_gauge.mdx                 |   2 +-
 api_docs/expression_heatmap.mdx               |   2 +-
 api_docs/expression_image.mdx                 |   2 +-
 api_docs/expression_legacy_metric_vis.mdx     |   2 +-
 api_docs/expression_metric.mdx                |   2 +-
 api_docs/expression_metric_vis.mdx            |   2 +-
 api_docs/expression_partition_vis.mdx         |   2 +-
 api_docs/expression_repeat_image.mdx          |   2 +-
 api_docs/expression_reveal_image.mdx          |   2 +-
 api_docs/expression_shape.mdx                 |   2 +-
 api_docs/expression_tagcloud.mdx              |   2 +-
 api_docs/expression_x_y.mdx                   |   2 +-
 api_docs/expressions.mdx                      |   2 +-
 api_docs/features.mdx                         |   2 +-
 api_docs/field_formats.mdx                    |   2 +-
 api_docs/file_upload.mdx                      |   2 +-
 api_docs/files.mdx                            |   2 +-
 api_docs/files_management.mdx                 |   2 +-
 api_docs/fleet.mdx                            |   2 +-
 api_docs/global_search.mdx                    |   2 +-
 api_docs/guided_onboarding.mdx                |   2 +-
 api_docs/home.mdx                             |   2 +-
 api_docs/image_embeddable.mdx                 |   2 +-
 api_docs/index_lifecycle_management.mdx       |   2 +-
 api_docs/index_management.mdx                 |   2 +-
 api_docs/infra.mdx                            |   2 +-
 api_docs/inspector.mdx                        |   2 +-
 api_docs/interactive_setup.mdx                |   2 +-
 api_docs/kbn_ace.mdx                          |   2 +-
 api_docs/kbn_aiops_components.mdx             |   2 +-
 api_docs/kbn_aiops_utils.mdx                  |   2 +-
 .../kbn_alerting_api_integration_helpers.mdx  |   2 +-
 api_docs/kbn_alerting_state_types.mdx         |   2 +-
 api_docs/kbn_alerts_as_data_utils.mdx         |   2 +-
 api_docs/kbn_alerts_ui_shared.mdx             |   2 +-
 api_docs/kbn_analytics.mdx                    |   2 +-
 api_docs/kbn_analytics_client.mdx             |   2 +-
 ..._analytics_shippers_elastic_v3_browser.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_common.mdx |   2 +-
 ...n_analytics_shippers_elastic_v3_server.mdx |   2 +-
 api_docs/kbn_analytics_shippers_fullstory.mdx |   2 +-
 api_docs/kbn_analytics_shippers_gainsight.mdx |   2 +-
 api_docs/kbn_apm_config_loader.mdx            |   2 +-
 api_docs/kbn_apm_synthtrace.mdx               |   2 +-
 api_docs/kbn_apm_synthtrace_client.mdx        |   2 +-
 api_docs/kbn_apm_utils.mdx                    |   2 +-
 api_docs/kbn_axe_config.mdx                   |   2 +-
 api_docs/kbn_cases_components.mdx             |   2 +-
 api_docs/kbn_cell_actions.mdx                 |   2 +-
 api_docs/kbn_chart_expressions_common.mdx     |   2 +-
 api_docs/kbn_chart_icons.mdx                  |   2 +-
 api_docs/kbn_ci_stats_core.mdx                |   2 +-
 api_docs/kbn_ci_stats_performance_metrics.mdx |   2 +-
 api_docs/kbn_ci_stats_reporter.mdx            |   2 +-
 api_docs/kbn_cli_dev_mode.mdx                 |   2 +-
 api_docs/kbn_code_editor.mdx                  |   2 +-
 api_docs/kbn_coloring.mdx                     |   2 +-
 api_docs/kbn_config.mdx                       |   2 +-
 api_docs/kbn_config_mocks.mdx                 |   2 +-
 api_docs/kbn_config_schema.mdx                |   2 +-
 .../kbn_content_management_content_editor.mdx |   2 +-
 ...tent_management_tabbed_table_list_view.mdx |   2 +-
 ...kbn_content_management_table_list_view.mdx |   2 +-
 ...ntent_management_table_list_view_table.mdx |   2 +-
 api_docs/kbn_content_management_utils.mdx     |   2 +-
 api_docs/kbn_core_analytics_browser.mdx       |   2 +-
 .../kbn_core_analytics_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_analytics_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_analytics_server.mdx        |   2 +-
 .../kbn_core_analytics_server_internal.mdx    |   2 +-
 api_docs/kbn_core_analytics_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_application_browser.mdx     |   2 +-
 .../kbn_core_application_browser_internal.mdx |   2 +-
 .../kbn_core_application_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_application_common.mdx      |   2 +-
 api_docs/kbn_core_apps_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_apps_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_apps_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_base_common.mdx             |   2 +-
 api_docs/kbn_core_base_server_internal.mdx    |   2 +-
 api_docs/kbn_core_base_server_mocks.mdx       |   2 +-
 .../kbn_core_capabilities_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_capabilities_common.mdx     |   2 +-
 api_docs/kbn_core_capabilities_server.mdx     |   2 +-
 .../kbn_core_capabilities_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_chrome_browser.mdx          |   2 +-
 api_docs/kbn_core_chrome_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_config_server_internal.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_browser.mdx |   2 +-
 ..._core_custom_branding_browser_internal.mdx |   2 +-
 ...kbn_core_custom_branding_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_custom_branding_common.mdx  |   2 +-
 api_docs/kbn_core_custom_branding_server.mdx  |   2 +-
 ...n_core_custom_branding_server_internal.mdx |   2 +-
 .../kbn_core_custom_branding_server_mocks.mdx |   2 +-
 api_docs/kbn_core_deprecations_browser.mdx    |   2 +-
 ...kbn_core_deprecations_browser_internal.mdx |   2 +-
 .../kbn_core_deprecations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_deprecations_common.mdx     |   2 +-
 api_docs/kbn_core_deprecations_server.mdx     |   2 +-
 .../kbn_core_deprecations_server_internal.mdx |   2 +-
 .../kbn_core_deprecations_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_doc_links_browser.mdx       |   2 +-
 api_docs/kbn_core_doc_links_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_doc_links_server.mdx        |   2 +-
 api_docs/kbn_core_doc_links_server_mocks.mdx  |   2 +-
 ...e_elasticsearch_client_server_internal.mdx |   2 +-
 ...core_elasticsearch_client_server_mocks.mdx |   2 +-
 api_docs/kbn_core_elasticsearch_server.mdx    |   2 +-
 ...kbn_core_elasticsearch_server_internal.mdx |   2 +-
 .../kbn_core_elasticsearch_server_mocks.mdx   |   2 +-
 .../kbn_core_environment_server_internal.mdx  |   2 +-
 .../kbn_core_environment_server_mocks.mdx     |   2 +-
 .../kbn_core_execution_context_browser.mdx    |   2 +-
 ...ore_execution_context_browser_internal.mdx |   2 +-
 ...n_core_execution_context_browser_mocks.mdx |   2 +-
 .../kbn_core_execution_context_common.mdx     |   2 +-
 .../kbn_core_execution_context_server.mdx     |   2 +-
 ...core_execution_context_server_internal.mdx |   2 +-
 ...bn_core_execution_context_server_mocks.mdx |   2 +-
 api_docs/kbn_core_fatal_errors_browser.mdx    |   2 +-
 .../kbn_core_fatal_errors_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_http_browser.mdx            |   2 +-
 api_docs/kbn_core_http_browser_internal.mdx   |   2 +-
 api_docs/kbn_core_http_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_http_common.mdx             |   2 +-
 .../kbn_core_http_context_server_mocks.mdx    |   2 +-
 ...re_http_request_handler_context_server.mdx |   2 +-
 api_docs/kbn_core_http_resources_server.mdx   |   2 +-
 ...bn_core_http_resources_server_internal.mdx |   2 +-
 .../kbn_core_http_resources_server_mocks.mdx  |   2 +-
 .../kbn_core_http_router_server_internal.mdx  |   2 +-
 .../kbn_core_http_router_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_http_server.mdx             |   2 +-
 api_docs/kbn_core_http_server_internal.mdx    |   2 +-
 api_docs/kbn_core_http_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_i18n_browser.mdx            |   2 +-
 api_docs/kbn_core_i18n_browser_mocks.mdx      |   2 +-
 api_docs/kbn_core_i18n_server.mdx             |   2 +-
 api_docs/kbn_core_i18n_server_internal.mdx    |   2 +-
 api_docs/kbn_core_i18n_server_mocks.mdx       |   2 +-
 ...n_core_injected_metadata_browser_mocks.mdx |   2 +-
 ...kbn_core_integrations_browser_internal.mdx |   2 +-
 .../kbn_core_integrations_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_lifecycle_browser.mdx       |   2 +-
 api_docs/kbn_core_lifecycle_browser_mocks.mdx |   2 +-
 api_docs/kbn_core_lifecycle_server.mdx        |   2 +-
 api_docs/kbn_core_lifecycle_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_logging_browser_mocks.mdx   |   2 +-
 api_docs/kbn_core_logging_common_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server.mdx          |   2 +-
 api_docs/kbn_core_logging_server_internal.mdx |   2 +-
 api_docs/kbn_core_logging_server_mocks.mdx    |   2 +-
 ...ore_metrics_collectors_server_internal.mdx |   2 +-
 ...n_core_metrics_collectors_server_mocks.mdx |   2 +-
 api_docs/kbn_core_metrics_server.mdx          |   2 +-
 api_docs/kbn_core_metrics_server_internal.mdx |   2 +-
 api_docs/kbn_core_metrics_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_mount_utils_browser.mdx     |   2 +-
 api_docs/kbn_core_node_server.mdx             |   2 +-
 api_docs/kbn_core_node_server_internal.mdx    |   2 +-
 api_docs/kbn_core_node_server_mocks.mdx       |   2 +-
 api_docs/kbn_core_notifications_browser.mdx   |   2 +-
 ...bn_core_notifications_browser_internal.mdx |   2 +-
 .../kbn_core_notifications_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_overlays_browser.mdx        |   2 +-
 .../kbn_core_overlays_browser_internal.mdx    |   2 +-
 api_docs/kbn_core_overlays_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_plugins_browser.mdx         |   2 +-
 api_docs/kbn_core_plugins_browser_mocks.mdx   |   2 +-
 .../kbn_core_plugins_contracts_browser.mdx    |   2 +-
 .../kbn_core_plugins_contracts_server.mdx     |   2 +-
 api_docs/kbn_core_plugins_server.mdx          |   2 +-
 api_docs/kbn_core_plugins_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_preboot_server.mdx          |   2 +-
 api_docs/kbn_core_preboot_server_mocks.mdx    |   2 +-
 api_docs/kbn_core_rendering_browser_mocks.mdx |   2 +-
 .../kbn_core_rendering_server_internal.mdx    |   2 +-
 api_docs/kbn_core_rendering_server_mocks.mdx  |   2 +-
 api_docs/kbn_core_root_server_internal.mdx    |   2 +-
 .../kbn_core_saved_objects_api_browser.mdx    |   2 +-
 .../kbn_core_saved_objects_api_server.mdx     |   2 +-
 ...bn_core_saved_objects_api_server_mocks.mdx |   2 +-
 ...ore_saved_objects_base_server_internal.mdx |   2 +-
 ...n_core_saved_objects_base_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_browser.mdx   |   2 +-
 ...bn_core_saved_objects_browser_internal.mdx |   2 +-
 .../kbn_core_saved_objects_browser_mocks.mdx  |   2 +-
 api_docs/kbn_core_saved_objects_common.mdx    |   2 +-
 ..._objects_import_export_server_internal.mdx |   2 +-
 ...ved_objects_import_export_server_mocks.mdx |   2 +-
 ...aved_objects_migration_server_internal.mdx |   2 +-
 ...e_saved_objects_migration_server_mocks.mdx |   2 +-
 api_docs/kbn_core_saved_objects_server.mdx    |   2 +-
 ...kbn_core_saved_objects_server_internal.mdx |   2 +-
 .../kbn_core_saved_objects_server_mocks.mdx   |   2 +-
 .../kbn_core_saved_objects_utils_server.mdx   |   2 +-
 api_docs/kbn_core_status_common.mdx           |   2 +-
 api_docs/kbn_core_status_common_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server.mdx           |   2 +-
 api_docs/kbn_core_status_server_internal.mdx  |   2 +-
 api_docs/kbn_core_status_server_mocks.mdx     |   2 +-
 ...core_test_helpers_deprecations_getters.mdx |   2 +-
 ...n_core_test_helpers_http_setup_browser.mdx |   2 +-
 api_docs/kbn_core_test_helpers_kbn_server.mdx |   2 +-
 .../kbn_core_test_helpers_model_versions.mdx  |   2 +-
 ...n_core_test_helpers_so_type_serializer.mdx |   2 +-
 api_docs/kbn_core_test_helpers_test_utils.mdx |   2 +-
 api_docs/kbn_core_theme_browser.mdx           |   2 +-
 api_docs/kbn_core_theme_browser_mocks.mdx     |   2 +-
 api_docs/kbn_core_ui_settings_browser.mdx     |   2 +-
 .../kbn_core_ui_settings_browser_internal.mdx |   2 +-
 .../kbn_core_ui_settings_browser_mocks.mdx    |   2 +-
 api_docs/kbn_core_ui_settings_common.mdx      |   2 +-
 api_docs/kbn_core_ui_settings_server.mdx      |   2 +-
 .../kbn_core_ui_settings_server_internal.mdx  |   2 +-
 .../kbn_core_ui_settings_server_mocks.mdx     |   2 +-
 api_docs/kbn_core_usage_data_server.mdx       |   2 +-
 .../kbn_core_usage_data_server_internal.mdx   |   2 +-
 api_docs/kbn_core_usage_data_server_mocks.mdx |   2 +-
 api_docs/kbn_core_user_settings_server.mdx    |   2 +-
 ...kbn_core_user_settings_server_internal.mdx |   2 +-
 .../kbn_core_user_settings_server_mocks.mdx   |   2 +-
 api_docs/kbn_crypto.mdx                       |   2 +-
 api_docs/kbn_crypto_browser.mdx               |   2 +-
 api_docs/kbn_custom_integrations.mdx          |   2 +-
 api_docs/kbn_cypress_config.mdx               |   2 +-
 api_docs/kbn_data_service.mdx                 |   2 +-
 api_docs/kbn_datemath.mdx                     |   2 +-
 api_docs/kbn_deeplinks_analytics.mdx          |   2 +-
 api_docs/kbn_deeplinks_devtools.mdx           |   2 +-
 api_docs/kbn_deeplinks_management.mdx         |   2 +-
 api_docs/kbn_deeplinks_ml.mdx                 |   2 +-
 api_docs/kbn_deeplinks_observability.mdx      |   2 +-
 api_docs/kbn_deeplinks_search.mdx             |   2 +-
 api_docs/kbn_default_nav_analytics.mdx        |   2 +-
 api_docs/kbn_default_nav_devtools.mdx         |   2 +-
 api_docs/kbn_default_nav_management.mdx       |   2 +-
 api_docs/kbn_default_nav_ml.mdx               |   2 +-
 api_docs/kbn_dev_cli_errors.mdx               |   2 +-
 api_docs/kbn_dev_cli_runner.mdx               |   2 +-
 api_docs/kbn_dev_proc_runner.mdx              |   2 +-
 api_docs/kbn_dev_utils.mdx                    |   2 +-
 api_docs/kbn_discover_utils.mdx               |   2 +-
 api_docs/kbn_doc_links.mdx                    |   2 +-
 api_docs/kbn_docs_utils.mdx                   |   2 +-
 api_docs/kbn_dom_drag_drop.mdx                |   2 +-
 api_docs/kbn_ebt_tools.mdx                    |   2 +-
 api_docs/kbn_ecs.mdx                          |   2 +-
 api_docs/kbn_ecs_data_quality_dashboard.mdx   |   2 +-
 api_docs/kbn_elastic_assistant.mdx            |   2 +-
 api_docs/kbn_es.mdx                           |   2 +-
 api_docs/kbn_es_archiver.mdx                  |   2 +-
 api_docs/kbn_es_errors.mdx                    |   2 +-
 api_docs/kbn_es_query.mdx                     |   2 +-
 api_docs/kbn_es_types.mdx                     |   2 +-
 api_docs/kbn_eslint_plugin_imports.mdx        |   2 +-
 api_docs/kbn_event_annotation_common.mdx      |   2 +-
 api_docs/kbn_event_annotation_components.mdx  |   2 +-
 api_docs/kbn_expandable_flyout.mdx            |   2 +-
 api_docs/kbn_field_types.mdx                  |   2 +-
 api_docs/kbn_field_utils.mdx                  |   2 +-
 api_docs/kbn_find_used_node_modules.mdx       |   2 +-
 .../kbn_ftr_common_functional_services.mdx    |   2 +-
 api_docs/kbn_generate.mdx                     |   2 +-
 api_docs/kbn_generate_console_definitions.mdx |   2 +-
 api_docs/kbn_generate_csv.mdx                 |   2 +-
 api_docs/kbn_generate_csv_types.mdx           |   2 +-
 api_docs/kbn_guided_onboarding.mdx            |   2 +-
 api_docs/kbn_handlebars.mdx                   |   2 +-
 api_docs/kbn_hapi_mocks.mdx                   |   2 +-
 api_docs/kbn_health_gateway_server.mdx        |   2 +-
 api_docs/kbn_home_sample_data_card.mdx        |   2 +-
 api_docs/kbn_home_sample_data_tab.mdx         |   2 +-
 api_docs/kbn_i18n.mdx                         |   2 +-
 api_docs/kbn_i18n_react.mdx                   |   2 +-
 api_docs/kbn_import_resolver.mdx              |   2 +-
 api_docs/kbn_infra_forge.mdx                  |   2 +-
 api_docs/kbn_interpreter.mdx                  |   2 +-
 api_docs/kbn_io_ts_utils.devdocs.json         | 101 +++++
 api_docs/kbn_io_ts_utils.mdx                  |   4 +-
 api_docs/kbn_jest_serializers.mdx             |   2 +-
 api_docs/kbn_journeys.mdx                     |   2 +-
 api_docs/kbn_json_ast.mdx                     |   2 +-
 api_docs/kbn_kibana_manifest_schema.mdx       |   2 +-
 .../kbn_language_documentation_popover.mdx    |   2 +-
 api_docs/kbn_lens_embeddable_utils.mdx        |   2 +-
 api_docs/kbn_logging.mdx                      |   2 +-
 api_docs/kbn_logging_mocks.mdx                |   2 +-
 api_docs/kbn_managed_vscode_config.mdx        |   2 +-
 api_docs/kbn_management_cards_navigation.mdx  |   2 +-
 .../kbn_management_settings_application.mdx   |   2 +-
 ...ent_settings_components_field_category.mdx |   2 +-
 ...gement_settings_components_field_input.mdx |   2 +-
 ...nagement_settings_components_field_row.mdx |   2 +-
 ...bn_management_settings_components_form.mdx |   2 +-
 ...n_management_settings_field_definition.mdx |   2 +-
 api_docs/kbn_management_settings_ids.mdx      |   2 +-
 ...n_management_settings_section_registry.mdx |   2 +-
 api_docs/kbn_management_settings_types.mdx    |   2 +-
 .../kbn_management_settings_utilities.mdx     |   2 +-
 api_docs/kbn_management_storybook_config.mdx  |   2 +-
 api_docs/kbn_mapbox_gl.mdx                    |   2 +-
 api_docs/kbn_maps_vector_tile_utils.mdx       |   2 +-
 api_docs/kbn_ml_agg_utils.mdx                 |   2 +-
 api_docs/kbn_ml_anomaly_utils.mdx             |   2 +-
 api_docs/kbn_ml_category_validator.mdx        |   2 +-
 api_docs/kbn_ml_chi2test.mdx                  |   2 +-
 .../kbn_ml_data_frame_analytics_utils.mdx     |   2 +-
 api_docs/kbn_ml_data_grid.mdx                 |   2 +-
 api_docs/kbn_ml_date_picker.mdx               |   2 +-
 api_docs/kbn_ml_date_utils.mdx                |   2 +-
 api_docs/kbn_ml_error_utils.mdx               |   2 +-
 api_docs/kbn_ml_in_memory_table.mdx           |   2 +-
 api_docs/kbn_ml_is_defined.mdx                |   2 +-
 api_docs/kbn_ml_is_populated_object.mdx       |   2 +-
 api_docs/kbn_ml_kibana_theme.mdx              |   2 +-
 api_docs/kbn_ml_local_storage.mdx             |   2 +-
 api_docs/kbn_ml_nested_property.mdx           |   2 +-
 api_docs/kbn_ml_number_utils.mdx              |   2 +-
 api_docs/kbn_ml_query_utils.mdx               |   2 +-
 api_docs/kbn_ml_random_sampler_utils.mdx      |   2 +-
 api_docs/kbn_ml_route_utils.mdx               |   2 +-
 api_docs/kbn_ml_runtime_field_utils.mdx       |   2 +-
 api_docs/kbn_ml_string_hash.mdx               |   2 +-
 api_docs/kbn_ml_trained_models_utils.mdx      |   2 +-
 api_docs/kbn_ml_url_state.mdx                 |   2 +-
 api_docs/kbn_monaco.mdx                       |   2 +-
 api_docs/kbn_object_versioning.mdx            |   2 +-
 api_docs/kbn_observability_alert_details.mdx  |   2 +-
 .../kbn_observability_alerting_test_data.mdx  |   2 +-
 api_docs/kbn_openapi_generator.mdx            |   2 +-
 api_docs/kbn_optimizer.mdx                    |   2 +-
 api_docs/kbn_optimizer_webpack_helpers.mdx    |   2 +-
 api_docs/kbn_osquery_io_ts_types.mdx          |   2 +-
 ..._performance_testing_dataset_extractor.mdx |   2 +-
 api_docs/kbn_plugin_generator.mdx             |   2 +-
 api_docs/kbn_plugin_helpers.mdx               |   2 +-
 api_docs/kbn_profiling_utils.mdx              |   2 +-
 api_docs/kbn_random_sampling.mdx              |   2 +-
 api_docs/kbn_react_field.mdx                  |   2 +-
 api_docs/kbn_react_kibana_context_common.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_render.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_root.mdx    |   2 +-
 api_docs/kbn_react_kibana_context_styled.mdx  |   2 +-
 api_docs/kbn_react_kibana_context_theme.mdx   |   2 +-
 api_docs/kbn_react_kibana_mount.mdx           |   2 +-
 api_docs/kbn_repo_file_maps.mdx               |   2 +-
 api_docs/kbn_repo_linter.mdx                  |   2 +-
 api_docs/kbn_repo_path.mdx                    |   2 +-
 api_docs/kbn_repo_source_classifier.mdx       |   2 +-
 api_docs/kbn_reporting_common.mdx             |   2 +-
 api_docs/kbn_resizable_layout.mdx             |   2 +-
 api_docs/kbn_rison.mdx                        |   2 +-
 api_docs/kbn_rrule.mdx                        |   2 +-
 api_docs/kbn_rule_data_utils.mdx              |   2 +-
 api_docs/kbn_saved_objects_settings.mdx       |   2 +-
 api_docs/kbn_search_api_panels.devdocs.json   |  18 +-
 api_docs/kbn_search_api_panels.mdx            |   4 +-
 api_docs/kbn_search_connectors.mdx            |   2 +-
 api_docs/kbn_search_response_warnings.mdx     |   2 +-
 api_docs/kbn_security_solution_features.mdx   |   2 +-
 api_docs/kbn_security_solution_navigation.mdx |   2 +-
 api_docs/kbn_security_solution_side_nav.mdx   |   2 +-
 ...kbn_security_solution_storybook_config.mdx |   2 +-
 .../kbn_securitysolution_autocomplete.mdx     |   2 +-
 api_docs/kbn_securitysolution_data_table.mdx  |   2 +-
 api_docs/kbn_securitysolution_ecs.mdx         |   2 +-
 api_docs/kbn_securitysolution_es_utils.mdx    |   2 +-
 ...ritysolution_exception_list_components.mdx |   2 +-
 api_docs/kbn_securitysolution_grouping.mdx    |   2 +-
 api_docs/kbn_securitysolution_hook_utils.mdx  |   2 +-
 ..._securitysolution_io_ts_alerting_types.mdx |   2 +-
 .../kbn_securitysolution_io_ts_list_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_types.mdx |   2 +-
 api_docs/kbn_securitysolution_io_ts_utils.mdx |   2 +-
 api_docs/kbn_securitysolution_list_api.mdx    |   2 +-
 .../kbn_securitysolution_list_constants.mdx   |   2 +-
 api_docs/kbn_securitysolution_list_hooks.mdx  |   2 +-
 api_docs/kbn_securitysolution_list_utils.mdx  |   2 +-
 api_docs/kbn_securitysolution_rules.mdx       |   2 +-
 api_docs/kbn_securitysolution_t_grid.mdx      |   2 +-
 api_docs/kbn_securitysolution_utils.mdx       |   2 +-
 api_docs/kbn_server_http_tools.mdx            |   2 +-
 api_docs/kbn_server_route_repository.mdx      |   2 +-
 api_docs/kbn_serverless_common_settings.mdx   |   2 +-
 .../kbn_serverless_observability_settings.mdx |   2 +-
 api_docs/kbn_serverless_project_switcher.mdx  |   2 +-
 api_docs/kbn_serverless_search_settings.mdx   |   2 +-
 api_docs/kbn_serverless_security_settings.mdx |   2 +-
 api_docs/kbn_serverless_storybook_config.mdx  |   2 +-
 api_docs/kbn_shared_svg.mdx                   |   2 +-
 api_docs/kbn_shared_ux_avatar_solution.mdx    |   2 +-
 .../kbn_shared_ux_button_exit_full_screen.mdx |   2 +-
 api_docs/kbn_shared_ux_button_toolbar.mdx     |   2 +-
 api_docs/kbn_shared_ux_card_no_data.mdx       |   2 +-
 api_docs/kbn_shared_ux_card_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_chrome_navigation.mdx  |   2 +-
 api_docs/kbn_shared_ux_error_boundary.mdx     |   2 +-
 api_docs/kbn_shared_ux_file_context.mdx       |   2 +-
 api_docs/kbn_shared_ux_file_image.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_image_mocks.mdx   |   2 +-
 api_docs/kbn_shared_ux_file_mocks.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_picker.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_types.mdx         |   2 +-
 api_docs/kbn_shared_ux_file_upload.mdx        |   2 +-
 api_docs/kbn_shared_ux_file_util.mdx          |   2 +-
 api_docs/kbn_shared_ux_link_redirect_app.mdx  |   2 +-
 .../kbn_shared_ux_link_redirect_app_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_markdown.mdx           |   2 +-
 api_docs/kbn_shared_ux_markdown_mocks.mdx     |   2 +-
 .../kbn_shared_ux_page_analytics_no_data.mdx  |   2 +-
 ...shared_ux_page_analytics_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_no_data.mdx     |   2 +-
 ...bn_shared_ux_page_kibana_no_data_mocks.mdx |   2 +-
 .../kbn_shared_ux_page_kibana_template.mdx    |   2 +-
 ...n_shared_ux_page_kibana_template_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data.mdx       |   2 +-
 .../kbn_shared_ux_page_no_data_config.mdx     |   2 +-
 ...bn_shared_ux_page_no_data_config_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_no_data_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_page_solution_nav.mdx  |   2 +-
 .../kbn_shared_ux_prompt_no_data_views.mdx    |   2 +-
 ...n_shared_ux_prompt_no_data_views_mocks.mdx |   2 +-
 api_docs/kbn_shared_ux_prompt_not_found.mdx   |   2 +-
 api_docs/kbn_shared_ux_router.mdx             |   2 +-
 api_docs/kbn_shared_ux_router_mocks.mdx       |   2 +-
 api_docs/kbn_shared_ux_storybook_config.mdx   |   2 +-
 api_docs/kbn_shared_ux_storybook_mock.mdx     |   2 +-
 api_docs/kbn_shared_ux_utility.mdx            |   2 +-
 api_docs/kbn_slo_schema.mdx                   |   2 +-
 api_docs/kbn_some_dev_log.mdx                 |   2 +-
 api_docs/kbn_std.mdx                          |   2 +-
 api_docs/kbn_stdio_dev_helpers.mdx            |   2 +-
 api_docs/kbn_storybook.mdx                    |   2 +-
 api_docs/kbn_subscription_tracking.mdx        |   2 +-
 api_docs/kbn_telemetry_tools.mdx              |   2 +-
 api_docs/kbn_test.mdx                         |   2 +-
 api_docs/kbn_test_jest_helpers.mdx            |   2 +-
 api_docs/kbn_test_subj_selector.mdx           |   2 +-
 api_docs/kbn_text_based_editor.mdx            |   2 +-
 api_docs/kbn_tooling_log.mdx                  |   2 +-
 api_docs/kbn_ts_projects.mdx                  |   2 +-
 api_docs/kbn_typed_react_router_config.mdx    |   2 +-
 api_docs/kbn_ui_actions_browser.mdx           |   2 +-
 api_docs/kbn_ui_shared_deps_src.mdx           |   2 +-
 api_docs/kbn_ui_theme.mdx                     |   2 +-
 api_docs/kbn_unified_data_table.mdx           |   2 +-
 api_docs/kbn_unified_doc_viewer.mdx           |   2 +-
 api_docs/kbn_unified_field_list.mdx           |   2 +-
 .../kbn_unsaved_changes_badge.devdocs.json    | 273 ++++++++++++++
 api_docs/kbn_unsaved_changes_badge.mdx        |  33 ++
 api_docs/kbn_url_state.mdx                    |   2 +-
 api_docs/kbn_use_tracked_promise.mdx          |   2 +-
 api_docs/kbn_user_profile_components.mdx      |   2 +-
 api_docs/kbn_utility_types.mdx                |   2 +-
 api_docs/kbn_utility_types_jest.mdx           |   2 +-
 api_docs/kbn_utils.mdx                        |   2 +-
 api_docs/kbn_visualization_ui_components.mdx  |   2 +-
 api_docs/kbn_xstate_utils.mdx                 |   2 +-
 api_docs/kbn_yarn_lock_validator.mdx          |   2 +-
 api_docs/kbn_zod_helpers.mdx                  |   2 +-
 api_docs/kibana_overview.mdx                  |   2 +-
 api_docs/kibana_react.devdocs.json            | 355 ------------------
 api_docs/kibana_react.mdx                     |   4 +-
 api_docs/kibana_utils.mdx                     |   2 +-
 api_docs/kubernetes_security.mdx              |   2 +-
 api_docs/lens.mdx                             |   2 +-
 api_docs/license_api_guard.mdx                |   2 +-
 api_docs/license_management.mdx               |   2 +-
 api_docs/licensing.mdx                        |   2 +-
 api_docs/links.mdx                            |   2 +-
 api_docs/lists.mdx                            |   2 +-
 api_docs/log_explorer.mdx                     |   2 +-
 api_docs/logs_shared.devdocs.json             | 141 ++++---
 api_docs/logs_shared.mdx                      |   4 +-
 api_docs/management.mdx                       |   2 +-
 api_docs/maps.mdx                             |   2 +-
 api_docs/maps_ems.mdx                         |   2 +-
 api_docs/metrics_data_access.mdx              |   2 +-
 api_docs/ml.mdx                               |   2 +-
 api_docs/monitoring.mdx                       |   2 +-
 api_docs/monitoring_collection.mdx            |   2 +-
 api_docs/navigation.devdocs.json              |  28 +-
 api_docs/navigation.mdx                       |   4 +-
 api_docs/newsfeed.mdx                         |   2 +-
 api_docs/no_data_page.mdx                     |   2 +-
 api_docs/notifications.mdx                    |   2 +-
 api_docs/observability.mdx                    |   2 +-
 api_docs/observability_a_i_assistant.mdx      |   2 +-
 api_docs/observability_log_explorer.mdx       |   2 +-
 api_docs/observability_onboarding.mdx         |   2 +-
 api_docs/observability_shared.mdx             |   2 +-
 api_docs/osquery.mdx                          |   2 +-
 api_docs/painless_lab.mdx                     |   2 +-
 api_docs/plugin_directory.mdx                 |  21 +-
 api_docs/presentation_util.mdx                |   2 +-
 api_docs/profiling.mdx                        |   2 +-
 api_docs/profiling_data_access.mdx            |   2 +-
 api_docs/remote_clusters.mdx                  |   2 +-
 api_docs/reporting.mdx                        |   2 +-
 api_docs/rollup.mdx                           |   2 +-
 api_docs/rule_registry.mdx                    |   2 +-
 api_docs/runtime_fields.mdx                   |   2 +-
 api_docs/saved_objects.mdx                    |   2 +-
 api_docs/saved_objects_finder.mdx             |   2 +-
 api_docs/saved_objects_management.mdx         |   2 +-
 api_docs/saved_objects_tagging.mdx            |   2 +-
 api_docs/saved_objects_tagging_oss.mdx        |   2 +-
 api_docs/saved_search.mdx                     |   2 +-
 api_docs/screenshot_mode.mdx                  |   2 +-
 api_docs/screenshotting.mdx                   |   2 +-
 api_docs/security.mdx                         |   2 +-
 api_docs/security_solution.devdocs.json       |  13 +
 api_docs/security_solution.mdx                |   4 +-
 api_docs/security_solution_ess.mdx            |   2 +-
 api_docs/security_solution_serverless.mdx     |   2 +-
 api_docs/serverless.mdx                       |   2 +-
 api_docs/serverless_observability.mdx         |   2 +-
 api_docs/serverless_search.mdx                |   2 +-
 api_docs/session_view.mdx                     |   2 +-
 api_docs/share.mdx                            |   2 +-
 api_docs/snapshot_restore.mdx                 |   2 +-
 api_docs/spaces.mdx                           |   2 +-
 api_docs/stack_alerts.mdx                     |   2 +-
 api_docs/stack_connectors.mdx                 |   2 +-
 api_docs/task_manager.mdx                     |   2 +-
 api_docs/telemetry.mdx                        |   2 +-
 api_docs/telemetry_collection_manager.mdx     |   2 +-
 api_docs/telemetry_collection_xpack.mdx       |   2 +-
 api_docs/telemetry_management_section.mdx     |   2 +-
 api_docs/text_based_languages.mdx             |   2 +-
 api_docs/threat_intelligence.mdx              |   2 +-
 api_docs/timelines.mdx                        |   2 +-
 api_docs/transform.mdx                        |   2 +-
 api_docs/triggers_actions_ui.mdx              |   2 +-
 api_docs/ui_actions.mdx                       |   2 +-
 api_docs/ui_actions_enhanced.mdx              |   2 +-
 api_docs/unified_doc_viewer.mdx               |   2 +-
 api_docs/unified_histogram.mdx                |   2 +-
 api_docs/unified_search.mdx                   |   2 +-
 api_docs/unified_search_autocomplete.mdx      |   2 +-
 api_docs/uptime.mdx                           |   2 +-
 api_docs/url_forwarding.mdx                   |   2 +-
 api_docs/usage_collection.mdx                 |   2 +-
 api_docs/ux.mdx                               |   2 +-
 api_docs/vis_default_editor.mdx               |   2 +-
 api_docs/vis_type_gauge.mdx                   |   2 +-
 api_docs/vis_type_heatmap.mdx                 |   2 +-
 api_docs/vis_type_pie.mdx                     |   2 +-
 api_docs/vis_type_table.mdx                   |   2 +-
 api_docs/vis_type_timelion.mdx                |   2 +-
 api_docs/vis_type_timeseries.mdx              |   2 +-
 api_docs/vis_type_vega.mdx                    |   2 +-
 api_docs/vis_type_vislib.mdx                  |   2 +-
 api_docs/vis_type_xy.mdx                      |   2 +-
 api_docs/visualizations.mdx                   |   2 +-
 609 files changed, 1227 insertions(+), 1050 deletions(-)
 create mode 100644 api_docs/kbn_unsaved_changes_badge.devdocs.json
 create mode 100644 api_docs/kbn_unsaved_changes_badge.mdx

diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx
index 0adbd79741087..60d85e326b22f 100644
--- a/api_docs/actions.mdx
+++ b/api_docs/actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions
 title: "actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the actions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions']
 ---
 import actionsObj from './actions.devdocs.json';
diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx
index 62c209ef26152..d6cddffe50333 100644
--- a/api_docs/advanced_settings.mdx
+++ b/api_docs/advanced_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings
 title: "advancedSettings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the advancedSettings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings']
 ---
 import advancedSettingsObj from './advanced_settings.devdocs.json';
diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx
index ffeb6cd1c13e9..7ecaf4eaf2137 100644
--- a/api_docs/aiops.mdx
+++ b/api_docs/aiops.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops
 title: "aiops"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the aiops plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops']
 ---
 import aiopsObj from './aiops.devdocs.json';
diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx
index e4e27948e601c..235b06327177f 100644
--- a/api_docs/alerting.mdx
+++ b/api_docs/alerting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting
 title: "alerting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the alerting plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting']
 ---
 import alertingObj from './alerting.devdocs.json';
diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx
index 7664005614d8b..d9071e4fb003e 100644
--- a/api_docs/apm.mdx
+++ b/api_docs/apm.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm
 title: "apm"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apm plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm']
 ---
 import apmObj from './apm.devdocs.json';
diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx
index 93d84c37b5b26..cc7448339efb8 100644
--- a/api_docs/apm_data_access.mdx
+++ b/api_docs/apm_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess
 title: "apmDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the apmDataAccess plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess']
 ---
 import apmDataAccessObj from './apm_data_access.devdocs.json';
diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx
index c43f7212960e1..8d2750b832890 100644
--- a/api_docs/asset_manager.mdx
+++ b/api_docs/asset_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager
 title: "assetManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the assetManager plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager']
 ---
 import assetManagerObj from './asset_manager.devdocs.json';
diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx
index 8611fca3266a9..f72615de32637 100644
--- a/api_docs/banners.mdx
+++ b/api_docs/banners.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners
 title: "banners"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the banners plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners']
 ---
 import bannersObj from './banners.devdocs.json';
diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx
index 0022a9ee1813b..229f283e48d27 100644
--- a/api_docs/bfetch.mdx
+++ b/api_docs/bfetch.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch
 title: "bfetch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the bfetch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch']
 ---
 import bfetchObj from './bfetch.devdocs.json';
diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx
index 16b75dabe984b..d2a6857ec8bbd 100644
--- a/api_docs/canvas.mdx
+++ b/api_docs/canvas.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas
 title: "canvas"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the canvas plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas']
 ---
 import canvasObj from './canvas.devdocs.json';
diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx
index 53b08ea597405..4a218ad15683a 100644
--- a/api_docs/cases.mdx
+++ b/api_docs/cases.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases
 title: "cases"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cases plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases']
 ---
 import casesObj from './cases.devdocs.json';
diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx
index 066af8e61ec92..c90a98a5b5c70 100644
--- a/api_docs/charts.mdx
+++ b/api_docs/charts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts
 title: "charts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the charts plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts']
 ---
 import chartsObj from './charts.devdocs.json';
diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx
index cfd6386fcc759..e055c283fca44 100644
--- a/api_docs/cloud.mdx
+++ b/api_docs/cloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud
 title: "cloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloud plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud']
 ---
 import cloudObj from './cloud.devdocs.json';
diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx
index 46fe7b3402f1c..c3830e702e027 100644
--- a/api_docs/cloud_data_migration.mdx
+++ b/api_docs/cloud_data_migration.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration
 title: "cloudDataMigration"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDataMigration plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration']
 ---
 import cloudDataMigrationObj from './cloud_data_migration.devdocs.json';
diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx
index 9927d4fb8f984..e39eb3ad81da1 100644
--- a/api_docs/cloud_defend.mdx
+++ b/api_docs/cloud_defend.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend
 title: "cloudDefend"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudDefend plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend']
 ---
 import cloudDefendObj from './cloud_defend.devdocs.json';
diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx
index e7c2255536c9b..3c41a2ed919f4 100644
--- a/api_docs/cloud_experiments.mdx
+++ b/api_docs/cloud_experiments.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments
 title: "cloudExperiments"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudExperiments plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments']
 ---
 import cloudExperimentsObj from './cloud_experiments.devdocs.json';
diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx
index 43dbb2f04ca25..cb6f7f3319142 100644
--- a/api_docs/cloud_security_posture.mdx
+++ b/api_docs/cloud_security_posture.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture
 title: "cloudSecurityPosture"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the cloudSecurityPosture plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture']
 ---
 import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json';
diff --git a/api_docs/console.mdx b/api_docs/console.mdx
index 36eccb90a7617..ce46470b6d5bb 100644
--- a/api_docs/console.mdx
+++ b/api_docs/console.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console
 title: "console"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the console plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console']
 ---
 import consoleObj from './console.devdocs.json';
diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx
index 68b24bbfa837e..2cf20bc002e98 100644
--- a/api_docs/content_management.mdx
+++ b/api_docs/content_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement
 title: "contentManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the contentManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement']
 ---
 import contentManagementObj from './content_management.devdocs.json';
diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx
index 75acc6ea27b85..0efff68ef0c89 100644
--- a/api_docs/controls.mdx
+++ b/api_docs/controls.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls
 title: "controls"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the controls plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls']
 ---
 import controlsObj from './controls.devdocs.json';
diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx
index 048d5c5f90a42..e5be4794b1e8a 100644
--- a/api_docs/custom_integrations.mdx
+++ b/api_docs/custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations
 title: "customIntegrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the customIntegrations plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations']
 ---
 import customIntegrationsObj from './custom_integrations.devdocs.json';
diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx
index 97a0b4c4722d2..e9006e3f58908 100644
--- a/api_docs/dashboard.mdx
+++ b/api_docs/dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard
 title: "dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboard plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard']
 ---
 import dashboardObj from './dashboard.devdocs.json';
diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx
index 4519f796e4a2e..8e8e1b2c3babe 100644
--- a/api_docs/dashboard_enhanced.mdx
+++ b/api_docs/dashboard_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced
 title: "dashboardEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dashboardEnhanced plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced']
 ---
 import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json';
diff --git a/api_docs/data.mdx b/api_docs/data.mdx
index c2cc3c796402a..dc7665b7ef1b7 100644
--- a/api_docs/data.mdx
+++ b/api_docs/data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data
 title: "data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data']
 ---
 import dataObj from './data.devdocs.json';
diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx
index 231bd45a072c5..bed7b9dd84df7 100644
--- a/api_docs/data_query.mdx
+++ b/api_docs/data_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query
 title: "data.query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.query plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query']
 ---
 import dataQueryObj from './data_query.devdocs.json';
diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx
index 6fe5affe8e3e5..8235b9e79b252 100644
--- a/api_docs/data_search.mdx
+++ b/api_docs/data_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search
 title: "data.search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the data.search plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search']
 ---
 import dataSearchObj from './data_search.devdocs.json';
diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx
index f406f6da71607..7bff787270dca 100644
--- a/api_docs/data_view_editor.mdx
+++ b/api_docs/data_view_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor
 title: "dataViewEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewEditor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor']
 ---
 import dataViewEditorObj from './data_view_editor.devdocs.json';
diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx
index d99f23f6ba4fa..4fe6f04345b93 100644
--- a/api_docs/data_view_field_editor.mdx
+++ b/api_docs/data_view_field_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor
 title: "dataViewFieldEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewFieldEditor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor']
 ---
 import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json';
diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx
index ef52ca14ec243..a26e1c2c26b99 100644
--- a/api_docs/data_view_management.mdx
+++ b/api_docs/data_view_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement
 title: "dataViewManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViewManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement']
 ---
 import dataViewManagementObj from './data_view_management.devdocs.json';
diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx
index 5f1296bf8cd63..445e5a85413ff 100644
--- a/api_docs/data_views.mdx
+++ b/api_docs/data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews
 title: "dataViews"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataViews plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews']
 ---
 import dataViewsObj from './data_views.devdocs.json';
diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx
index b68804dafbb96..f439d2b333c28 100644
--- a/api_docs/data_visualizer.mdx
+++ b/api_docs/data_visualizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer
 title: "dataVisualizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the dataVisualizer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer']
 ---
 import dataVisualizerObj from './data_visualizer.devdocs.json';
diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx
index 2d9d187faf9f4..3aa45083f0771 100644
--- a/api_docs/dataset_quality.mdx
+++ b/api_docs/dataset_quality.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality
 title: "datasetQuality"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the datasetQuality plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality']
 ---
 import datasetQualityObj from './dataset_quality.devdocs.json';
diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx
index 873fff3ce7501..2c3708faad65d 100644
--- a/api_docs/deprecations_by_api.mdx
+++ b/api_docs/deprecations_by_api.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api
 title: Deprecated API usage by API
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -18,7 +18,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | ---------------|-----------|-----------|
 | <DocLink id="kibAlertingPluginApi" section="def-public.PluginSetupContract.registerNavigation" text="registerNavigation"/> | ml, stackAlerts | - |
 | <DocLink id="kibAlertingPluginApi" section="def-server.RuleExecutorServices.alertFactory" text="alertFactory"/> | ruleRegistry, observability, ml, infra, monitoring, securitySolution, stackAlerts, synthetics, transform, uptime | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, exploratoryView, fleet, metricsDataAccess, licenseManagement, maps, dataVisualizer, ml, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, infra, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - |
 | <DocLink id="kibSecurityPluginApi" section="def-server.SecurityPluginSetup.authc" text="authc"/> | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - |
 | <DocLink id="kibSecurityPluginApi" section="def-server.SecurityPluginSetup.authz" text="authz"/> | actions, ml, savedObjectsTagging, enterpriseSearch | - |
diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx
index a05f795b25cb2..fc044097f257e 100644
--- a/api_docs/deprecations_by_plugin.mdx
+++ b/api_docs/deprecations_by_plugin.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin
 slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin
 title: Deprecated API usage by plugin
 description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by.
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -380,7 +380,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
 | <DocLink id="kibHomePluginApi" section="def-public.HomePublicPluginSetup.environment" text="environment"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibLicensingPluginApi" section="def-public.PublicLicense.mode" text="mode"/> | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 |
 | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 |
@@ -523,7 +522,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.toMountPoint" text="toMountPoint"/> | [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [delete_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx#:~:text=toMountPoint), [delete_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx#:~:text=toMountPoint), [extend_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/extend_button.tsx#:~:text=toMountPoint), [extend_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/extend_button.tsx#:~:text=toMountPoint), [inspect_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx#:~:text=toMountPoint), [inspect_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx#:~:text=toMountPoint)+ 4 more | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibSecurityPluginApi" section="def-server.SecurityPluginSetup.authc" text="authc"/> | [session_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/search/session/session_service.ts#:~:text=authc) | - |
 | <DocLink id="kibUiActionsPluginApi" section="def-public.UiActionsService.executeTriggerActions" text="executeTriggerActions"/> | [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions), [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions) | - |
 | <DocLink id="kibKbnCoreSavedObjectsCommonPluginApi" section="def-common.SavedObjectReference" text="SavedObjectReference"/> | [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference) | - |
@@ -654,14 +652,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 
 
-## esUiShared
-
-| Deprecated API | Reference location(s) | Remove By |
-| ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [view_api_request_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx#:~:text=RedirectAppLinks), [view_api_request_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx#:~:text=RedirectAppLinks), [view_api_request_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx#:~:text=RedirectAppLinks) | - |
-
-
-
 ## eventAnnotation
 
 | Deprecated API | Reference location(s) | Remove By |
@@ -685,7 +675,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | ---------------|-----------|-----------|
 | <DocLink id="kibDiscoverPluginApi" section="def-common.DiscoverAppLocatorParams.indexPatternId" text="indexPatternId"/> | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.toMountPoint" text="toMountPoint"/> | [add_to_case_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx#:~:text=toMountPoint), [add_to_case_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx#:~:text=toMountPoint) | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibKbnCoreSavedObjectsBrowserPluginApi" section="def-common.SavedObjectsStart" text="SavedObjectsStart"/> | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - |
 
@@ -830,7 +819,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibDataPluginApi" section="def-common.SavedObject.migrationVersion" text="migrationVersion"/> | [install.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts#:~:text=migrationVersion), [install.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts#:~:text=migrationVersion), [install.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts#:~:text=migrationVersion), [get.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts#:~:text=migrationVersion), [get.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts#:~:text=migrationVersion), [get.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts#:~:text=migrationVersion), [get.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts#:~:text=migrationVersion), [install.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts#:~:text=migrationVersion), [install.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts#:~:text=migrationVersion), [install.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts#:~:text=migrationVersion)+ 22 more | - |
 | <DocLink id="kibDiscoverPluginApi" section="def-common.DiscoverAppLocatorParams.indexPatternId" text="indexPatternId"/> | [use_get_logs_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/use_get_logs_discover_link.tsx#:~:text=indexPatternId) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.toMountPoint" text="toMountPoint"/> | [use_confirm_open_unverified.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx#:~:text=toMountPoint), [use_confirm_open_unverified.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint)+ 12 more | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=RedirectAppLinks)+ 5 more | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibLicensingPluginApi" section="def-public.PublicLicense.mode" text="mode"/> | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 |
 | <DocLink id="kibLicensingPluginApi" section="def-server.PublicLicense.mode" text="mode"/> | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 |
@@ -898,7 +886,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=RedirectAppLinks), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=RedirectAppLinks)+ 1 more | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibKbnCoreLifecycleBrowserPluginApi" section="def-common.CoreStart.savedObjects" text="savedObjects"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/plugin.ts#:~:text=savedObjects) | - |
 | <DocLink id="kibKbnCoreSavedObjectsApiBrowserPluginApi" section="def-common.SavedObjectsClientContract" text="SavedObjectsClientContract"/> | [kibana_services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/kibana_services.ts#:~:text=SavedObjectsClientContract), [kibana_services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/kibana_services.ts#:~:text=SavedObjectsClientContract) | - |
@@ -920,7 +907,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 |
 
@@ -975,7 +961,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibKbnCoreApplicationBrowserPluginApi" section="def-common.AppMountParameters.appBasePath" text="appBasePath"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=appBasePath) | 8.8.0 |
 
@@ -1110,7 +1095,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | ---------------|-----------|-----------|
 | <DocLink id="kibAlertingPluginApi" section="def-public.PluginSetupContract.registerNavigation" text="registerNavigation"/> | [register_ml_alerts.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/alerting/register_ml_alerts.ts#:~:text=registerNavigation) | - |
 | <DocLink id="kibAlertingPluginApi" section="def-server.RuleExecutorServices.alertFactory" text="alertFactory"/> | [register_jobs_monitoring_rule_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts#:~:text=alertFactory), [register_jobs_monitoring_rule_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/register_jobs_monitoring_rule_type.ts#:~:text=alertFactory) | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=KibanaThemeProvider)+ 2 more | - |
 | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 |
 | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24) | 8.8.0 |
@@ -1153,7 +1137,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibKbnCoreElasticsearchServerPluginApi" section="def-common.ElasticsearchServiceSetup.legacy" text="legacy"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/server/plugin.ts#:~:text=legacy) | - |
 
@@ -1276,7 +1259,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [saved_objects_edition_page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx#:~:text=RedirectAppLinks), [saved_objects_edition_page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx#:~:text=RedirectAppLinks), [saved_objects_edition_page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx#:~:text=RedirectAppLinks), [saved_objects_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx#:~:text=RedirectAppLinks), [saved_objects_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx#:~:text=RedirectAppLinks), [saved_objects_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKbnCoreSavedObjectsCommonPluginApi" section="def-common.SavedObject" text="SavedObject"/> | [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject) | - |
 | <DocLink id="kibKbnCoreSavedObjectsCommonPluginApi" section="def-common.SavedObjectReference" text="SavedObjectReference"/> | [record.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/services/types/record.ts#:~:text=SavedObjectReference), [record.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/services/types/record.ts#:~:text=SavedObjectReference) | - |
 | <DocLink id="kibKbnCoreSavedObjectsCommonPluginApi" section="def-common.SavedObjectsImportSuccess.createNewCopy" text="createNewCopy"/> | [resolve_import_errors.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts#:~:text=createNewCopy) | - |
@@ -1452,7 +1434,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 | <DocLink id="kibAlertingPluginApi" section="def-server.RuleExecutorServices.alertFactory" text="alertFactory"/> | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/common.ts#:~:text=alertFactory), [message_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts#:~:text=alertFactory), [tls_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts#:~:text=alertFactory), [monitor_status_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts#:~:text=alertFactory) | - |
 | <DocLink id="kibDiscoverPluginApi" section="def-common.DiscoverAppLocatorParams.indexPatternId" text="indexPatternId"/> | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.toMountPoint" text="toMountPoint"/> | [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint)+ 6 more | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider) | - |
 
 
@@ -1535,7 +1516,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/shared_imports.ts#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/shared_imports.ts#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider) | - |
 | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24) | 8.8.0 |
 | <DocLink id="kibKbnCoreSavedObjectsCommonPluginApi" section="def-common.SavedObject" text="SavedObject"/> | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/common/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/common/types.ts#:~:text=SavedObject) | - |
@@ -1548,7 +1528,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 | ---------------|-----------|-----------|
 | <DocLink id="kibAlertingPluginApi" section="def-server.RuleExecutorServices.alertFactory" text="alertFactory"/> | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts#:~:text=alertFactory), [status_check.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts#:~:text=alertFactory), [tls.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts#:~:text=alertFactory), [tls_legacy.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts#:~:text=alertFactory), [duration_anomaly.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts#:~:text=alertFactory) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.toMountPoint" text="toMountPoint"/> | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint) | - |
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider) | - |
 
 
@@ -1557,7 +1536,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 
 | Deprecated API | Reference location(s) | Remove By |
 | ---------------|-----------|-----------|
-| <DocLink id="kibKibanaReactPluginApi" section="def-public.RedirectAppLinks" text="RedirectAppLinks"/> | [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks) | - |
 | <DocLink id="kibKibanaReactPluginApi" section="def-public.KibanaThemeProvider" text="KibanaThemeProvider"/> | [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider) | - |
 
 
diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx
index 53c3e26cc855e..ffce665be68a0 100644
--- a/api_docs/deprecations_by_team.mdx
+++ b/api_docs/deprecations_by_team.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam
 slug: /kibana-dev-docs/api-meta/deprecations-due-by-team
 title: Deprecated APIs due to be removed, by team
 description: Lists the teams that are referencing deprecated APIs with a remove by date.
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -128,9 +128,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/
 
 | Plugin | Deprecated API | Reference location(s) | Remove By |
 | --------|-------|-----------|-----------|
-| indexLifecycleManagement | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 |
 | management | <DocLink id="kibKbnCoreApplicationBrowserPluginApi" section="def-common.AppMountParameters.appBasePath" text="appBasePath"/> | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 |
 | licenseManagement | <DocLink id="kibLicensingPluginApi" section="def-public.LicensingPluginSetup.license$" text="license$"/> | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 |
+| indexLifecycleManagement | <DocLink id="kibLicensingPluginApi" section="def-server.LicensingPluginSetup.license$" text="license$"/> | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24), [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24) | 8.8.0 |
 
 
 
diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx
index 68bf178bdd1da..b0a5d9d9908bf 100644
--- a/api_docs/dev_tools.mdx
+++ b/api_docs/dev_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools
 title: "devTools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the devTools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools']
 ---
 import devToolsObj from './dev_tools.devdocs.json';
diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json
index 5542d68c109d5..307409fec37cb 100644
--- a/api_docs/discover.devdocs.json
+++ b/api_docs/discover.devdocs.json
@@ -794,7 +794,15 @@
                 "section": "def-common.DataView",
                 "text": "DataView"
               },
-              ") => void; undoSavedSearchChanges: () => void; updateAdHocDataViewId: () => void; }"
+              ") => void; undoSavedSearchChanges: () => Promise<",
+              {
+                "pluginId": "savedSearch",
+                "scope": "public",
+                "docId": "kibSavedSearchPluginApi",
+                "section": "def-public.SavedSearch",
+                "text": "SavedSearch"
+              },
+              ">; updateAdHocDataViewId: () => void; }"
             ],
             "path": "src/plugins/discover/public/application/main/services/discover_state.ts",
             "deprecated": false,
@@ -985,6 +993,20 @@
             "deprecated": false,
             "trackAdoption": false
           },
+          {
+            "parentPluginId": "discover",
+            "id": "def-public.FlyoutCustomization.title",
+            "type": "string",
+            "tags": [],
+            "label": "title",
+            "description": [],
+            "signature": [
+              "string | undefined"
+            ],
+            "path": "src/plugins/discover/public/customizations/customization_types/flyout_customization.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
           {
             "parentPluginId": "discover",
             "id": "def-public.FlyoutCustomization.actions",
@@ -1267,6 +1289,39 @@
             "trackAdoption": false,
             "children": [],
             "returnComment": []
+          },
+          {
+            "parentPluginId": "discover",
+            "id": "def-public.TopNavCustomization.defaultBadges",
+            "type": "Object",
+            "tags": [],
+            "label": "defaultBadges",
+            "description": [],
+            "signature": [
+              "TopNavDefaultBadges",
+              " | undefined"
+            ],
+            "path": "src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          },
+          {
+            "parentPluginId": "discover",
+            "id": "def-public.TopNavCustomization.getBadges",
+            "type": "Function",
+            "tags": [],
+            "label": "getBadges",
+            "description": [],
+            "signature": [
+              "(() => ",
+              "TopNavBadge",
+              "[]) | undefined"
+            ],
+            "path": "src/plugins/discover/public/customizations/customization_types/top_nav_customization.ts",
+            "deprecated": false,
+            "trackAdoption": false,
+            "children": [],
+            "returnComment": []
           }
         ],
         "initialIsOpen": false
diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx
index 2dbf602a966c4..230d04788ce89 100644
--- a/api_docs/discover.mdx
+++ b/api_docs/discover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover
 title: "discover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discover plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover']
 ---
 import discoverObj from './discover.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 130 | 0 | 87 | 18 |
+| 133 | 0 | 90 | 20 |
 
 ## Client
 
diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx
index 181dc26213a81..0b6cd9d7b3540 100644
--- a/api_docs/discover_enhanced.mdx
+++ b/api_docs/discover_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced
 title: "discoverEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the discoverEnhanced plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced']
 ---
 import discoverEnhancedObj from './discover_enhanced.devdocs.json';
diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx
index 7c487e68495a5..856b371d087d0 100644
--- a/api_docs/ecs_data_quality_dashboard.mdx
+++ b/api_docs/ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard
 title: "ecsDataQualityDashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ecsDataQualityDashboard plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard']
 ---
 import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx
index 098f02b688d1b..46a67d5d96cfc 100644
--- a/api_docs/elastic_assistant.mdx
+++ b/api_docs/elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant
 title: "elasticAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the elasticAssistant plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant']
 ---
 import elasticAssistantObj from './elastic_assistant.devdocs.json';
diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx
index 72464eccc5945..96d23f6f6d4d8 100644
--- a/api_docs/embeddable.mdx
+++ b/api_docs/embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable
 title: "embeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddable plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable']
 ---
 import embeddableObj from './embeddable.devdocs.json';
diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx
index e25b138303ec6..0ba21b09a42f7 100644
--- a/api_docs/embeddable_enhanced.mdx
+++ b/api_docs/embeddable_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced
 title: "embeddableEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the embeddableEnhanced plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced']
 ---
 import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json';
diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx
index b7bbf16ef4a56..66126c5c2c014 100644
--- a/api_docs/encrypted_saved_objects.mdx
+++ b/api_docs/encrypted_saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects
 title: "encryptedSavedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the encryptedSavedObjects plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects']
 ---
 import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json';
diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx
index ec1a1b2bfdfc6..2db33783ab3e5 100644
--- a/api_docs/enterprise_search.mdx
+++ b/api_docs/enterprise_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch
 title: "enterpriseSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the enterpriseSearch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch']
 ---
 import enterpriseSearchObj from './enterprise_search.devdocs.json';
diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx
index 2b53cad3a5b35..caeb5c1b936fd 100644
--- a/api_docs/es_ui_shared.mdx
+++ b/api_docs/es_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared
 title: "esUiShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the esUiShared plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared']
 ---
 import esUiSharedObj from './es_ui_shared.devdocs.json';
diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx
index 281962b3aa3d8..c394f468e6f2e 100644
--- a/api_docs/event_annotation.mdx
+++ b/api_docs/event_annotation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation
 title: "eventAnnotation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotation plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation']
 ---
 import eventAnnotationObj from './event_annotation.devdocs.json';
diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx
index 578e1619ddac6..45a9544954c11 100644
--- a/api_docs/event_annotation_listing.mdx
+++ b/api_docs/event_annotation_listing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing
 title: "eventAnnotationListing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventAnnotationListing plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing']
 ---
 import eventAnnotationListingObj from './event_annotation_listing.devdocs.json';
diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx
index 2c16bc941f737..5b5cda11c9026 100644
--- a/api_docs/event_log.mdx
+++ b/api_docs/event_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog
 title: "eventLog"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the eventLog plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog']
 ---
 import eventLogObj from './event_log.devdocs.json';
diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx
index ad8dd06dd48f8..fbfd4256d9030 100644
--- a/api_docs/exploratory_view.mdx
+++ b/api_docs/exploratory_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView
 title: "exploratoryView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the exploratoryView plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView']
 ---
 import exploratoryViewObj from './exploratory_view.devdocs.json';
diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx
index 2d05383255c66..41ec9183a72a3 100644
--- a/api_docs/expression_error.mdx
+++ b/api_docs/expression_error.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError
 title: "expressionError"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionError plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError']
 ---
 import expressionErrorObj from './expression_error.devdocs.json';
diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx
index 9c722652e2ccc..d4aae58d8e017 100644
--- a/api_docs/expression_gauge.mdx
+++ b/api_docs/expression_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge
 title: "expressionGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionGauge plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge']
 ---
 import expressionGaugeObj from './expression_gauge.devdocs.json';
diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx
index 5a80df647b957..66305178290a0 100644
--- a/api_docs/expression_heatmap.mdx
+++ b/api_docs/expression_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap
 title: "expressionHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionHeatmap plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap']
 ---
 import expressionHeatmapObj from './expression_heatmap.devdocs.json';
diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx
index 3bab94db5dada..2b1262a528738 100644
--- a/api_docs/expression_image.mdx
+++ b/api_docs/expression_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage
 title: "expressionImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionImage plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage']
 ---
 import expressionImageObj from './expression_image.devdocs.json';
diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx
index f287e8ad640b5..ea2795773464b 100644
--- a/api_docs/expression_legacy_metric_vis.mdx
+++ b/api_docs/expression_legacy_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis
 title: "expressionLegacyMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionLegacyMetricVis plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis']
 ---
 import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json';
diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx
index c2f762e6f3ffd..d2ab61ade7503 100644
--- a/api_docs/expression_metric.mdx
+++ b/api_docs/expression_metric.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric
 title: "expressionMetric"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetric plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric']
 ---
 import expressionMetricObj from './expression_metric.devdocs.json';
diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx
index c2554f9ef13f3..365859d62dade 100644
--- a/api_docs/expression_metric_vis.mdx
+++ b/api_docs/expression_metric_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis
 title: "expressionMetricVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionMetricVis plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis']
 ---
 import expressionMetricVisObj from './expression_metric_vis.devdocs.json';
diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx
index 4ce5a3ae599f8..baf830801c316 100644
--- a/api_docs/expression_partition_vis.mdx
+++ b/api_docs/expression_partition_vis.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis
 title: "expressionPartitionVis"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionPartitionVis plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis']
 ---
 import expressionPartitionVisObj from './expression_partition_vis.devdocs.json';
diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx
index 0320303b8c9b7..bfac6d605de1e 100644
--- a/api_docs/expression_repeat_image.mdx
+++ b/api_docs/expression_repeat_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage
 title: "expressionRepeatImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRepeatImage plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage']
 ---
 import expressionRepeatImageObj from './expression_repeat_image.devdocs.json';
diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx
index 854e2da7ccb2e..6354995af4c36 100644
--- a/api_docs/expression_reveal_image.mdx
+++ b/api_docs/expression_reveal_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage
 title: "expressionRevealImage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionRevealImage plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage']
 ---
 import expressionRevealImageObj from './expression_reveal_image.devdocs.json';
diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx
index e4b307872b1b5..cf8e7ede1d660 100644
--- a/api_docs/expression_shape.mdx
+++ b/api_docs/expression_shape.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape
 title: "expressionShape"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionShape plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape']
 ---
 import expressionShapeObj from './expression_shape.devdocs.json';
diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx
index 56b837ae8367d..4e903e895a156 100644
--- a/api_docs/expression_tagcloud.mdx
+++ b/api_docs/expression_tagcloud.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud
 title: "expressionTagcloud"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionTagcloud plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud']
 ---
 import expressionTagcloudObj from './expression_tagcloud.devdocs.json';
diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx
index 675f994a4ec77..60e6708c60fed 100644
--- a/api_docs/expression_x_y.mdx
+++ b/api_docs/expression_x_y.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY
 title: "expressionXY"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressionXY plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY']
 ---
 import expressionXYObj from './expression_x_y.devdocs.json';
diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx
index cfa4e3061c505..d78dbf8fe602d 100644
--- a/api_docs/expressions.mdx
+++ b/api_docs/expressions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions
 title: "expressions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the expressions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions']
 ---
 import expressionsObj from './expressions.devdocs.json';
diff --git a/api_docs/features.mdx b/api_docs/features.mdx
index 405d78537a477..125a1054ff102 100644
--- a/api_docs/features.mdx
+++ b/api_docs/features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features
 title: "features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the features plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features']
 ---
 import featuresObj from './features.devdocs.json';
diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx
index 5c7c6b82b8b79..2a891910876bd 100644
--- a/api_docs/field_formats.mdx
+++ b/api_docs/field_formats.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats
 title: "fieldFormats"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fieldFormats plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats']
 ---
 import fieldFormatsObj from './field_formats.devdocs.json';
diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx
index d158496cb0e46..962b579a00944 100644
--- a/api_docs/file_upload.mdx
+++ b/api_docs/file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload
 title: "fileUpload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fileUpload plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload']
 ---
 import fileUploadObj from './file_upload.devdocs.json';
diff --git a/api_docs/files.mdx b/api_docs/files.mdx
index dc83963f34823..fe22a5a96a6a2 100644
--- a/api_docs/files.mdx
+++ b/api_docs/files.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files
 title: "files"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the files plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files']
 ---
 import filesObj from './files.devdocs.json';
diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx
index 47e5570afdab0..7ad63d8a72487 100644
--- a/api_docs/files_management.mdx
+++ b/api_docs/files_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement
 title: "filesManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the filesManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement']
 ---
 import filesManagementObj from './files_management.devdocs.json';
diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx
index 2dc8e7500c00f..917d21b444592 100644
--- a/api_docs/fleet.mdx
+++ b/api_docs/fleet.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet
 title: "fleet"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the fleet plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet']
 ---
 import fleetObj from './fleet.devdocs.json';
diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx
index 329555347fea7..9d432df5675f5 100644
--- a/api_docs/global_search.mdx
+++ b/api_docs/global_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch
 title: "globalSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the globalSearch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch']
 ---
 import globalSearchObj from './global_search.devdocs.json';
diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx
index ca4786f8f5ae6..0f9a8ebbd4be0 100644
--- a/api_docs/guided_onboarding.mdx
+++ b/api_docs/guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding
 title: "guidedOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the guidedOnboarding plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding']
 ---
 import guidedOnboardingObj from './guided_onboarding.devdocs.json';
diff --git a/api_docs/home.mdx b/api_docs/home.mdx
index adbdfbb9be4e0..bf992179f1b2f 100644
--- a/api_docs/home.mdx
+++ b/api_docs/home.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home
 title: "home"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the home plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home']
 ---
 import homeObj from './home.devdocs.json';
diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx
index 2eda17b0ac9e1..1a870394fe1f6 100644
--- a/api_docs/image_embeddable.mdx
+++ b/api_docs/image_embeddable.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable
 title: "imageEmbeddable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the imageEmbeddable plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable']
 ---
 import imageEmbeddableObj from './image_embeddable.devdocs.json';
diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx
index cf45ebff6a5a3..104157c4de0ee 100644
--- a/api_docs/index_lifecycle_management.mdx
+++ b/api_docs/index_lifecycle_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement
 title: "indexLifecycleManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexLifecycleManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement']
 ---
 import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json';
diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx
index 0d72e61bf0183..428b110e86ab4 100644
--- a/api_docs/index_management.mdx
+++ b/api_docs/index_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement
 title: "indexManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the indexManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement']
 ---
 import indexManagementObj from './index_management.devdocs.json';
diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx
index 54614d534b958..1e064f0431c68 100644
--- a/api_docs/infra.mdx
+++ b/api_docs/infra.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra
 title: "infra"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the infra plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra']
 ---
 import infraObj from './infra.devdocs.json';
diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx
index e1b77baa05d95..194f85838dcc2 100644
--- a/api_docs/inspector.mdx
+++ b/api_docs/inspector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector
 title: "inspector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the inspector plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector']
 ---
 import inspectorObj from './inspector.devdocs.json';
diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx
index b010a3e6b98ee..8a96e9b99cdb5 100644
--- a/api_docs/interactive_setup.mdx
+++ b/api_docs/interactive_setup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup
 title: "interactiveSetup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the interactiveSetup plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup']
 ---
 import interactiveSetupObj from './interactive_setup.devdocs.json';
diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx
index d4deb5395cfd1..064f99c177f04 100644
--- a/api_docs/kbn_ace.mdx
+++ b/api_docs/kbn_ace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace
 title: "@kbn/ace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ace plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace']
 ---
 import kbnAceObj from './kbn_ace.devdocs.json';
diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx
index 5a386671ac8ae..eb1c1b6d554a9 100644
--- a/api_docs/kbn_aiops_components.mdx
+++ b/api_docs/kbn_aiops_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components
 title: "@kbn/aiops-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components']
 ---
 import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json';
diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx
index f7f016e538744..56d6e0ee728d3 100644
--- a/api_docs/kbn_aiops_utils.mdx
+++ b/api_docs/kbn_aiops_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils
 title: "@kbn/aiops-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/aiops-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils']
 ---
 import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json';
diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx
index b7fb28925de06..8a89654d21ade 100644
--- a/api_docs/kbn_alerting_api_integration_helpers.mdx
+++ b/api_docs/kbn_alerting_api_integration_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers
 title: "@kbn/alerting-api-integration-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-api-integration-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers']
 ---
 import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json';
diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx
index 27f3ace573fe2..dce00b8a21878 100644
--- a/api_docs/kbn_alerting_state_types.mdx
+++ b/api_docs/kbn_alerting_state_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types
 title: "@kbn/alerting-state-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerting-state-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types']
 ---
 import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json';
diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx
index a3fca44b21d59..3c05cbfbf692e 100644
--- a/api_docs/kbn_alerts_as_data_utils.mdx
+++ b/api_docs/kbn_alerts_as_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils
 title: "@kbn/alerts-as-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-as-data-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils']
 ---
 import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json';
diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx
index 138b8ecafdeff..d8fa08b4b640a 100644
--- a/api_docs/kbn_alerts_ui_shared.mdx
+++ b/api_docs/kbn_alerts_ui_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared
 title: "@kbn/alerts-ui-shared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/alerts-ui-shared plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared']
 ---
 import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json';
diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx
index d393cc7dbeea9..0f7e3a93fe923 100644
--- a/api_docs/kbn_analytics.mdx
+++ b/api_docs/kbn_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics
 title: "@kbn/analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics']
 ---
 import kbnAnalyticsObj from './kbn_analytics.devdocs.json';
diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx
index d73d9deb336a3..26c16146589e4 100644
--- a/api_docs/kbn_analytics_client.mdx
+++ b/api_docs/kbn_analytics_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client
 title: "@kbn/analytics-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-client plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client']
 ---
 import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
index 7970bc53b5af0..9e5d32bbce526 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser
 title: "@kbn/analytics-shippers-elastic-v3-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser']
 ---
 import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
index 0d81f263ed735..a9d55c8b263c3 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common
 title: "@kbn/analytics-shippers-elastic-v3-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common']
 ---
 import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
index 0d89459004b21..3781d6ccfc8ab 100644
--- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
+++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server
 title: "@kbn/analytics-shippers-elastic-v3-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server']
 ---
 import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx
index b07c6e5617f93..9899ca45221e6 100644
--- a/api_docs/kbn_analytics_shippers_fullstory.mdx
+++ b/api_docs/kbn_analytics_shippers_fullstory.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory
 title: "@kbn/analytics-shippers-fullstory"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-fullstory plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory']
 ---
 import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json';
diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx
index 3cee134414e01..9d508bdf04630 100644
--- a/api_docs/kbn_analytics_shippers_gainsight.mdx
+++ b/api_docs/kbn_analytics_shippers_gainsight.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight
 title: "@kbn/analytics-shippers-gainsight"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/analytics-shippers-gainsight plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight']
 ---
 import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json';
diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx
index df5bf3b374184..76ea0e0712cd2 100644
--- a/api_docs/kbn_apm_config_loader.mdx
+++ b/api_docs/kbn_apm_config_loader.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader
 title: "@kbn/apm-config-loader"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-config-loader plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader']
 ---
 import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx
index 5273be5bdd8e6..62e71a21a17b8 100644
--- a/api_docs/kbn_apm_synthtrace.mdx
+++ b/api_docs/kbn_apm_synthtrace.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace
 title: "@kbn/apm-synthtrace"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace']
 ---
 import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json';
diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx
index 3d17aea228c21..ad226a42732d1 100644
--- a/api_docs/kbn_apm_synthtrace_client.mdx
+++ b/api_docs/kbn_apm_synthtrace_client.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client
 title: "@kbn/apm-synthtrace-client"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-synthtrace-client plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client']
 ---
 import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json';
diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx
index 63087e6ce2a6b..55543edc5b3de 100644
--- a/api_docs/kbn_apm_utils.mdx
+++ b/api_docs/kbn_apm_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils
 title: "@kbn/apm-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/apm-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils']
 ---
 import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json';
diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx
index 2dd3eac57e854..76bcfb7888c10 100644
--- a/api_docs/kbn_axe_config.mdx
+++ b/api_docs/kbn_axe_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config
 title: "@kbn/axe-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/axe-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config']
 ---
 import kbnAxeConfigObj from './kbn_axe_config.devdocs.json';
diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx
index 68cc8e8036638..3d8ac75b0a667 100644
--- a/api_docs/kbn_cases_components.mdx
+++ b/api_docs/kbn_cases_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components
 title: "@kbn/cases-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cases-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components']
 ---
 import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json';
diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx
index dc003e63ff2ee..dcbed958dc1b1 100644
--- a/api_docs/kbn_cell_actions.mdx
+++ b/api_docs/kbn_cell_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions
 title: "@kbn/cell-actions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cell-actions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions']
 ---
 import kbnCellActionsObj from './kbn_cell_actions.devdocs.json';
diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx
index 613b0788918b5..62a30938068f7 100644
--- a/api_docs/kbn_chart_expressions_common.mdx
+++ b/api_docs/kbn_chart_expressions_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common
 title: "@kbn/chart-expressions-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-expressions-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common']
 ---
 import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json';
diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx
index 716cc56b61e6d..d6306e31b0b27 100644
--- a/api_docs/kbn_chart_icons.mdx
+++ b/api_docs/kbn_chart_icons.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons
 title: "@kbn/chart-icons"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/chart-icons plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons']
 ---
 import kbnChartIconsObj from './kbn_chart_icons.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx
index 27b28d0318a91..4632895e454ca 100644
--- a/api_docs/kbn_ci_stats_core.mdx
+++ b/api_docs/kbn_ci_stats_core.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core
 title: "@kbn/ci-stats-core"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-core plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core']
 ---
 import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx
index 1ecb0e38ae755..11d527796c875 100644
--- a/api_docs/kbn_ci_stats_performance_metrics.mdx
+++ b/api_docs/kbn_ci_stats_performance_metrics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics
 title: "@kbn/ci-stats-performance-metrics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-performance-metrics plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics']
 ---
 import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json';
diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx
index 1456063d30205..100e0a93cc8ae 100644
--- a/api_docs/kbn_ci_stats_reporter.mdx
+++ b/api_docs/kbn_ci_stats_reporter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter
 title: "@kbn/ci-stats-reporter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ci-stats-reporter plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter']
 ---
 import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json';
diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx
index 5436a44395290..13cd5694a153f 100644
--- a/api_docs/kbn_cli_dev_mode.mdx
+++ b/api_docs/kbn_cli_dev_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode
 title: "@kbn/cli-dev-mode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cli-dev-mode plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode']
 ---
 import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json';
diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx
index 5adbaf94b5ed0..04ac564bd32e0 100644
--- a/api_docs/kbn_code_editor.mdx
+++ b/api_docs/kbn_code_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor
 title: "@kbn/code-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/code-editor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor']
 ---
 import kbnCodeEditorObj from './kbn_code_editor.devdocs.json';
diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx
index eeacd51fb40f2..84031ce239a4e 100644
--- a/api_docs/kbn_coloring.mdx
+++ b/api_docs/kbn_coloring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring
 title: "@kbn/coloring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/coloring plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring']
 ---
 import kbnColoringObj from './kbn_coloring.devdocs.json';
diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx
index 49260dc158d42..45a54c46fe8f5 100644
--- a/api_docs/kbn_config.mdx
+++ b/api_docs/kbn_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config
 title: "@kbn/config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config']
 ---
 import kbnConfigObj from './kbn_config.devdocs.json';
diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx
index adf4e21cc9248..67ce45b7f8df5 100644
--- a/api_docs/kbn_config_mocks.mdx
+++ b/api_docs/kbn_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks
 title: "@kbn/config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks']
 ---
 import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx
index 26c897f42311f..021b44c7a6ff0 100644
--- a/api_docs/kbn_config_schema.mdx
+++ b/api_docs/kbn_config_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema
 title: "@kbn/config-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/config-schema plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema']
 ---
 import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json';
diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx
index ba559d59cf3e3..cc09784f0dc3d 100644
--- a/api_docs/kbn_content_management_content_editor.mdx
+++ b/api_docs/kbn_content_management_content_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor
 title: "@kbn/content-management-content-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-content-editor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor']
 ---
 import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json';
diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
index eeca0ab91ce0c..10874e550daa2 100644
--- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx
+++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view
 title: "@kbn/content-management-tabbed-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-tabbed-table-list-view plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view']
 ---
 import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx
index e72ebe8d69f08..fd914ddd18bc8 100644
--- a/api_docs/kbn_content_management_table_list_view.mdx
+++ b/api_docs/kbn_content_management_table_list_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view
 title: "@kbn/content-management-table-list-view"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view']
 ---
 import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json';
diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx
index cfa076c621404..fedd98cd66e46 100644
--- a/api_docs/kbn_content_management_table_list_view_table.mdx
+++ b/api_docs/kbn_content_management_table_list_view_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table
 title: "@kbn/content-management-table-list-view-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-table-list-view-table plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table']
 ---
 import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json';
diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx
index 751087a1d526c..dc93b744a7ab6 100644
--- a/api_docs/kbn_content_management_utils.mdx
+++ b/api_docs/kbn_content_management_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils
 title: "@kbn/content-management-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/content-management-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils']
 ---
 import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx
index 2c61fe57690d5..a3109846ba360 100644
--- a/api_docs/kbn_core_analytics_browser.mdx
+++ b/api_docs/kbn_core_analytics_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser
 title: "@kbn/core-analytics-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser']
 ---
 import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx
index 51235dd632977..02c2ad54a81fd 100644
--- a/api_docs/kbn_core_analytics_browser_internal.mdx
+++ b/api_docs/kbn_core_analytics_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal
 title: "@kbn/core-analytics-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal']
 ---
 import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx
index a9a6c17ab59e3..526bb20e23514 100644
--- a/api_docs/kbn_core_analytics_browser_mocks.mdx
+++ b/api_docs/kbn_core_analytics_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks
 title: "@kbn/core-analytics-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks']
 ---
 import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx
index 011ca29ab46be..4a09e2f4e1542 100644
--- a/api_docs/kbn_core_analytics_server.mdx
+++ b/api_docs/kbn_core_analytics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server
 title: "@kbn/core-analytics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server']
 ---
 import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx
index 08fb7115efb85..8bc5f2ab125ac 100644
--- a/api_docs/kbn_core_analytics_server_internal.mdx
+++ b/api_docs/kbn_core_analytics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal
 title: "@kbn/core-analytics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal']
 ---
 import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx
index 7f2a66447241e..f03033a25621a 100644
--- a/api_docs/kbn_core_analytics_server_mocks.mdx
+++ b/api_docs/kbn_core_analytics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks
 title: "@kbn/core-analytics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-analytics-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks']
 ---
 import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx
index 8b368ec94e02e..8fab7372bda73 100644
--- a/api_docs/kbn_core_application_browser.mdx
+++ b/api_docs/kbn_core_application_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser
 title: "@kbn/core-application-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser']
 ---
 import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx
index 943ae007c2847..9e1d1136c8777 100644
--- a/api_docs/kbn_core_application_browser_internal.mdx
+++ b/api_docs/kbn_core_application_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal
 title: "@kbn/core-application-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal']
 ---
 import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx
index a62873a6e3998..2ec54d95e10ae 100644
--- a/api_docs/kbn_core_application_browser_mocks.mdx
+++ b/api_docs/kbn_core_application_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks
 title: "@kbn/core-application-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks']
 ---
 import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx
index 89c109767f55d..65001f8d5766f 100644
--- a/api_docs/kbn_core_application_common.mdx
+++ b/api_docs/kbn_core_application_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common
 title: "@kbn/core-application-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-application-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common']
 ---
 import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx
index 7149a5470f6ec..ef63e1aecb763 100644
--- a/api_docs/kbn_core_apps_browser_internal.mdx
+++ b/api_docs/kbn_core_apps_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal
 title: "@kbn/core-apps-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal']
 ---
 import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx
index 022bad3ee36e3..62559532eaf30 100644
--- a/api_docs/kbn_core_apps_browser_mocks.mdx
+++ b/api_docs/kbn_core_apps_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks
 title: "@kbn/core-apps-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks']
 ---
 import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx
index 4f2deb3002fdd..2a4dba7e0390a 100644
--- a/api_docs/kbn_core_apps_server_internal.mdx
+++ b/api_docs/kbn_core_apps_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal
 title: "@kbn/core-apps-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-apps-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal']
 ---
 import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx
index b4d7922635408..3345b88c81d19 100644
--- a/api_docs/kbn_core_base_browser_mocks.mdx
+++ b/api_docs/kbn_core_base_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks
 title: "@kbn/core-base-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks']
 ---
 import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx
index e20b294c8114d..d25609a188af3 100644
--- a/api_docs/kbn_core_base_common.mdx
+++ b/api_docs/kbn_core_base_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common
 title: "@kbn/core-base-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common']
 ---
 import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx
index a395f1d993d34..c24313559302b 100644
--- a/api_docs/kbn_core_base_server_internal.mdx
+++ b/api_docs/kbn_core_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal
 title: "@kbn/core-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal']
 ---
 import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx
index b6faa2b0e8dd8..b2c5c930df758 100644
--- a/api_docs/kbn_core_base_server_mocks.mdx
+++ b/api_docs/kbn_core_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks
 title: "@kbn/core-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-base-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks']
 ---
 import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx
index 4c7627abe1ab0..ae7640109ec09 100644
--- a/api_docs/kbn_core_capabilities_browser_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks
 title: "@kbn/core-capabilities-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks']
 ---
 import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx
index c444593076042..708b8faa55d5b 100644
--- a/api_docs/kbn_core_capabilities_common.mdx
+++ b/api_docs/kbn_core_capabilities_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common
 title: "@kbn/core-capabilities-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common']
 ---
 import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx
index 32a203dae25e2..550c4b5a1656d 100644
--- a/api_docs/kbn_core_capabilities_server.mdx
+++ b/api_docs/kbn_core_capabilities_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server
 title: "@kbn/core-capabilities-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server']
 ---
 import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json';
diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx
index 8c539db90b1d8..68255dfa4c1cc 100644
--- a/api_docs/kbn_core_capabilities_server_mocks.mdx
+++ b/api_docs/kbn_core_capabilities_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks
 title: "@kbn/core-capabilities-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-capabilities-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks']
 ---
 import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx
index 71ca289d98497..110332f69ba44 100644
--- a/api_docs/kbn_core_chrome_browser.mdx
+++ b/api_docs/kbn_core_chrome_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser
 title: "@kbn/core-chrome-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser']
 ---
 import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json';
diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx
index 8969b684a4788..0dfcd4f519756 100644
--- a/api_docs/kbn_core_chrome_browser_mocks.mdx
+++ b/api_docs/kbn_core_chrome_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks
 title: "@kbn/core-chrome-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-chrome-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks']
 ---
 import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx
index f68800415203d..f21f06afe4297 100644
--- a/api_docs/kbn_core_config_server_internal.mdx
+++ b/api_docs/kbn_core_config_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal
 title: "@kbn/core-config-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-config-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal']
 ---
 import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx
index 6adde1a9d8196..8a0830cd060d1 100644
--- a/api_docs/kbn_core_custom_branding_browser.mdx
+++ b/api_docs/kbn_core_custom_branding_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser
 title: "@kbn/core-custom-branding-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser']
 ---
 import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx
index 816494b0b4b83..ed32d89905241 100644
--- a/api_docs/kbn_core_custom_branding_browser_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal
 title: "@kbn/core-custom-branding-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal']
 ---
 import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
index 238bd3afc30fb..1d0af77e8b44c 100644
--- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks
 title: "@kbn/core-custom-branding-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks']
 ---
 import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx
index 81471a2917544..3bcf1fc00e518 100644
--- a/api_docs/kbn_core_custom_branding_common.mdx
+++ b/api_docs/kbn_core_custom_branding_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common
 title: "@kbn/core-custom-branding-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common']
 ---
 import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx
index 17131980f0509..4655731b8d1ef 100644
--- a/api_docs/kbn_core_custom_branding_server.mdx
+++ b/api_docs/kbn_core_custom_branding_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server
 title: "@kbn/core-custom-branding-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server']
 ---
 import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx
index 8e3d6229500be..1794f470411b2 100644
--- a/api_docs/kbn_core_custom_branding_server_internal.mdx
+++ b/api_docs/kbn_core_custom_branding_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal
 title: "@kbn/core-custom-branding-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal']
 ---
 import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx
index 508d0e878d907..b418c95ac275a 100644
--- a/api_docs/kbn_core_custom_branding_server_mocks.mdx
+++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks
 title: "@kbn/core-custom-branding-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-custom-branding-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks']
 ---
 import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx
index 63efaf205dbd7..1945714ec421c 100644
--- a/api_docs/kbn_core_deprecations_browser.mdx
+++ b/api_docs/kbn_core_deprecations_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser
 title: "@kbn/core-deprecations-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser']
 ---
 import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx
index 43b46d049e908..8e9c710845778 100644
--- a/api_docs/kbn_core_deprecations_browser_internal.mdx
+++ b/api_docs/kbn_core_deprecations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal
 title: "@kbn/core-deprecations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal']
 ---
 import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx
index af14aa8d0d6cb..d0ad4b2f7fe24 100644
--- a/api_docs/kbn_core_deprecations_browser_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks
 title: "@kbn/core-deprecations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks']
 ---
 import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx
index 36af80c47ba60..5d86fcd925d60 100644
--- a/api_docs/kbn_core_deprecations_common.mdx
+++ b/api_docs/kbn_core_deprecations_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common
 title: "@kbn/core-deprecations-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common']
 ---
 import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx
index 9ff7a6511d062..5de8e487fb87f 100644
--- a/api_docs/kbn_core_deprecations_server.mdx
+++ b/api_docs/kbn_core_deprecations_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server
 title: "@kbn/core-deprecations-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server']
 ---
 import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx
index 8bf4252d99cae..8f7bc29ebf46d 100644
--- a/api_docs/kbn_core_deprecations_server_internal.mdx
+++ b/api_docs/kbn_core_deprecations_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal
 title: "@kbn/core-deprecations-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal']
 ---
 import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx
index 82cda912d727d..0edb8eeccf299 100644
--- a/api_docs/kbn_core_deprecations_server_mocks.mdx
+++ b/api_docs/kbn_core_deprecations_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks
 title: "@kbn/core-deprecations-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-deprecations-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks']
 ---
 import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx
index 03be99f132991..7d2f9fe452152 100644
--- a/api_docs/kbn_core_doc_links_browser.mdx
+++ b/api_docs/kbn_core_doc_links_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser
 title: "@kbn/core-doc-links-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser']
 ---
 import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx
index 801a980716058..97b75f91797c7 100644
--- a/api_docs/kbn_core_doc_links_browser_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks
 title: "@kbn/core-doc-links-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks']
 ---
 import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx
index a2267cff09caf..eae124612fe3e 100644
--- a/api_docs/kbn_core_doc_links_server.mdx
+++ b/api_docs/kbn_core_doc_links_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server
 title: "@kbn/core-doc-links-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server']
 ---
 import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json';
diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx
index 25b8bf4a1f880..24fcc817342fa 100644
--- a/api_docs/kbn_core_doc_links_server_mocks.mdx
+++ b/api_docs/kbn_core_doc_links_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks
 title: "@kbn/core-doc-links-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-doc-links-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks']
 ---
 import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
index 16270900c6f8a..17d7f1da59dd4 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal
 title: "@kbn/core-elasticsearch-client-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal']
 ---
 import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
index 08e07c3d19be7..1130ec94a10e9 100644
--- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks
 title: "@kbn/core-elasticsearch-client-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks']
 ---
 import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx
index 25729ea757269..5a73356d390eb 100644
--- a/api_docs/kbn_core_elasticsearch_server.mdx
+++ b/api_docs/kbn_core_elasticsearch_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server
 title: "@kbn/core-elasticsearch-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server']
 ---
 import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx
index 5787c1684bbed..e1e1721787740 100644
--- a/api_docs/kbn_core_elasticsearch_server_internal.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal
 title: "@kbn/core-elasticsearch-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal']
 ---
 import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
index 5b94ff7e90fcb..6749cca50844b 100644
--- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx
+++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks
 title: "@kbn/core-elasticsearch-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-elasticsearch-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks']
 ---
 import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx
index 7bb86e3fd5103..1d9bf0989e52e 100644
--- a/api_docs/kbn_core_environment_server_internal.mdx
+++ b/api_docs/kbn_core_environment_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal
 title: "@kbn/core-environment-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal']
 ---
 import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx
index 5d6d092377f59..8cf72ba3c2186 100644
--- a/api_docs/kbn_core_environment_server_mocks.mdx
+++ b/api_docs/kbn_core_environment_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks
 title: "@kbn/core-environment-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-environment-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks']
 ---
 import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx
index 579fb6119c9bb..e69c61e737c49 100644
--- a/api_docs/kbn_core_execution_context_browser.mdx
+++ b/api_docs/kbn_core_execution_context_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser
 title: "@kbn/core-execution-context-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser']
 ---
 import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx
index ffa2942c318e6..ddb9858141446 100644
--- a/api_docs/kbn_core_execution_context_browser_internal.mdx
+++ b/api_docs/kbn_core_execution_context_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal
 title: "@kbn/core-execution-context-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal']
 ---
 import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx
index 4db20c412858c..e4b8b765d6bac 100644
--- a/api_docs/kbn_core_execution_context_browser_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks
 title: "@kbn/core-execution-context-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks']
 ---
 import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx
index f12c21e4c28e1..afa99fe92f85c 100644
--- a/api_docs/kbn_core_execution_context_common.mdx
+++ b/api_docs/kbn_core_execution_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common
 title: "@kbn/core-execution-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common']
 ---
 import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx
index 63de9de9c3ca1..172163e36a273 100644
--- a/api_docs/kbn_core_execution_context_server.mdx
+++ b/api_docs/kbn_core_execution_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server
 title: "@kbn/core-execution-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server']
 ---
 import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx
index 0de53b26d431e..4c7019c1a5fad 100644
--- a/api_docs/kbn_core_execution_context_server_internal.mdx
+++ b/api_docs/kbn_core_execution_context_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal
 title: "@kbn/core-execution-context-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal']
 ---
 import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx
index e8f9cb7381408..03ffc9c8ddc76 100644
--- a/api_docs/kbn_core_execution_context_server_mocks.mdx
+++ b/api_docs/kbn_core_execution_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks
 title: "@kbn/core-execution-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-execution-context-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks']
 ---
 import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx
index f2b5795fd2751..2133a9e6f53d4 100644
--- a/api_docs/kbn_core_fatal_errors_browser.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser
 title: "@kbn/core-fatal-errors-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser']
 ---
 import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json';
diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
index 0097055594ad7..02d884b531024 100644
--- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
+++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks
 title: "@kbn/core-fatal-errors-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks']
 ---
 import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx
index e93470f9250fe..fb1b3f67541fe 100644
--- a/api_docs/kbn_core_http_browser.mdx
+++ b/api_docs/kbn_core_http_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser
 title: "@kbn/core-http-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser']
 ---
 import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx
index 0a72795b95131..e2eca21efd91b 100644
--- a/api_docs/kbn_core_http_browser_internal.mdx
+++ b/api_docs/kbn_core_http_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal
 title: "@kbn/core-http-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal']
 ---
 import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx
index fbf8356d8e90d..5d312eb606912 100644
--- a/api_docs/kbn_core_http_browser_mocks.mdx
+++ b/api_docs/kbn_core_http_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks
 title: "@kbn/core-http-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks']
 ---
 import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx
index 06e805e7319ca..90c53e27789ce 100644
--- a/api_docs/kbn_core_http_common.mdx
+++ b/api_docs/kbn_core_http_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common
 title: "@kbn/core-http-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common']
 ---
 import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json';
diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx
index 3e21038c6ac36..c3aaed2302120 100644
--- a/api_docs/kbn_core_http_context_server_mocks.mdx
+++ b/api_docs/kbn_core_http_context_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks
 title: "@kbn/core-http-context-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-context-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks']
 ---
 import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx
index 8082da5931e09..8b697dfd51e25 100644
--- a/api_docs/kbn_core_http_request_handler_context_server.mdx
+++ b/api_docs/kbn_core_http_request_handler_context_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server
 title: "@kbn/core-http-request-handler-context-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-request-handler-context-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server']
 ---
 import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx
index 59ca41d2b80bd..49dbedb385821 100644
--- a/api_docs/kbn_core_http_resources_server.mdx
+++ b/api_docs/kbn_core_http_resources_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server
 title: "@kbn/core-http-resources-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server']
 ---
 import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx
index 65559761ccb29..abf398d4e10f1 100644
--- a/api_docs/kbn_core_http_resources_server_internal.mdx
+++ b/api_docs/kbn_core_http_resources_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal
 title: "@kbn/core-http-resources-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal']
 ---
 import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx
index 949c6e6097793..0f98745318f2d 100644
--- a/api_docs/kbn_core_http_resources_server_mocks.mdx
+++ b/api_docs/kbn_core_http_resources_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks
 title: "@kbn/core-http-resources-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-resources-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks']
 ---
 import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx
index 8f0f60504eb0f..eec36e9f31096 100644
--- a/api_docs/kbn_core_http_router_server_internal.mdx
+++ b/api_docs/kbn_core_http_router_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal
 title: "@kbn/core-http-router-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal']
 ---
 import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx
index 67fc2c2c4c8c0..3ed46fb480d8f 100644
--- a/api_docs/kbn_core_http_router_server_mocks.mdx
+++ b/api_docs/kbn_core_http_router_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks
 title: "@kbn/core-http-router-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-router-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks']
 ---
 import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx
index a164bd7989e04..2bad6b3cc6fba 100644
--- a/api_docs/kbn_core_http_server.mdx
+++ b/api_docs/kbn_core_http_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server
 title: "@kbn/core-http-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server']
 ---
 import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx
index c5a0c7a98c8e1..6c4230791bee0 100644
--- a/api_docs/kbn_core_http_server_internal.mdx
+++ b/api_docs/kbn_core_http_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal
 title: "@kbn/core-http-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal']
 ---
 import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx
index c00f45d4875e2..a6b7c0e439195 100644
--- a/api_docs/kbn_core_http_server_mocks.mdx
+++ b/api_docs/kbn_core_http_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks
 title: "@kbn/core-http-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-http-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks']
 ---
 import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx
index 95a27c34e4946..963cfad43300c 100644
--- a/api_docs/kbn_core_i18n_browser.mdx
+++ b/api_docs/kbn_core_i18n_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser
 title: "@kbn/core-i18n-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser']
 ---
 import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx
index 9d372c0a9f0a1..398eb3df3a29f 100644
--- a/api_docs/kbn_core_i18n_browser_mocks.mdx
+++ b/api_docs/kbn_core_i18n_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks
 title: "@kbn/core-i18n-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks']
 ---
 import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx
index d8d3fe031d774..6ddf65eb08271 100644
--- a/api_docs/kbn_core_i18n_server.mdx
+++ b/api_docs/kbn_core_i18n_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server
 title: "@kbn/core-i18n-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server']
 ---
 import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx
index 6e5b8f1501795..dcfafc7b763ec 100644
--- a/api_docs/kbn_core_i18n_server_internal.mdx
+++ b/api_docs/kbn_core_i18n_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal
 title: "@kbn/core-i18n-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal']
 ---
 import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx
index 1fe80a49b6867..21658d686a6d1 100644
--- a/api_docs/kbn_core_i18n_server_mocks.mdx
+++ b/api_docs/kbn_core_i18n_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks
 title: "@kbn/core-i18n-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-i18n-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks']
 ---
 import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
index bc9d78929ec8d..a09bc53fea5ea 100644
--- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
+++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks
 title: "@kbn/core-injected-metadata-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks']
 ---
 import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx
index 6a7e1e5c9a6e3..754f37c0d8733 100644
--- a/api_docs/kbn_core_integrations_browser_internal.mdx
+++ b/api_docs/kbn_core_integrations_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal
 title: "@kbn/core-integrations-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal']
 ---
 import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx
index 08d873cecb691..89cd7f72286df 100644
--- a/api_docs/kbn_core_integrations_browser_mocks.mdx
+++ b/api_docs/kbn_core_integrations_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks
 title: "@kbn/core-integrations-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-integrations-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks']
 ---
 import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx
index c00c3155e2c16..d41c4f3f7f2f5 100644
--- a/api_docs/kbn_core_lifecycle_browser.mdx
+++ b/api_docs/kbn_core_lifecycle_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser
 title: "@kbn/core-lifecycle-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser']
 ---
 import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
index 5e92138ae5e82..302d15c2947d9 100644
--- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks
 title: "@kbn/core-lifecycle-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks']
 ---
 import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx
index f7d578d83f11a..2b6861f82d25e 100644
--- a/api_docs/kbn_core_lifecycle_server.mdx
+++ b/api_docs/kbn_core_lifecycle_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server
 title: "@kbn/core-lifecycle-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server']
 ---
 import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json';
diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx
index 5eca10a5a7b95..c7d3452c5c796 100644
--- a/api_docs/kbn_core_lifecycle_server_mocks.mdx
+++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks
 title: "@kbn/core-lifecycle-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-lifecycle-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks']
 ---
 import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx
index 1e0a6bf7dc47c..24f974116752c 100644
--- a/api_docs/kbn_core_logging_browser_mocks.mdx
+++ b/api_docs/kbn_core_logging_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks
 title: "@kbn/core-logging-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks']
 ---
 import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx
index f519b73e47bfc..7726d71443efd 100644
--- a/api_docs/kbn_core_logging_common_internal.mdx
+++ b/api_docs/kbn_core_logging_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal
 title: "@kbn/core-logging-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-common-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal']
 ---
 import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx
index ad2e02fcab679..3428aefc1e938 100644
--- a/api_docs/kbn_core_logging_server.mdx
+++ b/api_docs/kbn_core_logging_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server
 title: "@kbn/core-logging-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server']
 ---
 import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx
index 6064c401c646c..f3ca9c244b5d0 100644
--- a/api_docs/kbn_core_logging_server_internal.mdx
+++ b/api_docs/kbn_core_logging_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal
 title: "@kbn/core-logging-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal']
 ---
 import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx
index 69c27c375459a..7c051fbaf8e86 100644
--- a/api_docs/kbn_core_logging_server_mocks.mdx
+++ b/api_docs/kbn_core_logging_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks
 title: "@kbn/core-logging-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-logging-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks']
 ---
 import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
index 33d60554f6163..586ac026d5a3c 100644
--- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal
 title: "@kbn/core-metrics-collectors-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal']
 ---
 import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
index ae3bd706fbb06..a085fc978646e 100644
--- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks
 title: "@kbn/core-metrics-collectors-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks']
 ---
 import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx
index d93b14da48ddb..fe11703a9ec2f 100644
--- a/api_docs/kbn_core_metrics_server.mdx
+++ b/api_docs/kbn_core_metrics_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server
 title: "@kbn/core-metrics-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server']
 ---
 import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx
index cc80806ad19ab..71ec2f38e8f5a 100644
--- a/api_docs/kbn_core_metrics_server_internal.mdx
+++ b/api_docs/kbn_core_metrics_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal
 title: "@kbn/core-metrics-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal']
 ---
 import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx
index db9bbd885bf5d..a53a2205cc8a8 100644
--- a/api_docs/kbn_core_metrics_server_mocks.mdx
+++ b/api_docs/kbn_core_metrics_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks
 title: "@kbn/core-metrics-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-metrics-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks']
 ---
 import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx
index 3c9c1d9489d20..cf4bae12ece0e 100644
--- a/api_docs/kbn_core_mount_utils_browser.mdx
+++ b/api_docs/kbn_core_mount_utils_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser
 title: "@kbn/core-mount-utils-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-mount-utils-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser']
 ---
 import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json';
diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx
index 1e9fc770c51ec..d4585bd9d010f 100644
--- a/api_docs/kbn_core_node_server.mdx
+++ b/api_docs/kbn_core_node_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server
 title: "@kbn/core-node-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server']
 ---
 import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx
index d60bdd9847450..656b8a6632c63 100644
--- a/api_docs/kbn_core_node_server_internal.mdx
+++ b/api_docs/kbn_core_node_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal
 title: "@kbn/core-node-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal']
 ---
 import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx
index bfbd5b411f7f2..4aff43c6e30a5 100644
--- a/api_docs/kbn_core_node_server_mocks.mdx
+++ b/api_docs/kbn_core_node_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks
 title: "@kbn/core-node-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-node-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks']
 ---
 import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx
index 859b8ca77ca24..574c26851c909 100644
--- a/api_docs/kbn_core_notifications_browser.mdx
+++ b/api_docs/kbn_core_notifications_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser
 title: "@kbn/core-notifications-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser']
 ---
 import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx
index 6e0c2cb46f94f..596ae4c74aa68 100644
--- a/api_docs/kbn_core_notifications_browser_internal.mdx
+++ b/api_docs/kbn_core_notifications_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal
 title: "@kbn/core-notifications-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal']
 ---
 import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx
index f6f84140c2448..7e000b5ff27d0 100644
--- a/api_docs/kbn_core_notifications_browser_mocks.mdx
+++ b/api_docs/kbn_core_notifications_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks
 title: "@kbn/core-notifications-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-notifications-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks']
 ---
 import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx
index 868ebe3816ed8..14d9728d062d8 100644
--- a/api_docs/kbn_core_overlays_browser.mdx
+++ b/api_docs/kbn_core_overlays_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser
 title: "@kbn/core-overlays-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser']
 ---
 import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx
index 62a7ff4d31c0a..42d54edae6265 100644
--- a/api_docs/kbn_core_overlays_browser_internal.mdx
+++ b/api_docs/kbn_core_overlays_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal
 title: "@kbn/core-overlays-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal']
 ---
 import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx
index 170a83d2914f6..910f5aae1c19d 100644
--- a/api_docs/kbn_core_overlays_browser_mocks.mdx
+++ b/api_docs/kbn_core_overlays_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks
 title: "@kbn/core-overlays-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-overlays-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks']
 ---
 import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx
index 4970bc76caa7d..9ae0c83c2668e 100644
--- a/api_docs/kbn_core_plugins_browser.mdx
+++ b/api_docs/kbn_core_plugins_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser
 title: "@kbn/core-plugins-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser']
 ---
 import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx
index 5cc993d3a2800..569e4c72dc5a4 100644
--- a/api_docs/kbn_core_plugins_browser_mocks.mdx
+++ b/api_docs/kbn_core_plugins_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks
 title: "@kbn/core-plugins-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks']
 ---
 import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx
index 5d5c6b7cad4fe..7f9f7fdd873a3 100644
--- a/api_docs/kbn_core_plugins_contracts_browser.mdx
+++ b/api_docs/kbn_core_plugins_contracts_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser
 title: "@kbn/core-plugins-contracts-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser']
 ---
 import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx
index e1687e7918e0a..46e203fea0b86 100644
--- a/api_docs/kbn_core_plugins_contracts_server.mdx
+++ b/api_docs/kbn_core_plugins_contracts_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server
 title: "@kbn/core-plugins-contracts-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-contracts-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server']
 ---
 import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx
index 096b0fe360b8f..efed384eddf76 100644
--- a/api_docs/kbn_core_plugins_server.mdx
+++ b/api_docs/kbn_core_plugins_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server
 title: "@kbn/core-plugins-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server']
 ---
 import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json';
diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx
index 9e5b45576a0e4..22405e9c27c1d 100644
--- a/api_docs/kbn_core_plugins_server_mocks.mdx
+++ b/api_docs/kbn_core_plugins_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks
 title: "@kbn/core-plugins-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-plugins-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks']
 ---
 import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx
index b0097cf94ed3b..3d83be39bf110 100644
--- a/api_docs/kbn_core_preboot_server.mdx
+++ b/api_docs/kbn_core_preboot_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server
 title: "@kbn/core-preboot-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server']
 ---
 import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json';
diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx
index 6a3f19bbb36a1..c35a06d2fc8ba 100644
--- a/api_docs/kbn_core_preboot_server_mocks.mdx
+++ b/api_docs/kbn_core_preboot_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks
 title: "@kbn/core-preboot-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-preboot-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks']
 ---
 import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx
index 55f1c2890c53d..5bc4151e83dbb 100644
--- a/api_docs/kbn_core_rendering_browser_mocks.mdx
+++ b/api_docs/kbn_core_rendering_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks
 title: "@kbn/core-rendering-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks']
 ---
 import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx
index 75e073a00b35c..a50d342007b51 100644
--- a/api_docs/kbn_core_rendering_server_internal.mdx
+++ b/api_docs/kbn_core_rendering_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal
 title: "@kbn/core-rendering-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal']
 ---
 import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx
index 8319aab978894..e923108ca3e08 100644
--- a/api_docs/kbn_core_rendering_server_mocks.mdx
+++ b/api_docs/kbn_core_rendering_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks
 title: "@kbn/core-rendering-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-rendering-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks']
 ---
 import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx
index 187b229754e12..b6ec45ab218fd 100644
--- a/api_docs/kbn_core_root_server_internal.mdx
+++ b/api_docs/kbn_core_root_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal
 title: "@kbn/core-root-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-root-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal']
 ---
 import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx
index fea33aaccddcd..3343bb51e567f 100644
--- a/api_docs/kbn_core_saved_objects_api_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_api_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser
 title: "@kbn/core-saved-objects-api-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser']
 ---
 import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx
index aebc82525d65a..7d7efe503f9fc 100644
--- a/api_docs/kbn_core_saved_objects_api_server.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server
 title: "@kbn/core-saved-objects-api-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server']
 ---
 import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
index d0d3acf27c426..d766cee298d48 100644
--- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks
 title: "@kbn/core-saved-objects-api-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks']
 ---
 import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
index 1a522efae0c16..98618d49cf666 100644
--- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal
 title: "@kbn/core-saved-objects-base-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal']
 ---
 import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
index 2037f53c89446..aca9eb5f819e8 100644
--- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks
 title: "@kbn/core-saved-objects-base-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks']
 ---
 import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx
index 79cb957135208..619284a873102 100644
--- a/api_docs/kbn_core_saved_objects_browser.mdx
+++ b/api_docs/kbn_core_saved_objects_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser
 title: "@kbn/core-saved-objects-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser']
 ---
 import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx
index 125667d8a17b5..29e513d9fdede 100644
--- a/api_docs/kbn_core_saved_objects_browser_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal
 title: "@kbn/core-saved-objects-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal']
 ---
 import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
index 5bf5c5622bc53..2e3d732f68a93 100644
--- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks
 title: "@kbn/core-saved-objects-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks']
 ---
 import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx
index 45106b11402ce..91e0ac1c5690d 100644
--- a/api_docs/kbn_core_saved_objects_common.mdx
+++ b/api_docs/kbn_core_saved_objects_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common
 title: "@kbn/core-saved-objects-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common']
 ---
 import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
index 517b36b93d1a4..7dfe387a7cbef 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal
 title: "@kbn/core-saved-objects-import-export-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal']
 ---
 import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
index 22d01ce815ed4..ef6a31afc69de 100644
--- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks
 title: "@kbn/core-saved-objects-import-export-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks']
 ---
 import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
index dbd9d4d7f94d1..3b427a12db0b3 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal
 title: "@kbn/core-saved-objects-migration-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal']
 ---
 import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
index 0069306cffda3..21aac474fcd30 100644
--- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks
 title: "@kbn/core-saved-objects-migration-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks']
 ---
 import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx
index c0877facbd6f1..80111559a76b7 100644
--- a/api_docs/kbn_core_saved_objects_server.mdx
+++ b/api_docs/kbn_core_saved_objects_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server
 title: "@kbn/core-saved-objects-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server']
 ---
 import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx
index 0697c25226f3e..51be9585c2370 100644
--- a/api_docs/kbn_core_saved_objects_server_internal.mdx
+++ b/api_docs/kbn_core_saved_objects_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal
 title: "@kbn/core-saved-objects-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal']
 ---
 import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx
index b3338f13ca34d..466e14e717a57 100644
--- a/api_docs/kbn_core_saved_objects_server_mocks.mdx
+++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks
 title: "@kbn/core-saved-objects-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks']
 ---
 import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx
index b9300dd755e61..5b314d21ca1fb 100644
--- a/api_docs/kbn_core_saved_objects_utils_server.mdx
+++ b/api_docs/kbn_core_saved_objects_utils_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server
 title: "@kbn/core-saved-objects-utils-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-saved-objects-utils-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server']
 ---
 import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx
index b3d0d1a3e7dbe..931add2ceab9c 100644
--- a/api_docs/kbn_core_status_common.mdx
+++ b/api_docs/kbn_core_status_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common
 title: "@kbn/core-status-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common']
 ---
 import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json';
diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx
index 39167e19b41ca..154deb39c39ee 100644
--- a/api_docs/kbn_core_status_common_internal.mdx
+++ b/api_docs/kbn_core_status_common_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal
 title: "@kbn/core-status-common-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-common-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal']
 ---
 import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx
index f2d703713e3a3..11ab31d5ef3d9 100644
--- a/api_docs/kbn_core_status_server.mdx
+++ b/api_docs/kbn_core_status_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server
 title: "@kbn/core-status-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server']
 ---
 import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx
index 2d27da46d251e..56df176d90ed6 100644
--- a/api_docs/kbn_core_status_server_internal.mdx
+++ b/api_docs/kbn_core_status_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal
 title: "@kbn/core-status-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal']
 ---
 import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx
index 82cbb47d20da8..082190c1def71 100644
--- a/api_docs/kbn_core_status_server_mocks.mdx
+++ b/api_docs/kbn_core_status_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks
 title: "@kbn/core-status-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-status-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks']
 ---
 import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
index 32385a8b2902e..81beb11ce626d 100644
--- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
+++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters
 title: "@kbn/core-test-helpers-deprecations-getters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters']
 ---
 import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
index b6248210418be..dbbd2eca2e56a 100644
--- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
+++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser
 title: "@kbn/core-test-helpers-http-setup-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser']
 ---
 import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx
index 8e2df6a749c84..71887ddfee177 100644
--- a/api_docs/kbn_core_test_helpers_kbn_server.mdx
+++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server
 title: "@kbn/core-test-helpers-kbn-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-kbn-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server']
 ---
 import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx
index df0bd3f7b1adb..60396b7dd0758 100644
--- a/api_docs/kbn_core_test_helpers_model_versions.mdx
+++ b/api_docs/kbn_core_test_helpers_model_versions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions
 title: "@kbn/core-test-helpers-model-versions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-model-versions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions']
 ---
 import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
index 56bb62d8d45a8..cd8895353eac4 100644
--- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
+++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer
 title: "@kbn/core-test-helpers-so-type-serializer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer']
 ---
 import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json';
diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx
index df075cc49b23d..31bca2cb8f125 100644
--- a/api_docs/kbn_core_test_helpers_test_utils.mdx
+++ b/api_docs/kbn_core_test_helpers_test_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils
 title: "@kbn/core-test-helpers-test-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-test-helpers-test-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils']
 ---
 import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx
index a09a042cf03b2..fa3e134de0507 100644
--- a/api_docs/kbn_core_theme_browser.mdx
+++ b/api_docs/kbn_core_theme_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser
 title: "@kbn/core-theme-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser']
 ---
 import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json';
diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx
index 1f44aa7d57885..13ec1125bea00 100644
--- a/api_docs/kbn_core_theme_browser_mocks.mdx
+++ b/api_docs/kbn_core_theme_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks
 title: "@kbn/core-theme-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-theme-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks']
 ---
 import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx
index 478455f0400ee..93663a97a5565 100644
--- a/api_docs/kbn_core_ui_settings_browser.mdx
+++ b/api_docs/kbn_core_ui_settings_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser
 title: "@kbn/core-ui-settings-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser']
 ---
 import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx
index e08a6f99dc66c..858d45d5eac76 100644
--- a/api_docs/kbn_core_ui_settings_browser_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal
 title: "@kbn/core-ui-settings-browser-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal']
 ---
 import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
index c7ba2feeec812..dc02ca34ef3f9 100644
--- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks
 title: "@kbn/core-ui-settings-browser-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-browser-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks']
 ---
 import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx
index a5da33f837a7d..bbd44b94503c2 100644
--- a/api_docs/kbn_core_ui_settings_common.mdx
+++ b/api_docs/kbn_core_ui_settings_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common
 title: "@kbn/core-ui-settings-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common']
 ---
 import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx
index c1cbab7efe96a..8037d1c9554df 100644
--- a/api_docs/kbn_core_ui_settings_server.mdx
+++ b/api_docs/kbn_core_ui_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server
 title: "@kbn/core-ui-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server']
 ---
 import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx
index d0de43279c458..49f64e7bc387d 100644
--- a/api_docs/kbn_core_ui_settings_server_internal.mdx
+++ b/api_docs/kbn_core_ui_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal
 title: "@kbn/core-ui-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal']
 ---
 import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx
index fe8f60511cc49..86fb18fe41525 100644
--- a/api_docs/kbn_core_ui_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks
 title: "@kbn/core-ui-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-ui-settings-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks']
 ---
 import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx
index 57affe30c2558..a8016a29da441 100644
--- a/api_docs/kbn_core_usage_data_server.mdx
+++ b/api_docs/kbn_core_usage_data_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server
 title: "@kbn/core-usage-data-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server']
 ---
 import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx
index 5eefd81326dc1..80825c14eee22 100644
--- a/api_docs/kbn_core_usage_data_server_internal.mdx
+++ b/api_docs/kbn_core_usage_data_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal
 title: "@kbn/core-usage-data-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal']
 ---
 import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx
index 0b866ccd126e7..9d432cd70cec8 100644
--- a/api_docs/kbn_core_usage_data_server_mocks.mdx
+++ b/api_docs/kbn_core_usage_data_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks
 title: "@kbn/core-usage-data-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-usage-data-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks']
 ---
 import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx
index d1bc3b99fdee1..7f08d79a09a53 100644
--- a/api_docs/kbn_core_user_settings_server.mdx
+++ b/api_docs/kbn_core_user_settings_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server
 title: "@kbn/core-user-settings-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server']
 ---
 import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx
index 6381dab48d2b2..a215dbab58a1a 100644
--- a/api_docs/kbn_core_user_settings_server_internal.mdx
+++ b/api_docs/kbn_core_user_settings_server_internal.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal
 title: "@kbn/core-user-settings-server-internal"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-internal plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal']
 ---
 import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json';
diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx
index c3af1a7def5ef..32dbc90c77643 100644
--- a/api_docs/kbn_core_user_settings_server_mocks.mdx
+++ b/api_docs/kbn_core_user_settings_server_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks
 title: "@kbn/core-user-settings-server-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/core-user-settings-server-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks']
 ---
 import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json';
diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx
index 28bba3378d167..7b80493fb466d 100644
--- a/api_docs/kbn_crypto.mdx
+++ b/api_docs/kbn_crypto.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto
 title: "@kbn/crypto"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto']
 ---
 import kbnCryptoObj from './kbn_crypto.devdocs.json';
diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx
index 699ba3fda1d97..8aae88dec189e 100644
--- a/api_docs/kbn_crypto_browser.mdx
+++ b/api_docs/kbn_crypto_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser
 title: "@kbn/crypto-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/crypto-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser']
 ---
 import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json';
diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx
index aded02f81e778..16d02e3d8117e 100644
--- a/api_docs/kbn_custom_integrations.mdx
+++ b/api_docs/kbn_custom_integrations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations
 title: "@kbn/custom-integrations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/custom-integrations plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations']
 ---
 import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json';
diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx
index 3a97c20d8aa64..3c42c59f84265 100644
--- a/api_docs/kbn_cypress_config.mdx
+++ b/api_docs/kbn_cypress_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config
 title: "@kbn/cypress-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/cypress-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config']
 ---
 import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json';
diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx
index d5de88f849b90..1bb0dd85897e5 100644
--- a/api_docs/kbn_data_service.mdx
+++ b/api_docs/kbn_data_service.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service
 title: "@kbn/data-service"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/data-service plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service']
 ---
 import kbnDataServiceObj from './kbn_data_service.devdocs.json';
diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx
index 8f309f5412e92..296f5177bb7d1 100644
--- a/api_docs/kbn_datemath.mdx
+++ b/api_docs/kbn_datemath.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath
 title: "@kbn/datemath"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/datemath plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath']
 ---
 import kbnDatemathObj from './kbn_datemath.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx
index 5d523c9a85f45..5d27b6fb3ccf0 100644
--- a/api_docs/kbn_deeplinks_analytics.mdx
+++ b/api_docs/kbn_deeplinks_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics
 title: "@kbn/deeplinks-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-analytics plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics']
 ---
 import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx
index 18be98dbf54aa..150aa76bac475 100644
--- a/api_docs/kbn_deeplinks_devtools.mdx
+++ b/api_docs/kbn_deeplinks_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools
 title: "@kbn/deeplinks-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-devtools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools']
 ---
 import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx
index 562597153f485..ba7d5cfd11fdd 100644
--- a/api_docs/kbn_deeplinks_management.mdx
+++ b/api_docs/kbn_deeplinks_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management
 title: "@kbn/deeplinks-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-management plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management']
 ---
 import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx
index 877ded174fdec..b3ac64e0da216 100644
--- a/api_docs/kbn_deeplinks_ml.mdx
+++ b/api_docs/kbn_deeplinks_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml
 title: "@kbn/deeplinks-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-ml plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml']
 ---
 import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx
index 07116d26dd33d..7c83f6dc90a64 100644
--- a/api_docs/kbn_deeplinks_observability.mdx
+++ b/api_docs/kbn_deeplinks_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability
 title: "@kbn/deeplinks-observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-observability plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability']
 ---
 import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json';
diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx
index ff015d66965af..117bd0e01a991 100644
--- a/api_docs/kbn_deeplinks_search.mdx
+++ b/api_docs/kbn_deeplinks_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search
 title: "@kbn/deeplinks-search"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/deeplinks-search plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search']
 ---
 import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json';
diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx
index 9ff654ed3da6c..7d6cefc01c361 100644
--- a/api_docs/kbn_default_nav_analytics.mdx
+++ b/api_docs/kbn_default_nav_analytics.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics
 title: "@kbn/default-nav-analytics"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-analytics plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics']
 ---
 import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json';
diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx
index d0d967964cd75..3d4e8f8e15b08 100644
--- a/api_docs/kbn_default_nav_devtools.mdx
+++ b/api_docs/kbn_default_nav_devtools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools
 title: "@kbn/default-nav-devtools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-devtools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools']
 ---
 import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json';
diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx
index c8baf82fc2bec..2c6eb6053bf05 100644
--- a/api_docs/kbn_default_nav_management.mdx
+++ b/api_docs/kbn_default_nav_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management
 title: "@kbn/default-nav-management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-management plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management']
 ---
 import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json';
diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx
index 6ad4b1f226366..2ae63e1f07d4b 100644
--- a/api_docs/kbn_default_nav_ml.mdx
+++ b/api_docs/kbn_default_nav_ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml
 title: "@kbn/default-nav-ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/default-nav-ml plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml']
 ---
 import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx
index 4d795fee8d26b..2452d085c5de2 100644
--- a/api_docs/kbn_dev_cli_errors.mdx
+++ b/api_docs/kbn_dev_cli_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors
 title: "@kbn/dev-cli-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-errors plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors']
 ---
 import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json';
diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx
index aac859d0fb324..d327b0b1e10a1 100644
--- a/api_docs/kbn_dev_cli_runner.mdx
+++ b/api_docs/kbn_dev_cli_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner
 title: "@kbn/dev-cli-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-cli-runner plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner']
 ---
 import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx
index 4bedf0b9f7fbe..6d2ce399aacea 100644
--- a/api_docs/kbn_dev_proc_runner.mdx
+++ b/api_docs/kbn_dev_proc_runner.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner
 title: "@kbn/dev-proc-runner"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-proc-runner plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner']
 ---
 import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json';
diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx
index 4c980589187e9..aa86f5b7fe0b0 100644
--- a/api_docs/kbn_dev_utils.mdx
+++ b/api_docs/kbn_dev_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils
 title: "@kbn/dev-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dev-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils']
 ---
 import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json';
diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx
index c2721f78b1c13..ad618b2d5e67c 100644
--- a/api_docs/kbn_discover_utils.mdx
+++ b/api_docs/kbn_discover_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils
 title: "@kbn/discover-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/discover-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils']
 ---
 import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json';
diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx
index d77b6da771c83..e8a959719f53f 100644
--- a/api_docs/kbn_doc_links.mdx
+++ b/api_docs/kbn_doc_links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links
 title: "@kbn/doc-links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/doc-links plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links']
 ---
 import kbnDocLinksObj from './kbn_doc_links.devdocs.json';
diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx
index 36c692a7f3989..26c4a69d4b5d6 100644
--- a/api_docs/kbn_docs_utils.mdx
+++ b/api_docs/kbn_docs_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils
 title: "@kbn/docs-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/docs-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils']
 ---
 import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json';
diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx
index ebab5e559e792..2021a82a688c2 100644
--- a/api_docs/kbn_dom_drag_drop.mdx
+++ b/api_docs/kbn_dom_drag_drop.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop
 title: "@kbn/dom-drag-drop"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/dom-drag-drop plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop']
 ---
 import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json';
diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx
index 543720c05a490..445c2d1cf9f0f 100644
--- a/api_docs/kbn_ebt_tools.mdx
+++ b/api_docs/kbn_ebt_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools
 title: "@kbn/ebt-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ebt-tools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools']
 ---
 import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json';
diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx
index 08a8295fc2cc5..f416df2cd72f6 100644
--- a/api_docs/kbn_ecs.mdx
+++ b/api_docs/kbn_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs
 title: "@kbn/ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs']
 ---
 import kbnEcsObj from './kbn_ecs.devdocs.json';
diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx
index 62173dd11de6f..2ff0e9c745134 100644
--- a/api_docs/kbn_ecs_data_quality_dashboard.mdx
+++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard
 title: "@kbn/ecs-data-quality-dashboard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ecs-data-quality-dashboard plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard']
 ---
 import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json';
diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx
index 00bea5a2d08e3..8c10f58f59002 100644
--- a/api_docs/kbn_elastic_assistant.mdx
+++ b/api_docs/kbn_elastic_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant
 title: "@kbn/elastic-assistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/elastic-assistant plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant']
 ---
 import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json';
diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx
index bb44ba7e14ce6..45cdc9163c00f 100644
--- a/api_docs/kbn_es.mdx
+++ b/api_docs/kbn_es.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es
 title: "@kbn/es"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es']
 ---
 import kbnEsObj from './kbn_es.devdocs.json';
diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx
index f02dcb805ca8c..c7a89aed23496 100644
--- a/api_docs/kbn_es_archiver.mdx
+++ b/api_docs/kbn_es_archiver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver
 title: "@kbn/es-archiver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-archiver plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver']
 ---
 import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json';
diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx
index 1fb98935c35da..28dbe8fbcb8fe 100644
--- a/api_docs/kbn_es_errors.mdx
+++ b/api_docs/kbn_es_errors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors
 title: "@kbn/es-errors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-errors plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors']
 ---
 import kbnEsErrorsObj from './kbn_es_errors.devdocs.json';
diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx
index 28b67c262e76d..57a51c84e11ab 100644
--- a/api_docs/kbn_es_query.mdx
+++ b/api_docs/kbn_es_query.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query
 title: "@kbn/es-query"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-query plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query']
 ---
 import kbnEsQueryObj from './kbn_es_query.devdocs.json';
diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx
index df107da92ad7c..93846bf169948 100644
--- a/api_docs/kbn_es_types.mdx
+++ b/api_docs/kbn_es_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types
 title: "@kbn/es-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/es-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types']
 ---
 import kbnEsTypesObj from './kbn_es_types.devdocs.json';
diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx
index f3863c41d117a..ef168958fbc58 100644
--- a/api_docs/kbn_eslint_plugin_imports.mdx
+++ b/api_docs/kbn_eslint_plugin_imports.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports
 title: "@kbn/eslint-plugin-imports"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/eslint-plugin-imports plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports']
 ---
 import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx
index 103d8078a546b..dc42cfadbf1eb 100644
--- a/api_docs/kbn_event_annotation_common.mdx
+++ b/api_docs/kbn_event_annotation_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common
 title: "@kbn/event-annotation-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common']
 ---
 import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json';
diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx
index 44c51bb3f58e8..80c71ef1bf27a 100644
--- a/api_docs/kbn_event_annotation_components.mdx
+++ b/api_docs/kbn_event_annotation_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components
 title: "@kbn/event-annotation-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/event-annotation-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components']
 ---
 import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json';
diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx
index c715c71125165..76edfc0cfb67e 100644
--- a/api_docs/kbn_expandable_flyout.mdx
+++ b/api_docs/kbn_expandable_flyout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout
 title: "@kbn/expandable-flyout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/expandable-flyout plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout']
 ---
 import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json';
diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx
index 32ec723de1650..4b9dc890f58fc 100644
--- a/api_docs/kbn_field_types.mdx
+++ b/api_docs/kbn_field_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types
 title: "@kbn/field-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types']
 ---
 import kbnFieldTypesObj from './kbn_field_types.devdocs.json';
diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx
index 91f3da4473531..b67a33bdb7798 100644
--- a/api_docs/kbn_field_utils.mdx
+++ b/api_docs/kbn_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils
 title: "@kbn/field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/field-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils']
 ---
 import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json';
diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx
index fc8abd01bb50f..03ffde2402f4d 100644
--- a/api_docs/kbn_find_used_node_modules.mdx
+++ b/api_docs/kbn_find_used_node_modules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules
 title: "@kbn/find-used-node-modules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/find-used-node-modules plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules']
 ---
 import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json';
diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx
index b48cdc47d7085..a5cd8bf4dc802 100644
--- a/api_docs/kbn_ftr_common_functional_services.mdx
+++ b/api_docs/kbn_ftr_common_functional_services.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services
 title: "@kbn/ftr-common-functional-services"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ftr-common-functional-services plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services']
 ---
 import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json';
diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx
index 84c7bb850429f..6c7b196ebe4a7 100644
--- a/api_docs/kbn_generate.mdx
+++ b/api_docs/kbn_generate.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate
 title: "@kbn/generate"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate']
 ---
 import kbnGenerateObj from './kbn_generate.devdocs.json';
diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx
index ff02aeb5d4c56..27cb7b78ee828 100644
--- a/api_docs/kbn_generate_console_definitions.mdx
+++ b/api_docs/kbn_generate_console_definitions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions
 title: "@kbn/generate-console-definitions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-console-definitions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions']
 ---
 import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json';
diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx
index 38c5eb0048917..34ffba48cd6d6 100644
--- a/api_docs/kbn_generate_csv.mdx
+++ b/api_docs/kbn_generate_csv.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv
 title: "@kbn/generate-csv"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv']
 ---
 import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json';
diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx
index cbc85e0e20704..0a73097004a56 100644
--- a/api_docs/kbn_generate_csv_types.mdx
+++ b/api_docs/kbn_generate_csv_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types
 title: "@kbn/generate-csv-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/generate-csv-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types']
 ---
 import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json';
diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx
index 3324ef4ae60f2..aabfa0eea9aae 100644
--- a/api_docs/kbn_guided_onboarding.mdx
+++ b/api_docs/kbn_guided_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding
 title: "@kbn/guided-onboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/guided-onboarding plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding']
 ---
 import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json';
diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx
index cbba3abaea8b1..a592b63f2dfca 100644
--- a/api_docs/kbn_handlebars.mdx
+++ b/api_docs/kbn_handlebars.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars
 title: "@kbn/handlebars"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/handlebars plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars']
 ---
 import kbnHandlebarsObj from './kbn_handlebars.devdocs.json';
diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx
index a8d003cf18c82..e9cfdc18b47f1 100644
--- a/api_docs/kbn_hapi_mocks.mdx
+++ b/api_docs/kbn_hapi_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks
 title: "@kbn/hapi-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/hapi-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks']
 ---
 import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json';
diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx
index 5100c784cf8c3..fbf0e53016eba 100644
--- a/api_docs/kbn_health_gateway_server.mdx
+++ b/api_docs/kbn_health_gateway_server.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server
 title: "@kbn/health-gateway-server"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/health-gateway-server plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server']
 ---
 import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx
index 6401ab24288bf..ddcec01737ca2 100644
--- a/api_docs/kbn_home_sample_data_card.mdx
+++ b/api_docs/kbn_home_sample_data_card.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card
 title: "@kbn/home-sample-data-card"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-card plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card']
 ---
 import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json';
diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx
index a590930796309..cea1cd8225f88 100644
--- a/api_docs/kbn_home_sample_data_tab.mdx
+++ b/api_docs/kbn_home_sample_data_tab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab
 title: "@kbn/home-sample-data-tab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/home-sample-data-tab plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab']
 ---
 import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json';
diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx
index ac28f962dec77..b7a2cd2e01bf8 100644
--- a/api_docs/kbn_i18n.mdx
+++ b/api_docs/kbn_i18n.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n
 title: "@kbn/i18n"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n']
 ---
 import kbnI18nObj from './kbn_i18n.devdocs.json';
diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx
index cfeb8eef2773b..b1fcbd7d0b17d 100644
--- a/api_docs/kbn_i18n_react.mdx
+++ b/api_docs/kbn_i18n_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react
 title: "@kbn/i18n-react"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/i18n-react plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react']
 ---
 import kbnI18nReactObj from './kbn_i18n_react.devdocs.json';
diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx
index 9f4987712f0d8..4f94cd2bd1b21 100644
--- a/api_docs/kbn_import_resolver.mdx
+++ b/api_docs/kbn_import_resolver.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver
 title: "@kbn/import-resolver"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/import-resolver plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver']
 ---
 import kbnImportResolverObj from './kbn_import_resolver.devdocs.json';
diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx
index e8e520a87b9d5..1dade9639b9e2 100644
--- a/api_docs/kbn_infra_forge.mdx
+++ b/api_docs/kbn_infra_forge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge
 title: "@kbn/infra-forge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/infra-forge plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge']
 ---
 import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json';
diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx
index 41c90625077e4..bd9952bd43d82 100644
--- a/api_docs/kbn_interpreter.mdx
+++ b/api_docs/kbn_interpreter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter
 title: "@kbn/interpreter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/interpreter plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter']
 ---
 import kbnInterpreterObj from './kbn_interpreter.devdocs.json';
diff --git a/api_docs/kbn_io_ts_utils.devdocs.json b/api_docs/kbn_io_ts_utils.devdocs.json
index 76c85df71d2fb..80107690e8e28 100644
--- a/api_docs/kbn_io_ts_utils.devdocs.json
+++ b/api_docs/kbn_io_ts_utils.devdocs.json
@@ -773,6 +773,41 @@
           }
         ],
         "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/io-ts-utils",
+        "id": "def-common.UniqueTimeKey",
+        "type": "Interface",
+        "tags": [],
+        "label": "UniqueTimeKey",
+        "description": [],
+        "signature": [
+          {
+            "pluginId": "@kbn/io-ts-utils",
+            "scope": "common",
+            "docId": "kibKbnIoTsUtilsPluginApi",
+            "section": "def-common.UniqueTimeKey",
+            "text": "UniqueTimeKey"
+          },
+          " extends { time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }"
+        ],
+        "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/io-ts-utils",
+            "id": "def-common.UniqueTimeKey.gid",
+            "type": "string",
+            "tags": [],
+            "label": "gid",
+            "description": [],
+            "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
       }
     ],
     "enums": [],
@@ -846,6 +881,21 @@
         "trackAdoption": false,
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/io-ts-utils",
+        "id": "def-common.MinimalTimeKey",
+        "type": "Type",
+        "tags": [],
+        "label": "MinimalTimeKey",
+        "description": [],
+        "signature": [
+          "{ time: string; tiebreaker: number; }"
+        ],
+        "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/io-ts-utils",
         "id": "def-common.NonEmptyString",
@@ -870,9 +920,40 @@
         "deprecated": false,
         "trackAdoption": false,
         "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/io-ts-utils",
+        "id": "def-common.TimeKey",
+        "type": "Type",
+        "tags": [],
+        "label": "TimeKey",
+        "description": [],
+        "signature": [
+          "{ time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }"
+        ],
+        "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
       }
     ],
     "objects": [
+      {
+        "parentPluginId": "@kbn/io-ts-utils",
+        "id": "def-common.DateFromStringOrNumber",
+        "type": "Object",
+        "tags": [],
+        "label": "DateFromStringOrNumber",
+        "description": [],
+        "signature": [
+          "Type",
+          "<string, string | number, unknown>"
+        ],
+        "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/io-ts-utils",
         "id": "def-common.datemathStringRt",
@@ -961,6 +1042,26 @@
         "trackAdoption": false,
         "initialIsOpen": false
       },
+      {
+        "parentPluginId": "@kbn/io-ts-utils",
+        "id": "def-common.minimalTimeKeyRT",
+        "type": "Object",
+        "tags": [],
+        "label": "minimalTimeKeyRT",
+        "description": [],
+        "signature": [
+          "TypeC",
+          "<{ time: ",
+          "Type",
+          "<string, string | number, unknown>; tiebreaker: ",
+          "NumberC",
+          "; }>"
+        ],
+        "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "@kbn/io-ts-utils",
         "id": "def-common.nonEmptyStringRt",
diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx
index 2591ce68661ce..2ff2a51ed370c 100644
--- a/api_docs/kbn_io_ts_utils.mdx
+++ b/api_docs/kbn_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils
 title: "@kbn/io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/io-ts-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils']
 ---
 import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 52 | 0 | 52 | 4 |
+| 58 | 0 | 58 | 4 |
 
 ## Common
 
diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx
index 7389f5fb431b4..77fcdbae5d76d 100644
--- a/api_docs/kbn_jest_serializers.mdx
+++ b/api_docs/kbn_jest_serializers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers
 title: "@kbn/jest-serializers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/jest-serializers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers']
 ---
 import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json';
diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx
index 501b01a537995..8541732d3d801 100644
--- a/api_docs/kbn_journeys.mdx
+++ b/api_docs/kbn_journeys.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys
 title: "@kbn/journeys"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/journeys plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys']
 ---
 import kbnJourneysObj from './kbn_journeys.devdocs.json';
diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx
index 75dda32cc2d37..d87c130d96c69 100644
--- a/api_docs/kbn_json_ast.mdx
+++ b/api_docs/kbn_json_ast.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast
 title: "@kbn/json-ast"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/json-ast plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast']
 ---
 import kbnJsonAstObj from './kbn_json_ast.devdocs.json';
diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx
index f4728323a6d19..12ed2d4b8bf76 100644
--- a/api_docs/kbn_kibana_manifest_schema.mdx
+++ b/api_docs/kbn_kibana_manifest_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema
 title: "@kbn/kibana-manifest-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/kibana-manifest-schema plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema']
 ---
 import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json';
diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx
index 003c2ce54f219..d41eb76ffaaf7 100644
--- a/api_docs/kbn_language_documentation_popover.mdx
+++ b/api_docs/kbn_language_documentation_popover.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover
 title: "@kbn/language-documentation-popover"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/language-documentation-popover plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover']
 ---
 import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json';
diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx
index 605443b342a86..8d46af2f3b191 100644
--- a/api_docs/kbn_lens_embeddable_utils.mdx
+++ b/api_docs/kbn_lens_embeddable_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils
 title: "@kbn/lens-embeddable-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/lens-embeddable-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils']
 ---
 import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json';
diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx
index 5d20401976a03..766c36a1754f4 100644
--- a/api_docs/kbn_logging.mdx
+++ b/api_docs/kbn_logging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging
 title: "@kbn/logging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging']
 ---
 import kbnLoggingObj from './kbn_logging.devdocs.json';
diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx
index 0fddd37f78cac..ae9a1a704564b 100644
--- a/api_docs/kbn_logging_mocks.mdx
+++ b/api_docs/kbn_logging_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks
 title: "@kbn/logging-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/logging-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks']
 ---
 import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json';
diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx
index 80194ecac19f7..7dab94fa765ce 100644
--- a/api_docs/kbn_managed_vscode_config.mdx
+++ b/api_docs/kbn_managed_vscode_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config
 title: "@kbn/managed-vscode-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/managed-vscode-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config']
 ---
 import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json';
diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx
index 8ecc8d83eeebb..6039c462d7363 100644
--- a/api_docs/kbn_management_cards_navigation.mdx
+++ b/api_docs/kbn_management_cards_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation
 title: "@kbn/management-cards-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-cards-navigation plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation']
 ---
 import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json';
diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx
index 4a159b58998d0..ef5f0c111ae05 100644
--- a/api_docs/kbn_management_settings_application.mdx
+++ b/api_docs/kbn_management_settings_application.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application
 title: "@kbn/management-settings-application"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-application plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application']
 ---
 import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx
index 87b5cde66613b..bd97bdd20e719 100644
--- a/api_docs/kbn_management_settings_components_field_category.mdx
+++ b/api_docs/kbn_management_settings_components_field_category.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category
 title: "@kbn/management-settings-components-field-category"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-category plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category']
 ---
 import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx
index 580524cf2e93d..3da9fc2ba1528 100644
--- a/api_docs/kbn_management_settings_components_field_input.mdx
+++ b/api_docs/kbn_management_settings_components_field_input.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input
 title: "@kbn/management-settings-components-field-input"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-input plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input']
 ---
 import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx
index f654d5c92e069..e37c0d9d7debf 100644
--- a/api_docs/kbn_management_settings_components_field_row.mdx
+++ b/api_docs/kbn_management_settings_components_field_row.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row
 title: "@kbn/management-settings-components-field-row"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-field-row plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row']
 ---
 import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json';
diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx
index f2dcd1fb086a9..83299c26b287d 100644
--- a/api_docs/kbn_management_settings_components_form.mdx
+++ b/api_docs/kbn_management_settings_components_form.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form
 title: "@kbn/management-settings-components-form"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-components-form plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form']
 ---
 import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json';
diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx
index e059a57631121..7ded057514284 100644
--- a/api_docs/kbn_management_settings_field_definition.mdx
+++ b/api_docs/kbn_management_settings_field_definition.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition
 title: "@kbn/management-settings-field-definition"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-field-definition plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition']
 ---
 import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json';
diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx
index 9e5303121d6ad..9f3345c8eff87 100644
--- a/api_docs/kbn_management_settings_ids.mdx
+++ b/api_docs/kbn_management_settings_ids.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids
 title: "@kbn/management-settings-ids"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-ids plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids']
 ---
 import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json';
diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx
index 00012572c68e1..2a026f950fc7e 100644
--- a/api_docs/kbn_management_settings_section_registry.mdx
+++ b/api_docs/kbn_management_settings_section_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry
 title: "@kbn/management-settings-section-registry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-section-registry plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry']
 ---
 import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json';
diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx
index fcd40384656f7..eed579eb11acb 100644
--- a/api_docs/kbn_management_settings_types.mdx
+++ b/api_docs/kbn_management_settings_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types
 title: "@kbn/management-settings-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types']
 ---
 import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json';
diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx
index 5bb501e3ab22f..e51d76e377dd3 100644
--- a/api_docs/kbn_management_settings_utilities.mdx
+++ b/api_docs/kbn_management_settings_utilities.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities
 title: "@kbn/management-settings-utilities"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-settings-utilities plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities']
 ---
 import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json';
diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx
index 1607640e8f86a..2362a22f8a9ee 100644
--- a/api_docs/kbn_management_storybook_config.mdx
+++ b/api_docs/kbn_management_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config
 title: "@kbn/management-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/management-storybook-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config']
 ---
 import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx
index 9d4dfe2598f7e..c923a9582cde5 100644
--- a/api_docs/kbn_mapbox_gl.mdx
+++ b/api_docs/kbn_mapbox_gl.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl
 title: "@kbn/mapbox-gl"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/mapbox-gl plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl']
 ---
 import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json';
diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx
index e4ec91ebd57d9..f3d36571b0b6f 100644
--- a/api_docs/kbn_maps_vector_tile_utils.mdx
+++ b/api_docs/kbn_maps_vector_tile_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils
 title: "@kbn/maps-vector-tile-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/maps-vector-tile-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils']
 ---
 import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx
index c91fb76222097..8712b6784c093 100644
--- a/api_docs/kbn_ml_agg_utils.mdx
+++ b/api_docs/kbn_ml_agg_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils
 title: "@kbn/ml-agg-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-agg-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils']
 ---
 import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx
index 6a2e769450c37..5017cb992b4ac 100644
--- a/api_docs/kbn_ml_anomaly_utils.mdx
+++ b/api_docs/kbn_ml_anomaly_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils
 title: "@kbn/ml-anomaly-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-anomaly-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils']
 ---
 import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx
index 173fdc3fdf3c3..ae67e6bab46b3 100644
--- a/api_docs/kbn_ml_category_validator.mdx
+++ b/api_docs/kbn_ml_category_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator
 title: "@kbn/ml-category-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-category-validator plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator']
 ---
 import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json';
diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx
index fa07718a3b839..45d77397cd829 100644
--- a/api_docs/kbn_ml_chi2test.mdx
+++ b/api_docs/kbn_ml_chi2test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test
 title: "@kbn/ml-chi2test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-chi2test plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test']
 ---
 import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json';
diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
index 414a0864bc363..3328e57b101f8 100644
--- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx
+++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils
 title: "@kbn/ml-data-frame-analytics-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-frame-analytics-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils']
 ---
 import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx
index bab247030aea9..3ed357bc34046 100644
--- a/api_docs/kbn_ml_data_grid.mdx
+++ b/api_docs/kbn_ml_data_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid
 title: "@kbn/ml-data-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-data-grid plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid']
 ---
 import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json';
diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx
index 9d50919bb4b9d..91b24077b7f9b 100644
--- a/api_docs/kbn_ml_date_picker.mdx
+++ b/api_docs/kbn_ml_date_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker
 title: "@kbn/ml-date-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-picker plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker']
 ---
 import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json';
diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx
index c147b837ed438..3ec816f271459 100644
--- a/api_docs/kbn_ml_date_utils.mdx
+++ b/api_docs/kbn_ml_date_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils
 title: "@kbn/ml-date-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-date-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils']
 ---
 import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx
index 01c8ac45332fd..faeeaff8c44ad 100644
--- a/api_docs/kbn_ml_error_utils.mdx
+++ b/api_docs/kbn_ml_error_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils
 title: "@kbn/ml-error-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-error-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils']
 ---
 import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx
index 3f4b629537d54..9eeab8ce27b9c 100644
--- a/api_docs/kbn_ml_in_memory_table.mdx
+++ b/api_docs/kbn_ml_in_memory_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table
 title: "@kbn/ml-in-memory-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-in-memory-table plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table']
 ---
 import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json';
diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx
index 6e336288ad079..ea57d25ee80d3 100644
--- a/api_docs/kbn_ml_is_defined.mdx
+++ b/api_docs/kbn_ml_is_defined.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined
 title: "@kbn/ml-is-defined"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-defined plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined']
 ---
 import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json';
diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx
index 36f6add36134a..2c44703af906e 100644
--- a/api_docs/kbn_ml_is_populated_object.mdx
+++ b/api_docs/kbn_ml_is_populated_object.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object
 title: "@kbn/ml-is-populated-object"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-is-populated-object plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object']
 ---
 import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json';
diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx
index 2307a1b398de6..7326a74d79a76 100644
--- a/api_docs/kbn_ml_kibana_theme.mdx
+++ b/api_docs/kbn_ml_kibana_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme
 title: "@kbn/ml-kibana-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-kibana-theme plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme']
 ---
 import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json';
diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx
index 64885de273389..1132cd5bb7fa0 100644
--- a/api_docs/kbn_ml_local_storage.mdx
+++ b/api_docs/kbn_ml_local_storage.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage
 title: "@kbn/ml-local-storage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-local-storage plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage']
 ---
 import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json';
diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx
index f0ac885c2f170..25acc8ca774a6 100644
--- a/api_docs/kbn_ml_nested_property.mdx
+++ b/api_docs/kbn_ml_nested_property.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property
 title: "@kbn/ml-nested-property"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-nested-property plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property']
 ---
 import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json';
diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx
index aac17968e5078..d980fea036b32 100644
--- a/api_docs/kbn_ml_number_utils.mdx
+++ b/api_docs/kbn_ml_number_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils
 title: "@kbn/ml-number-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-number-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils']
 ---
 import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx
index 86d0533521fae..ca73f435c18a1 100644
--- a/api_docs/kbn_ml_query_utils.mdx
+++ b/api_docs/kbn_ml_query_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils
 title: "@kbn/ml-query-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-query-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils']
 ---
 import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx
index 41295cb793d76..522448d33b1d9 100644
--- a/api_docs/kbn_ml_random_sampler_utils.mdx
+++ b/api_docs/kbn_ml_random_sampler_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils
 title: "@kbn/ml-random-sampler-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-random-sampler-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils']
 ---
 import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx
index 7c6509ea49a0c..4e7a592d60c5a 100644
--- a/api_docs/kbn_ml_route_utils.mdx
+++ b/api_docs/kbn_ml_route_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils
 title: "@kbn/ml-route-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-route-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils']
 ---
 import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx
index 0793788b3be40..5137fa5e67ad7 100644
--- a/api_docs/kbn_ml_runtime_field_utils.mdx
+++ b/api_docs/kbn_ml_runtime_field_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils
 title: "@kbn/ml-runtime-field-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-runtime-field-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils']
 ---
 import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx
index 918962346d8b4..22618e760b6ee 100644
--- a/api_docs/kbn_ml_string_hash.mdx
+++ b/api_docs/kbn_ml_string_hash.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash
 title: "@kbn/ml-string-hash"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-string-hash plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash']
 ---
 import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json';
diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx
index 63b8eb6b91c03..4f030b42b7761 100644
--- a/api_docs/kbn_ml_trained_models_utils.mdx
+++ b/api_docs/kbn_ml_trained_models_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils
 title: "@kbn/ml-trained-models-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-trained-models-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils']
 ---
 import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json';
diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx
index f6a85408c321b..2f5aada8156fa 100644
--- a/api_docs/kbn_ml_url_state.mdx
+++ b/api_docs/kbn_ml_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state
 title: "@kbn/ml-url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ml-url-state plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state']
 ---
 import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json';
diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx
index 6f89c30756d39..74b97e2c9c7f2 100644
--- a/api_docs/kbn_monaco.mdx
+++ b/api_docs/kbn_monaco.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco
 title: "@kbn/monaco"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/monaco plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco']
 ---
 import kbnMonacoObj from './kbn_monaco.devdocs.json';
diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx
index 466644000a6fd..386f2d52e2920 100644
--- a/api_docs/kbn_object_versioning.mdx
+++ b/api_docs/kbn_object_versioning.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning
 title: "@kbn/object-versioning"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/object-versioning plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning']
 ---
 import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json';
diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx
index dd7a9bc08e0da..e7d186cde4fc0 100644
--- a/api_docs/kbn_observability_alert_details.mdx
+++ b/api_docs/kbn_observability_alert_details.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details
 title: "@kbn/observability-alert-details"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alert-details plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details']
 ---
 import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json';
diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx
index 45726846e3234..729d413783a9b 100644
--- a/api_docs/kbn_observability_alerting_test_data.mdx
+++ b/api_docs/kbn_observability_alerting_test_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data
 title: "@kbn/observability-alerting-test-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/observability-alerting-test-data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data']
 ---
 import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json';
diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx
index 7f120f1f2652b..fd061015ae64b 100644
--- a/api_docs/kbn_openapi_generator.mdx
+++ b/api_docs/kbn_openapi_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator
 title: "@kbn/openapi-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/openapi-generator plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator']
 ---
 import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json';
diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx
index c8abab0a57803..11542a7605782 100644
--- a/api_docs/kbn_optimizer.mdx
+++ b/api_docs/kbn_optimizer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer
 title: "@kbn/optimizer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer']
 ---
 import kbnOptimizerObj from './kbn_optimizer.devdocs.json';
diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx
index 885cd7840ac63..a37adc689ba33 100644
--- a/api_docs/kbn_optimizer_webpack_helpers.mdx
+++ b/api_docs/kbn_optimizer_webpack_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers
 title: "@kbn/optimizer-webpack-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/optimizer-webpack-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers']
 ---
 import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json';
diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx
index afdafcbb05314..2644a5e5ca3fa 100644
--- a/api_docs/kbn_osquery_io_ts_types.mdx
+++ b/api_docs/kbn_osquery_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types
 title: "@kbn/osquery-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/osquery-io-ts-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types']
 ---
 import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx
index 5ecdad522725d..f9af1703da81f 100644
--- a/api_docs/kbn_performance_testing_dataset_extractor.mdx
+++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor
 title: "@kbn/performance-testing-dataset-extractor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/performance-testing-dataset-extractor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor']
 ---
 import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json';
diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx
index bac0a477d43ef..5aac9009580f0 100644
--- a/api_docs/kbn_plugin_generator.mdx
+++ b/api_docs/kbn_plugin_generator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator
 title: "@kbn/plugin-generator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-generator plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator']
 ---
 import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json';
diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx
index c8911731b2bc3..9394ec6f056d6 100644
--- a/api_docs/kbn_plugin_helpers.mdx
+++ b/api_docs/kbn_plugin_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers
 title: "@kbn/plugin-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/plugin-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers']
 ---
 import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json';
diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx
index a48d2d3b6cba8..69c793b1f336c 100644
--- a/api_docs/kbn_profiling_utils.mdx
+++ b/api_docs/kbn_profiling_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils
 title: "@kbn/profiling-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/profiling-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils']
 ---
 import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json';
diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx
index 01e5740fff2ec..5b91f251f9030 100644
--- a/api_docs/kbn_random_sampling.mdx
+++ b/api_docs/kbn_random_sampling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling
 title: "@kbn/random-sampling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/random-sampling plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling']
 ---
 import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json';
diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx
index 85700266ee130..7f134dd46c807 100644
--- a/api_docs/kbn_react_field.mdx
+++ b/api_docs/kbn_react_field.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field
 title: "@kbn/react-field"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-field plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field']
 ---
 import kbnReactFieldObj from './kbn_react_field.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx
index 4b79e0b963de3..723ba0d506f12 100644
--- a/api_docs/kbn_react_kibana_context_common.mdx
+++ b/api_docs/kbn_react_kibana_context_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common
 title: "@kbn/react-kibana-context-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common']
 ---
 import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx
index 60263abc95765..e6230b0de3a65 100644
--- a/api_docs/kbn_react_kibana_context_render.mdx
+++ b/api_docs/kbn_react_kibana_context_render.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render
 title: "@kbn/react-kibana-context-render"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-render plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render']
 ---
 import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx
index 9b07fca100eee..ddcff99da6020 100644
--- a/api_docs/kbn_react_kibana_context_root.mdx
+++ b/api_docs/kbn_react_kibana_context_root.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root
 title: "@kbn/react-kibana-context-root"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-root plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root']
 ---
 import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx
index 59929a5035e8a..711617ff8f70c 100644
--- a/api_docs/kbn_react_kibana_context_styled.mdx
+++ b/api_docs/kbn_react_kibana_context_styled.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled
 title: "@kbn/react-kibana-context-styled"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-styled plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled']
 ---
 import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx
index 1dc8752c827ca..423a11ad1382f 100644
--- a/api_docs/kbn_react_kibana_context_theme.mdx
+++ b/api_docs/kbn_react_kibana_context_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme
 title: "@kbn/react-kibana-context-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-context-theme plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme']
 ---
 import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json';
diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx
index 4ca70a368ae4d..9deeea7b2d350 100644
--- a/api_docs/kbn_react_kibana_mount.mdx
+++ b/api_docs/kbn_react_kibana_mount.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount
 title: "@kbn/react-kibana-mount"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/react-kibana-mount plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount']
 ---
 import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json';
diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx
index f1e2b0197433c..e98676fbad127 100644
--- a/api_docs/kbn_repo_file_maps.mdx
+++ b/api_docs/kbn_repo_file_maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps
 title: "@kbn/repo-file-maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-file-maps plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps']
 ---
 import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json';
diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx
index f801e928d7f6c..f8ee4c0579b41 100644
--- a/api_docs/kbn_repo_linter.mdx
+++ b/api_docs/kbn_repo_linter.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter
 title: "@kbn/repo-linter"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-linter plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter']
 ---
 import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json';
diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx
index 4c5b6b617c797..3ae139932e745 100644
--- a/api_docs/kbn_repo_path.mdx
+++ b/api_docs/kbn_repo_path.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path
 title: "@kbn/repo-path"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-path plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path']
 ---
 import kbnRepoPathObj from './kbn_repo_path.devdocs.json';
diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx
index b104b23b78a49..7090363cc6398 100644
--- a/api_docs/kbn_repo_source_classifier.mdx
+++ b/api_docs/kbn_repo_source_classifier.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier
 title: "@kbn/repo-source-classifier"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/repo-source-classifier plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier']
 ---
 import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json';
diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx
index 7b390250f435c..e5fac5104e305 100644
--- a/api_docs/kbn_reporting_common.mdx
+++ b/api_docs/kbn_reporting_common.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common
 title: "@kbn/reporting-common"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/reporting-common plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common']
 ---
 import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json';
diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx
index 99ecf06e9688b..68368616241dc 100644
--- a/api_docs/kbn_resizable_layout.mdx
+++ b/api_docs/kbn_resizable_layout.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout
 title: "@kbn/resizable-layout"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/resizable-layout plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout']
 ---
 import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json';
diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx
index b60492af7ce1e..5828ffcd057eb 100644
--- a/api_docs/kbn_rison.mdx
+++ b/api_docs/kbn_rison.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison
 title: "@kbn/rison"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rison plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison']
 ---
 import kbnRisonObj from './kbn_rison.devdocs.json';
diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx
index 4bf77316768bf..24e8bc82dec24 100644
--- a/api_docs/kbn_rrule.mdx
+++ b/api_docs/kbn_rrule.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule
 title: "@kbn/rrule"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rrule plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule']
 ---
 import kbnRruleObj from './kbn_rrule.devdocs.json';
diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx
index ae18959fdcbeb..1d60f7ecc522f 100644
--- a/api_docs/kbn_rule_data_utils.mdx
+++ b/api_docs/kbn_rule_data_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils
 title: "@kbn/rule-data-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/rule-data-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils']
 ---
 import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json';
diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx
index 248a774860ae3..36a40d513143b 100644
--- a/api_docs/kbn_saved_objects_settings.mdx
+++ b/api_docs/kbn_saved_objects_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings
 title: "@kbn/saved-objects-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/saved-objects-settings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings']
 ---
 import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json';
diff --git a/api_docs/kbn_search_api_panels.devdocs.json b/api_docs/kbn_search_api_panels.devdocs.json
index 52bb065a5c52b..8558d593d4290 100644
--- a/api_docs/kbn_search_api_panels.devdocs.json
+++ b/api_docs/kbn_search_api_panels.devdocs.json
@@ -460,7 +460,7 @@
         "label": "SelectClientPanel",
         "description": [],
         "signature": [
-          "({ docLinks, children, http, isPanelLeft, overviewPanelProps, }: React.PropsWithChildren<",
+          "({ docLinks, children, http, isPanelLeft, overviewPanelProps, callout, }: React.PropsWithChildren<",
           {
             "pluginId": "@kbn/search-api-panels",
             "scope": "common",
@@ -479,7 +479,7 @@
             "id": "def-common.SelectClientPanel.$1",
             "type": "CompoundType",
             "tags": [],
-            "label": "{\n  docLinks,\n  children,\n  http,\n  isPanelLeft = true,\n  overviewPanelProps,\n}",
+            "label": "{\n  docLinks,\n  children,\n  http,\n  isPanelLeft = true,\n  overviewPanelProps,\n  callout,\n}",
             "description": [],
             "signature": [
               "React.PropsWithChildren<",
@@ -1042,6 +1042,20 @@
             "path": "packages/kbn-search-api-panels/components/select_client.tsx",
             "deprecated": false,
             "trackAdoption": false
+          },
+          {
+            "parentPluginId": "@kbn/search-api-panels",
+            "id": "def-common.SelectClientPanelProps.callout",
+            "type": "CompoundType",
+            "tags": [],
+            "label": "callout",
+            "description": [],
+            "signature": [
+              "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined"
+            ],
+            "path": "packages/kbn-search-api-panels/components/select_client.tsx",
+            "deprecated": false,
+            "trackAdoption": false
           }
         ],
         "initialIsOpen": false
diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx
index 871968e27d493..7fc9350ade568 100644
--- a/api_docs/kbn_search_api_panels.mdx
+++ b/api_docs/kbn_search_api_panels.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels
 title: "@kbn/search-api-panels"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-api-panels plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels']
 ---
 import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 68 | 0 | 68 | 0 |
+| 69 | 0 | 69 | 0 |
 
 ## Common
 
diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx
index eafee57cb7405..63acff8d3cfdb 100644
--- a/api_docs/kbn_search_connectors.mdx
+++ b/api_docs/kbn_search_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors
 title: "@kbn/search-connectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-connectors plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors']
 ---
 import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json';
diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx
index e4c5d0188f92b..9a2210868c348 100644
--- a/api_docs/kbn_search_response_warnings.mdx
+++ b/api_docs/kbn_search_response_warnings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings
 title: "@kbn/search-response-warnings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/search-response-warnings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings']
 ---
 import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json';
diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx
index 7e17ab553dc29..edf64d8ac1ac8 100644
--- a/api_docs/kbn_security_solution_features.mdx
+++ b/api_docs/kbn_security_solution_features.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features
 title: "@kbn/security-solution-features"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-features plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features']
 ---
 import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json';
diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx
index 4934d5cfeafdf..592b88cd817f9 100644
--- a/api_docs/kbn_security_solution_navigation.mdx
+++ b/api_docs/kbn_security_solution_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation
 title: "@kbn/security-solution-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-navigation plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation']
 ---
 import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json';
diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx
index 606177d6bdaef..023124ad4972e 100644
--- a/api_docs/kbn_security_solution_side_nav.mdx
+++ b/api_docs/kbn_security_solution_side_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav
 title: "@kbn/security-solution-side-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-side-nav plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav']
 ---
 import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json';
diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx
index e774b206f7054..dc4edcc94b517 100644
--- a/api_docs/kbn_security_solution_storybook_config.mdx
+++ b/api_docs/kbn_security_solution_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config
 title: "@kbn/security-solution-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/security-solution-storybook-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config']
 ---
 import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx
index 102d5f7d9ba28..b6b3746d78b6b 100644
--- a/api_docs/kbn_securitysolution_autocomplete.mdx
+++ b/api_docs/kbn_securitysolution_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete
 title: "@kbn/securitysolution-autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-autocomplete plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete']
 ---
 import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx
index e057b744280fc..32d8e1bb3ffb1 100644
--- a/api_docs/kbn_securitysolution_data_table.mdx
+++ b/api_docs/kbn_securitysolution_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table
 title: "@kbn/securitysolution-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-data-table plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table']
 ---
 import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx
index da3594107754c..2e028b9f8b7e8 100644
--- a/api_docs/kbn_securitysolution_ecs.mdx
+++ b/api_docs/kbn_securitysolution_ecs.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs
 title: "@kbn/securitysolution-ecs"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-ecs plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs']
 ---
 import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx
index 4125798869768..dff265e99b0e8 100644
--- a/api_docs/kbn_securitysolution_es_utils.mdx
+++ b/api_docs/kbn_securitysolution_es_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils
 title: "@kbn/securitysolution-es-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-es-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils']
 ---
 import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx
index 1e999144ba2ea..9201445f3ae7d 100644
--- a/api_docs/kbn_securitysolution_exception_list_components.mdx
+++ b/api_docs/kbn_securitysolution_exception_list_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components
 title: "@kbn/securitysolution-exception-list-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-exception-list-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components']
 ---
 import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx
index f0f2527b519e3..6469b6997654e 100644
--- a/api_docs/kbn_securitysolution_grouping.mdx
+++ b/api_docs/kbn_securitysolution_grouping.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping
 title: "@kbn/securitysolution-grouping"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-grouping plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping']
 ---
 import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx
index 232fcc6099ca9..f13b4aa8e0c7c 100644
--- a/api_docs/kbn_securitysolution_hook_utils.mdx
+++ b/api_docs/kbn_securitysolution_hook_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils
 title: "@kbn/securitysolution-hook-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-hook-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils']
 ---
 import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
index 2a44b8fa5a8b4..c1e5297d71da6 100644
--- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types
 title: "@kbn/securitysolution-io-ts-alerting-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types']
 ---
 import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
index 3af1eafb2624b..c4c80a37d145b 100644
--- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types
 title: "@kbn/securitysolution-io-ts-list-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types']
 ---
 import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx
index 576405992da3a..4bf91e8821e4e 100644
--- a/api_docs/kbn_securitysolution_io_ts_types.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types
 title: "@kbn/securitysolution-io-ts-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types']
 ---
 import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx
index 02d3fff1361a5..4d4010b4529e6 100644
--- a/api_docs/kbn_securitysolution_io_ts_utils.mdx
+++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils
 title: "@kbn/securitysolution-io-ts-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-io-ts-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils']
 ---
 import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx
index 516b6eed65e9a..906acdfe2e218 100644
--- a/api_docs/kbn_securitysolution_list_api.mdx
+++ b/api_docs/kbn_securitysolution_list_api.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api
 title: "@kbn/securitysolution-list-api"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-api plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api']
 ---
 import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx
index 6bcf7fa279964..c2489f33610ed 100644
--- a/api_docs/kbn_securitysolution_list_constants.mdx
+++ b/api_docs/kbn_securitysolution_list_constants.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants
 title: "@kbn/securitysolution-list-constants"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-constants plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants']
 ---
 import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx
index efe6a6b4c3264..473a2cd395b8f 100644
--- a/api_docs/kbn_securitysolution_list_hooks.mdx
+++ b/api_docs/kbn_securitysolution_list_hooks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks
 title: "@kbn/securitysolution-list-hooks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-hooks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks']
 ---
 import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx
index 8438266c33f05..9b26948a81f62 100644
--- a/api_docs/kbn_securitysolution_list_utils.mdx
+++ b/api_docs/kbn_securitysolution_list_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils
 title: "@kbn/securitysolution-list-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-list-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils']
 ---
 import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx
index 9df6418fcd28f..264f355cef384 100644
--- a/api_docs/kbn_securitysolution_rules.mdx
+++ b/api_docs/kbn_securitysolution_rules.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules
 title: "@kbn/securitysolution-rules"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-rules plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules']
 ---
 import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx
index b460ad4b389f8..9def5c371a6e2 100644
--- a/api_docs/kbn_securitysolution_t_grid.mdx
+++ b/api_docs/kbn_securitysolution_t_grid.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid
 title: "@kbn/securitysolution-t-grid"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-t-grid plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid']
 ---
 import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json';
diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx
index c36d80e6a1a68..57690f66e0efa 100644
--- a/api_docs/kbn_securitysolution_utils.mdx
+++ b/api_docs/kbn_securitysolution_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils
 title: "@kbn/securitysolution-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/securitysolution-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils']
 ---
 import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json';
diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx
index 04a2032867780..fb9123589d5e7 100644
--- a/api_docs/kbn_server_http_tools.mdx
+++ b/api_docs/kbn_server_http_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools
 title: "@kbn/server-http-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-http-tools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools']
 ---
 import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json';
diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx
index d086788dafc1f..e1001a82325d6 100644
--- a/api_docs/kbn_server_route_repository.mdx
+++ b/api_docs/kbn_server_route_repository.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository
 title: "@kbn/server-route-repository"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/server-route-repository plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository']
 ---
 import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json';
diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx
index c6cb8bee76944..85285a3820f88 100644
--- a/api_docs/kbn_serverless_common_settings.mdx
+++ b/api_docs/kbn_serverless_common_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings
 title: "@kbn/serverless-common-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-common-settings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings']
 ---
 import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx
index 0ba646c78209d..b3e1f64c312aa 100644
--- a/api_docs/kbn_serverless_observability_settings.mdx
+++ b/api_docs/kbn_serverless_observability_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings
 title: "@kbn/serverless-observability-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-observability-settings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings']
 ---
 import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx
index 2985ca8bd2350..f26f9693cfd3c 100644
--- a/api_docs/kbn_serverless_project_switcher.mdx
+++ b/api_docs/kbn_serverless_project_switcher.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher
 title: "@kbn/serverless-project-switcher"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-project-switcher plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher']
 ---
 import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json';
diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx
index bd76977f8167f..686a5ab892d5e 100644
--- a/api_docs/kbn_serverless_search_settings.mdx
+++ b/api_docs/kbn_serverless_search_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings
 title: "@kbn/serverless-search-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-search-settings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings']
 ---
 import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx
index 9d97ea373906b..2c166b89ffefd 100644
--- a/api_docs/kbn_serverless_security_settings.mdx
+++ b/api_docs/kbn_serverless_security_settings.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings
 title: "@kbn/serverless-security-settings"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-security-settings plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings']
 ---
 import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json';
diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx
index 4520457d9082f..bd6a07615b823 100644
--- a/api_docs/kbn_serverless_storybook_config.mdx
+++ b/api_docs/kbn_serverless_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config
 title: "@kbn/serverless-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/serverless-storybook-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config']
 ---
 import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx
index de4bd0a15f8aa..6f99369d8431e 100644
--- a/api_docs/kbn_shared_svg.mdx
+++ b/api_docs/kbn_shared_svg.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg
 title: "@kbn/shared-svg"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-svg plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg']
 ---
 import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx
index 8bbd201f7303c..5763dae073b20 100644
--- a/api_docs/kbn_shared_ux_avatar_solution.mdx
+++ b/api_docs/kbn_shared_ux_avatar_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution
 title: "@kbn/shared-ux-avatar-solution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-avatar-solution plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution']
 ---
 import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
index 52c64d2fa8163..b105e11750d4c 100644
--- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
+++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen
 title: "@kbn/shared-ux-button-exit-full-screen"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen']
 ---
 import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx
index 55248a629f6db..bbdefca444867 100644
--- a/api_docs/kbn_shared_ux_button_toolbar.mdx
+++ b/api_docs/kbn_shared_ux_button_toolbar.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar
 title: "@kbn/shared-ux-button-toolbar"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-button-toolbar plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar']
 ---
 import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx
index c97701b9bdb49..a2e610c6afc1b 100644
--- a/api_docs/kbn_shared_ux_card_no_data.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data
 title: "@kbn/shared-ux-card-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data']
 ---
 import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
index f24a184f16de5..b515f679d1e76 100644
--- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks
 title: "@kbn/shared-ux-card-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks']
 ---
 import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx
index 6d887dc88ff0c..363cf2756cff9 100644
--- a/api_docs/kbn_shared_ux_chrome_navigation.mdx
+++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation
 title: "@kbn/shared-ux-chrome-navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-chrome-navigation plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation']
 ---
 import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx
index 52df36f6c1e30..cc12ddc1bcfa8 100644
--- a/api_docs/kbn_shared_ux_error_boundary.mdx
+++ b/api_docs/kbn_shared_ux_error_boundary.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary
 title: "@kbn/shared-ux-error-boundary"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-error-boundary plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary']
 ---
 import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx
index 9ae2b399f3f43..365a3ee9d406c 100644
--- a/api_docs/kbn_shared_ux_file_context.mdx
+++ b/api_docs/kbn_shared_ux_file_context.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context
 title: "@kbn/shared-ux-file-context"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-context plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context']
 ---
 import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx
index b662256cfca30..e62c9d479d1f2 100644
--- a/api_docs/kbn_shared_ux_file_image.mdx
+++ b/api_docs/kbn_shared_ux_file_image.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image
 title: "@kbn/shared-ux-file-image"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image']
 ---
 import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx
index 4d5bc757f0ece..5a8213e99ef6e 100644
--- a/api_docs/kbn_shared_ux_file_image_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks
 title: "@kbn/shared-ux-file-image-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-image-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks']
 ---
 import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx
index 62d94f7c4f3dd..efcf586e3189b 100644
--- a/api_docs/kbn_shared_ux_file_mocks.mdx
+++ b/api_docs/kbn_shared_ux_file_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks
 title: "@kbn/shared-ux-file-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks']
 ---
 import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx
index a08b78618edcc..d21979dee5dd9 100644
--- a/api_docs/kbn_shared_ux_file_picker.mdx
+++ b/api_docs/kbn_shared_ux_file_picker.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker
 title: "@kbn/shared-ux-file-picker"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-picker plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker']
 ---
 import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx
index 433b5f70fbb85..6637930a2f8d9 100644
--- a/api_docs/kbn_shared_ux_file_types.mdx
+++ b/api_docs/kbn_shared_ux_file_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types
 title: "@kbn/shared-ux-file-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types']
 ---
 import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx
index a7f4c9641ffb0..c46b8c2aab8d9 100644
--- a/api_docs/kbn_shared_ux_file_upload.mdx
+++ b/api_docs/kbn_shared_ux_file_upload.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload
 title: "@kbn/shared-ux-file-upload"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-upload plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload']
 ---
 import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx
index 3f6b2b72bef11..a6615225173e0 100644
--- a/api_docs/kbn_shared_ux_file_util.mdx
+++ b/api_docs/kbn_shared_ux_file_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util
 title: "@kbn/shared-ux-file-util"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-file-util plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util']
 ---
 import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx
index 76447b987adf2..5b06e24d8d4ea 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app
 title: "@kbn/shared-ux-link-redirect-app"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app']
 ---
 import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
index 2f6ea37a43d81..e2e0a4d7b1941 100644
--- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
+++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks
 title: "@kbn/shared-ux-link-redirect-app-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks']
 ---
 import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx
index 97b1fedd0bd75..6dc36d51b972f 100644
--- a/api_docs/kbn_shared_ux_markdown.mdx
+++ b/api_docs/kbn_shared_ux_markdown.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown
 title: "@kbn/shared-ux-markdown"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown']
 ---
 import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx
index c3630482ef583..0a189cf21ec86 100644
--- a/api_docs/kbn_shared_ux_markdown_mocks.mdx
+++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks
 title: "@kbn/shared-ux-markdown-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-markdown-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks']
 ---
 import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
index 5c647d84eb57d..e4020e380aaef 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data
 title: "@kbn/shared-ux-page-analytics-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data']
 ---
 import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
index bbe614415f1ab..0d557721641f6 100644
--- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks
 title: "@kbn/shared-ux-page-analytics-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks']
 ---
 import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
index fdc6029f71822..f17fcbf70fa69 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data
 title: "@kbn/shared-ux-page-kibana-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data']
 ---
 import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
index 01909a5f2bd24..b540620e36062 100644
--- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks
 title: "@kbn/shared-ux-page-kibana-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks']
 ---
 import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx
index 0daa33887e71c..e476cbbd8a26d 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template
 title: "@kbn/shared-ux-page-kibana-template"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template']
 ---
 import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
index 762e9ffce5760..c0322a739749b 100644
--- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks
 title: "@kbn/shared-ux-page-kibana-template-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks']
 ---
 import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx
index df35525a6b30e..4bfddd72293a3 100644
--- a/api_docs/kbn_shared_ux_page_no_data.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data
 title: "@kbn/shared-ux-page-no-data"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data']
 ---
 import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx
index 30a16644dcf23..c72ea8c4e5d0f 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config
 title: "@kbn/shared-ux-page-no-data-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config']
 ---
 import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
index 80a9f9561bd14..72d71252c4671 100644
--- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks
 title: "@kbn/shared-ux-page-no-data-config-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks']
 ---
 import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
index 77111c701cf6d..d70bc2621cb7e 100644
--- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
+++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks
 title: "@kbn/shared-ux-page-no-data-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks']
 ---
 import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx
index e34848e11bc35..86008089ebae6 100644
--- a/api_docs/kbn_shared_ux_page_solution_nav.mdx
+++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav
 title: "@kbn/shared-ux-page-solution-nav"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-page-solution-nav plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav']
 ---
 import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
index 7e0d8fc901879..0f3747fa81e37 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views
 title: "@kbn/shared-ux-prompt-no-data-views"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views']
 ---
 import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
index 97c4b9da4ed12..e0d678b372d8c 100644
--- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
+++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks
 title: "@kbn/shared-ux-prompt-no-data-views-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks']
 ---
 import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx
index 9c9dcd969ee87..246abaabe991d 100644
--- a/api_docs/kbn_shared_ux_prompt_not_found.mdx
+++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found
 title: "@kbn/shared-ux-prompt-not-found"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-prompt-not-found plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found']
 ---
 import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx
index 1fb0d559e9940..15d5ff893d252 100644
--- a/api_docs/kbn_shared_ux_router.mdx
+++ b/api_docs/kbn_shared_ux_router.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router
 title: "@kbn/shared-ux-router"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router']
 ---
 import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx
index e55418d32cdad..e81c218eee99e 100644
--- a/api_docs/kbn_shared_ux_router_mocks.mdx
+++ b/api_docs/kbn_shared_ux_router_mocks.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks
 title: "@kbn/shared-ux-router-mocks"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-router-mocks plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks']
 ---
 import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx
index 705c7f7261d30..9ed678b4bba3e 100644
--- a/api_docs/kbn_shared_ux_storybook_config.mdx
+++ b/api_docs/kbn_shared_ux_storybook_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config
 title: "@kbn/shared-ux-storybook-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config']
 ---
 import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx
index b8a4502a66fff..969f46d8d3160 100644
--- a/api_docs/kbn_shared_ux_storybook_mock.mdx
+++ b/api_docs/kbn_shared_ux_storybook_mock.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock
 title: "@kbn/shared-ux-storybook-mock"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-storybook-mock plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock']
 ---
 import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json';
diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx
index 355c3442e3e33..9134e838c9530 100644
--- a/api_docs/kbn_shared_ux_utility.mdx
+++ b/api_docs/kbn_shared_ux_utility.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility
 title: "@kbn/shared-ux-utility"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/shared-ux-utility plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility']
 ---
 import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json';
diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx
index e465dd3c801c2..658a36e7a5577 100644
--- a/api_docs/kbn_slo_schema.mdx
+++ b/api_docs/kbn_slo_schema.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema
 title: "@kbn/slo-schema"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/slo-schema plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema']
 ---
 import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json';
diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx
index 081bd161e9a2e..939cb0de4e4d8 100644
--- a/api_docs/kbn_some_dev_log.mdx
+++ b/api_docs/kbn_some_dev_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log
 title: "@kbn/some-dev-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/some-dev-log plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log']
 ---
 import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json';
diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx
index a8c229a65a35a..e8af86b302e01 100644
--- a/api_docs/kbn_std.mdx
+++ b/api_docs/kbn_std.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std
 title: "@kbn/std"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/std plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std']
 ---
 import kbnStdObj from './kbn_std.devdocs.json';
diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx
index 664300586ed07..f061dca223b40 100644
--- a/api_docs/kbn_stdio_dev_helpers.mdx
+++ b/api_docs/kbn_stdio_dev_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers
 title: "@kbn/stdio-dev-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/stdio-dev-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers']
 ---
 import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json';
diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx
index 4dba70bd0859d..92447103fa41c 100644
--- a/api_docs/kbn_storybook.mdx
+++ b/api_docs/kbn_storybook.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook
 title: "@kbn/storybook"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/storybook plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook']
 ---
 import kbnStorybookObj from './kbn_storybook.devdocs.json';
diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx
index 651d9e695b46e..66b95e752d61f 100644
--- a/api_docs/kbn_subscription_tracking.mdx
+++ b/api_docs/kbn_subscription_tracking.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking
 title: "@kbn/subscription-tracking"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/subscription-tracking plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking']
 ---
 import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json';
diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx
index 6402c238454b0..8115b6a7db015 100644
--- a/api_docs/kbn_telemetry_tools.mdx
+++ b/api_docs/kbn_telemetry_tools.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools
 title: "@kbn/telemetry-tools"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/telemetry-tools plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools']
 ---
 import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json';
diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx
index f8a42b109e7d1..68d2bf7d151de 100644
--- a/api_docs/kbn_test.mdx
+++ b/api_docs/kbn_test.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test
 title: "@kbn/test"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test']
 ---
 import kbnTestObj from './kbn_test.devdocs.json';
diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx
index 9bde9add91ab6..4b454877a185a 100644
--- a/api_docs/kbn_test_jest_helpers.mdx
+++ b/api_docs/kbn_test_jest_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers
 title: "@kbn/test-jest-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-jest-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers']
 ---
 import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json';
diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx
index e262cf452cdf0..3864032beae99 100644
--- a/api_docs/kbn_test_subj_selector.mdx
+++ b/api_docs/kbn_test_subj_selector.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector
 title: "@kbn/test-subj-selector"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/test-subj-selector plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector']
 ---
 import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json';
diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx
index 15c06abe42fc5..0604a8948c76f 100644
--- a/api_docs/kbn_text_based_editor.mdx
+++ b/api_docs/kbn_text_based_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor
 title: "@kbn/text-based-editor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/text-based-editor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor']
 ---
 import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json';
diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx
index 0fd9c55df818f..d095d3975d772 100644
--- a/api_docs/kbn_tooling_log.mdx
+++ b/api_docs/kbn_tooling_log.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log
 title: "@kbn/tooling-log"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/tooling-log plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log']
 ---
 import kbnToolingLogObj from './kbn_tooling_log.devdocs.json';
diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx
index 66127da3ff996..7b41d6d13485b 100644
--- a/api_docs/kbn_ts_projects.mdx
+++ b/api_docs/kbn_ts_projects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects
 title: "@kbn/ts-projects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ts-projects plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects']
 ---
 import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json';
diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx
index 93ce91763718d..73f801719623b 100644
--- a/api_docs/kbn_typed_react_router_config.mdx
+++ b/api_docs/kbn_typed_react_router_config.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config
 title: "@kbn/typed-react-router-config"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/typed-react-router-config plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config']
 ---
 import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json';
diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx
index d52a7906ccd07..9ad6acd3b38f1 100644
--- a/api_docs/kbn_ui_actions_browser.mdx
+++ b/api_docs/kbn_ui_actions_browser.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser
 title: "@kbn/ui-actions-browser"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-actions-browser plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser']
 ---
 import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json';
diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx
index da4c9277250cd..1786e1b5c0655 100644
--- a/api_docs/kbn_ui_shared_deps_src.mdx
+++ b/api_docs/kbn_ui_shared_deps_src.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src
 title: "@kbn/ui-shared-deps-src"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-shared-deps-src plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src']
 ---
 import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json';
diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx
index ef1bc1259b80f..8b67980d45be6 100644
--- a/api_docs/kbn_ui_theme.mdx
+++ b/api_docs/kbn_ui_theme.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme
 title: "@kbn/ui-theme"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/ui-theme plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme']
 ---
 import kbnUiThemeObj from './kbn_ui_theme.devdocs.json';
diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx
index 8c9f328d3f47a..3924ff9874f60 100644
--- a/api_docs/kbn_unified_data_table.mdx
+++ b/api_docs/kbn_unified_data_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table
 title: "@kbn/unified-data-table"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-data-table plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table']
 ---
 import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json';
diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx
index ae6b25524d4b2..178310716afe5 100644
--- a/api_docs/kbn_unified_doc_viewer.mdx
+++ b/api_docs/kbn_unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer
 title: "@kbn/unified-doc-viewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-doc-viewer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer']
 ---
 import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json';
diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx
index f4b4057b0fcc9..de775d2cf01c4 100644
--- a/api_docs/kbn_unified_field_list.mdx
+++ b/api_docs/kbn_unified_field_list.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list
 title: "@kbn/unified-field-list"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/unified-field-list plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list']
 ---
 import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json';
diff --git a/api_docs/kbn_unsaved_changes_badge.devdocs.json b/api_docs/kbn_unsaved_changes_badge.devdocs.json
new file mode 100644
index 0000000000000..d8bc0bf79d1ec
--- /dev/null
+++ b/api_docs/kbn_unsaved_changes_badge.devdocs.json
@@ -0,0 +1,273 @@
+{
+  "id": "@kbn/unsaved-changes-badge",
+  "client": {
+    "classes": [],
+    "functions": [],
+    "interfaces": [],
+    "enums": [],
+    "misc": [],
+    "objects": []
+  },
+  "server": {
+    "classes": [],
+    "functions": [],
+    "interfaces": [],
+    "enums": [],
+    "misc": [],
+    "objects": []
+  },
+  "common": {
+    "classes": [],
+    "functions": [
+      {
+        "parentPluginId": "@kbn/unsaved-changes-badge",
+        "id": "def-common.getTopNavUnsavedChangesBadge",
+        "type": "Function",
+        "tags": [],
+        "label": "getTopNavUnsavedChangesBadge",
+        "description": [
+          "\nReturns a badge object suitable for the top nav `badges` prop"
+        ],
+        "signature": [
+          "({ onRevert, onSave, onSaveAs, }: ",
+          {
+            "pluginId": "@kbn/unsaved-changes-badge",
+            "scope": "common",
+            "docId": "kibKbnUnsavedChangesBadgePluginApi",
+            "section": "def-common.TopNavUnsavedChangesBadgeParams",
+            "text": "TopNavUnsavedChangesBadgeParams"
+          },
+          ") => ",
+          {
+            "pluginId": "navigation",
+            "scope": "public",
+            "docId": "kibNavigationPluginApi",
+            "section": "def-public.TopNavMenuBadgeProps",
+            "text": "TopNavMenuBadgeProps"
+          }
+        ],
+        "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.getTopNavUnsavedChangesBadge.$1",
+            "type": "Object",
+            "tags": [],
+            "label": "{\n  onRevert,\n  onSave,\n  onSaveAs,\n}",
+            "description": [],
+            "signature": [
+              {
+                "pluginId": "@kbn/unsaved-changes-badge",
+                "scope": "common",
+                "docId": "kibKbnUnsavedChangesBadgePluginApi",
+                "section": "def-common.TopNavUnsavedChangesBadgeParams",
+                "text": "TopNavUnsavedChangesBadgeParams"
+              }
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          }
+        ],
+        "returnComment": [],
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/unsaved-changes-badge",
+        "id": "def-common.UnsavedChangesBadge",
+        "type": "Function",
+        "tags": [
+          "constructor"
+        ],
+        "label": "UnsavedChangesBadge",
+        "description": [
+          "\nBadge component. It opens a menu panel with actions once pressed."
+        ],
+        "signature": [
+          "({ badgeText, onRevert, onSave, onSaveAs, }: React.PropsWithChildren<",
+          {
+            "pluginId": "@kbn/unsaved-changes-badge",
+            "scope": "common",
+            "docId": "kibKbnUnsavedChangesBadgePluginApi",
+            "section": "def-common.UnsavedChangesBadgeProps",
+            "text": "UnsavedChangesBadgeProps"
+          },
+          ">) => JSX.Element"
+        ],
+        "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.UnsavedChangesBadge.$1",
+            "type": "CompoundType",
+            "tags": [],
+            "label": "{\n  badgeText,\n  onRevert,\n  onSave,\n  onSaveAs,\n}",
+            "description": [],
+            "signature": [
+              "React.PropsWithChildren<",
+              {
+                "pluginId": "@kbn/unsaved-changes-badge",
+                "scope": "common",
+                "docId": "kibKbnUnsavedChangesBadgePluginApi",
+                "section": "def-common.UnsavedChangesBadgeProps",
+                "text": "UnsavedChangesBadgeProps"
+              },
+              ">"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          }
+        ],
+        "returnComment": [],
+        "initialIsOpen": false
+      }
+    ],
+    "interfaces": [
+      {
+        "parentPluginId": "@kbn/unsaved-changes-badge",
+        "id": "def-common.TopNavUnsavedChangesBadgeParams",
+        "type": "Interface",
+        "tags": [],
+        "label": "TopNavUnsavedChangesBadgeParams",
+        "description": [
+          "\nParams for getTopNavUnsavedChangesBadge"
+        ],
+        "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.TopNavUnsavedChangesBadgeParams.onRevert",
+            "type": "Function",
+            "tags": [],
+            "label": "onRevert",
+            "description": [],
+            "signature": [
+              "() => Promise<unknown>"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "returnComment": [],
+            "children": []
+          },
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.TopNavUnsavedChangesBadgeParams.onSave",
+            "type": "Function",
+            "tags": [],
+            "label": "onSave",
+            "description": [],
+            "signature": [
+              "(() => Promise<unknown>) | undefined"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false
+          },
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.TopNavUnsavedChangesBadgeParams.onSaveAs",
+            "type": "Function",
+            "tags": [],
+            "label": "onSaveAs",
+            "description": [],
+            "signature": [
+              "(() => Promise<unknown>) | undefined"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/utils/get_top_nav_unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      },
+      {
+        "parentPluginId": "@kbn/unsaved-changes-badge",
+        "id": "def-common.UnsavedChangesBadgeProps",
+        "type": "Interface",
+        "tags": [],
+        "label": "UnsavedChangesBadgeProps",
+        "description": [
+          "\nProps for UnsavedChangesBadge"
+        ],
+        "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.UnsavedChangesBadgeProps.onRevert",
+            "type": "Function",
+            "tags": [],
+            "label": "onRevert",
+            "description": [],
+            "signature": [
+              "() => Promise<unknown>"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "children": [],
+            "returnComment": []
+          },
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.UnsavedChangesBadgeProps.onSave",
+            "type": "Function",
+            "tags": [],
+            "label": "onSave",
+            "description": [],
+            "signature": [
+              "(() => Promise<unknown>) | undefined"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "children": [],
+            "returnComment": []
+          },
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.UnsavedChangesBadgeProps.onSaveAs",
+            "type": "Function",
+            "tags": [],
+            "label": "onSaveAs",
+            "description": [],
+            "signature": [
+              "(() => Promise<unknown>) | undefined"
+            ],
+            "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false,
+            "children": [],
+            "returnComment": []
+          },
+          {
+            "parentPluginId": "@kbn/unsaved-changes-badge",
+            "id": "def-common.UnsavedChangesBadgeProps.badgeText",
+            "type": "string",
+            "tags": [],
+            "label": "badgeText",
+            "description": [],
+            "path": "packages/kbn-unsaved-changes-badge/src/components/unsaved_changes_badge/unsaved_changes_badge.tsx",
+            "deprecated": false,
+            "trackAdoption": false
+          }
+        ],
+        "initialIsOpen": false
+      }
+    ],
+    "enums": [],
+    "misc": [],
+    "objects": []
+  }
+}
\ No newline at end of file
diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx
new file mode 100644
index 0000000000000..b7288834bf3d1
--- /dev/null
+++ b/api_docs/kbn_unsaved_changes_badge.mdx
@@ -0,0 +1,33 @@
+---
+####
+#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system.
+#### Reach out in #docs-engineering for more info.
+####
+id: kibKbnUnsavedChangesBadgePluginApi
+slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge
+title: "@kbn/unsaved-changes-badge"
+image: https://source.unsplash.com/400x175/?github
+description: API docs for the @kbn/unsaved-changes-badge plugin
+date: 2023-11-14
+tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge']
+---
+import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json';
+
+
+
+Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) for questions regarding this plugin.
+
+**Code health stats**
+
+| Public API count  | Any count | Items lacking comments | Missing exports |
+|-------------------|-----------|------------------------|-----------------|
+| 13 | 0 | 9 | 0 |
+
+## Common
+
+### Functions
+<DocDefinitionList data={kbnUnsavedChangesBadgeObj.common.functions}/>
+
+### Interfaces
+<DocDefinitionList data={kbnUnsavedChangesBadgeObj.common.interfaces}/>
+
diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx
index 61f876106d0d9..2e843d2220047 100644
--- a/api_docs/kbn_url_state.mdx
+++ b/api_docs/kbn_url_state.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state
 title: "@kbn/url-state"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/url-state plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state']
 ---
 import kbnUrlStateObj from './kbn_url_state.devdocs.json';
diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx
index 13df7cba4504a..f98d1352fe262 100644
--- a/api_docs/kbn_use_tracked_promise.mdx
+++ b/api_docs/kbn_use_tracked_promise.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise
 title: "@kbn/use-tracked-promise"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/use-tracked-promise plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise']
 ---
 import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json';
diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx
index 02b806fca548e..9e295e400b345 100644
--- a/api_docs/kbn_user_profile_components.mdx
+++ b/api_docs/kbn_user_profile_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components
 title: "@kbn/user-profile-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/user-profile-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components']
 ---
 import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json';
diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx
index e3babb01babe4..98be76ef15e90 100644
--- a/api_docs/kbn_utility_types.mdx
+++ b/api_docs/kbn_utility_types.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types
 title: "@kbn/utility-types"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types']
 ---
 import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json';
diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx
index f3518093b2a5c..9e812c8bebbc4 100644
--- a/api_docs/kbn_utility_types_jest.mdx
+++ b/api_docs/kbn_utility_types_jest.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest
 title: "@kbn/utility-types-jest"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utility-types-jest plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest']
 ---
 import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json';
diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx
index 89d1299821465..136525ee71657 100644
--- a/api_docs/kbn_utils.mdx
+++ b/api_docs/kbn_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils
 title: "@kbn/utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils']
 ---
 import kbnUtilsObj from './kbn_utils.devdocs.json';
diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx
index fe58bec9aeff4..5fd96b04dfad5 100644
--- a/api_docs/kbn_visualization_ui_components.mdx
+++ b/api_docs/kbn_visualization_ui_components.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components
 title: "@kbn/visualization-ui-components"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/visualization-ui-components plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components']
 ---
 import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json';
diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx
index d49bfaf817fbe..85e133e7385e7 100644
--- a/api_docs/kbn_xstate_utils.mdx
+++ b/api_docs/kbn_xstate_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils
 title: "@kbn/xstate-utils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/xstate-utils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils']
 ---
 import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json';
diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx
index b9dbd1441948c..503adf690614d 100644
--- a/api_docs/kbn_yarn_lock_validator.mdx
+++ b/api_docs/kbn_yarn_lock_validator.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator
 title: "@kbn/yarn-lock-validator"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/yarn-lock-validator plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator']
 ---
 import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json';
diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx
index 15342b2b51a8d..c37ec591dd9f2 100644
--- a/api_docs/kbn_zod_helpers.mdx
+++ b/api_docs/kbn_zod_helpers.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers
 title: "@kbn/zod-helpers"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the @kbn/zod-helpers plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers']
 ---
 import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json';
diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx
index 8ce7ef3a99a7e..b9eec34a815c7 100644
--- a/api_docs/kibana_overview.mdx
+++ b/api_docs/kibana_overview.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview
 title: "kibanaOverview"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaOverview plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview']
 ---
 import kibanaOverviewObj from './kibana_overview.devdocs.json';
diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json
index 1a66a2cf0a452..1620ff10dea39 100644
--- a/api_docs/kibana_react.devdocs.json
+++ b/api_docs/kibana_react.devdocs.json
@@ -2520,361 +2520,6 @@
         "returnComment": [],
         "initialIsOpen": false
       },
-      {
-        "parentPluginId": "kibanaReact",
-        "id": "def-public.RedirectAppLinks",
-        "type": "Function",
-        "tags": [
-          "deprecated"
-        ],
-        "label": "RedirectAppLinks",
-        "description": [
-          "\nUtility component that will intercept click events on children anchor (`<a>`) elements to call\n`application.navigateToUrl` with the link's href. This will trigger SPA friendly navigation\nwhen the link points to a valid Kibana app.\n"
-        ],
-        "signature": [
-          "({ application, children, className, ...otherProps }: React.PropsWithChildren<RedirectCrossAppLinksProps>) => JSX.Element"
-        ],
-        "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx",
-        "deprecated": true,
-        "trackAdoption": false,
-        "references": [
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/application.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/application.tsx"
-          },
-          {
-            "plugin": "home",
-            "path": "src/plugins/home/public/application/application.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx"
-          },
-          {
-            "plugin": "data",
-            "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx"
-          },
-          {
-            "plugin": "esUiShared",
-            "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx"
-          },
-          {
-            "plugin": "esUiShared",
-            "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx"
-          },
-          {
-            "plugin": "esUiShared",
-            "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx"
-          },
-          {
-            "plugin": "savedObjectsManagement",
-            "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx"
-          },
-          {
-            "plugin": "exploratoryView",
-            "path": "x-pack/plugins/exploratory_view/public/application/index.tsx"
-          },
-          {
-            "plugin": "exploratoryView",
-            "path": "x-pack/plugins/exploratory_view/public/application/index.tsx"
-          },
-          {
-            "plugin": "exploratoryView",
-            "path": "x-pack/plugins/exploratory_view/public/application/index.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx"
-          },
-          {
-            "plugin": "fleet",
-            "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx"
-          },
-          {
-            "plugin": "ml",
-            "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx"
-          },
-          {
-            "plugin": "ml",
-            "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx"
-          },
-          {
-            "plugin": "ml",
-            "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx"
-          },
-          {
-            "plugin": "apm",
-            "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx"
-          },
-          {
-            "plugin": "apm",
-            "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx"
-          },
-          {
-            "plugin": "apm",
-            "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx"
-          },
-          {
-            "plugin": "indexLifecycleManagement",
-            "path": "x-pack/plugins/index_lifecycle_management/public/shared_imports.ts"
-          },
-          {
-            "plugin": "indexLifecycleManagement",
-            "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx"
-          },
-          {
-            "plugin": "indexLifecycleManagement",
-            "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx"
-          },
-          {
-            "plugin": "indexLifecycleManagement",
-            "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx"
-          },
-          {
-            "plugin": "observabilityOnboarding",
-            "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx"
-          },
-          {
-            "plugin": "observabilityOnboarding",
-            "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx"
-          },
-          {
-            "plugin": "observabilityOnboarding",
-            "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx"
-          },
-          {
-            "plugin": "synthetics",
-            "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx"
-          },
-          {
-            "plugin": "synthetics",
-            "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx"
-          },
-          {
-            "plugin": "synthetics",
-            "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx"
-          },
-          {
-            "plugin": "upgradeAssistant",
-            "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts"
-          },
-          {
-            "plugin": "upgradeAssistant",
-            "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx"
-          },
-          {
-            "plugin": "upgradeAssistant",
-            "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx"
-          },
-          {
-            "plugin": "upgradeAssistant",
-            "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx"
-          },
-          {
-            "plugin": "uptime",
-            "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx"
-          },
-          {
-            "plugin": "ux",
-            "path": "x-pack/plugins/ux/public/application/ux_app.tsx"
-          },
-          {
-            "plugin": "ux",
-            "path": "x-pack/plugins/ux/public/application/ux_app.tsx"
-          },
-          {
-            "plugin": "ux",
-            "path": "x-pack/plugins/ux/public/application/ux_app.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx"
-          },
-          {
-            "plugin": "kibanaOverview",
-            "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx"
-          }
-        ],
-        "children": [
-          {
-            "parentPluginId": "kibanaReact",
-            "id": "def-public.RedirectAppLinks.$1",
-            "type": "CompoundType",
-            "tags": [],
-            "label": "{\n  application,\n  children,\n  className,\n  ...otherProps\n}",
-            "description": [],
-            "signature": [
-              "React.PropsWithChildren<RedirectCrossAppLinksProps>"
-            ],
-            "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx",
-            "deprecated": false,
-            "trackAdoption": false,
-            "isRequired": true
-          }
-        ],
-        "returnComment": [],
-        "initialIsOpen": false
-      },
       {
         "parentPluginId": "kibanaReact",
         "id": "def-public.toMountPoint",
diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx
index b592325c52425..b44c52dad3974 100644
--- a/api_docs/kibana_react.mdx
+++ b/api_docs/kibana_react.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact
 title: "kibanaReact"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaReact plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact']
 ---
 import kibanaReactObj from './kibana_react.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 169 | 0 | 134 | 3 |
+| 167 | 0 | 133 | 3 |
 
 ## Client
 
diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx
index 5752797c07c4d..6e697fb24ceea 100644
--- a/api_docs/kibana_utils.mdx
+++ b/api_docs/kibana_utils.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils
 title: "kibanaUtils"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kibanaUtils plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils']
 ---
 import kibanaUtilsObj from './kibana_utils.devdocs.json';
diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx
index 11461a26bebe6..7fefd2860d255 100644
--- a/api_docs/kubernetes_security.mdx
+++ b/api_docs/kubernetes_security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity
 title: "kubernetesSecurity"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the kubernetesSecurity plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity']
 ---
 import kubernetesSecurityObj from './kubernetes_security.devdocs.json';
diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx
index 34601cf59a850..0b8052500697e 100644
--- a/api_docs/lens.mdx
+++ b/api_docs/lens.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens
 title: "lens"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lens plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens']
 ---
 import lensObj from './lens.devdocs.json';
diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx
index ece7e9713c366..aabaea94f0684 100644
--- a/api_docs/license_api_guard.mdx
+++ b/api_docs/license_api_guard.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard
 title: "licenseApiGuard"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseApiGuard plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard']
 ---
 import licenseApiGuardObj from './license_api_guard.devdocs.json';
diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx
index 069e698ac4845..279e20dde497a 100644
--- a/api_docs/license_management.mdx
+++ b/api_docs/license_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement
 title: "licenseManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licenseManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement']
 ---
 import licenseManagementObj from './license_management.devdocs.json';
diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx
index 2e872092b51d7..99a12d51571ce 100644
--- a/api_docs/licensing.mdx
+++ b/api_docs/licensing.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing
 title: "licensing"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the licensing plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing']
 ---
 import licensingObj from './licensing.devdocs.json';
diff --git a/api_docs/links.mdx b/api_docs/links.mdx
index b1fb76f3d3a8b..0d3170f6583e9 100644
--- a/api_docs/links.mdx
+++ b/api_docs/links.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links
 title: "links"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the links plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links']
 ---
 import linksObj from './links.devdocs.json';
diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx
index 1821095753523..f62521671e3b3 100644
--- a/api_docs/lists.mdx
+++ b/api_docs/lists.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists
 title: "lists"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the lists plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists']
 ---
 import listsObj from './lists.devdocs.json';
diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx
index b9621e8d2b699..c5e2d730a06fb 100644
--- a/api_docs/log_explorer.mdx
+++ b/api_docs/log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer
 title: "logExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logExplorer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer']
 ---
 import logExplorerObj from './log_explorer.devdocs.json';
diff --git a/api_docs/logs_shared.devdocs.json b/api_docs/logs_shared.devdocs.json
index 7bb6418a73bc7..5e35354e01878 100644
--- a/api_docs/logs_shared.devdocs.json
+++ b/api_docs/logs_shared.devdocs.json
@@ -1236,7 +1236,7 @@
         "label": "useLogHighlightsStateContext",
         "description": [],
         "signature": [
-          "() => { highlightTerms: string[]; setHighlightTerms: React.Dispatch<React.SetStateAction<string[]>>; logEntryHighlights: ({ topCursor: null; bottomCursor: null; entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "() => { highlightTerms: string[]; setHighlightTerms: React.Dispatch<React.SetStateAction<string[]>>; logEntryHighlights: ({ topCursor: null; bottomCursor: null; entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1252,7 +1252,7 @@
             "section": "def-common.JsonArray",
             "text": "JsonArray"
           },
-          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; } | { topCursor: { time: number; tiebreaker: number; }; bottomCursor: { time: number; tiebreaker: number; }; entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; } | { topCursor: { time: string; tiebreaker: number; }; bottomCursor: { time: string; tiebreaker: number; }; entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1268,7 +1268,7 @@
             "section": "def-common.JsonArray",
             "text": "JsonArray"
           },
-          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; })[]; logEntryHighlightsById: Record<string, { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; })[]; logEntryHighlightsById: Record<string, { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1284,9 +1284,9 @@
             "section": "def-common.JsonArray",
             "text": "JsonArray"
           },
-          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]>; logSummaryHighlights: { start: number; end: number; buckets: ({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: number; tiebreaker: number; }; })[]; }[]; loadLogEntryHighlightsRequest: ",
+          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]>; logSummaryHighlights: { start: number; end: number; buckets: ({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: string; tiebreaker: number; }; })[]; }[]; loadLogEntryHighlightsRequest: ",
           "PromiseState",
-          "<{ data: ({ topCursor: null; bottomCursor: null; entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "<{ data: ({ topCursor: null; bottomCursor: null; entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1302,7 +1302,7 @@
             "section": "def-common.JsonArray",
             "text": "JsonArray"
           },
-          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; } | { topCursor: { time: number; tiebreaker: number; }; bottomCursor: { time: number; tiebreaker: number; }; entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; } | { topCursor: { time: string; tiebreaker: number; }; bottomCursor: { time: string; tiebreaker: number; }; entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1320,8 +1320,14 @@
           },
           "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; })[]; }, unknown>; loadLogSummaryHighlightsRequest: ",
           "PromiseState",
-          "<{ data: { start: number; end: number; buckets: ({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: number; tiebreaker: number; }; })[]; }[]; }, unknown>; currentHighlightKey: ",
-          "UniqueTimeKey",
+          "<{ data: { start: number; end: number; buckets: ({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: string; tiebreaker: number; }; })[]; }[]; }, unknown>; currentHighlightKey: ",
+          {
+            "pluginId": "@kbn/io-ts-utils",
+            "scope": "common",
+            "docId": "kibKbnIoTsUtilsPluginApi",
+            "section": "def-common.UniqueTimeKey",
+            "text": "UniqueTimeKey"
+          },
           " | null; hasPreviousHighlight: boolean; hasNextHighlight: boolean; goToPreviousHighlight: () => void; goToNextHighlight: () => void; }"
         ],
         "path": "x-pack/plugins/logs_shared/public/containers/logs/log_highlights/log_highlights.tsx",
@@ -1357,7 +1363,7 @@
         "label": "useLogStreamContext",
         "description": [],
         "signature": [
-          "() => { fetchEntries: () => void; fetchNextEntries: FetchPageCallback; fetchPreviousEntries: FetchPageCallback; fetchNewestEntries: () => void; isLoadingMore: boolean; isReloading: boolean; entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "() => { fetchEntries: () => void; fetchNextEntries: FetchPageCallback; fetchPreviousEntries: FetchPageCallback; fetchNewestEntries: () => void; isLoadingMore: boolean; isReloading: boolean; entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -1373,7 +1379,7 @@
             "section": "def-common.JsonArray",
             "text": "JsonArray"
           },
-          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; topCursor: { time: number; tiebreaker: number; } | null; bottomCursor: { time: number; tiebreaker: number; } | null; hasMoreBefore: boolean; hasMoreAfter: boolean; lastLoadedTime?: Date | undefined; }"
+          "; highlights: string[]; })[]; })[]; context: {} | { 'container.id': string; } | { 'host.name': string; 'log.file.path': string; }; }[]; topCursor: { time: string; tiebreaker: number; } | null; bottomCursor: { time: string; tiebreaker: number; } | null; hasMoreBefore: boolean; hasMoreAfter: boolean; lastLoadedTime?: Date | undefined; }"
         ],
         "path": "x-pack/plugins/logs_shared/public/containers/logs/log_stream/index.ts",
         "deprecated": false,
@@ -2725,7 +2731,7 @@
             "label": "logEntry",
             "description": [],
             "signature": [
-              "{ id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              "{ id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -2755,7 +2761,7 @@
             "label": "highlights",
             "description": [],
             "signature": [
-              "{ id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              "{ id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -3430,7 +3436,7 @@
               },
               ", logView: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }, params: ",
               "LogEntriesAroundParams",
-              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -3539,7 +3545,7 @@
               },
               ", logView: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }, params: ",
               "LogEntriesParams",
-              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -3790,7 +3796,7 @@
                 "section": "def-common.JsonObject",
                 "text": "JsonObject"
               },
-              " | undefined) => Promise<({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: number; tiebreaker: number; }; })[][]>"
+              " | undefined) => Promise<({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: string; tiebreaker: number; }; })[][]>"
             ],
             "path": "x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts",
             "deprecated": false,
@@ -4075,7 +4081,7 @@
               },
               ", logView: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }, params: ",
               "LogEntriesAroundParams",
-              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -4184,7 +4190,7 @@
               },
               ", logView: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }, params: ",
               "LogEntriesParams",
-              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+              ", columnOverrides?: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[] | undefined) => Promise<{ entries: { id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
               {
                 "pluginId": "@kbn/utility-types",
                 "scope": "common",
@@ -4435,7 +4441,7 @@
                 "section": "def-common.JsonObject",
                 "text": "JsonObject"
               },
-              " | undefined) => Promise<({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: number; tiebreaker: number; }; })[][]>"
+              " | undefined) => Promise<({ start: number; end: number; entriesCount: number; } & { representativeKey: { time: string; tiebreaker: number; }; })[][]>"
             ],
             "path": "x-pack/plugins/logs_shared/server/lib/domains/log_entries_domain/log_entries_domain.ts",
             "deprecated": false,
@@ -5029,6 +5035,39 @@
       }
     ],
     "functions": [
+      {
+        "parentPluginId": "logsShared",
+        "id": "def-common.convertISODateToNanoPrecision",
+        "type": "Function",
+        "tags": [],
+        "label": "convertISODateToNanoPrecision",
+        "description": [],
+        "signature": [
+          "(date: string) => string"
+        ],
+        "path": "x-pack/plugins/logs_shared/common/utils/date_helpers.ts",
+        "deprecated": false,
+        "trackAdoption": false,
+        "children": [
+          {
+            "parentPluginId": "logsShared",
+            "id": "def-common.convertISODateToNanoPrecision.$1",
+            "type": "string",
+            "tags": [],
+            "label": "date",
+            "description": [],
+            "signature": [
+              "string"
+            ],
+            "path": "x-pack/plugins/logs_shared/common/utils/date_helpers.ts",
+            "deprecated": false,
+            "trackAdoption": false,
+            "isRequired": true
+          }
+        ],
+        "returnComment": [],
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "logsShared",
         "id": "def-common.getLogEntryCursorFromHit",
@@ -5037,7 +5076,7 @@
         "label": "getLogEntryCursorFromHit",
         "description": [],
         "signature": [
-          "(hit: { sort: [number, number]; }) => { time: number; tiebreaker: number; }"
+          "(hit: { sort: [string, number]; }) => { time: string; tiebreaker: number; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
         "deprecated": false,
@@ -5062,7 +5101,7 @@
                 "label": "sort",
                 "description": [],
                 "signature": [
-                  "[number, number]"
+                  "[string, number]"
                 ],
                 "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
                 "deprecated": false,
@@ -5448,7 +5487,7 @@
         "label": "LogColumn",
         "description": [],
         "signature": [
-          "{ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "{ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -5509,7 +5548,7 @@
         "label": "LogEntriesSummaryHighlightsBucket",
         "description": [],
         "signature": [
-          "{ start: number; end: number; entriesCount: number; } & { representativeKey: { time: number; tiebreaker: number; }; }"
+          "{ start: number; end: number; entriesCount: number; } & { representativeKey: { time: string; tiebreaker: number; }; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/http_api/log_entries/v1/summary_highlights.ts",
         "deprecated": false,
@@ -5524,7 +5563,7 @@
         "label": "LogEntry",
         "description": [],
         "signature": [
-          "{ id: string; index: string; cursor: { time: number; tiebreaker: number; }; columns: ({ columnId: string; timestamp: number; } | { columnId: string; field: string; value: ",
+          "{ id: string; index: string; cursor: { time: string; tiebreaker: number; }; columns: ({ columnId: string; time: string; } | { columnId: string; field: string; value: ",
           {
             "pluginId": "@kbn/utility-types",
             "scope": "common",
@@ -5555,7 +5594,7 @@
         "label": "LogEntryAfterCursor",
         "description": [],
         "signature": [
-          "{ after: { time: number; tiebreaker: number; } | \"first\"; }"
+          "{ after: { time: string; tiebreaker: number; } | \"first\"; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
         "deprecated": false,
@@ -5570,7 +5609,7 @@
         "label": "LogEntryAroundCursor",
         "description": [],
         "signature": [
-          "{ center: { time: number; tiebreaker: number; }; }"
+          "{ center: { time: string; tiebreaker: number; }; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
         "deprecated": false,
@@ -5585,7 +5624,7 @@
         "label": "LogEntryBeforeCursor",
         "description": [],
         "signature": [
-          "{ before: { time: number; tiebreaker: number; } | \"last\"; }"
+          "{ before: { time: string; tiebreaker: number; } | \"last\"; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
         "deprecated": false,
@@ -5615,7 +5654,7 @@
         "label": "LogEntryCursor",
         "description": [],
         "signature": [
-          "{ time: number; tiebreaker: number; }"
+          "{ time: string; tiebreaker: number; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry_cursor.ts",
         "deprecated": false,
@@ -5653,7 +5692,7 @@
         "label": "LogEntryTime",
         "description": [],
         "signature": [
-          "{ time: number; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }"
+          "{ time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry.ts",
         "deprecated": false,
@@ -5820,7 +5859,7 @@
         "label": "LogTimestampColumn",
         "description": [],
         "signature": [
-          "{ columnId: string; timestamp: number; }"
+          "{ columnId: string; time: string; }"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry.ts",
         "deprecated": false,
@@ -6158,8 +6197,8 @@
           "TypeC",
           "<{ columnId: ",
           "StringC",
-          "; timestamp: ",
-          "NumberC",
+          "; time: ",
+          "StringC",
           "; }>, ",
           "TypeC",
           "<{ columnId: ",
@@ -6555,7 +6594,7 @@
           "<[",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>, ",
@@ -6711,7 +6750,7 @@
           "<[",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>, ",
@@ -6865,7 +6904,7 @@
           "<{ center: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; }>]>]>"
@@ -6905,7 +6944,7 @@
           "; cursor: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; columns: ",
@@ -6916,8 +6955,8 @@
           "TypeC",
           "<{ columnId: ",
           "StringC",
-          "; timestamp: ",
-          "NumberC",
+          "; time: ",
+          "StringC",
           "; }>, ",
           "TypeC",
           "<{ columnId: ",
@@ -7003,13 +7042,13 @@
           "<{ topCursor: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; bottomCursor: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; entries: ",
@@ -7023,7 +7062,7 @@
           "; cursor: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; columns: ",
@@ -7034,8 +7073,8 @@
           "TypeC",
           "<{ columnId: ",
           "StringC",
-          "; timestamp: ",
-          "NumberC",
+          "; time: ",
+          "StringC",
           "; }>, ",
           "TypeC",
           "<{ columnId: ",
@@ -7277,7 +7316,7 @@
           "<[",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>, ",
@@ -7301,7 +7340,7 @@
           "<{ center: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; }>"
@@ -7325,7 +7364,7 @@
           "<[",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>, ",
@@ -7377,7 +7416,7 @@
         "signature": [
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>"
@@ -7441,7 +7480,7 @@
           "; cursor: ",
           "TypeC",
           "<{ time: ",
-          "NumberC",
+          "StringC",
           "; tiebreaker: ",
           "NumberC",
           "; }>; columns: ",
@@ -7452,8 +7491,8 @@
           "TypeC",
           "<{ columnId: ",
           "StringC",
-          "; timestamp: ",
-          "NumberC",
+          "; time: ",
+          "StringC",
           "; }>, ",
           "TypeC",
           "<{ columnId: ",
@@ -7774,8 +7813,8 @@
           "TypeC",
           "<{ columnId: ",
           "StringC",
-          "; timestamp: ",
-          "NumberC",
+          "; time: ",
+          "StringC",
           "; }>"
         ],
         "path": "x-pack/plugins/logs_shared/common/log_entry/log_entry.ts",
diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx
index a63a0c0a00103..db8dd76259510 100644
--- a/api_docs/logs_shared.mdx
+++ b/api_docs/logs_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared
 title: "logsShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the logsShared plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared']
 ---
 import logsSharedObj from './logs_shared.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 287 | 11 | 272 | 28 |
+| 289 | 11 | 274 | 27 |
 
 ## Client
 
diff --git a/api_docs/management.mdx b/api_docs/management.mdx
index 2991db02a2732..38de1040ff552 100644
--- a/api_docs/management.mdx
+++ b/api_docs/management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management
 title: "management"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the management plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management']
 ---
 import managementObj from './management.devdocs.json';
diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx
index 29dda593d12de..626297b9a4ca7 100644
--- a/api_docs/maps.mdx
+++ b/api_docs/maps.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps
 title: "maps"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the maps plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps']
 ---
 import mapsObj from './maps.devdocs.json';
diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx
index 04a9f38994f1c..ed4cd61aabe05 100644
--- a/api_docs/maps_ems.mdx
+++ b/api_docs/maps_ems.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms
 title: "mapsEms"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the mapsEms plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms']
 ---
 import mapsEmsObj from './maps_ems.devdocs.json';
diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx
index 81d7a9eb06ec9..a9aa6174f9a8d 100644
--- a/api_docs/metrics_data_access.mdx
+++ b/api_docs/metrics_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess
 title: "metricsDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the metricsDataAccess plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess']
 ---
 import metricsDataAccessObj from './metrics_data_access.devdocs.json';
diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx
index af10299c43eaa..b148f1f2fa501 100644
--- a/api_docs/ml.mdx
+++ b/api_docs/ml.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml
 title: "ml"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ml plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml']
 ---
 import mlObj from './ml.devdocs.json';
diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx
index c9b4f132d365c..0d94c036ada02 100644
--- a/api_docs/monitoring.mdx
+++ b/api_docs/monitoring.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring
 title: "monitoring"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoring plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring']
 ---
 import monitoringObj from './monitoring.devdocs.json';
diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx
index 53da86f72a2f7..4eddd6df47a06 100644
--- a/api_docs/monitoring_collection.mdx
+++ b/api_docs/monitoring_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection
 title: "monitoringCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the monitoringCollection plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection']
 ---
 import monitoringCollectionObj from './monitoring_collection.devdocs.json';
diff --git a/api_docs/navigation.devdocs.json b/api_docs/navigation.devdocs.json
index a0835a4a19476..00f1ae69aaf03 100644
--- a/api_docs/navigation.devdocs.json
+++ b/api_docs/navigation.devdocs.json
@@ -672,6 +672,24 @@
     ],
     "enums": [],
     "misc": [
+      {
+        "parentPluginId": "navigation",
+        "id": "def-public.TopNavMenuBadgeProps",
+        "type": "Type",
+        "tags": [],
+        "label": "TopNavMenuBadgeProps",
+        "description": [],
+        "signature": [
+          "EuiBadgeProps",
+          " & { badgeText: string; toolTipProps?: Partial<",
+          "EuiToolTipProps",
+          "> | undefined; renderCustomBadge?: ((props: { badgeText: string; }) => React.ReactElement<any, string | React.JSXElementConstructor<any>>) | undefined; }"
+        ],
+        "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx",
+        "deprecated": false,
+        "trackAdoption": false,
+        "initialIsOpen": false
+      },
       {
         "parentPluginId": "navigation",
         "id": "def-public.TopNavMenuProps",
@@ -696,7 +714,15 @@
             "section": "def-public.TopNavMenuData",
             "text": "TopNavMenuData"
           },
-          "[] | undefined; badges?: Badge[] | undefined; showSearchBar?: boolean | undefined; showQueryInput?: boolean | undefined; showDatePicker?: boolean | undefined; showFilterBar?: boolean | undefined; unifiedSearch?: ",
+          "[] | undefined; badges?: ",
+          {
+            "pluginId": "navigation",
+            "scope": "public",
+            "docId": "kibNavigationPluginApi",
+            "section": "def-public.TopNavMenuBadgeProps",
+            "text": "TopNavMenuBadgeProps"
+          },
+          "[] | undefined; showSearchBar?: boolean | undefined; showQueryInput?: boolean | undefined; showDatePicker?: boolean | undefined; showFilterBar?: boolean | undefined; unifiedSearch?: ",
           {
             "pluginId": "unifiedSearch",
             "scope": "public",
diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx
index cdc321a995e5e..405d3e301c581 100644
--- a/api_docs/navigation.mdx
+++ b/api_docs/navigation.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation
 title: "navigation"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the navigation plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation']
 ---
 import navigationObj from './navigation.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 34 | 0 | 34 | 2 |
+| 35 | 0 | 35 | 2 |
 
 ## Client
 
diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx
index 21a8a44046687..e68e301c181ab 100644
--- a/api_docs/newsfeed.mdx
+++ b/api_docs/newsfeed.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed
 title: "newsfeed"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the newsfeed plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed']
 ---
 import newsfeedObj from './newsfeed.devdocs.json';
diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx
index 92b1fa1a3a74a..4fcd5ff737806 100644
--- a/api_docs/no_data_page.mdx
+++ b/api_docs/no_data_page.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage
 title: "noDataPage"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the noDataPage plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage']
 ---
 import noDataPageObj from './no_data_page.devdocs.json';
diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx
index 83bd975913400..5f7b1e4fed9fa 100644
--- a/api_docs/notifications.mdx
+++ b/api_docs/notifications.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications
 title: "notifications"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the notifications plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications']
 ---
 import notificationsObj from './notifications.devdocs.json';
diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx
index 094bdb06d783a..fc9a3c436b5b9 100644
--- a/api_docs/observability.mdx
+++ b/api_docs/observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability
 title: "observability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observability plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability']
 ---
 import observabilityObj from './observability.devdocs.json';
diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx
index b5847254fdf38..bc9954cf3904d 100644
--- a/api_docs/observability_a_i_assistant.mdx
+++ b/api_docs/observability_a_i_assistant.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant
 title: "observabilityAIAssistant"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityAIAssistant plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant']
 ---
 import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json';
diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx
index e9fb1addbb15f..d140ddcbafc73 100644
--- a/api_docs/observability_log_explorer.mdx
+++ b/api_docs/observability_log_explorer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer
 title: "observabilityLogExplorer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityLogExplorer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer']
 ---
 import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json';
diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx
index b576e730b94df..353dbc3122ebc 100644
--- a/api_docs/observability_onboarding.mdx
+++ b/api_docs/observability_onboarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding
 title: "observabilityOnboarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityOnboarding plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding']
 ---
 import observabilityOnboardingObj from './observability_onboarding.devdocs.json';
diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx
index 89ea6dee69217..917a310469e51 100644
--- a/api_docs/observability_shared.mdx
+++ b/api_docs/observability_shared.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared
 title: "observabilityShared"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the observabilityShared plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared']
 ---
 import observabilitySharedObj from './observability_shared.devdocs.json';
diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx
index d7305ccc3bd5e..b2bbd4cbfc5c7 100644
--- a/api_docs/osquery.mdx
+++ b/api_docs/osquery.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery
 title: "osquery"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the osquery plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery']
 ---
 import osqueryObj from './osquery.devdocs.json';
diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx
index d005d26953432..136ba32c81d60 100644
--- a/api_docs/painless_lab.mdx
+++ b/api_docs/painless_lab.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab
 title: "painlessLab"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the painlessLab plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab']
 ---
 import painlessLabObj from './painless_lab.devdocs.json';
diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx
index 078b5566d3007..7957992ddfa5d 100644
--- a/api_docs/plugin_directory.mdx
+++ b/api_docs/plugin_directory.mdx
@@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory
 slug: /kibana-dev-docs/api-meta/plugin-api-directory
 title: Directory
 description: Directory of public APIs available through plugins or packages.
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana']
 ---
 
@@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 
 | Count | Plugins or Packages with a <br /> public API | Number of teams |
 |--------------|----------|------------------------|
-| 701 | 593 | 41 |
+| 702 | 594 | 41 |
 
 ### Public API health stats
 
 | API Count | Any Count | Missing comments | Missing exports |
 |--------------|----------|-----------------|--------|
-| 76098 | 233 | 65061 | 1597 |
+| 76123 | 233 | 65082 | 1598 |
 
 ## Plugin Directory
 
@@ -64,7 +64,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibDataVisualizerPluginApi" text="dataVisualizer"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 |
 | <DocLink id="kibDatasetQualityPluginApi" text="datasetQuality"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have. | 3 | 0 | 3 | 0 |
 | <DocLink id="kibDevToolsPluginApi" text="devTools"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 |
-| <DocLink id="kibDiscoverPluginApi" text="discover"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 130 | 0 | 87 | 18 |
+| <DocLink id="kibDiscoverPluginApi" text="discover"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 133 | 0 | 90 | 20 |
 | <DocLink id="kibDiscoverEnhancedPluginApi" text="discoverEnhanced"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 |
 | <DocLink id="kibEcsDataQualityDashboardPluginApi" text="ecsDataQualityDashboard"/> | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 |
 | <DocLink id="kibElasticAssistantPluginApi" text="elasticAssistant"/> | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Server APIs for the Elastic AI Assistant | 4 | 0 | 2 | 0 |
@@ -114,7 +114,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibInspectorPluginApi" text="inspector"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 123 | 2 | 96 | 4 |
 | <DocLink id="kibInteractiveSetupPluginApi" text="interactiveSetup"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 |
 | <DocLink id="kibKibanaOverviewPluginApi" text="kibanaOverview"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 |
-| <DocLink id="kibKibanaReactPluginApi" text="kibanaReact"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 169 | 0 | 134 | 3 |
+| <DocLink id="kibKibanaReactPluginApi" text="kibanaReact"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 167 | 0 | 133 | 3 |
 | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 |
 | <DocLink id="kibKibanaUtilsPluginApi" text="kibanaUtils"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 610 | 3 | 417 | 9 |
 | <DocLink id="kibKubernetesSecurityPluginApi" text="kubernetesSecurity"/> | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 |
@@ -125,7 +125,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibLinksPluginApi" text="links"/> | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | A dashboard panel for creating links to dashboards or external links. | 64 | 0 | 62 | 7 |
 | <DocLink id="kibListsPluginApi" text="lists"/> | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 224 | 0 | 96 | 51 |
 | <DocLink id="kibLogExplorerPluginApi" text="logExplorer"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 26 | 0 | 26 | 8 |
-| <DocLink id="kibLogsSharedPluginApi" text="logsShared"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 287 | 11 | 272 | 28 |
+| <DocLink id="kibLogsSharedPluginApi" text="logsShared"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 289 | 11 | 274 | 27 |
 | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 |
 | <DocLink id="kibManagementPluginApi" text="management"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 45 | 7 |
 | <DocLink id="kibMapsPluginApi" text="maps"/> | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 260 | 0 | 259 | 29 |
@@ -134,7 +134,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibMlPluginApi" text="ml"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 150 | 3 | 64 | 33 |
 | <DocLink id="kibMonitoringPluginApi" text="monitoring"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 15 | 3 | 13 | 1 |
 | <DocLink id="kibMonitoringCollectionPluginApi" text="monitoringCollection"/> | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 9 | 0 | 9 | 0 |
-| <DocLink id="kibNavigationPluginApi" text="navigation"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 34 | 0 | 34 | 2 |
+| <DocLink id="kibNavigationPluginApi" text="navigation"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 35 | 0 | 35 | 2 |
 | <DocLink id="kibNewsfeedPluginApi" text="newsfeed"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 |
 | <DocLink id="kibNoDataPagePluginApi" text="noDataPage"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 |
 | <DocLink id="kibNotificationsPluginApi" text="notifications"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 |
@@ -163,7 +163,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibScreenshottingPluginApi" text="screenshotting"/> | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 5 |
 | searchprofiler | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 |
 | <DocLink id="kibSecurityPluginApi" text="security"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 270 | 0 | 87 | 3 |
-| <DocLink id="kibSecuritySolutionPluginApi" text="securitySolution"/> | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 174 | 0 | 106 | 35 |
+| <DocLink id="kibSecuritySolutionPluginApi" text="securitySolution"/> | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 175 | 0 | 106 | 35 |
 | <DocLink id="kibSecuritySolutionEssPluginApi" text="securitySolutionEss"/> | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 |
 | <DocLink id="kibSecuritySolutionServerlessPluginApi" text="securitySolutionServerless"/> | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 7 | 0 | 7 | 0 |
 | <DocLink id="kibServerlessPluginApi" text="serverless"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 19 | 0 | 18 | 0 |
@@ -470,7 +470,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnImportResolverPluginApi" text="@kbn/import-resolver"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 47 | 0 | 40 | 0 |
 | <DocLink id="kibKbnInfraForgePluginApi" text="@kbn/infra-forge"/> | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 |
 | <DocLink id="kibKbnInterpreterPluginApi" text="@kbn/interpreter"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 12 | 43 | 0 |
-| <DocLink id="kibKbnIoTsUtilsPluginApi" text="@kbn/io-ts-utils"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 52 | 0 | 52 | 4 |
+| <DocLink id="kibKbnIoTsUtilsPluginApi" text="@kbn/io-ts-utils"/> | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 58 | 0 | 58 | 4 |
 | <DocLink id="kibKbnJestSerializersPluginApi" text="@kbn/jest-serializers"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 13 | 0 |
 | <DocLink id="kibKbnJourneysPluginApi" text="@kbn/journeys"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 85 | 0 | 77 | 6 |
 | <DocLink id="kibKbnJsonAstPluginApi" text="@kbn/json-ast"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 35 | 0 |
@@ -547,7 +547,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnRrulePluginApi" text="@kbn/rrule"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 16 | 1 |
 | <DocLink id="kibKbnRuleDataUtilsPluginApi" text="@kbn/rule-data-utils"/> | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 116 | 0 | 113 | 0 |
 | <DocLink id="kibKbnSavedObjectsSettingsPluginApi" text="@kbn/saved-objects-settings"/> | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 |
-| <DocLink id="kibKbnSearchApiPanelsPluginApi" text="@kbn/search-api-panels"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 68 | 0 | 68 | 0 |
+| <DocLink id="kibKbnSearchApiPanelsPluginApi" text="@kbn/search-api-panels"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 69 | 0 | 69 | 0 |
 | <DocLink id="kibKbnSearchConnectorsPluginApi" text="@kbn/search-connectors"/> | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2211 | 0 | 2211 | 0 |
 | <DocLink id="kibKbnSearchResponseWarningsPluginApi" text="@kbn/search-response-warnings"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 14 | 0 | 12 | 1 |
 | <DocLink id="kibKbnSecuritySolutionFeaturesPluginApi" text="@kbn/security-solution-features"/> | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 14 | 0 | 14 | 6 |
@@ -639,6 +639,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana']
 | <DocLink id="kibKbnUnifiedDataTablePluginApi" text="@kbn/unified-data-table"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the unified data table which can be integrated into apps | 109 | 0 | 49 | 1 |
 | <DocLink id="kibKbnUnifiedDocViewerPluginApi" text="@kbn/unified-doc-viewer"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 10 | 0 | 7 | 7 |
 | <DocLink id="kibKbnUnifiedFieldListPluginApi" text="@kbn/unified-field-list"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list and field stats which can be integrated into apps | 285 | 0 | 261 | 9 |
+| <DocLink id="kibKbnUnsavedChangesBadgePluginApi" text="@kbn/unsaved-changes-badge"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 13 | 0 | 9 | 0 |
 | <DocLink id="kibKbnUrlStatePluginApi" text="@kbn/url-state"/> | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 4 | 0 | 0 | 0 |
 | <DocLink id="kibKbnUseTrackedPromisePluginApi" text="@kbn/use-tracked-promise"/> | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 2 | 1 |
 | <DocLink id="kibKbnUserProfileComponentsPluginApi" text="@kbn/user-profile-components"/> | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 80 | 1 | 21 | 2 |
diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx
index 71efaed9a5196..6bb413e3682f2 100644
--- a/api_docs/presentation_util.mdx
+++ b/api_docs/presentation_util.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil
 title: "presentationUtil"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the presentationUtil plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil']
 ---
 import presentationUtilObj from './presentation_util.devdocs.json';
diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx
index e1546d58a4a7b..9aa8019145b67 100644
--- a/api_docs/profiling.mdx
+++ b/api_docs/profiling.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling
 title: "profiling"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profiling plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling']
 ---
 import profilingObj from './profiling.devdocs.json';
diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx
index a0e65b96a3baf..b0e711c72e528 100644
--- a/api_docs/profiling_data_access.mdx
+++ b/api_docs/profiling_data_access.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess
 title: "profilingDataAccess"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the profilingDataAccess plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess']
 ---
 import profilingDataAccessObj from './profiling_data_access.devdocs.json';
diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx
index 01f942de3a9dc..dad04211c60af 100644
--- a/api_docs/remote_clusters.mdx
+++ b/api_docs/remote_clusters.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters
 title: "remoteClusters"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the remoteClusters plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters']
 ---
 import remoteClustersObj from './remote_clusters.devdocs.json';
diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx
index 8eba2ee385c31..9c8ef199bf637 100644
--- a/api_docs/reporting.mdx
+++ b/api_docs/reporting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting
 title: "reporting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the reporting plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting']
 ---
 import reportingObj from './reporting.devdocs.json';
diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx
index b1a524afbd255..5efbbe83225ce 100644
--- a/api_docs/rollup.mdx
+++ b/api_docs/rollup.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup
 title: "rollup"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the rollup plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup']
 ---
 import rollupObj from './rollup.devdocs.json';
diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx
index f685c784a1ab3..063859db7da3e 100644
--- a/api_docs/rule_registry.mdx
+++ b/api_docs/rule_registry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry
 title: "ruleRegistry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ruleRegistry plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry']
 ---
 import ruleRegistryObj from './rule_registry.devdocs.json';
diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx
index b622a408f9edf..5c0d7d61d5abb 100644
--- a/api_docs/runtime_fields.mdx
+++ b/api_docs/runtime_fields.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields
 title: "runtimeFields"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the runtimeFields plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields']
 ---
 import runtimeFieldsObj from './runtime_fields.devdocs.json';
diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx
index 3fb399a034195..359bcbee1c5c1 100644
--- a/api_docs/saved_objects.mdx
+++ b/api_docs/saved_objects.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects
 title: "savedObjects"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjects plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects']
 ---
 import savedObjectsObj from './saved_objects.devdocs.json';
diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx
index 651b2268fe33b..fb26d9c500c47 100644
--- a/api_docs/saved_objects_finder.mdx
+++ b/api_docs/saved_objects_finder.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder
 title: "savedObjectsFinder"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsFinder plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder']
 ---
 import savedObjectsFinderObj from './saved_objects_finder.devdocs.json';
diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx
index 5634a769773e8..cd5e4681fa4eb 100644
--- a/api_docs/saved_objects_management.mdx
+++ b/api_docs/saved_objects_management.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement
 title: "savedObjectsManagement"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsManagement plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement']
 ---
 import savedObjectsManagementObj from './saved_objects_management.devdocs.json';
diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx
index 33f709560bfc7..67575a8f5cf8f 100644
--- a/api_docs/saved_objects_tagging.mdx
+++ b/api_docs/saved_objects_tagging.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging
 title: "savedObjectsTagging"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTagging plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging']
 ---
 import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json';
diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx
index 88b1de3802179..01871a23bdaeb 100644
--- a/api_docs/saved_objects_tagging_oss.mdx
+++ b/api_docs/saved_objects_tagging_oss.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss
 title: "savedObjectsTaggingOss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedObjectsTaggingOss plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss']
 ---
 import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json';
diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx
index c586d74424fc5..4a436210cf72c 100644
--- a/api_docs/saved_search.mdx
+++ b/api_docs/saved_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch
 title: "savedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the savedSearch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch']
 ---
 import savedSearchObj from './saved_search.devdocs.json';
diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx
index 8aefb52efea4e..983ced12b53d9 100644
--- a/api_docs/screenshot_mode.mdx
+++ b/api_docs/screenshot_mode.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode
 title: "screenshotMode"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotMode plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode']
 ---
 import screenshotModeObj from './screenshot_mode.devdocs.json';
diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx
index 61886db44b3fc..b0d989619e999 100644
--- a/api_docs/screenshotting.mdx
+++ b/api_docs/screenshotting.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting
 title: "screenshotting"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the screenshotting plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting']
 ---
 import screenshottingObj from './screenshotting.devdocs.json';
diff --git a/api_docs/security.mdx b/api_docs/security.mdx
index eeaa3d2bc2b72..db7d166313d04 100644
--- a/api_docs/security.mdx
+++ b/api_docs/security.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security
 title: "security"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the security plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security']
 ---
 import securityObj from './security.devdocs.json';
diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json
index ce6fc3937f3ec..391640559497c 100644
--- a/api_docs/security_solution.devdocs.json
+++ b/api_docs/security_solution.devdocs.json
@@ -77,6 +77,19 @@
             "deprecated": false,
             "trackAdoption": false
           },
+          {
+            "parentPluginId": "securitySolution",
+            "id": "def-public.Plugin.buildFlavor",
+            "type": "string",
+            "tags": [],
+            "label": "buildFlavor",
+            "description": [
+              "\nWhether the environment is 'serverless' or 'traditional'"
+            ],
+            "path": "x-pack/plugins/security_solution/public/plugin.tsx",
+            "deprecated": false,
+            "trackAdoption": false
+          },
           {
             "parentPluginId": "securitySolution",
             "id": "def-public.Plugin.prebuiltRulesPackageVersion",
diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx
index 1f38b422b5a45..ce5c223dae65c 100644
--- a/api_docs/security_solution.mdx
+++ b/api_docs/security_solution.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution
 title: "securitySolution"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolution plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution']
 ---
 import securitySolutionObj from './security_solution.devdocs.json';
@@ -21,7 +21,7 @@ Contact [@elastic/security-solution](https://github.com/orgs/elastic/teams/secur
 
 | Public API count  | Any count | Items lacking comments | Missing exports |
 |-------------------|-----------|------------------------|-----------------|
-| 174 | 0 | 106 | 35 |
+| 175 | 0 | 106 | 35 |
 
 ## Client
 
diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx
index a1662a6887725..6e9de50cb478d 100644
--- a/api_docs/security_solution_ess.mdx
+++ b/api_docs/security_solution_ess.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss
 title: "securitySolutionEss"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionEss plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss']
 ---
 import securitySolutionEssObj from './security_solution_ess.devdocs.json';
diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx
index cc3d4d234c143..14e63a5424534 100644
--- a/api_docs/security_solution_serverless.mdx
+++ b/api_docs/security_solution_serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless
 title: "securitySolutionServerless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the securitySolutionServerless plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless']
 ---
 import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json';
diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx
index 7f40ee41b2931..44a707b74a070 100644
--- a/api_docs/serverless.mdx
+++ b/api_docs/serverless.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless
 title: "serverless"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverless plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless']
 ---
 import serverlessObj from './serverless.devdocs.json';
diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx
index 0dda519c51892..9d2c351c55d1f 100644
--- a/api_docs/serverless_observability.mdx
+++ b/api_docs/serverless_observability.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability
 title: "serverlessObservability"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessObservability plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability']
 ---
 import serverlessObservabilityObj from './serverless_observability.devdocs.json';
diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx
index 228a0543558f2..3f7a53a248344 100644
--- a/api_docs/serverless_search.mdx
+++ b/api_docs/serverless_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch
 title: "serverlessSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the serverlessSearch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch']
 ---
 import serverlessSearchObj from './serverless_search.devdocs.json';
diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx
index f3c5261d9e3ac..bae2f6cca987f 100644
--- a/api_docs/session_view.mdx
+++ b/api_docs/session_view.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView
 title: "sessionView"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the sessionView plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView']
 ---
 import sessionViewObj from './session_view.devdocs.json';
diff --git a/api_docs/share.mdx b/api_docs/share.mdx
index 6f4937dada79a..acbb0d65bf639 100644
--- a/api_docs/share.mdx
+++ b/api_docs/share.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share
 title: "share"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the share plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share']
 ---
 import shareObj from './share.devdocs.json';
diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx
index fd8ffbb698bce..d2e104d1fef72 100644
--- a/api_docs/snapshot_restore.mdx
+++ b/api_docs/snapshot_restore.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore
 title: "snapshotRestore"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the snapshotRestore plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore']
 ---
 import snapshotRestoreObj from './snapshot_restore.devdocs.json';
diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx
index 6e23503a421eb..603ec76c27507 100644
--- a/api_docs/spaces.mdx
+++ b/api_docs/spaces.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces
 title: "spaces"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the spaces plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces']
 ---
 import spacesObj from './spaces.devdocs.json';
diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx
index 5e28d8b788c32..8a5a7f6948232 100644
--- a/api_docs/stack_alerts.mdx
+++ b/api_docs/stack_alerts.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts
 title: "stackAlerts"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackAlerts plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts']
 ---
 import stackAlertsObj from './stack_alerts.devdocs.json';
diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx
index f76ecc9303d4f..123e5f8ff79da 100644
--- a/api_docs/stack_connectors.mdx
+++ b/api_docs/stack_connectors.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors
 title: "stackConnectors"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the stackConnectors plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors']
 ---
 import stackConnectorsObj from './stack_connectors.devdocs.json';
diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx
index 1dd86fd24f9d7..2b1f2c718821d 100644
--- a/api_docs/task_manager.mdx
+++ b/api_docs/task_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager
 title: "taskManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the taskManager plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager']
 ---
 import taskManagerObj from './task_manager.devdocs.json';
diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx
index b9e6ac2065a8a..5d36604c7e25f 100644
--- a/api_docs/telemetry.mdx
+++ b/api_docs/telemetry.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry
 title: "telemetry"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetry plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry']
 ---
 import telemetryObj from './telemetry.devdocs.json';
diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx
index 5b6ba26e6bdf0..14f206a2532cc 100644
--- a/api_docs/telemetry_collection_manager.mdx
+++ b/api_docs/telemetry_collection_manager.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager
 title: "telemetryCollectionManager"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionManager plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager']
 ---
 import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json';
diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx
index 76e6fbcde8034..7b0914726772f 100644
--- a/api_docs/telemetry_collection_xpack.mdx
+++ b/api_docs/telemetry_collection_xpack.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack
 title: "telemetryCollectionXpack"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryCollectionXpack plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack']
 ---
 import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json';
diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx
index e5af411ab6cc7..1a5265f3aefe0 100644
--- a/api_docs/telemetry_management_section.mdx
+++ b/api_docs/telemetry_management_section.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection
 title: "telemetryManagementSection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the telemetryManagementSection plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection']
 ---
 import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json';
diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx
index 90b9a1b3ac71c..a7f04c5ca48ca 100644
--- a/api_docs/text_based_languages.mdx
+++ b/api_docs/text_based_languages.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages
 title: "textBasedLanguages"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the textBasedLanguages plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages']
 ---
 import textBasedLanguagesObj from './text_based_languages.devdocs.json';
diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx
index 4aa682fbc36ea..de31deba9c1af 100644
--- a/api_docs/threat_intelligence.mdx
+++ b/api_docs/threat_intelligence.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence
 title: "threatIntelligence"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the threatIntelligence plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence']
 ---
 import threatIntelligenceObj from './threat_intelligence.devdocs.json';
diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx
index 64a6a35ecb200..f4c6ac6536d7e 100644
--- a/api_docs/timelines.mdx
+++ b/api_docs/timelines.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines
 title: "timelines"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the timelines plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines']
 ---
 import timelinesObj from './timelines.devdocs.json';
diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx
index b38beecef401a..ad389481a1ccd 100644
--- a/api_docs/transform.mdx
+++ b/api_docs/transform.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform
 title: "transform"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the transform plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform']
 ---
 import transformObj from './transform.devdocs.json';
diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx
index abe5870fd7a14..ee7c087e39216 100644
--- a/api_docs/triggers_actions_ui.mdx
+++ b/api_docs/triggers_actions_ui.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi
 title: "triggersActionsUi"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the triggersActionsUi plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi']
 ---
 import triggersActionsUiObj from './triggers_actions_ui.devdocs.json';
diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx
index 1c19820fa0886..2aa732bd3a3ed 100644
--- a/api_docs/ui_actions.mdx
+++ b/api_docs/ui_actions.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions
 title: "uiActions"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActions plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions']
 ---
 import uiActionsObj from './ui_actions.devdocs.json';
diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx
index 4f5497634cdbf..26eec2f9e302d 100644
--- a/api_docs/ui_actions_enhanced.mdx
+++ b/api_docs/ui_actions_enhanced.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced
 title: "uiActionsEnhanced"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uiActionsEnhanced plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced']
 ---
 import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json';
diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx
index a931a61ae97d1..72f84ad374392 100644
--- a/api_docs/unified_doc_viewer.mdx
+++ b/api_docs/unified_doc_viewer.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer
 title: "unifiedDocViewer"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedDocViewer plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer']
 ---
 import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json';
diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx
index 477baa9e79f42..dfdf6a256c6d8 100644
--- a/api_docs/unified_histogram.mdx
+++ b/api_docs/unified_histogram.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram
 title: "unifiedHistogram"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedHistogram plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram']
 ---
 import unifiedHistogramObj from './unified_histogram.devdocs.json';
diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx
index 01a57d5088537..0c535bc25d008 100644
--- a/api_docs/unified_search.mdx
+++ b/api_docs/unified_search.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch
 title: "unifiedSearch"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch']
 ---
 import unifiedSearchObj from './unified_search.devdocs.json';
diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx
index 41e49327e0934..f1d7288b74c6a 100644
--- a/api_docs/unified_search_autocomplete.mdx
+++ b/api_docs/unified_search_autocomplete.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete
 title: "unifiedSearch.autocomplete"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the unifiedSearch.autocomplete plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete']
 ---
 import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json';
diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx
index d62c392b3bf37..11ea0e3c57564 100644
--- a/api_docs/uptime.mdx
+++ b/api_docs/uptime.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime
 title: "uptime"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the uptime plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime']
 ---
 import uptimeObj from './uptime.devdocs.json';
diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx
index 47f5f3449a281..7b6b575a2d182 100644
--- a/api_docs/url_forwarding.mdx
+++ b/api_docs/url_forwarding.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding
 title: "urlForwarding"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the urlForwarding plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding']
 ---
 import urlForwardingObj from './url_forwarding.devdocs.json';
diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx
index d761dcd54952c..6aff7680c6c93 100644
--- a/api_docs/usage_collection.mdx
+++ b/api_docs/usage_collection.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection
 title: "usageCollection"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the usageCollection plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection']
 ---
 import usageCollectionObj from './usage_collection.devdocs.json';
diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx
index 795ab222d17a4..80589d2c69f52 100644
--- a/api_docs/ux.mdx
+++ b/api_docs/ux.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux
 title: "ux"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the ux plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux']
 ---
 import uxObj from './ux.devdocs.json';
diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx
index 0058c9d0bb98a..c4b337379170c 100644
--- a/api_docs/vis_default_editor.mdx
+++ b/api_docs/vis_default_editor.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor
 title: "visDefaultEditor"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visDefaultEditor plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor']
 ---
 import visDefaultEditorObj from './vis_default_editor.devdocs.json';
diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx
index 588d85dc49934..c30aca643ad13 100644
--- a/api_docs/vis_type_gauge.mdx
+++ b/api_docs/vis_type_gauge.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge
 title: "visTypeGauge"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeGauge plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge']
 ---
 import visTypeGaugeObj from './vis_type_gauge.devdocs.json';
diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx
index 3b907bb988abb..18c72d541f211 100644
--- a/api_docs/vis_type_heatmap.mdx
+++ b/api_docs/vis_type_heatmap.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap
 title: "visTypeHeatmap"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeHeatmap plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap']
 ---
 import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json';
diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx
index 3d1f571be6d01..6e2654ee450e3 100644
--- a/api_docs/vis_type_pie.mdx
+++ b/api_docs/vis_type_pie.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie
 title: "visTypePie"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypePie plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie']
 ---
 import visTypePieObj from './vis_type_pie.devdocs.json';
diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx
index 2761409c53ea8..7a53a82e6c28c 100644
--- a/api_docs/vis_type_table.mdx
+++ b/api_docs/vis_type_table.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable
 title: "visTypeTable"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTable plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable']
 ---
 import visTypeTableObj from './vis_type_table.devdocs.json';
diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx
index 18334f12cef1f..d1171f69044d5 100644
--- a/api_docs/vis_type_timelion.mdx
+++ b/api_docs/vis_type_timelion.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion
 title: "visTypeTimelion"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimelion plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion']
 ---
 import visTypeTimelionObj from './vis_type_timelion.devdocs.json';
diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx
index 2e70fa569b7aa..c4ae6ef430b9b 100644
--- a/api_docs/vis_type_timeseries.mdx
+++ b/api_docs/vis_type_timeseries.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries
 title: "visTypeTimeseries"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeTimeseries plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries']
 ---
 import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json';
diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx
index 20cc78864f976..dbbfd12ca2464 100644
--- a/api_docs/vis_type_vega.mdx
+++ b/api_docs/vis_type_vega.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega
 title: "visTypeVega"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVega plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega']
 ---
 import visTypeVegaObj from './vis_type_vega.devdocs.json';
diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx
index aed191ddf24de..b58679760723b 100644
--- a/api_docs/vis_type_vislib.mdx
+++ b/api_docs/vis_type_vislib.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib
 title: "visTypeVislib"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeVislib plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib']
 ---
 import visTypeVislibObj from './vis_type_vislib.devdocs.json';
diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx
index 3c659ceae638f..743f41cf5578b 100644
--- a/api_docs/vis_type_xy.mdx
+++ b/api_docs/vis_type_xy.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy
 title: "visTypeXy"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visTypeXy plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy']
 ---
 import visTypeXyObj from './vis_type_xy.devdocs.json';
diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx
index e1751f9d9380e..1b4eb431303b8 100644
--- a/api_docs/visualizations.mdx
+++ b/api_docs/visualizations.mdx
@@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations
 title: "visualizations"
 image: https://source.unsplash.com/400x175/?github
 description: API docs for the visualizations plugin
-date: 2023-11-13
+date: 2023-11-14
 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations']
 ---
 import visualizationsObj from './visualizations.devdocs.json';

From ecb53e3060841ad3fbb03d79cf1bb4b901550c7d Mon Sep 17 00:00:00 2001
From: Jonas Kunz <jonas.kunz@elastic.co>
Date: Tue, 14 Nov 2023 08:59:14 +0100
Subject: [PATCH 144/147] Added context_propagation_only APM agent setting
 (#170405)

Added central configuration option context_propagation_only
---
 .../__snapshots__/index.test.ts.snap          |  5 +++++
 .../setting_definitions/general_settings.ts   | 20 +++++++++++++++++++
 .../setting_definitions/index.test.ts         |  1 +
 3 files changed, 26 insertions(+)

diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap
index f6a665b512554..e82a61cbd0cd1 100644
--- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap
+++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap
@@ -72,6 +72,11 @@ Array [
     "type": "boolean",
     "validationName": "(\\"true\\" | \\"false\\")",
   },
+  Object {
+    "key": "context_propagation_only",
+    "type": "boolean",
+    "validationName": "(\\"true\\" | \\"false\\")",
+  },
   Object {
     "key": "dedot_custom_metrics",
     "type": "boolean",
diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts
index 961dfd9ca8e88..08fd02770ba5b 100644
--- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts
+++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts
@@ -337,6 +337,26 @@ export const generalSettings: RawSettingDefinition[] = [
     excludeAgents: ['nodejs', 'rum-js', 'js-base'],
   },
 
+  {
+    key: 'context_propagation_only',
+    type: 'boolean',
+    defaultValue: 'false',
+    label: i18n.translate(
+      'xpack.apm.agentConfig.context_propagation_only.label',
+      {
+        defaultMessage: 'Context Propagation Only',
+      }
+    ),
+    description: i18n.translate(
+      'xpack.apm.agentConfig.context_propagation_only.description',
+      {
+        defaultMessage:
+          'When set to true, disables log sending, metrics and trace collection. Trace context propagation and log correlation will stay active.',
+      }
+    ),
+    includeAgents: ['java'],
+  },
+
   // SERVER_TIMEOUT
   {
     key: 'server_timeout',
diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts
index 1bdbc9b4f5dc4..7964332df8bf8 100644
--- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts
+++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts
@@ -75,6 +75,7 @@ describe('filterByAgent', () => {
           'profiling_inferred_spans_min_duration',
           'profiling_inferred_spans_sampling_interval',
           'recording',
+          'context_propagation_only',
           'sanitize_field_names',
           'server_timeout',
           'span_frames_min_duration',

From cedaa3feec69df667b0438416fc243b260aa1337 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?=
 <alejandro.haro@elastic.co>
Date: Tue, 14 Nov 2023 09:11:51 +0100
Subject: [PATCH 145/147] [Telemetry] Skip collection when navigated by
 Synthetics monitors (#171054)

---
 .github/CODEOWNERS                            |  1 +
 package.json                                  |  1 +
 .../analytics_collection_utils/README.md      |  3 ++
 .../utils/analytics_collection_utils/index.ts |  9 ++++
 .../analytics_collection_utils/jest.config.js | 13 ++++++
 .../analytics_collection_utils/kibana.jsonc   |  5 +++
 .../analytics_collection_utils/package.json   |  6 +++
 .../analytics_collection_utils/src/index.ts   |  9 ++++
 .../src/is_synthetics_monitor.test.ts         | 22 ++++++++++
 .../src/is_synthetics_monitor.ts              | 15 +++++++
 .../analytics_collection_utils/tsconfig.json  | 19 +++++++++
 .../telemetry/public/plugin.test.mock.ts      | 12 ++++++
 src/plugins/telemetry/public/plugin.test.ts   | 42 +++++++++++++++++++
 src/plugins/telemetry/public/plugin.ts        | 25 +++++++++--
 src/plugins/telemetry/tsconfig.json           |  1 +
 .../usage_collection/public/plugin.tsx        |  4 +-
 src/plugins/usage_collection/tsconfig.json    |  1 +
 tsconfig.base.json                            |  2 +
 yarn.lock                                     |  4 ++
 19 files changed, 190 insertions(+), 4 deletions(-)
 create mode 100644 packages/analytics/utils/analytics_collection_utils/README.md
 create mode 100644 packages/analytics/utils/analytics_collection_utils/index.ts
 create mode 100644 packages/analytics/utils/analytics_collection_utils/jest.config.js
 create mode 100644 packages/analytics/utils/analytics_collection_utils/kibana.jsonc
 create mode 100644 packages/analytics/utils/analytics_collection_utils/package.json
 create mode 100644 packages/analytics/utils/analytics_collection_utils/src/index.ts
 create mode 100644 packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.test.ts
 create mode 100644 packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.ts
 create mode 100644 packages/analytics/utils/analytics_collection_utils/tsconfig.json
 create mode 100644 src/plugins/telemetry/public/plugin.test.mock.ts

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 4edca2f43e6a4..a1e3bdcb2d198 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -28,6 +28,7 @@ packages/kbn-ambient-storybook-types @elastic/kibana-operations
 packages/kbn-ambient-ui-types @elastic/kibana-operations
 packages/kbn-analytics @elastic/kibana-core
 packages/analytics/client @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/analytics/shippers/elastic_v3/browser @elastic/kibana-core
diff --git a/package.json b/package.json
index 495fe098ada51..37c915ba3d20c 100644
--- a/package.json
+++ b/package.json
@@ -147,6 +147,7 @@
     "@kbn/alerts-ui-shared": "link:packages/kbn-alerts-ui-shared",
     "@kbn/analytics": "link:packages/kbn-analytics",
     "@kbn/analytics-client": "link:packages/analytics/client",
+    "@kbn/analytics-collection-utils": "link:packages/analytics/utils/analytics_collection_utils",
     "@kbn/analytics-ftr-helpers-plugin": "link:test/analytics/plugins/analytics_ftr_helpers",
     "@kbn/analytics-plugin-a-plugin": "link:test/analytics/plugins/analytics_plugin_a",
     "@kbn/analytics-shippers-elastic-v3-browser": "link:packages/analytics/shippers/elastic_v3/browser",
diff --git a/packages/analytics/utils/analytics_collection_utils/README.md b/packages/analytics/utils/analytics_collection_utils/README.md
new file mode 100644
index 0000000000000..fd01a04f534b7
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/README.md
@@ -0,0 +1,3 @@
+# @kbn/analytics-collection-utils
+
+Empty package generated by @kbn/generate
diff --git a/packages/analytics/utils/analytics_collection_utils/index.ts b/packages/analytics/utils/analytics_collection_utils/index.ts
new file mode 100644
index 0000000000000..4ead4333b67cc
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/index.ts
@@ -0,0 +1,9 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export { isSyntheticsMonitor } from './src';
diff --git a/packages/analytics/utils/analytics_collection_utils/jest.config.js b/packages/analytics/utils/analytics_collection_utils/jest.config.js
new file mode 100644
index 0000000000000..93724717599fa
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+  preset: '@kbn/test',
+  rootDir: '../../../..',
+  roots: ['<rootDir>/packages/analytics/utils/analytics_collection_utils'],
+};
diff --git a/packages/analytics/utils/analytics_collection_utils/kibana.jsonc b/packages/analytics/utils/analytics_collection_utils/kibana.jsonc
new file mode 100644
index 0000000000000..f909070bbe36f
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/kibana.jsonc
@@ -0,0 +1,5 @@
+{
+  "type": "shared-common",
+  "id": "@kbn/analytics-collection-utils",
+  "owner": "@elastic/kibana-core"
+}
diff --git a/packages/analytics/utils/analytics_collection_utils/package.json b/packages/analytics/utils/analytics_collection_utils/package.json
new file mode 100644
index 0000000000000..eb10b67ce94dd
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/package.json
@@ -0,0 +1,6 @@
+{
+  "name": "@kbn/analytics-collection-utils",
+  "private": true,
+  "version": "1.0.0",
+  "license": "SSPL-1.0 OR Elastic License 2.0"
+}
\ No newline at end of file
diff --git a/packages/analytics/utils/analytics_collection_utils/src/index.ts b/packages/analytics/utils/analytics_collection_utils/src/index.ts
new file mode 100644
index 0000000000000..48d4cd08c568d
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/src/index.ts
@@ -0,0 +1,9 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export { isSyntheticsMonitor } from './is_synthetics_monitor';
diff --git a/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.test.ts b/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.test.ts
new file mode 100644
index 0000000000000..02da2a7e41606
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.test.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import { isSyntheticsMonitor } from './is_synthetics_monitor';
+
+describe('isSyntheticsMonitor', () => {
+  test('returns false for any user agent', () => {
+    expect(isSyntheticsMonitor()).toBe(false);
+  });
+
+  test('returns true for when the user agent contains "Elastic/Synthetics"', () => {
+    jest
+      .spyOn(window.navigator, 'userAgent', 'get')
+      .mockReturnValue(window.navigator.userAgent + 'Elastic/Synthetics');
+    expect(isSyntheticsMonitor()).toBe(true);
+  });
+});
diff --git a/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.ts b/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.ts
new file mode 100644
index 0000000000000..093a984f32d5d
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/src/is_synthetics_monitor.ts
@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+/**
+ * Returns whether the current navigation is performed by a Synthetics monitor
+ * (and hence, telemetry should not be collected).
+ */
+export function isSyntheticsMonitor(): boolean {
+  return window.navigator.userAgent.includes('Elastic/Synthetics');
+}
diff --git a/packages/analytics/utils/analytics_collection_utils/tsconfig.json b/packages/analytics/utils/analytics_collection_utils/tsconfig.json
new file mode 100644
index 0000000000000..b05325b824a67
--- /dev/null
+++ b/packages/analytics/utils/analytics_collection_utils/tsconfig.json
@@ -0,0 +1,19 @@
+{
+  "extends": "../../../../tsconfig.base.json",
+  "compilerOptions": {
+    "outDir": "target/types",
+    "types": [
+      "jest",
+      "node",
+      "react"
+    ]
+  },
+  "include": [
+    "**/*.ts",
+    "**/*.tsx",
+  ],
+  "exclude": [
+    "target/**/*"
+  ],
+  "kbn_references": []
+}
diff --git a/src/plugins/telemetry/public/plugin.test.mock.ts b/src/plugins/telemetry/public/plugin.test.mock.ts
new file mode 100644
index 0000000000000..85af98e239a0b
--- /dev/null
+++ b/src/plugins/telemetry/public/plugin.test.mock.ts
@@ -0,0 +1,12 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export const isSyntheticsMonitorMock = jest.fn();
+jest.doMock('@kbn/analytics-collection-utils', () => ({
+  isSyntheticsMonitor: isSyntheticsMonitorMock,
+}));
diff --git a/src/plugins/telemetry/public/plugin.test.ts b/src/plugins/telemetry/public/plugin.test.ts
index 13ebb4d999315..842e11f12cc68 100644
--- a/src/plugins/telemetry/public/plugin.test.ts
+++ b/src/plugins/telemetry/public/plugin.test.ts
@@ -6,12 +6,14 @@
  * Side Public License, v 1.
  */
 
+import { of } from 'rxjs';
 import { ElasticV3BrowserShipper } from '@kbn/analytics-shippers-elastic-v3-browser';
 import { coreMock } from '@kbn/core/public/mocks';
 import { homePluginMock } from '@kbn/home-plugin/public/mocks';
 import { screenshotModePluginMock } from '@kbn/screenshot-mode-plugin/public/mocks';
 import { HomePublicPluginSetup } from '@kbn/home-plugin/public';
 import { ScreenshotModePluginSetup } from '@kbn/screenshot-mode-plugin/public';
+import { isSyntheticsMonitorMock } from './plugin.test.mock';
 import { TelemetryPlugin } from './plugin';
 
 describe('TelemetryPlugin', () => {
@@ -21,6 +23,7 @@ describe('TelemetryPlugin', () => {
   beforeEach(() => {
     screenshotMode = screenshotModePluginMock.createSetupContract();
     home = homePluginMock.createSetupContract();
+    isSyntheticsMonitorMock.mockReturnValue(false);
   });
 
   describe('setup', () => {
@@ -82,5 +85,44 @@ describe('TelemetryPlugin', () => {
         );
       });
     });
+
+    it('disables telemetry when in screenshot mode', async () => {
+      const initializerContext = coreMock.createPluginInitializerContext();
+
+      const plugin = new TelemetryPlugin(initializerContext);
+      const isScreenshotModeSpy = jest
+        .spyOn(screenshotMode, 'isScreenshotMode')
+        .mockReturnValue(true);
+      plugin.setup(coreMock.createSetup(), { screenshotMode, home });
+      expect(isScreenshotModeSpy).toBeCalledTimes(1);
+
+      const coreStartMock = coreMock.createStart();
+      coreStartMock.application = { ...coreStartMock.application, currentAppId$: of('some-app') };
+      const optInSpy = jest.spyOn(coreStartMock.analytics, 'optIn');
+      plugin.start(coreStartMock, { screenshotMode });
+      expect(isScreenshotModeSpy).toBeCalledTimes(2);
+      expect(optInSpy).toBeCalledTimes(1);
+      expect(optInSpy).toHaveBeenCalledWith({ global: { enabled: false } });
+    });
+
+    it('disables telemetry when the user agent contains Elastic/Synthetics', async () => {
+      const initializerContext = coreMock.createPluginInitializerContext();
+
+      const plugin = new TelemetryPlugin(initializerContext);
+      const isScreenshotModeSpy = jest
+        .spyOn(screenshotMode, 'isScreenshotMode')
+        .mockReturnValue(false);
+      plugin.setup(coreMock.createSetup(), { screenshotMode, home });
+      expect(isScreenshotModeSpy).toBeCalledTimes(1);
+
+      const coreStartMock = coreMock.createStart();
+      coreStartMock.application = { ...coreStartMock.application, currentAppId$: of('some-app') };
+      isSyntheticsMonitorMock.mockReturnValueOnce(true);
+      const optInSpy = jest.spyOn(coreStartMock.analytics, 'optIn');
+      plugin.start(coreStartMock, { screenshotMode });
+      expect(isScreenshotModeSpy).toBeCalledTimes(2);
+      expect(optInSpy).toBeCalledTimes(1);
+      expect(optInSpy).toHaveBeenCalledWith({ global: { enabled: false } });
+    });
   });
 });
diff --git a/src/plugins/telemetry/public/plugin.ts b/src/plugins/telemetry/public/plugin.ts
index 59ff2d3478c1d..588a532ffa6a3 100644
--- a/src/plugins/telemetry/public/plugin.ts
+++ b/src/plugins/telemetry/public/plugin.ts
@@ -23,6 +23,7 @@ import type {
 } from '@kbn/screenshot-mode-plugin/public';
 import type { HomePublicPluginSetup } from '@kbn/home-plugin/public';
 import { ElasticV3BrowserShipper } from '@kbn/analytics-shippers-elastic-v3-browser';
+import { isSyntheticsMonitor } from '@kbn/analytics-collection-utils';
 
 import { BehaviorSubject, map, switchMap, tap } from 'rxjs';
 import type { TelemetryConfigLabels } from '../server/config';
@@ -159,7 +160,7 @@ export class TelemetryPlugin
     const currentKibanaVersion = this.currentKibanaVersion;
     this.telemetryService = new TelemetryService({
       config,
-      isScreenshotMode: screenshotMode.isScreenshotMode(),
+      isScreenshotMode: this.shouldSkipTelemetry(screenshotMode),
       http,
       notifications,
       currentKibanaVersion,
@@ -200,7 +201,9 @@ export class TelemetryPlugin
     this.telemetrySender = new TelemetrySender(this.telemetryService, async () => {
       await this.refreshConfig(http);
       analytics.optIn({
-        global: { enabled: this.telemetryService!.isOptedIn && !screenshotMode.isScreenshotMode() },
+        global: {
+          enabled: this.telemetryService!.isOptedIn && !this.shouldSkipTelemetry(screenshotMode),
+        },
       });
     });
 
@@ -249,12 +252,18 @@ export class TelemetryPlugin
     application.currentAppId$
       .pipe(
         switchMap(async () => {
+          // Disable telemetry and terminate early if Kibana is running in a special "skip" mode
+          if (this.shouldSkipTelemetry(screenshotMode)) {
+            analytics.optIn({ global: { enabled: false } });
+            return;
+          }
+
           // Refresh and get telemetry config
           const updatedConfig = await this.refreshConfig(http);
 
           analytics.optIn({
             global: {
-              enabled: this.telemetryService!.isOptedIn && !screenshotMode.isScreenshotMode(),
+              enabled: this.telemetryService!.isOptedIn,
             },
           });
 
@@ -286,6 +295,16 @@ export class TelemetryPlugin
     this.telemetrySender?.stop();
   }
 
+  /**
+   * Kibana should skip telemetry collection if reporting is taking a screenshot
+   * or Synthetics monitoring is navigating Kibana.
+   * @param screenshotMode {@link ScreenshotModePluginSetup}
+   * @private
+   */
+  private shouldSkipTelemetry(screenshotMode: ScreenshotModePluginSetup): boolean {
+    return screenshotMode.isScreenshotMode() || isSyntheticsMonitor();
+  }
+
   private getTelemetryServicePublicApis(): TelemetryServicePublicApis {
     const telemetryService = this.telemetryService!;
     return {
diff --git a/src/plugins/telemetry/tsconfig.json b/src/plugins/telemetry/tsconfig.json
index 638bfb4f722a7..4163f957837a7 100644
--- a/src/plugins/telemetry/tsconfig.json
+++ b/src/plugins/telemetry/tsconfig.json
@@ -35,6 +35,7 @@
     "@kbn/core-http-browser-mocks",
     "@kbn/core-http-browser",
     "@kbn/core-http-server",
+    "@kbn/analytics-collection-utils",
   ],
   "exclude": [
     "target/**/*",
diff --git a/src/plugins/usage_collection/public/plugin.tsx b/src/plugins/usage_collection/public/plugin.tsx
index b4193f44fb8e4..635e33f8fd0b0 100644
--- a/src/plugins/usage_collection/public/plugin.tsx
+++ b/src/plugins/usage_collection/public/plugin.tsx
@@ -18,6 +18,7 @@ import type {
   HttpSetup,
 } from '@kbn/core/public';
 import { Storage } from '@kbn/kibana-utils-plugin/public';
+import { isSyntheticsMonitor } from '@kbn/analytics-collection-utils';
 import type { ScreenshotModePluginStart } from '@kbn/screenshot-mode-plugin/public';
 import { createReporter, trackApplicationUsageChange } from './services';
 import { ApplicationUsageContext } from './components/track_application_view';
@@ -150,7 +151,8 @@ export class UsageCollectionPlugin
     if (
       this.config.uiCounters.enabled &&
       !isUnauthenticated(http) &&
-      !screenshotMode.isScreenshotMode()
+      !screenshotMode.isScreenshotMode() &&
+      !isSyntheticsMonitor()
     ) {
       this.reporter.start();
       this.applicationUsageTracker.start();
diff --git a/src/plugins/usage_collection/tsconfig.json b/src/plugins/usage_collection/tsconfig.json
index db86bf99273df..9491794c07f60 100644
--- a/src/plugins/usage_collection/tsconfig.json
+++ b/src/plugins/usage_collection/tsconfig.json
@@ -21,6 +21,7 @@
     "@kbn/utility-types",
     "@kbn/i18n",
     "@kbn/core-http-server-mocks",
+    "@kbn/analytics-collection-utils",
   ],
   "exclude": [
     "target/**/*",
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 7faad08e28f0d..f833b70622d32 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -50,6 +50,8 @@
       "@kbn/analytics/*": ["packages/kbn-analytics/*"],
       "@kbn/analytics-client": ["packages/analytics/client"],
       "@kbn/analytics-client/*": ["packages/analytics/client/*"],
+      "@kbn/analytics-collection-utils": ["packages/analytics/utils/analytics_collection_utils"],
+      "@kbn/analytics-collection-utils/*": ["packages/analytics/utils/analytics_collection_utils/*"],
       "@kbn/analytics-ftr-helpers-plugin": ["test/analytics/plugins/analytics_ftr_helpers"],
       "@kbn/analytics-ftr-helpers-plugin/*": ["test/analytics/plugins/analytics_ftr_helpers/*"],
       "@kbn/analytics-plugin-a-plugin": ["test/analytics/plugins/analytics_plugin_a"],
diff --git a/yarn.lock b/yarn.lock
index d1c704d5622c1..2bde2182e3bd0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3000,6 +3000,10 @@
   version "0.0.0"
   uid ""
 
+"@kbn/analytics-collection-utils@link:packages/analytics/utils/analytics_collection_utils":
+  version "0.0.0"
+  uid ""
+
 "@kbn/analytics-ftr-helpers-plugin@link:test/analytics/plugins/analytics_ftr_helpers":
   version "0.0.0"
   uid ""

From 33ba4913e53905b099458e3567c77a73ecbff18a Mon Sep 17 00:00:00 2001
From: Gerard Soldevila <gerard.soldevila@elastic.co>
Date: Tue, 14 Nov 2023 09:51:31 +0100
Subject: [PATCH 146/147] [`taskManager` plugin status] Do not emit empty
 status to status Observables (#171012)

## Summary

Improvement over https://github.com/elastic/kibana/pull/169447, see
[related comment](https://github.com/elastic/kibana/pull/171012).
---
 .../from_the_server/core_context_providers.ts                | 2 +-
 .../task_manager/server/lib/calculate_health_status.test.ts  | 2 +-
 .../task_manager/server/lib/calculate_health_status.ts       | 2 +-
 .../server/monitoring/monitoring_stats_stream.ts             | 1 +
 x-pack/plugins/task_manager/server/routes/health.ts          | 5 +++--
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/test/analytics/tests/instrumented_events/from_the_server/core_context_providers.ts b/test/analytics/tests/instrumented_events/from_the_server/core_context_providers.ts
index cf781bed5ad0e..1d6b187c207f1 100644
--- a/test/analytics/tests/instrumented_events/from_the_server/core_context_providers.ts
+++ b/test/analytics/tests/instrumented_events/from_the_server/core_context_providers.ts
@@ -17,7 +17,7 @@ export default function ({ getService }: FtrProviderContext) {
   describe('Core Context Providers', () => {
     let event: Event<Record<string, unknown>>;
     before(async () => {
-      let i = 2;
+      let i = 1;
       do {
         // Wait until we get a GREEN "status_changed" event. At that point all the context providers should be set up.
         const events = await ebtServerHelper.getEvents(i, {
diff --git a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts
index 16caafb982886..6c9a9efeb558e 100644
--- a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts
+++ b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts
@@ -267,7 +267,7 @@ describe('calculateHealthStatus', () => {
         true,
         logger
       )
-    ).toEqual({ status: HealthStatus.Warning, reason: `no health stats available` });
+    ).toEqual({ status: HealthStatus.Uninitialized, reason: `no health stats available` });
   });
 
   test('should return error status if any stat has status error', () => {
diff --git a/x-pack/plugins/task_manager/server/lib/calculate_health_status.ts b/x-pack/plugins/task_manager/server/lib/calculate_health_status.ts
index 7826b701551d9..15a206625efa8 100644
--- a/x-pack/plugins/task_manager/server/lib/calculate_health_status.ts
+++ b/x-pack/plugins/task_manager/server/lib/calculate_health_status.ts
@@ -21,7 +21,7 @@ export function calculateHealthStatus(
 
   // if stats are empty, return a warning
   if (isEmpty(summarizedStats.stats)) {
-    return { status: HealthStatus.Warning, reason: `no health stats available` };
+    return { status: HealthStatus.Uninitialized, reason: `no health stats available` };
   }
 
   // if "hot" health stats are any more stale than monitored_stats_required_freshness
diff --git a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts
index 62505a34d7f89..a05eca7079ca4 100644
--- a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts
+++ b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts
@@ -55,6 +55,7 @@ export interface MonitoringStats {
 }
 
 export enum HealthStatus {
+  Uninitialized = 'uninitialized',
   OK = 'OK',
   Warning = 'warn',
   Error = 'error',
diff --git a/x-pack/plugins/task_manager/server/routes/health.ts b/x-pack/plugins/task_manager/server/routes/health.ts
index 7a348147b0b76..f6c6dfb88aad4 100644
--- a/x-pack/plugins/task_manager/server/routes/health.ts
+++ b/x-pack/plugins/task_manager/server/routes/health.ts
@@ -14,7 +14,7 @@ import {
 } from '@kbn/core/server';
 import { IClusterClient, DocLinksServiceSetup } from '@kbn/core/server';
 import { Observable, Subject } from 'rxjs';
-import { tap, map } from 'rxjs/operators';
+import { tap, map, filter } from 'rxjs/operators';
 import { throttleTime } from 'rxjs/operators';
 import { UsageCounter } from '@kbn/usage-collection-plugin/server';
 import { Logger, ServiceStatus, ServiceStatusLevels } from '@kbn/core/server';
@@ -114,7 +114,8 @@ export function healthRoute(params: HealthRouteParams): {
       }),
       // Only calculate the summarized stats (calculates all running averages and evaluates state)
       // when needed by throttling down to the requiredHotStatsFreshness
-      map((stats) => withServiceStatus(getHealthStatus(stats)))
+      map((stats) => withServiceStatus(getHealthStatus(stats))),
+      filter(([monitoredHealth]) => monitoredHealth.status !== HealthStatus.Uninitialized)
     )
     .subscribe(([monitoredHealth, serviceStatus]) => {
       serviceStatus$.next(serviceStatus);

From 6f2ad265d52564f01441eba0e823d7b62b838a69 Mon Sep 17 00:00:00 2001
From: Maryam Saeidi <maryam.saeidi@elastic.co>
Date: Tue, 14 Nov 2023 10:02:40 +0100
Subject: [PATCH 147/147] Revisit custom threshold types in public folder
 (#170306)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Part of #159340
Closes #169364

## Summary

This PR:
1. Removes preFill logic
In this PR, I removed the logic about prefilling custom threshold rule
params as it was originally for other rule types (not custom equation)
and to be used in the Metric threshold rule and the code related to this
logic was super confusing, and I wasn't even sure if it works as
expected since we haven't used this logic anywhere. I created a
[ticket](https://github.com/elastic/kibana/issues/170295) to bring back
this feature properly later, specifically for the custom equation, and
integrate it in one of the apps, such as Infra. We also need to be able
to preFill data view information (both adHoc and persisted data view)
2. Renames types and file names
      - From `metricThreshold` to `customThreshold`
      - From `metricExplorer` to `expression`
3. Removes unused types
4. Remove logic related to aggregations other than the custom equation
at the top level

Also, the fields that end with `pct` now have the `%` after the related
value: (The reason message was fixed in another PR)

<img
src="https://github.com/elastic/kibana/assets/12370520/83694d3b-2ee2-4e95-afe9-5a959c76c3c7"
width=400 />


## 🧪 How to test
- Nothing has changed related to functionality, so please make sure the
custom threshold rule is working as before for
    - Creating a new rule with multiple conditions
    - Adding groups
    - Editing a rule and checking the charts are shown as before
    - Test both adHoc and persisted data view

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Faisal Kanout <faisal.kanout@elastic.co>
---
 .../src/create_custom_threshold_rule.ts       |   3 +-
 .../scenarios/custom_threshold_log_count.ts   |   3 +-
 .../custom_threshold_log_count_groupby.ts     |   3 +-
 .../custom_threshold_log_count_nodata.ts      |   3 +-
 .../scenarios/custom_threshold_metric_avg.ts  |   3 +-
 .../custom_threshold_metric_avg_groupby.ts    |   3 +-
 .../custom_threshold_metric_avg_nodata.ts     |   3 +-
 .../common/custom_threshold_rule/constants.ts |   7 +-
 .../custom_threshold_rule/formatters/index.ts |   2 +-
 .../custom_threshold_rule/metrics_explorer.ts | 154 -----
 .../common/custom_threshold_rule/types.ts     | 212 +-----
 .../alert_details_app_section.test.tsx.snap   |   8 +-
 .../alert_details_app_section.test.tsx        |  10 +-
 .../components/alert_details_app_section.tsx  |  29 +-
 .../components/alert_flyout.tsx               |  16 +-
 .../criterion_preview_chart.tsx               |  11 +-
 .../custom_equation_editor.stories.tsx        |  25 +-
 .../custom_equation_editor.tsx                |  12 +-
 .../custom_equation/metric_row_with_agg.tsx   |  35 +-
 .../components/custom_threshold.stories.tsx   |   2 +-
 .../components/custom_threshold.test.tsx      |  10 +-
 .../components/custom_threshold.tsx           |   9 +-
 .../components/expression_chart.test.tsx      |  23 +-
 .../components/expression_chart.tsx           |  34 +-
 .../components/expression_row.test.tsx        |  35 +-
 .../components/expression_row.tsx             |  79 +--
 .../custom_threshold/components/group_by.tsx  |  24 +-
 .../components/series_chart.tsx               |  42 +-
 .../components/validation.tsx                 | 112 ++--
 .../custom_threshold_rule_expression.test.tsx |  61 +-
 .../custom_threshold_rule_expression.tsx      | 122 +---
 .../helpers/calculate_domain.ts               |  27 +-
 .../helpers/create_formatter_for_metric.ts    |  18 +-
 .../create_formatter_for_metrics.test.ts      |  30 +-
 .../helpers/create_metric_label.test.ts       |  20 -
 .../helpers/create_metric_label.ts            |  15 -
 .../custom_threshold/helpers/get_metric_id.ts |  12 -
 .../helpers/metric_to_format.ts               |  11 +-
 .../helpers/use_alert_prefill.ts              |  16 -
 .../hooks/mocks}/metrics_explorer.ts          |  29 +-
 ...t_data.ts => use_expression_chart_data.ts} |  55 +-
 ...xplorer_data.ts => use_expression_data.ts} |  21 +-
 .../use_metric_threshold_alert_prefill.ts     |  24 +-
 .../hooks/use_metrics_explorer_data.test.tsx  |  21 +-
 .../use_metrics_explorer_options.test.tsx     | 127 ----
 .../hooks/use_metrics_explorer_options.ts     | 236 -------
 .../lib/generate_unique_key.test.ts           |  51 --
 .../lib/generate_unique_key.ts                |  14 -
 .../lib/transform_metrics_explorer_data.ts    |  32 -
 ...shold_rule.ts => custom_threshold_rule.ts} |  63 +-
 .../components/custom_threshold/types.ts      | 217 +++---
 .../register_observability_rule_types.ts      |   4 +-
 .../custom_threshold_executor.test.ts         | 622 ++++++++++--------
 .../custom_threshold_executor.ts              |  11 +-
 .../lib/check_missing_group.ts                |   4 +-
 .../lib/create_bucket_selector.ts             |  20 +-
 .../lib/create_custom_metrics_aggregations.ts |  13 +-
 .../lib/create_percentile_aggregation.ts      |  24 -
 .../lib/create_rate_aggregation.ts            |  66 --
 .../lib/create_timerange.test.ts              |  41 +-
 .../custom_threshold/lib/create_timerange.ts  |   6 +-
 .../custom_threshold/lib/evaluate_rule.ts     |  54 +-
 .../lib/format_alert_result.ts                |  50 +-
 .../rules/custom_threshold/lib/get_data.ts    |  78 +--
 .../lib/metric_expression_params.ts           |  26 -
 .../custom_threshold/lib/metric_query.test.ts |  72 +-
 .../custom_threshold/lib/metric_query.ts      |  73 +-
 .../custom_threshold/lib/metrics_explorer.ts  | 131 ----
 .../custom_threshold/lib/wrap_in_period.ts    |   4 +-
 .../lib/rules/custom_threshold/messages.ts    |  40 +-
 .../register_custom_threshold_rule_type.ts    |   3 +-
 .../lib/rules/custom_threshold/types.ts       |  23 -
 x-pack/plugins/observability/tsconfig.json    |   1 -
 .../translations/translations/fr-FR.json      |   7 -
 .../translations/translations/ja-JP.json      |   7 -
 .../translations/translations/zh-CN.json      |   7 -
 .../expression_items/threshold.test.tsx       |  17 +
 .../common/expression_items/threshold.tsx     |   6 +-
 .../custom_threshold_rule/avg_pct_fired.ts    |   3 +-
 .../custom_threshold_rule/avg_pct_no_data.ts  |   3 +-
 .../custom_threshold_rule/avg_us_fired.ts     |   3 +-
 .../custom_eq_avg_bytes_fired.ts              |   5 +-
 .../documents_count_fired.ts                  |   3 +-
 .../custom_threshold_rule/group_by_fired.ts   |   3 +-
 .../custom_threshold_rule_data_view.ts        |   3 +-
 .../helpers/alerting_api_helper.ts            |   5 +-
 .../observability/metric_threshold_rule.ts    |   9 +-
 .../custom_threshold_rule/avg_pct_fired.ts    |   3 +-
 .../custom_threshold_rule/avg_pct_no_data.ts  |   3 +-
 .../custom_eq_avg_bytes_fired.ts              |   5 +-
 .../documents_count_fired.ts                  |   3 +-
 .../custom_threshold_rule/group_by_fired.ts   |   3 +-
 92 files changed, 1116 insertions(+), 2482 deletions(-)
 delete mode 100644 x-pack/plugins/observability/common/custom_threshold_rule/metrics_explorer.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.test.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/helpers/get_metric_id.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/helpers/use_alert_prefill.ts
 rename x-pack/plugins/observability/public/{utils => components/custom_threshold/hooks/mocks}/metrics_explorer.ts (69%)
 rename x-pack/plugins/observability/public/components/custom_threshold/hooks/{use_metrics_explorer_chart_data.ts => use_expression_chart_data.ts} (58%)
 rename x-pack/plugins/observability/public/components/custom_threshold/hooks/{use_metrics_explorer_data.ts => use_expression_data.ts} (84%)
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.test.tsx
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.test.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.ts
 delete mode 100644 x-pack/plugins/observability/public/components/custom_threshold/lib/transform_metrics_explorer_data.ts
 rename x-pack/plugins/observability/public/components/custom_threshold/mocks/{metric_threshold_rule.ts => custom_threshold_rule.ts} (78%)
 delete mode 100644 x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_percentile_aggregation.ts
 delete mode 100644 x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts
 delete mode 100644 x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_expression_params.ts
 delete mode 100644 x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metrics_explorer.ts

diff --git a/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts b/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts
index 296d1b95512d3..9c7e1fb6acdb7 100644
--- a/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -38,7 +39,7 @@ export const createCustomThresholdRule = async (
     params: {
       criteria: ruleParams.params?.criteria || [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
           threshold: [1],
           timeSize: 1,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts
index 39b7159ff478b..c2515cfe1615a 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario1 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.LT,
           threshold: [100],
           timeSize: 1,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts
index 882d83bbbf973..68786ea4a06d2 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario2 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.LT,
           threshold: [40],
           timeSize: 1,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts
index 7be8b142380d1..97585a66b8385 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario3 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.LT,
           threshold: [5],
           timeSize: 1,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts
index 755f89680b171..0feec99ca5a47 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario4 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
           threshold: [80],
           timeSize: 1,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts
index a662608ab31d6..a36bb4af2544c 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario5 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
           threshold: [80],
           timeSize: 5,
diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts
index 5e98aa1a58d31..16639c7749ca3 100644
--- a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts
+++ b/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -22,7 +23,7 @@ export const scenario6 = {
     params: {
       criteria: [
         {
-          aggType: Aggregators.CUSTOM,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.LT,
           threshold: [1],
           timeSize: 1,
diff --git a/x-pack/plugins/observability/common/custom_threshold_rule/constants.ts b/x-pack/plugins/observability/common/custom_threshold_rule/constants.ts
index 15886482e4b31..7f7c3a5bcbb3f 100644
--- a/x-pack/plugins/observability/common/custom_threshold_rule/constants.ts
+++ b/x-pack/plugins/observability/common/custom_threshold_rule/constants.ts
@@ -5,16 +5,13 @@
  * 2.0.
  */
 
-export const SNAPSHOT_CUSTOM_AGGREGATIONS = ['avg', 'max', 'min', 'rate'] as const;
 export const METRIC_EXPLORER_AGGREGATIONS = [
   'avg',
   'max',
   'min',
   'cardinality',
-  'rate',
   'count',
   'sum',
-  'p95',
-  'p99',
-  'custom',
 ] as const;
+
+export const CUSTOM_AGGREGATOR = 'custom';
diff --git a/x-pack/plugins/observability/common/custom_threshold_rule/formatters/index.ts b/x-pack/plugins/observability/common/custom_threshold_rule/formatters/index.ts
index f7491ca139bfe..00ecdef67d97f 100644
--- a/x-pack/plugins/observability/common/custom_threshold_rule/formatters/index.ts
+++ b/x-pack/plugins/observability/common/custom_threshold_rule/formatters/index.ts
@@ -14,7 +14,7 @@ import { InfraWaffleMapDataFormat } from './types';
 
 export const FORMATTERS = {
   number: formatNumber,
-  // Because the implimentation for formatting large numbers is the same as formatting
+  // Because the implementation for formatting large numbers is the same as formatting
   // bytes we are re-using the same code, we just format the number using the abbreviated number format.
   abbreviatedNumber: createBytesFormatter(InfraWaffleMapDataFormat.abbreviatedNumber),
   // bytes in bytes formatted string out
diff --git a/x-pack/plugins/observability/common/custom_threshold_rule/metrics_explorer.ts b/x-pack/plugins/observability/common/custom_threshold_rule/metrics_explorer.ts
deleted file mode 100644
index 66913385123c4..0000000000000
--- a/x-pack/plugins/observability/common/custom_threshold_rule/metrics_explorer.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as rt from 'io-ts';
-import { xor } from 'lodash';
-import { METRIC_EXPLORER_AGGREGATIONS } from './constants';
-
-export const OMITTED_AGGREGATIONS_FOR_CUSTOM_METRICS = ['custom', 'rate', 'p95', 'p99'];
-
-type MetricExplorerAggregations = typeof METRIC_EXPLORER_AGGREGATIONS[number];
-
-const metricsExplorerAggregationKeys = METRIC_EXPLORER_AGGREGATIONS.reduce<
-  Record<MetricExplorerAggregations, null>
->((acc, agg) => ({ ...acc, [agg]: null }), {} as Record<MetricExplorerAggregations, null>);
-
-export const metricsExplorerAggregationRT = rt.keyof(metricsExplorerAggregationKeys);
-
-export type MetricExplorerCustomMetricAggregations = Exclude<
-  MetricsExplorerAggregation,
-  'custom' | 'rate' | 'p95' | 'p99'
->;
-const metricsExplorerCustomMetricAggregationKeys = xor(
-  METRIC_EXPLORER_AGGREGATIONS,
-  OMITTED_AGGREGATIONS_FOR_CUSTOM_METRICS
-).reduce<Record<MetricExplorerCustomMetricAggregations, null>>(
-  (acc, agg) => ({ ...acc, [agg]: null }),
-  {} as Record<MetricExplorerCustomMetricAggregations, null>
-);
-export const metricsExplorerCustomMetricAggregationRT = rt.keyof(
-  metricsExplorerCustomMetricAggregationKeys
-);
-
-export const metricsExplorerMetricRequiredFieldsRT = rt.type({
-  aggregation: metricsExplorerAggregationRT,
-});
-
-export const metricsExplorerCustomMetricRT = rt.intersection([
-  rt.type({
-    name: rt.string,
-    aggregation: metricsExplorerCustomMetricAggregationRT,
-  }),
-  rt.partial({
-    field: rt.string,
-    filter: rt.string,
-  }),
-]);
-
-export type MetricsExplorerCustomMetric = rt.TypeOf<typeof metricsExplorerCustomMetricRT>;
-
-export const metricsExplorerMetricOptionalFieldsRT = rt.partial({
-  field: rt.union([rt.string, rt.undefined]),
-  custom_metrics: rt.array(metricsExplorerCustomMetricRT),
-  equation: rt.string,
-});
-
-export const metricsExplorerMetricRT = rt.intersection([
-  metricsExplorerMetricRequiredFieldsRT,
-  metricsExplorerMetricOptionalFieldsRT,
-]);
-
-export const timeRangeRT = rt.type({
-  from: rt.number,
-  to: rt.number,
-  interval: rt.string,
-});
-
-export const metricsExplorerRequestBodyRequiredFieldsRT = rt.type({
-  timerange: timeRangeRT,
-  indexPattern: rt.string,
-  metrics: rt.array(metricsExplorerMetricRT),
-});
-
-const groupByRT = rt.union([rt.string, rt.null, rt.undefined]);
-export const afterKeyObjectRT = rt.record(rt.string, rt.union([rt.string, rt.null]));
-
-export const metricsExplorerRequestBodyOptionalFieldsRT = rt.partial({
-  groupBy: rt.union([groupByRT, rt.array(groupByRT)]),
-  afterKey: rt.union([rt.string, rt.null, rt.undefined, afterKeyObjectRT]),
-  limit: rt.union([rt.number, rt.null, rt.undefined]),
-  filterQuery: rt.union([rt.string, rt.null, rt.undefined]),
-  forceInterval: rt.boolean,
-  dropLastBucket: rt.boolean,
-});
-
-export const metricsExplorerRequestBodyRT = rt.intersection([
-  metricsExplorerRequestBodyRequiredFieldsRT,
-  metricsExplorerRequestBodyOptionalFieldsRT,
-]);
-
-export const metricsExplorerPageInfoRT = rt.type({
-  total: rt.number,
-  afterKey: rt.union([rt.string, rt.null, afterKeyObjectRT]),
-});
-
-export const metricsExplorerColumnTypeRT = rt.keyof({
-  date: null,
-  number: null,
-  string: null,
-});
-
-export const metricsExplorerColumnRT = rt.type({
-  name: rt.string,
-  type: metricsExplorerColumnTypeRT,
-});
-
-export const metricsExplorerRowRT = rt.intersection([
-  rt.type({
-    timestamp: rt.number,
-  }),
-  rt.record(
-    rt.string,
-    rt.union([rt.string, rt.number, rt.null, rt.undefined, rt.array(rt.object)])
-  ),
-]);
-
-export const metricsExplorerSeriesRT = rt.intersection([
-  rt.type({
-    id: rt.string,
-    columns: rt.array(metricsExplorerColumnRT),
-    rows: rt.array(metricsExplorerRowRT),
-  }),
-  rt.partial({
-    keys: rt.array(rt.string),
-  }),
-]);
-
-export const metricsExplorerResponseRT = rt.type({
-  series: rt.array(metricsExplorerSeriesRT),
-  pageInfo: metricsExplorerPageInfoRT,
-});
-
-export type AfterKey = rt.TypeOf<typeof afterKeyObjectRT>;
-
-export type MetricsExplorerAggregation = rt.TypeOf<typeof metricsExplorerAggregationRT>;
-
-export type MetricsExplorerColumnType = rt.TypeOf<typeof metricsExplorerColumnTypeRT>;
-
-export type MetricsExplorerMetric = rt.TypeOf<typeof metricsExplorerMetricRT>;
-
-export type MetricsExplorerPageInfo = rt.TypeOf<typeof metricsExplorerPageInfoRT>;
-
-export type MetricsExplorerColumn = rt.TypeOf<typeof metricsExplorerColumnRT>;
-
-export type MetricsExplorerRow = rt.TypeOf<typeof metricsExplorerRowRT>;
-
-export type MetricsExplorerSeries = rt.TypeOf<typeof metricsExplorerSeriesRT>;
-
-export type MetricsExplorerRequestBody = rt.TypeOf<typeof metricsExplorerRequestBodyRT>;
-
-export type MetricsExplorerResponse = rt.TypeOf<typeof metricsExplorerResponseRT>;
diff --git a/x-pack/plugins/observability/common/custom_threshold_rule/types.ts b/x-pack/plugins/observability/common/custom_threshold_rule/types.ts
index dc5b434e0a7e9..40d569152d1a3 100644
--- a/x-pack/plugins/observability/common/custom_threshold_rule/types.ts
+++ b/x-pack/plugins/observability/common/custom_threshold_rule/types.ts
@@ -6,22 +6,9 @@
  */
 
 import * as rt from 'io-ts';
-import { ML_ANOMALY_THRESHOLD } from '@kbn/ml-anomaly-utils/anomaly_threshold';
-import { values } from 'lodash';
 import { SerializedSearchSourceFields } from '@kbn/data-plugin/common';
-import { Color } from './color_palette';
-import { metricsExplorerMetricRT } from './metrics_explorer';
 import { TimeUnitChar } from '../utils/formatters/duration';
-import { SNAPSHOT_CUSTOM_AGGREGATIONS } from './constants';
-
-type DeepPartialArray<T> = Array<DeepPartial<T>>;
-
-type DeepPartialObject<T> = { [P in keyof T]+?: DeepPartial<T[P]> };
-export type DeepPartial<T> = T extends any[]
-  ? DeepPartialArray<T[number]>
-  : T extends object
-  ? DeepPartialObject<T>
-  : T;
+import { CUSTOM_AGGREGATOR } from './constants';
 
 export const ThresholdFormatterTypeRT = rt.keyof({
   abbreviatedNumber: null,
@@ -33,97 +20,6 @@ export const ThresholdFormatterTypeRT = rt.keyof({
 });
 export type ThresholdFormatterType = rt.TypeOf<typeof ThresholdFormatterTypeRT>;
 
-const pointRT = rt.type({
-  timestamp: rt.number,
-  value: rt.number,
-});
-
-export type Point = rt.TypeOf<typeof pointRT>;
-
-const serieRT = rt.type({
-  id: rt.string,
-  points: rt.array(pointRT),
-});
-
-const seriesRT = rt.array(serieRT);
-
-export type Series = rt.TypeOf<typeof seriesRT>;
-
-export const getLogAlertsChartPreviewDataSuccessResponsePayloadRT = rt.type({
-  data: rt.type({
-    series: seriesRT,
-  }),
-});
-
-export type GetLogAlertsChartPreviewDataSuccessResponsePayload = rt.TypeOf<
-  typeof getLogAlertsChartPreviewDataSuccessResponsePayloadRT
->;
-
-/**
- * Properties specific to the Metrics Source Configuration.
- */
-export const SourceConfigurationTimestampColumnRuntimeType = rt.type({
-  timestampColumn: rt.type({
-    id: rt.string,
-  }),
-});
-export const SourceConfigurationMessageColumnRuntimeType = rt.type({
-  messageColumn: rt.type({
-    id: rt.string,
-  }),
-});
-
-export const SourceConfigurationFieldColumnRuntimeType = rt.type({
-  fieldColumn: rt.type({
-    id: rt.string,
-    field: rt.string,
-  }),
-});
-
-export const SourceConfigurationColumnRuntimeType = rt.union([
-  SourceConfigurationTimestampColumnRuntimeType,
-  SourceConfigurationMessageColumnRuntimeType,
-  SourceConfigurationFieldColumnRuntimeType,
-]);
-
-// Kibana data views
-export const logDataViewReferenceRT = rt.type({
-  type: rt.literal('data_view'),
-  dataViewId: rt.string,
-});
-
-// Index name
-export const logIndexNameReferenceRT = rt.type({
-  type: rt.literal('index_name'),
-  indexName: rt.string,
-});
-
-export const logIndexReferenceRT = rt.union([logDataViewReferenceRT, logIndexNameReferenceRT]);
-
-/**
- * Source status
- */
-const SourceStatusFieldRuntimeType = rt.type({
-  name: rt.string,
-  type: rt.string,
-  searchable: rt.boolean,
-  aggregatable: rt.boolean,
-  displayable: rt.boolean,
-});
-export const SourceStatusRuntimeType = rt.type({
-  logIndicesExist: rt.boolean,
-  metricIndicesExist: rt.boolean,
-  remoteClustersExist: rt.boolean,
-  indexFields: rt.array(SourceStatusFieldRuntimeType),
-});
-export const metricsSourceStatusRT = rt.strict({
-  metricIndicesExist: SourceStatusRuntimeType.props.metricIndicesExist,
-  remoteClustersExist: SourceStatusRuntimeType.props.metricIndicesExist,
-  indexFields: SourceStatusRuntimeType.props.indexFields,
-});
-
-export type MetricsSourceStatus = rt.TypeOf<typeof metricsSourceStatusRT>;
-
 export enum Comparator {
   GT = '>',
   LT = '<',
@@ -139,23 +35,10 @@ export enum Aggregators {
   SUM = 'sum',
   MIN = 'min',
   MAX = 'max',
-  RATE = 'rate',
   CARDINALITY = 'cardinality',
-  P95 = 'p95',
-  P99 = 'p99',
-  CUSTOM = 'custom',
 }
-
-const metricsExplorerOptionsMetricRT = rt.intersection([
-  metricsExplorerMetricRT,
-  rt.partial({
-    rate: rt.boolean,
-    color: rt.keyof(Object.fromEntries(values(Color).map((c) => [c, null])) as Record<Color, null>),
-    label: rt.string,
-  }),
-]);
-
-export type MetricsExplorerOptionsMetric = rt.TypeOf<typeof metricsExplorerOptionsMetricRT>;
+export const aggType = fromEnum('Aggregators', Aggregators);
+export type AggType = rt.TypeOf<typeof aggType>;
 
 export enum MetricsExplorerChartType {
   line = 'line',
@@ -163,11 +46,6 @@ export enum MetricsExplorerChartType {
   bar = 'bar',
 }
 
-export enum InfraRuleType {
-  MetricThreshold = 'metrics.alert.threshold',
-  InventoryThreshold = 'metrics.alert.inventory.threshold',
-}
-
 export enum AlertStates {
   OK,
   ALERT,
@@ -176,27 +54,6 @@ export enum AlertStates {
   ERROR,
 }
 
-const metricAnomalyNodeTypeRT = rt.union([rt.literal('hosts'), rt.literal('k8s')]);
-const metricAnomalyMetricRT = rt.union([
-  rt.literal('memory_usage'),
-  rt.literal('network_in'),
-  rt.literal('network_out'),
-]);
-const metricAnomalyInfluencerFilterRT = rt.type({
-  fieldName: rt.string,
-  fieldValue: rt.string,
-});
-
-export interface MetricAnomalyParams {
-  nodeType: rt.TypeOf<typeof metricAnomalyNodeTypeRT>;
-  metric: rt.TypeOf<typeof metricAnomalyMetricRT>;
-  alertInterval?: string;
-  sourceId?: string;
-  spaceId?: string;
-  threshold: Exclude<ML_ANOMALY_THRESHOLD, ML_ANOMALY_THRESHOLD.LOW>;
-  influencerFilter: rt.TypeOf<typeof metricAnomalyInfluencerFilterRT> | undefined;
-}
-
 // Types for the executor
 
 export interface ThresholdParams {
@@ -209,7 +66,7 @@ export interface ThresholdParams {
   groupBy?: string[];
 }
 
-interface BaseMetricExpressionParams {
+export interface BaseMetricExpressionParams {
   timeSize: number;
   timeUnit: TimeUnitChar;
   sourceId?: string;
@@ -219,38 +76,21 @@ interface BaseMetricExpressionParams {
   warningThreshold?: number[];
 }
 
-export interface NonCountMetricExpressionParams extends BaseMetricExpressionParams {
-  aggType: Exclude<Aggregators, [Aggregators.COUNT, Aggregators.CUSTOM]>;
-  metric: string;
-}
-
-export interface CountMetricExpressionParams extends BaseMetricExpressionParams {
-  aggType: Aggregators.COUNT;
-}
-
-export type CustomMetricAggTypes = Exclude<
-  Aggregators,
-  Aggregators.CUSTOM | Aggregators.RATE | Aggregators.P95 | Aggregators.P99
->;
-
 export interface CustomThresholdExpressionMetric {
   name: string;
-  aggType: CustomMetricAggTypes;
+  aggType: AggType;
   field?: string;
   filter?: string;
 }
 
 export interface CustomMetricExpressionParams extends BaseMetricExpressionParams {
-  aggType: Aggregators.CUSTOM;
+  aggType: typeof CUSTOM_AGGREGATOR;
   metrics: CustomThresholdExpressionMetric[];
   equation?: string;
   label?: string;
 }
 
-export type MetricExpressionParams =
-  | NonCountMetricExpressionParams
-  | CountMetricExpressionParams
-  | CustomMetricExpressionParams;
+export type MetricExpressionParams = CustomMetricExpressionParams;
 
 export const QUERY_INVALID: unique symbol = Symbol('QUERY_INVALID');
 
@@ -269,22 +109,22 @@ export enum InfraFormatterType {
   percent = 'percent',
 }
 
-export type SnapshotCustomAggregation = typeof SNAPSHOT_CUSTOM_AGGREGATIONS[number];
-const snapshotCustomAggregationKeys = SNAPSHOT_CUSTOM_AGGREGATIONS.reduce<
-  Record<SnapshotCustomAggregation, null>
->((acc, agg) => ({ ...acc, [agg]: null }), {} as Record<SnapshotCustomAggregation, null>);
-
-export const SnapshotCustomAggregationRT = rt.keyof(snapshotCustomAggregationKeys);
-
-export const SnapshotCustomMetricInputRT = rt.intersection([
-  rt.type({
-    type: rt.literal('custom'),
-    field: rt.string,
-    aggregation: SnapshotCustomAggregationRT,
-    id: rt.string,
-  }),
-  rt.partial({
-    label: rt.string,
-  }),
-]);
-export type SnapshotCustomMetricInput = rt.TypeOf<typeof SnapshotCustomMetricInputRT>;
+/*
+ * Utils
+ *
+ * This utility function can be used to turn a TypeScript enum into a io-ts codec.
+ */
+export function fromEnum<EnumType extends string>(
+  enumName: string,
+  theEnum: Record<string, EnumType>
+): rt.Type<EnumType, EnumType, unknown> {
+  const isEnumValue = (input: unknown): input is EnumType =>
+    Object.values<unknown>(theEnum).includes(input);
+
+  return new rt.Type<EnumType>(
+    enumName,
+    isEnumValue,
+    (input, context) => (isEnumValue(input) ? rt.success(input) : rt.failure(input, context)),
+    rt.identity
+  );
+}
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap b/x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap
index ca106766d89e9..2e12193435726 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap
@@ -22,8 +22,14 @@ Array [
       "title": "unknown-index",
     },
     "expression": Object {
-      "aggType": "count",
+      "aggType": "custom",
       "comparator": ">",
+      "metrics": Array [
+        Object {
+          "aggType": "count",
+          "name": "A",
+        },
+      ],
       "threshold": Array [
         2000,
       ],
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx
index 2e035cdcf8fb8..d1ab267f1ce23 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx
@@ -13,9 +13,9 @@ import { __IntlProvider as IntlProvider } from '@kbn/i18n-react';
 import { render } from '@testing-library/react';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import {
-  buildMetricThresholdAlert,
-  buildMetricThresholdRule,
-} from '../mocks/metric_threshold_rule';
+  buildCustomThresholdAlert,
+  buildCustomThresholdRule,
+} from '../mocks/custom_threshold_rule';
 import AlertDetailsAppSection from './alert_details_app_section';
 import { ExpressionChart } from './expression_chart';
 
@@ -59,8 +59,8 @@ describe('AlertDetailsAppSection', () => {
       <IntlProvider locale="en">
         <QueryClientProvider client={queryClient}>
           <AlertDetailsAppSection
-            alert={buildMetricThresholdAlert()}
-            rule={buildMetricThresholdRule()}
+            alert={buildCustomThresholdAlert()}
+            rule={buildCustomThresholdRule()}
             ruleLink={ruleLink}
             setAlertSummaryFields={mockedSetAlertSummaryFields}
           />
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx
index 11a85e6b17bc2..a5a029d764a89 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx
@@ -28,28 +28,27 @@ import {
   AlertActiveTimeRangeAnnotation,
 } from '@kbn/observability-alert-details';
 import { DataView } from '@kbn/data-views-plugin/common';
+import { MetricsExplorerChartType } from '../../../../common/custom_threshold_rule/types';
 import { useKibana } from '../../../utils/kibana_react';
 import { metricValueFormatter } from '../../../../common/custom_threshold_rule/metric_value_formatter';
 import { AlertSummaryField, TopAlert } from '../../..';
-import { generateUniqueKey } from '../lib/generate_unique_key';
 
 import { ExpressionChart } from './expression_chart';
 import { TIME_LABELS } from './criterion_preview_chart/criterion_preview_chart';
 import { Threshold } from './custom_threshold';
-import { MetricsExplorerChartType } from '../hooks/use_metrics_explorer_options';
-import { AlertParams, MetricThresholdRuleTypeParams } from '../types';
+import { AlertParams, CustomThresholdRuleTypeParams } from '../types';
 
 // TODO Use a generic props for app sections https://github.com/elastic/kibana/issues/152690
-export type MetricThresholdRule = Rule<MetricThresholdRuleTypeParams>;
-export type MetricThresholdAlert = TopAlert;
+export type CustomThresholdRule = Rule<CustomThresholdRuleTypeParams>;
+export type CustomThresholdAlert = TopAlert;
 
 const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD HH:mm';
 const ALERT_START_ANNOTATION_ID = 'alert_start_annotation';
 const ALERT_TIME_RANGE_ANNOTATION_ID = 'alert_time_range_annotation';
 
 interface AppSectionProps {
-  alert: MetricThresholdAlert;
-  rule: MetricThresholdRule;
+  alert: CustomThresholdAlert;
+  rule: CustomThresholdRule;
   ruleLink: string;
   setAlertSummaryFields: React.Dispatch<React.SetStateAction<AlertSummaryField[] | undefined>>;
 }
@@ -132,13 +131,10 @@ export default function AlertDetailsAppSection({
   const overview = !!ruleParams.criteria ? (
     <EuiFlexGroup direction="column" data-test-subj="thresholdAlertOverviewSection">
       {ruleParams.criteria.map((criterion, index) => (
-        <EuiFlexItem key={generateUniqueKey(criterion)}>
+        <EuiFlexItem key={`criterion-${index}`}>
           <EuiPanel hasBorder hasShadow={false}>
             <EuiTitle size="xs">
-              <h4>
-                {criterion.aggType.toUpperCase()}{' '}
-                {'metric' in criterion ? criterion.metric : undefined}
-              </h4>
+              <h4>{criterion.aggType.toUpperCase()} </h4>
             </EuiTitle>
             <EuiText size="s" color="subdued">
               <FormattedMessage
@@ -155,11 +151,14 @@ export default function AlertDetailsAppSection({
               <EuiFlexItem style={{ minHeight: 150, minWidth: 160 }} grow={1}>
                 <Threshold
                   chartProps={chartProps}
-                  id={`threshold-${generateUniqueKey(criterion)}`}
-                  threshold={criterion.threshold[0]}
+                  id={`threshold-${index}`}
+                  threshold={criterion.threshold}
                   value={alert.fields[ALERT_EVALUATION_VALUES]![index]}
                   valueFormatter={(d) =>
-                    metricValueFormatter(d, 'metric' in criterion ? criterion.metric : undefined)
+                    metricValueFormatter(
+                      d,
+                      criterion.metrics[0] ? criterion.metrics[0].name : undefined
+                    )
                   }
                   title={i18n.translate(
                     'xpack.observability.customThreshold.rule.alertDetailsAppSection.thresholdTitle',
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_flyout.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_flyout.tsx
index dc4ef4407c82c..1a90ffc7460c5 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_flyout.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_flyout.tsx
@@ -8,17 +8,11 @@
 import React, { useCallback, useContext, useMemo } from 'react';
 
 import { OBSERVABILITY_THRESHOLD_RULE_TYPE_ID } from '@kbn/rule-data-utils';
-import { MetricsExplorerSeries } from '../../../../common/custom_threshold_rule/metrics_explorer';
-
 import { TriggerActionsContext } from './triggers_actions_context';
-import { useAlertPrefillContext } from '../helpers/use_alert_prefill';
-import { MetricsExplorerOptions } from '../hooks/use_metrics_explorer_options';
 import { observabilityRuleCreationValidConsumers } from '../../../../common/constants';
 
 interface Props {
   visible?: boolean;
-  options?: Partial<MetricsExplorerOptions>;
-  series?: MetricsExplorerSeries;
   setVisible: React.Dispatch<React.SetStateAction<boolean>>;
 }
 
@@ -34,14 +28,9 @@ export function AlertFlyout(props: Props) {
         onClose: onCloseFlyout,
         canChangeTrigger: false,
         ruleTypeId: OBSERVABILITY_THRESHOLD_RULE_TYPE_ID,
-        metadata: {
-          currentOptions: props.options,
-          series: props.series,
-        },
         validConsumers: observabilityRuleCreationValidConsumers,
         useRuleProducer: true,
       }),
-    // eslint-disable-next-line react-hooks/exhaustive-deps
     [triggersActionsUI, onCloseFlyout]
   );
 
@@ -49,8 +38,5 @@ export function AlertFlyout(props: Props) {
 }
 
 export function PrefilledThresholdAlertFlyout({ onClose }: { onClose(): void }) {
-  const { metricThresholdPrefill } = useAlertPrefillContext();
-  const { groupBy, filterQuery, metrics } = metricThresholdPrefill;
-
-  return <AlertFlyout options={{ groupBy, filterQuery, metrics }} visible setVisible={onClose} />;
+  return <AlertFlyout visible setVisible={onClose} />;
 }
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx
index a5ed7cd38c580..5669f7a190f81 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx
@@ -12,10 +12,17 @@ import { i18n } from '@kbn/i18n';
 import { EuiLoadingChart, EuiText } from '@elastic/eui';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { sum, min as getMin, max as getMax } from 'lodash';
-import { GetLogAlertsChartPreviewDataSuccessResponsePayload } from '../../../../../common/custom_threshold_rule/types';
 import { formatNumber } from '../../../../../common/custom_threshold_rule/formatters/number';
 
-type Series = GetLogAlertsChartPreviewDataSuccessResponsePayload['data']['series'];
+interface Point {
+  timestamp: number;
+  value: number;
+}
+
+type Series = Array<{
+  id: string;
+  points: Point[];
+}>;
 
 export const NUM_BUCKETS = 20;
 
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx
index f58894e7918d9..e4580ee6dc68f 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx
@@ -12,14 +12,15 @@ import { decorateWithGlobalStorybookThemeProviders } from '../../../../test_util
 import {
   Aggregators,
   Comparator,
-  MetricExpressionParams,
+  CustomMetricExpressionParams,
 } from '../../../../../common/custom_threshold_rule/types';
+import { CUSTOM_AGGREGATOR } from '../../../../../common/custom_threshold_rule/constants';
 import { TimeUnitChar } from '../../../../../common';
 
 import { CustomEquationEditor, CustomEquationEditorProps } from './custom_equation_editor';
 import { aggregationType } from '../expression_row';
 import { MetricExpression } from '../../types';
-import { validateMetricThreshold } from '../validation';
+import { validateCustomThreshold } from '../validation';
 
 export default {
   title: 'app/Alerts/CustomEquationEditor',
@@ -67,8 +68,8 @@ const CustomEquationEditorTemplate: Story<CustomEquationEditorProps> = (args) =>
   );
 
   useEffect(() => {
-    const validationObject = validateMetricThreshold({
-      criteria: [expression as MetricExpressionParams],
+    const validationObject = validateCustomThreshold({
+      criteria: [expression as CustomMetricExpressionParams],
       searchConfiguration: {},
     });
     setErrors(validationObject.errors[0]);
@@ -89,9 +90,15 @@ export const CustomEquationEditorDefault = CustomEquationEditorTemplate.bind({})
 export const CustomEquationEditorWithEquationErrors = CustomEquationEditorTemplate.bind({});
 export const CustomEquationEditorWithFieldError = CustomEquationEditorTemplate.bind({});
 
-const BASE_ARGS = {
+const BASE_ARGS: Partial<CustomEquationEditorProps> = {
   expression: {
-    aggType: Aggregators.CUSTOM,
+    aggType: CUSTOM_AGGREGATOR,
+    metrics: [
+      {
+        name: 'A',
+        aggType: Aggregators.COUNT,
+      },
+    ],
     timeSize: 1,
     timeUnit: 'm' as TimeUnitChar,
     threshold: [1],
@@ -113,12 +120,16 @@ CustomEquationEditorDefault.args = {
 CustomEquationEditorWithEquationErrors.args = {
   ...BASE_ARGS,
   expression: {
-    ...BASE_ARGS.expression,
+    aggType: CUSTOM_AGGREGATOR,
     equation: 'Math.round(A / B)',
     metrics: [
       { name: 'A', aggType: Aggregators.AVERAGE, field: 'system.cpu.user.pct' },
       { name: 'B', aggType: Aggregators.MAX, field: 'system.cpu.cores' },
     ],
+    timeSize: 1,
+    timeUnit: 'm' as TimeUnitChar,
+    threshold: [1],
+    comparator: Comparator.GT,
   },
   errors: {
     equation:
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
index d0871dbfb75b2..164db3bac1682 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx
@@ -4,6 +4,7 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+
 import {
   EuiFieldText,
   EuiFormRow,
@@ -16,15 +17,13 @@ import {
   EuiPopover,
 } from '@elastic/eui';
 import React, { useState, useCallback, useMemo } from 'react';
-import { omit, range, first, xor, debounce } from 'lodash';
+import { range, first, xor, debounce } from 'lodash';
 import { IErrorObject } from '@kbn/triggers-actions-ui-plugin/public';
 import { FormattedMessage } from '@kbn/i18n-react';
 import { DataViewBase } from '@kbn/es-query';
 import { i18n } from '@kbn/i18n';
-import { OMITTED_AGGREGATIONS_FOR_CUSTOM_METRICS } from '../../../../../common/custom_threshold_rule/metrics_explorer';
 import {
   Aggregators,
-  CustomMetricAggTypes,
   CustomThresholdExpressionMetric,
 } from '../../../../../common/custom_threshold_rule/types';
 
@@ -45,7 +44,7 @@ export interface CustomEquationEditorProps {
 
 const NEW_METRIC = {
   name: 'A',
-  aggType: Aggregators.COUNT as CustomMetricAggTypes,
+  aggType: Aggregators.COUNT as Aggregators,
 };
 const MAX_VARIABLES = 26;
 const CHAR_CODE_FOR_A = 65;
@@ -111,14 +110,12 @@ export function CustomEquationEditor({
   const disableAdd = customMetrics?.length === MAX_VARIABLES;
   const disableDelete = customMetrics?.length === 1;
 
-  const filteredAggregationTypes = omit(aggregationTypes, OMITTED_AGGREGATIONS_FOR_CUSTOM_METRICS);
-
   const metricRows = customMetrics?.map((row) => (
     <MetricRowWithAgg
       key={row.name}
       name={row.name}
       aggType={row.aggType}
-      aggregationTypes={filteredAggregationTypes}
+      aggregationTypes={aggregationTypes}
       field={row.field}
       filter={row.filter}
       fields={fields}
@@ -161,6 +158,7 @@ export function CustomEquationEditor({
         <EuiPopover
           button={
             <EuiFormRow
+              data-test-subj="equationAndThreshold"
               fullWidth
               label={i18n.translate(
                 'xpack.observability.customThreshold.rule.alertFlyout.customEquationEditor.equationAndThreshold',
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
index 891c0ceaabbb5..51c4713fef264 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx
@@ -6,32 +6,29 @@
  */
 
 import {
-  EuiFormRow,
-  EuiFlexItem,
-  EuiFlexGroup,
-  EuiSelect,
   EuiComboBox,
   EuiComboBoxOptionOption,
-  EuiPopover,
   EuiExpression,
+  EuiFlexGroup,
+  EuiFlexItem,
+  EuiFormRow,
+  EuiPopover,
+  EuiSelect,
 } from '@elastic/eui';
-import React, { useMemo, useCallback, useState } from 'react';
-import { get } from 'lodash';
-import { i18n } from '@kbn/i18n';
-import { ValidNormalizedTypes } from '@kbn/triggers-actions-ui-plugin/public';
 import { DataViewBase } from '@kbn/es-query';
+import { i18n } from '@kbn/i18n';
 import { FormattedMessage } from '@kbn/i18n-react';
-import {
-  Aggregators,
-  CustomMetricAggTypes,
-} from '../../../../../common/custom_threshold_rule/types';
-import { MetricRowControls } from './metric_row_controls';
-import { NormalizedFields, MetricRowBaseProps } from './types';
-import { ClosablePopoverTitle } from '../closable_popover_title';
+import { ValidNormalizedTypes } from '@kbn/triggers-actions-ui-plugin/public';
+import { get } from 'lodash';
+import React, { useCallback, useMemo, useState } from 'react';
+import { Aggregators } from '../../../../../common/custom_threshold_rule/types';
 import { RuleFlyoutKueryBar } from '../../../rule_kql_filter/kuery_bar';
+import { ClosablePopoverTitle } from '../closable_popover_title';
+import { MetricRowControls } from './metric_row_controls';
+import { MetricRowBaseProps, NormalizedFields } from './types';
 
 interface MetricRowWithAggProps extends MetricRowBaseProps {
-  aggType?: CustomMetricAggTypes;
+  aggType?: Aggregators;
   field?: string;
   dataView: DataViewBase;
   filter?: string;
@@ -93,8 +90,8 @@ export function MetricRowWithAgg({
     (customAggType: string) => {
       onChange({
         name,
-        field,
-        aggType: customAggType as CustomMetricAggTypes,
+        field: customAggType === Aggregators.COUNT ? undefined : field,
+        aggType: customAggType as Aggregators,
       });
     },
     [name, field, onChange]
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx
index 8e1e6b590e601..9598aabcbf70f 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx
@@ -34,7 +34,7 @@ const defaultProps: Props = {
   chartProps: { theme: EUI_CHARTS_THEME_LIGHT.theme, baseTheme: LIGHT_THEME },
   comparator: Comparator.GT,
   id: 'componentId',
-  threshold: 90,
+  threshold: [90],
   title: 'Threshold breached',
   value: 93,
   valueFormatter: (d) => `${d}%`,
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.test.tsx
index a1d61e0ce28cd..7731792f7b322 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.test.tsx
@@ -19,7 +19,7 @@ describe('Threshold', () => {
       chartProps: { theme: EUI_CHARTS_THEME_LIGHT.theme, baseTheme: LIGHT_THEME },
       comparator: Comparator.GT,
       id: 'componentId',
-      threshold: 90,
+      threshold: [90],
       title: 'Threshold breached',
       value: 93,
       valueFormatter: (d) => `${d}%`,
@@ -41,4 +41,12 @@ describe('Threshold', () => {
     const component = renderComponent();
     expect(component.queryByTestId('thresholdRule-90-93')).toBeTruthy();
   });
+
+  it('shows component for between', () => {
+    const component = renderComponent({
+      comparator: Comparator.BETWEEN,
+      threshold: [90, 95],
+    });
+    expect(component.queryByTestId('thresholdRule-90-95-93')).toBeTruthy();
+  });
 });
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.tsx
index 0dad6a2d98a18..5f28676eb37b6 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_threshold.tsx
@@ -21,7 +21,7 @@ export interface Props {
   chartProps: ChartProps;
   comparator: Comparator | string;
   id: string;
-  threshold: number;
+  threshold: number[];
   title: string;
   value: number;
   valueFormatter: (d: number) => string;
@@ -48,7 +48,7 @@ export function Threshold({
         minWidth: '100%',
       }}
       hasShadow={false}
-      data-test-subj={`thresholdRule-${threshold}-${value}`}
+      data-test-subj={`thresholdRule-${threshold.join('-')}-${value}`}
     >
       <Chart>
         <Settings theme={theme} baseTheme={baseTheme} locale={i18n.getLocale()} />
@@ -63,7 +63,10 @@ export function Threshold({
                     {i18n.translate(
                       'xpack.observability.customThreshold.rule.thresholdExtraTitle',
                       {
-                        values: { comparator, threshold: valueFormatter(threshold) },
+                        values: {
+                          comparator,
+                          threshold: threshold.map((t) => valueFormatter(t)).join(' - '),
+                        },
                         defaultMessage: `Alert when {comparator} {threshold}`,
                       }
                     )}
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.test.tsx
index e9d6d2c726665..956391a3f29b7 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.test.tsx
@@ -5,16 +5,17 @@
  * 2.0.
  */
 
-import React, { ReactElement } from 'react';
-import { act } from 'react-dom/test-utils';
 import { LineAnnotation, RectAnnotation } from '@elastic/charts';
-import { DataViewBase } from '@kbn/es-query';
-import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers';
 // We are using this inside a `jest.mock` call. Jest requires dynamic dependencies to be prefixed with `mock`
 import { coreMock as mockCoreMock } from '@kbn/core/public/mocks';
+import { DataViewBase } from '@kbn/es-query';
+import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers';
+import React, { ReactElement } from 'react';
+import { act } from 'react-dom/test-utils';
+import { CUSTOM_AGGREGATOR } from '../../../../common/custom_threshold_rule/constants';
+import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
 import { MetricExpression } from '../types';
 import { ExpressionChart } from './expression_chart';
-import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
 
 const mockStartServices = mockCoreMock.createStart();
 
@@ -37,8 +38,8 @@ const mockResponse = {
   series: [{ id: 'Everything', rows: [], columns: [] }],
 };
 
-jest.mock('../hooks/use_metrics_explorer_chart_data', () => ({
-  useMetricsExplorerChartData: () => ({ loading: false, data: { pages: [mockResponse] } }),
+jest.mock('../hooks/use_expression_chart_data', () => ({
+  useExpressionChartData: () => ({ loading: false, data: { pages: [mockResponse] } }),
 }));
 
 describe('ExpressionChart', () => {
@@ -76,7 +77,13 @@ describe('ExpressionChart', () => {
 
   it('should display no data message', async () => {
     const expression: MetricExpression = {
-      aggType: Aggregators.AVERAGE,
+      aggType: CUSTOM_AGGREGATOR,
+      metrics: [
+        {
+          name: 'A',
+          aggType: Aggregators.COUNT,
+        },
+      ],
       timeSize: 1,
       timeUnit: 'm',
       sourceId: 'default',
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.tsx
index e5e9f532b07d0..c18b2860df95d 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_chart.tsx
@@ -25,18 +25,11 @@ import { first, last } from 'lodash';
 import moment from 'moment';
 import { i18n } from '@kbn/i18n';
 import { useKibana } from '../../../utils/kibana_react';
-import {
-  MetricsExplorerAggregation,
-  MetricsExplorerRow,
-} from '../../../../common/custom_threshold_rule/metrics_explorer';
 import { Color } from '../../../../common/custom_threshold_rule/color_palette';
-import {
-  MetricsExplorerChartType,
-  MetricsExplorerOptionsMetric,
-} from '../../../../common/custom_threshold_rule/types';
+import { MetricsExplorerChartType } from '../../../../common/custom_threshold_rule/types';
 import { MetricExpression, TimeRange } from '../types';
 import { createFormatterForMetric } from '../helpers/create_formatter_for_metric';
-import { useMetricsExplorerChartData } from '../hooks/use_metrics_explorer_chart_data';
+import { useExpressionChartData } from '../hooks/use_expression_chart_data';
 import {
   ChartContainer,
   LoadingState,
@@ -47,8 +40,8 @@ import {
 import { ThresholdAnnotations } from './criterion_preview_chart/threshold_annotations';
 import { CUSTOM_EQUATION } from '../i18n_strings';
 import { calculateDomain } from '../helpers/calculate_domain';
-import { getMetricId } from '../helpers/get_metric_id';
 import { MetricExplorerSeriesChart } from './series_chart';
+import { MetricsExplorerRow } from '../types';
 
 interface Props {
   expression: MetricExpression;
@@ -74,7 +67,7 @@ export function ExpressionChart({
   timeFieldName,
 }: Props) {
   const { charts, uiSettings } = useKibana().services;
-  const { isLoading, data } = useMetricsExplorerChartData(
+  const { isLoading, data } = useExpressionChartData(
     expression,
     derivedIndexPattern,
     filterQuery,
@@ -106,15 +99,7 @@ export function ExpressionChart({
 
   const firstTimestamp = first(firstSeries.rows)!.timestamp;
   const lastTimestamp = last(firstSeries.rows)!.timestamp;
-  const metric: MetricsExplorerOptionsMetric = {
-    field: expression.metric,
-    aggregation: expression.aggType as MetricsExplorerAggregation,
-    color: Color.color0,
-  };
-
-  if (metric.aggregation === 'custom') {
-    metric.label = expression.label || CUSTOM_EQUATION;
-  }
+  const name = expression.label || CUSTOM_EQUATION;
 
   const dateFormatter =
     firstTimestamp == null || lastTimestamp == null
@@ -130,13 +115,13 @@ export function ExpressionChart({
     rows: firstSeries.rows.map((row) => {
       const newRow: MetricsExplorerRow = { ...row };
       thresholds.forEach((thresholdValue, index) => {
-        newRow[getMetricId(metric, `threshold_${index}`)] = thresholdValue;
+        newRow[`metric_threshold_${index}`] = thresholdValue;
       });
       return newRow;
     }),
   };
 
-  const dataDomain = calculateDomain(series, [metric], false);
+  const dataDomain = calculateDomain(series);
   const domain = {
     max: Math.max(dataDomain.max, last(thresholds) || dataDomain.max) * 1.1,
     min: Math.min(dataDomain.min, first(thresholds) || dataDomain.min) * 0.9, // add 10% floor,
@@ -155,7 +140,8 @@ export function ExpressionChart({
         <Chart ref={chartRef}>
           <MetricExplorerSeriesChart
             type={chartType}
-            metric={metric}
+            name={name}
+            color={Color.color0}
             id="0"
             series={series}
             stack={false}
@@ -192,7 +178,7 @@ export function ExpressionChart({
           <Axis
             id={'values'}
             position={Position.Left}
-            tickFormat={createFormatterForMetric(metric)}
+            tickFormat={createFormatterForMetric(expression.metrics)}
             domain={domain}
           />
           <Tooltip
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx
index ed0c4c52f772c..8b0a4de92bd7e 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx
@@ -5,11 +5,12 @@
  * 2.0.
  */
 
-import { Comparator } from '../../../../common/custom_threshold_rule/types';
 import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers';
 import React from 'react';
 import { act } from 'react-dom/test-utils';
 
+import { CUSTOM_AGGREGATOR } from '../../../../common/custom_threshold_rule/constants';
+import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
 import { MetricExpression } from '../types';
 import { ExpressionRow } from './expression_row';
 
@@ -22,16 +23,10 @@ describe('ExpressionRow', () => {
           {
             name: 'system.cpu.user.pct',
             type: 'test',
-            searchable: true,
-            aggregatable: true,
-            displayable: true,
           },
           {
             name: 'system.load.1',
             type: 'test',
-            searchable: true,
-            aggregatable: true,
-            displayable: true,
           },
         ]}
         remove={() => {}}
@@ -61,33 +56,45 @@ describe('ExpressionRow', () => {
   }
 
   it('should display thresholds as a percentage for pct metrics', async () => {
-    const expression = {
-      metric: 'system.cpu.user.pct',
+    const expression: MetricExpression = {
+      aggType: CUSTOM_AGGREGATOR,
       comparator: Comparator.GT,
+      metrics: [
+        {
+          name: 'A',
+          aggType: Aggregators.COUNT,
+          field: 'system.cpu.user.pct',
+        },
+      ],
       threshold: [0.5],
       timeSize: 1,
       timeUnit: 'm',
-      aggType: 'custom',
     };
-    const { wrapper, update } = await setup(expression as MetricExpression);
+    const { wrapper, update } = await setup(expression);
     await update();
     const [valueMatch] =
       wrapper
         .html()
         .match(
-          '<span class="euiExpression__value css-uocz3u-euiExpression__value-columns">50</span>'
+          '<span class="euiExpression__value css-uocz3u-euiExpression__value-columns">50%</span>'
         ) ?? [];
     expect(valueMatch).toBeTruthy();
   });
 
   it('should display thresholds as a decimal for all other metrics', async () => {
     const expression = {
-      metric: 'system.load.1',
+      aggType: CUSTOM_AGGREGATOR,
       comparator: Comparator.GT,
+      metrics: [
+        {
+          name: 'A',
+          aggType: Aggregators.COUNT,
+          field: 'system.load.1',
+        },
+      ],
       threshold: [0.5],
       timeSize: 1,
       timeUnit: 'm',
-      aggType: 'custom',
     };
     const { wrapper } = await setup(expression as MetricExpression);
     const [valueMatch] =
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
index bfb2c2f4c33de..44cac014d25f7 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/expression_row.tsx
@@ -4,6 +4,7 @@
  * 2.0; you may not use this file except in compliance with the Elastic License
  * 2.0.
  */
+
 import {
   EuiButtonIcon,
   EuiFieldText,
@@ -11,7 +12,6 @@ import {
   EuiFlexItem,
   EuiFormRow,
   EuiSpacer,
-  EuiText,
 } from '@elastic/eui';
 import { i18n } from '@kbn/i18n';
 import React, { useCallback, useMemo, useState } from 'react';
@@ -22,10 +22,10 @@ import {
   IErrorObject,
   ThresholdExpression,
 } from '@kbn/triggers-actions-ui-plugin/public';
-import { DataViewBase } from '@kbn/es-query';
+import { DataViewBase, DataViewFieldBase } from '@kbn/es-query';
 import { debounce } from 'lodash';
-import { Comparator } from '../../../../common/custom_threshold_rule/types';
-import { AGGREGATION_TYPES, DerivedIndexPattern, MetricExpression } from '../types';
+import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
+import { MetricExpression } from '../types';
 import { CustomEquationEditor } from './custom_equation';
 import { CUSTOM_EQUATION, LABEL_HELP_MESSAGE, LABEL_LABEL } from '../i18n_strings';
 import { decimalToPct, pctToDecimal } from '../helpers/corrected_percent_convert';
@@ -42,7 +42,7 @@ const customComparators = {
 };
 
 interface ExpressionRowProps {
-  fields: DerivedIndexPattern['fields'];
+  fields: DataViewFieldBase[];
   expressionId: number;
   expression: MetricExpression;
   errors: IErrorObject;
@@ -74,9 +74,12 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = (props) => {
     canDelete,
   } = props;
 
-  const { metric, comparator = Comparator.GT, threshold = [] } = expression;
+  const { metrics, comparator = Comparator.GT, threshold = [] } = expression;
 
-  const isMetricPct = useMemo(() => Boolean(metric && metric.endsWith('.pct')), [metric]);
+  const isMetricPct = useMemo(
+    () => Boolean(metrics.length === 1 && metrics[0].field?.endsWith('.pct')),
+    [metrics]
+  );
   const [label, setLabel] = useState<string | undefined>(expression?.label || undefined);
 
   const updateComparator = useCallback(
@@ -217,17 +220,8 @@ const ThresholdElement: React.FC<{
         onChangeSelectedThreshold={updateThreshold}
         errors={errors}
         display="fullWidth"
+        unit={isMetricPct ? '%' : ''}
       />
-
-      {isMetricPct && (
-        <div
-          style={{
-            alignSelf: 'center',
-          }}
-        >
-          <EuiText size={'s'}>%</EuiText>
-        </div>
-      )}
     </>
   );
 };
@@ -242,7 +236,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
     ),
     fieldRequired: true,
     validNormalizedTypes: ['number', 'histogram'],
-    value: AGGREGATION_TYPES.AVERAGE,
+    value: Aggregators.AVERAGE,
   },
   max: {
     text: i18n.translate(
@@ -253,7 +247,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
     ),
     fieldRequired: true,
     validNormalizedTypes: ['number', 'date', 'histogram'],
-    value: AGGREGATION_TYPES.MAX,
+    value: Aggregators.MAX,
   },
   min: {
     text: i18n.translate(
@@ -264,7 +258,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
     ),
     fieldRequired: true,
     validNormalizedTypes: ['number', 'date', 'histogram'],
-    value: AGGREGATION_TYPES.MIN,
+    value: Aggregators.MIN,
   },
   cardinality: {
     text: i18n.translate(
@@ -274,20 +268,9 @@ export const aggregationType: { [key: string]: AggregationType } = {
       }
     ),
     fieldRequired: false,
-    value: AGGREGATION_TYPES.CARDINALITY,
+    value: Aggregators.CARDINALITY,
     validNormalizedTypes: ['number', 'string', 'ip', 'date'],
   },
-  rate: {
-    text: i18n.translate(
-      'xpack.observability.customThreshold.rule.alertFlyout.aggregationText.rate',
-      {
-        defaultMessage: 'Rate',
-      }
-    ),
-    fieldRequired: false,
-    value: AGGREGATION_TYPES.RATE,
-    validNormalizedTypes: ['number'],
-  },
   count: {
     text: i18n.translate(
       'xpack.observability.customThreshold.rule.alertFlyout.aggregationText.count',
@@ -296,7 +279,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
       }
     ),
     fieldRequired: false,
-    value: AGGREGATION_TYPES.COUNT,
+    value: Aggregators.COUNT,
     validNormalizedTypes: ['number'],
   },
   sum: {
@@ -307,35 +290,7 @@ export const aggregationType: { [key: string]: AggregationType } = {
       }
     ),
     fieldRequired: false,
-    value: AGGREGATION_TYPES.SUM,
-    validNormalizedTypes: ['number', 'histogram'],
-  },
-  p95: {
-    text: i18n.translate(
-      'xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p95',
-      {
-        defaultMessage: '95th Percentile',
-      }
-    ),
-    fieldRequired: false,
-    value: AGGREGATION_TYPES.P95,
-    validNormalizedTypes: ['number', 'histogram'],
-  },
-  p99: {
-    text: i18n.translate(
-      'xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p99',
-      {
-        defaultMessage: '99th Percentile',
-      }
-    ),
-    fieldRequired: false,
-    value: AGGREGATION_TYPES.P99,
-    validNormalizedTypes: ['number', 'histogram'],
-  },
-  custom: {
-    text: CUSTOM_EQUATION,
-    fieldRequired: false,
-    value: AGGREGATION_TYPES.CUSTOM,
+    value: Aggregators.SUM,
     validNormalizedTypes: ['number', 'histogram'],
   },
 };
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/group_by.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/group_by.tsx
index a0ea640e19366..199f5357fbea4 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/group_by.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/group_by.tsx
@@ -6,26 +6,26 @@
  */
 
 import { EuiComboBox } from '@elastic/eui';
+import { DataViewFieldBase } from '@kbn/es-query';
 import { i18n } from '@kbn/i18n';
 
 import React, { useCallback } from 'react';
-import { MetricsExplorerOptions } from '../hooks/use_metrics_explorer_options';
-import { DerivedIndexPattern } from '../types';
+
+export type MetricsExplorerFields = Array<DataViewFieldBase & { aggregatable: boolean }>;
+
+export type GroupBy = string | null | string[];
+export interface GroupByOptions {
+  groupBy: GroupBy;
+}
 
 interface Props {
-  options: MetricsExplorerOptions;
-  onChange: (groupBy: string | null | string[]) => void;
-  fields: DerivedIndexPattern['fields'];
+  options: GroupByOptions;
+  onChange: (groupBy: GroupBy) => void;
+  fields: MetricsExplorerFields;
   errorOptions?: string[];
 }
 
-export function MetricsExplorerGroupBy({
-  options,
-  onChange,
-  fields,
-  errorOptions,
-  ...rest
-}: Props) {
+export function GroupBy({ options, onChange, fields, errorOptions, ...rest }: Props) {
   const handleChange = useCallback(
     (selectedOptions: Array<{ label: string }>) => {
       const groupBy = selectedOptions.map((option) => option.label);
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/series_chart.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/series_chart.tsx
index c0e35c85580bc..b5049788dd2a2 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/series_chart.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/series_chart.tsx
@@ -14,21 +14,17 @@ import {
   AreaSeriesStyle,
   BarSeriesStyle,
 } from '@elastic/charts';
-import { MetricsExplorerSeries } from '../../../../common/custom_threshold_rule/metrics_explorer';
+import { MetricsExplorerSeries } from '../types';
 import { Color, colorTransformer } from '../../../../common/custom_threshold_rule/color_palette';
-import {
-  MetricsExplorerChartType,
-  MetricsExplorerOptionsMetric,
-} from '../../../../common/custom_threshold_rule/types';
+import { MetricsExplorerChartType } from '../../../../common/custom_threshold_rule/types';
 
-import { getMetricId } from '../helpers/get_metric_id';
 import { useKibanaTimeZoneSetting } from '../hooks/use_kibana_time_zone_setting';
-import { createMetricLabel } from '../helpers/create_metric_label';
 
 type NumberOrString = string | number;
 
 interface Props {
-  metric: MetricsExplorerOptionsMetric;
+  name: string;
+  color: Color;
   id: NumberOrString | NumberOrString[];
   series: MetricsExplorerSeries;
   type: MetricsExplorerChartType;
@@ -43,17 +39,15 @@ export function MetricExplorerSeriesChart(props: Props) {
   return <MetricsExplorerAreaChart {...props} />;
 }
 
-export function MetricsExplorerAreaChart({ metric, id, series, type, stack, opacity }: Props) {
+export function MetricsExplorerAreaChart({ name, color, id, series, type, stack, opacity }: Props) {
   const timezone = useKibanaTimeZoneSetting();
-  const color = (metric.color && colorTransformer(metric.color)) || colorTransformer(Color.color0);
+  const seriesColor = (color && colorTransformer(color)) || colorTransformer(Color.color0);
 
   const yAccessors = Array.isArray(id)
-    ? id.map((i) => getMetricId(metric, i)).slice(id.length - 1, id.length)
-    : [getMetricId(metric, id)];
+    ? id.map((i) => `metric_${i}`).slice(id.length - 1, id.length)
+    : [`metric_${id}`];
   const y0Accessors =
-    Array.isArray(id) && id.length > 1
-      ? id.map((i) => getMetricId(metric, i)).slice(0, 1)
-      : undefined;
+    Array.isArray(id) && id.length > 1 ? id.map((i) => `metric_${i}`).slice(0, 1) : undefined;
   const chartId = `series-${series.id}-${yAccessors.join('-')}`;
 
   const seriesAreaStyle: RecursivePartial<AreaSeriesStyle> = {
@@ -71,7 +65,7 @@ export function MetricsExplorerAreaChart({ metric, id, series, type, stack, opac
     <AreaSeries
       id={chartId}
       key={chartId}
-      name={createMetricLabel(metric)}
+      name={name}
       xScaleType={ScaleType.Time}
       yScaleType={ScaleType.Linear}
       xAccessor="timestamp"
@@ -80,24 +74,24 @@ export function MetricsExplorerAreaChart({ metric, id, series, type, stack, opac
       data={series.rows}
       stackAccessors={stack ? ['timestamp'] : void 0}
       areaSeriesStyle={seriesAreaStyle}
-      color={color}
+      color={seriesColor}
       timeZone={timezone}
     />
   );
 }
 
-export function MetricsExplorerBarChart({ metric, id, series, stack }: Props) {
+export function MetricsExplorerBarChart({ name, color, id, series, stack }: Props) {
   const timezone = useKibanaTimeZoneSetting();
-  const color = (metric.color && colorTransformer(metric.color)) || colorTransformer(Color.color0);
+  const seriesColor = (color && colorTransformer(color)) || colorTransformer(Color.color0);
 
   const yAccessors = Array.isArray(id)
-    ? id.map((i) => getMetricId(metric, i)).slice(id.length - 1, id.length)
-    : [getMetricId(metric, id)];
+    ? id.map((i) => `metric_${i}`).slice(id.length - 1, id.length)
+    : [`metric_${id}`];
   const chartId = `series-${series.id}-${yAccessors.join('-')}`;
 
   const seriesBarStyle: RecursivePartial<BarSeriesStyle> = {
     rectBorder: {
-      stroke: color,
+      stroke: seriesColor,
       strokeWidth: 1,
       visible: true,
     },
@@ -109,7 +103,7 @@ export function MetricsExplorerBarChart({ metric, id, series, stack }: Props) {
     <BarSeries
       id={chartId}
       key={chartId}
-      name={createMetricLabel(metric)}
+      name={name}
       xScaleType={ScaleType.Time}
       yScaleType={ScaleType.Linear}
       xAccessor="timestamp"
@@ -117,7 +111,7 @@ export function MetricsExplorerBarChart({ metric, id, series, stack }: Props) {
       data={series.rows}
       stackAccessors={stack ? ['timestamp'] : void 0}
       barSeriesStyle={seriesBarStyle}
-      color={color}
+      color={seriesColor}
       timeZone={timezone}
     />
   );
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/validation.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/validation.tsx
index d40a1f2852bcc..f360b415fa1be 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/components/validation.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/components/validation.tsx
@@ -11,25 +11,17 @@ import { i18n } from '@kbn/i18n';
 import { ValidationResult } from '@kbn/triggers-actions-ui-plugin/public';
 import { isEmpty } from 'lodash';
 import {
-  Aggregators,
   Comparator,
   CustomMetricExpressionParams,
-  MetricExpressionParams,
 } from '../../../../common/custom_threshold_rule/types';
 
 export const EQUATION_REGEX = /[^A-Z|+|\-|\s|\d+|\.|\(|\)|\/|\*|>|<|=|\?|\:|&|\!|\|]+/g;
 
-const isCustomMetricExpressionParams = (
-  subject: MetricExpressionParams
-): subject is CustomMetricExpressionParams => {
-  return subject.aggType === Aggregators.CUSTOM;
-};
-
-export function validateMetricThreshold({
+export function validateCustomThreshold({
   criteria,
   searchConfiguration,
 }: {
-  criteria: MetricExpressionParams[];
+  criteria: CustomMetricExpressionParams[];
   searchConfiguration: SerializedSearchSourceFields;
 }): ValidationResult {
   const validationResult = { errors: {} };
@@ -46,7 +38,6 @@ export function validateMetricThreshold({
         threshold0: string[];
         threshold1: string[];
       };
-      metric: string[];
       metricsError?: string;
       metrics: Record<string, { aggType?: string; field?: string; filter?: string }>;
       equation?: string;
@@ -187,66 +178,53 @@ export function validateMetricThreshold({
       );
     }
 
-    if (c.aggType !== 'count' && c.aggType !== 'custom' && !c.metric) {
-      errors[id].metric.push(
-        i18n.translate(
-          'xpack.observability.customThreshold.rule.alertFlyout.error.metricRequired',
-          {
-            defaultMessage: 'Metric is required.',
-          }
-        )
+    if (!c.metrics || (c.metrics && c.metrics.length < 1)) {
+      errors[id].metricsError = i18n.translate(
+        'xpack.observability.customThreshold.rule.alertFlyout.error.metricsError',
+        {
+          defaultMessage: 'You must define at least 1 custom metric',
+        }
       );
-    }
-
-    if (isCustomMetricExpressionParams(c)) {
-      if (!c.metrics || (c.metrics && c.metrics.length < 1)) {
-        errors[id].metricsError = i18n.translate(
-          'xpack.observability.customThreshold.rule.alertFlyout.error.metricsError',
-          {
-            defaultMessage: 'You must define at least 1 custom metric',
-          }
-        );
-      } else {
-        c.metrics.forEach((metric) => {
-          const customMetricErrors: { aggType?: string; field?: string; filter?: string } = {};
-          if (!metric.aggType) {
-            customMetricErrors.aggType = i18n.translate(
-              'xpack.observability.customThreshold.rule.alertFlyout.error.metrics.aggTypeRequired',
-              {
-                defaultMessage: 'Aggregation is required',
-              }
-            );
-          }
-          if (metric.aggType !== 'count' && !metric.field) {
-            customMetricErrors.field = i18n.translate(
-              'xpack.observability.customThreshold.rule.alertFlyout.error.metrics.fieldRequired',
-              {
-                defaultMessage: 'Field is required',
-              }
-            );
-          }
-          if (metric.aggType === 'count' && metric.filter) {
-            try {
-              fromKueryExpression(metric.filter);
-            } catch (e) {
-              customMetricErrors.filter = e.message;
+    } else {
+      c.metrics.forEach((metric) => {
+        const customMetricErrors: { aggType?: string; field?: string; filter?: string } = {};
+        if (!metric.aggType) {
+          customMetricErrors.aggType = i18n.translate(
+            'xpack.observability.customThreshold.rule.alertFlyout.error.metrics.aggTypeRequired',
+            {
+              defaultMessage: 'Aggregation is required',
             }
+          );
+        }
+        if (metric.aggType !== 'count' && !metric.field) {
+          customMetricErrors.field = i18n.translate(
+            'xpack.observability.customThreshold.rule.alertFlyout.error.metrics.fieldRequired',
+            {
+              defaultMessage: 'Field is required',
+            }
+          );
+        }
+        if (metric.aggType === 'count' && metric.filter) {
+          try {
+            fromKueryExpression(metric.filter);
+          } catch (e) {
+            customMetricErrors.filter = e.message;
           }
-          if (!isEmpty(customMetricErrors)) {
-            errors[id].metrics[metric.name] = customMetricErrors;
-          }
-        });
-      }
+        }
+        if (!isEmpty(customMetricErrors)) {
+          errors[id].metrics[metric.name] = customMetricErrors;
+        }
+      });
+    }
 
-      if (c.equation && c.equation.match(EQUATION_REGEX)) {
-        errors[id].equation = i18n.translate(
-          'xpack.observability.customThreshold.rule.alertFlyout.error.equation.invalidCharacters',
-          {
-            defaultMessage:
-              'The equation field only supports the following characters: A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =',
-          }
-        );
-      }
+    if (c.equation && c.equation.match(EQUATION_REGEX)) {
+      errors[id].equation = i18n.translate(
+        'xpack.observability.customThreshold.rule.alertFlyout.error.equation.invalidCharacters',
+        {
+          defaultMessage:
+            'The equation field only supports the following characters: A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =',
+        }
+      );
     }
   });
 
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx
index f11fc9db40b22..502f6a0ecd743 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx
@@ -13,7 +13,6 @@ import { queryClient } from '@kbn/osquery-plugin/public/query_client';
 import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers';
 
 import { Aggregators, Comparator } from '../../../common/custom_threshold_rule/types';
-import { MetricsExplorerMetric } from '../../../common/custom_threshold_rule/metrics_explorer';
 import { useKibana } from '../../utils/kibana_react';
 import { kibanaStartMock } from '../../utils/kibana_react.mock';
 import Expressions from './custom_threshold_rule_expression';
@@ -36,11 +35,7 @@ describe('Expression', () => {
     mockKibana();
   });
 
-  async function setup(currentOptions: {
-    metrics?: MetricsExplorerMetric[];
-    filterQuery?: string;
-    groupBy?: string;
-  }) {
+  async function setup() {
     const ruleParams = {
       criteria: [],
       groupBy: undefined,
@@ -64,7 +59,6 @@ describe('Expression', () => {
           setRuleParams={(key, value) => Reflect.set(ruleParams, key, value)}
           setRuleProperty={() => {}}
           metadata={{
-            currentOptions,
             adHocDataViewList: [],
           }}
           dataViews={dataViewMock}
@@ -84,41 +78,8 @@ describe('Expression', () => {
     return { wrapper, update, ruleParams };
   }
 
-  it('should prefill the alert using the context metadata', async () => {
-    const currentOptions = {
-      groupBy: 'host.hostname',
-      filterQuery: 'foo',
-      metrics: [
-        { aggregation: 'avg', field: 'system.load.1' },
-        { aggregation: 'cardinality', field: 'system.cpu.user.pct' },
-      ] as MetricsExplorerMetric[],
-    };
-    const { ruleParams } = await setup(currentOptions);
-    expect(ruleParams.groupBy).toBe('host.hostname');
-    expect(ruleParams.searchConfiguration.query.query).toBe('foo');
-    expect(ruleParams.criteria).toEqual([
-      {
-        metric: 'system.load.1',
-        comparator: Comparator.GT,
-        threshold: [],
-        timeSize: 1,
-        timeUnit: 'm',
-        aggType: 'avg',
-      },
-      {
-        metric: 'system.cpu.user.pct',
-        comparator: Comparator.GT,
-        threshold: [],
-        timeSize: 1,
-        timeUnit: 'm',
-        aggType: 'cardinality',
-      },
-    ]);
-  });
-
   it('should use default metrics', async () => {
-    const currentOptions = {};
-    const { ruleParams } = await setup(currentOptions);
+    const { ruleParams } = await setup();
     expect(ruleParams.criteria).toEqual([
       {
         metrics: [
@@ -137,13 +98,6 @@ describe('Expression', () => {
   });
 
   it('should show an error message when searchSource throws an error', async () => {
-    const currentOptions = {
-      groupBy: 'host.hostname',
-      metrics: [
-        { aggregation: 'avg', field: 'system.load.1' },
-        { aggregation: 'cardinality', field: 'system.cpu.user.pct' },
-      ] as MetricsExplorerMetric[],
-    };
     const errorMessage = 'Error in searchSource create';
     const kibanaMock = kibanaStartMock.startContract();
     useKibanaMock.mockReturnValue({
@@ -169,20 +123,13 @@ describe('Expression', () => {
         },
       },
     });
-    const { wrapper } = await setup(currentOptions);
+    const { wrapper } = await setup();
     expect(wrapper.find(`[data-test-subj="thresholdRuleExpressionError"]`).first().text()).toBe(
       errorMessage
     );
   });
 
   it('should show no timestamp error when selected data view does not have a timeField', async () => {
-    const currentOptions = {
-      groupBy: 'host.hostname',
-      metrics: [
-        { aggregation: 'avg', field: 'system.load.1' },
-        { aggregation: 'cardinality', field: 'system.cpu.user.pct' },
-      ] as MetricsExplorerMetric[],
-    };
     const mockedIndex = {
       id: 'c34a7c79-a88b-4b4a-ad19-72f6d24104e4',
       title: 'metrics-fake_hosts',
@@ -234,7 +181,7 @@ describe('Expression', () => {
         },
       },
     });
-    const { wrapper } = await setup(currentOptions);
+    const { wrapper } = await setup();
     expect(
       wrapper.find(`[data-test-subj="thresholdRuleDataViewErrorNoTimestamp"]`).first().text()
     ).toBe(
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx
index 26de96e3bd835..330d1c931cd09 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx
@@ -36,13 +36,13 @@ import {
 } from '@kbn/triggers-actions-ui-plugin/public';
 
 import { useKibana } from '../../utils/kibana_react';
+import { CUSTOM_AGGREGATOR } from '../../../common/custom_threshold_rule/constants';
 import { Aggregators, Comparator } from '../../../common/custom_threshold_rule/types';
 import { TimeUnitChar } from '../../../common/utils/formatters/duration';
 import { AlertContextMeta, AlertParams, MetricExpression } from './types';
 import { ExpressionChart } from './components/expression_chart';
 import { ExpressionRow } from './components/expression_row';
-import { MetricsExplorerGroupBy } from './components/group_by';
-import { MetricsExplorerOptions } from './hooks/use_metrics_explorer_options';
+import { MetricsExplorerFields, GroupBy } from './components/group_by';
 
 const FILTER_TYPING_DEBOUNCE_MS = 500;
 
@@ -51,8 +51,8 @@ type Props = Omit<
   'defaultActionGroupId' | 'actionGroups' | 'charts' | 'data' | 'unifiedSearch'
 >;
 
-export const defaultExpression = {
-  aggType: Aggregators.CUSTOM,
+export const defaultExpression: MetricExpression = {
+  aggType: CUSTOM_AGGREGATOR,
   comparator: Comparator.GT,
   metrics: [
     {
@@ -63,7 +63,7 @@ export const defaultExpression = {
   threshold: [1000],
   timeSize: 1,
   timeUnit: 'm',
-} as MetricExpression;
+};
 
 // eslint-disable-next-line import/no-default-export
 export default function Expressions(props: Props) {
@@ -152,15 +152,7 @@ export default function Expressions(props: Props) {
       setTimeSize(ruleParams.criteria[0].timeSize);
       setTimeUnit(ruleParams.criteria[0].timeUnit);
     } else {
-      preFillAlertCriteria();
-    }
-
-    if (!ruleParams.filterQuery) {
-      preFillAlertFilter();
-    }
-
-    if (!ruleParams.groupBy) {
-      preFillAlertGroupBy();
+      setRuleParams('criteria', [defaultExpression]);
     }
 
     if (typeof ruleParams.alertOnNoData === 'undefined') {
@@ -171,17 +163,6 @@ export default function Expressions(props: Props) {
     }
   }, [metadata]); // eslint-disable-line react-hooks/exhaustive-deps
 
-  const options = useMemo<MetricsExplorerOptions>(() => {
-    if (metadata?.currentOptions?.metrics) {
-      return metadata.currentOptions as MetricsExplorerOptions;
-    } else {
-      return {
-        metrics: [],
-        aggregation: 'count',
-      };
-    }
-  }, [metadata]);
-
   const onSelectDataView = useCallback(
     (newDataView: DataView) => {
       const ruleCriteria = (ruleParams.criteria ? ruleParams.criteria.slice() : []).map(
@@ -282,67 +263,11 @@ export default function Expressions(props: Props) {
     [ruleParams.criteria, setRuleParams]
   );
 
-  const preFillAlertCriteria = useCallback(() => {
-    const md = metadata;
-    if (md?.currentOptions?.metrics?.length) {
-      setRuleParams(
-        'criteria',
-        md.currentOptions.metrics.map((metric) => ({
-          metric: metric.field,
-          comparator: Comparator.GT,
-          threshold: [],
-          timeSize,
-          timeUnit,
-          aggType: metric.aggregation,
-        })) as AlertParams['criteria']
-      );
-    } else {
-      setRuleParams('criteria', [defaultExpression]);
-    }
-  }, [metadata, setRuleParams, timeSize, timeUnit]);
-
-  const preFillAlertFilter = useCallback(() => {
-    const md = metadata;
-    if (md && md.currentOptions?.filterQuery) {
-      setRuleParams('searchConfiguration', {
-        ...ruleParams.searchConfiguration,
-        query: {
-          query: md.currentOptions.filterQuery,
-          language: 'kuery',
-        },
-      });
-    } else if (md && md.currentOptions?.groupBy && md.series) {
-      const { groupBy } = md.currentOptions;
-      const query = Array.isArray(groupBy)
-        ? groupBy.map((field, index) => `${field}: "${md.series?.keys?.[index]}"`).join(' and ')
-        : `${groupBy}: "${md.series.id}"`;
-      setRuleParams('searchConfiguration', {
-        ...ruleParams.searchConfiguration,
-        query: {
-          query,
-          language: 'kuery',
-        },
-      });
-    }
-  }, [metadata, setRuleParams, ruleParams.searchConfiguration]);
-
-  const preFillAlertGroupBy = useCallback(() => {
-    const md = metadata;
-    if (md && md.currentOptions?.groupBy && !md.series) {
-      setRuleParams('groupBy', md.currentOptions.groupBy);
-    }
-  }, [metadata, setRuleParams]);
-
   const hasGroupBy = useMemo(
     () => ruleParams.groupBy && ruleParams.groupBy.length > 0,
     [ruleParams.groupBy]
   );
 
-  const disableNoData = useMemo(
-    () => ruleParams.criteria?.every((c) => c.aggType === Aggregators.COUNT),
-    [ruleParams.criteria]
-  );
-
   // Test to see if any of the group fields in groupBy are already filtered down to a single
   // group by the filterQuery. If this is the case, then a groupBy is unnecessary, as it would only
   // ever produce one group instance
@@ -477,7 +402,7 @@ export default function Expressions(props: Props) {
               )}
               <ExpressionRow
                 canDelete={(ruleParams.criteria && ruleParams.criteria.length > 1) || false}
-                fields={derivedIndexPattern.fields as any}
+                fields={derivedIndexPattern.fields}
                 remove={removeExpression}
                 addExpression={addExpression}
                 key={idx} // idx's don't usually make good key's but here the index has semantic meaning
@@ -543,12 +468,11 @@ export default function Expressions(props: Props) {
         fullWidth
         display="rowCompressed"
       >
-        <MetricsExplorerGroupBy
+        <GroupBy
           onChange={onGroupByChange}
-          fields={derivedIndexPattern.fields as any}
+          fields={derivedIndexPattern.fields as MetricsExplorerFields}
           options={{
-            ...options,
-            groupBy: ruleParams.groupBy || undefined,
+            groupBy: ruleParams.groupBy || null,
           }}
           errorOptions={redundantFilterGroupBy}
         />
@@ -591,22 +515,19 @@ export default function Expressions(props: Props) {
               }
             )}{' '}
             <EuiToolTip
-              content={
-                (disableNoData ? `${docCountNoDataDisabledHelpText} ` : '') +
-                i18n.translate(
-                  'xpack.observability.customThreshold.rule.alertFlyout.groupDisappearHelpText',
-                  {
-                    defaultMessage:
-                      'Enable this to trigger the action if a previously detected group begins to report no results. This is not recommended for dynamically scaling infrastructures that may rapidly start and stop nodes automatically.',
-                  }
-                )
-              }
+              content={i18n.translate(
+                'xpack.observability.customThreshold.rule.alertFlyout.groupDisappearHelpText',
+                {
+                  defaultMessage:
+                    'Enable this to trigger the action if a previously detected group begins to report no results. This is not recommended for dynamically scaling infrastructures that may rapidly start and stop nodes automatically.',
+                }
+              )}
             >
               <EuiIcon type="questionInCircle" color="subdued" />
             </EuiToolTip>
           </>
         }
-        disabled={disableNoData || !hasGroupBy}
+        disabled={!hasGroupBy}
         checked={Boolean(hasGroupBy && ruleParams.alertOnGroupDisappear)}
         onChange={(e) => setRuleParams('alertOnGroupDisappear', e.target.checked)}
       />
@@ -614,10 +535,3 @@ export default function Expressions(props: Props) {
     </>
   );
 }
-
-const docCountNoDataDisabledHelpText = i18n.translate(
-  'xpack.observability.customThreshold.rule.alertFlyout.docCountNoDataDisabledHelpText',
-  {
-    defaultMessage: '[This setting is not applicable to the Document Count aggregator.]',
-  }
-);
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts
index 16d0d54d825c1..8de019598bc6e 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts
@@ -5,10 +5,8 @@
  * 2.0.
  */
 
-import { min, max, sum, isNumber } from 'lodash';
-import { MetricsExplorerSeries } from '../../../../common/custom_threshold_rule/metrics_explorer';
-import { MetricsExplorerOptionsMetric } from '../../../../common/custom_threshold_rule/types';
-import { getMetricId } from './get_metric_id';
+import { min, max, isNumber } from 'lodash';
+import { MetricsExplorerSeries } from '../types';
 
 const getMin = (values: Array<number | null>) => {
   const minValue = min(values);
@@ -20,24 +18,7 @@ const getMax = (values: Array<number | null>) => {
   return isNumber(maxValue) && Number.isFinite(maxValue) ? maxValue : undefined;
 };
 
-export const calculateDomain = (
-  series: MetricsExplorerSeries,
-  metrics: MetricsExplorerOptionsMetric[],
-  stacked = false
-): { min: number; max: number } => {
-  const values = series.rows
-    .reduce((acc, row) => {
-      const rowValues = metrics
-        .map((m, index) => {
-          return (row[getMetricId(m, index)] as number) || null;
-        })
-        .filter((v) => isNumber(v));
-      const minValue = getMin(rowValues);
-      // For stacked domains we want to add 10% head room so the charts have
-      // enough room to draw the 2 pixel line as well.
-      const maxValue = stacked ? sum(rowValues) * 1.1 : getMax(rowValues);
-      return acc.concat([minValue || null, maxValue || null]);
-    }, [] as Array<number | null>)
-    .filter((v) => isNumber(v));
+export const calculateDomain = (series: MetricsExplorerSeries): { min: number; max: number } => {
+  const values = series.rows.map((row) => row.metric_0 as number | null).filter((v) => isNumber(v));
   return { min: getMin(values) || 0, max: getMax(values) || 0 };
 };
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts
index 1423413e98388..97087797094d0 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts
@@ -6,21 +6,15 @@
  */
 
 import numeral from '@elastic/numeral';
-import { InfraFormatterType } from '../../../../common/custom_threshold_rule/types';
+import { CustomThresholdExpressionMetric } from '../../../../common/custom_threshold_rule/types';
 import { createFormatter } from '../../../../common/custom_threshold_rule/formatters';
-import { MetricsExplorerMetric } from '../../../../common/custom_threshold_rule/metrics_explorer';
 import { metricToFormat } from './metric_to_format';
 
-export const createFormatterForMetric = (metric?: MetricsExplorerMetric) => {
-  if (metric?.aggregation === 'custom') {
-    return (input: number) => numeral(input).format('0.[0000]');
-  }
-  if (metric && metric.field) {
-    const format = metricToFormat(metric);
-    if (format === InfraFormatterType.bits && metric.aggregation === 'rate') {
-      return createFormatter(InfraFormatterType.bits, '{{value}}/s');
-    }
+export const createFormatterForMetric = (metrics: CustomThresholdExpressionMetric[]) => {
+  if (metrics.length === 1) {
+    const format = metricToFormat(metrics[0]);
     return createFormatter(format);
   }
-  return createFormatter(InfraFormatterType.number);
+
+  return (input: number) => numeral(input).format('0.[0000]');
 };
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts
index 0da0e765d724a..000058abc2f9b 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts
@@ -5,38 +5,36 @@
  * 2.0.
  */
 
-import { MetricsExplorerMetric } from '../../../../common/custom_threshold_rule/metrics_explorer';
+import {
+  Aggregators,
+  CustomThresholdExpressionMetric,
+} from '../../../../common/custom_threshold_rule/types';
 import { createFormatterForMetric } from './create_formatter_for_metric';
 
 describe('createFormatterForMetric()', () => {
   it('should just work for count', () => {
-    const metric: MetricsExplorerMetric = { aggregation: 'count' };
+    const metric: CustomThresholdExpressionMetric[] = [{ name: 'A', aggType: Aggregators.COUNT }];
     const format = createFormatterForMetric(metric);
     expect(format(1291929)).toBe('1,291,929');
   });
   it('should just work for numerics', () => {
-    const metric: MetricsExplorerMetric = { aggregation: 'avg', field: 'system.load.1' };
+    const metric: CustomThresholdExpressionMetric[] = [
+      { name: 'A', aggType: Aggregators.AVERAGE, field: 'system.load.1' },
+    ];
     const format = createFormatterForMetric(metric);
     expect(format(1000.2)).toBe('1,000.2');
   });
   it('should just work for percents', () => {
-    const metric: MetricsExplorerMetric = { aggregation: 'avg', field: 'system.cpu.total.pct' };
+    const metric: CustomThresholdExpressionMetric[] = [
+      { name: 'A', aggType: Aggregators.AVERAGE, field: 'system.cpu.total.pct' },
+    ];
     const format = createFormatterForMetric(metric);
     expect(format(0.349)).toBe('34.9%');
   });
-  it('should just work for rates', () => {
-    const metric: MetricsExplorerMetric = {
-      aggregation: 'rate',
-      field: 'host.network.egress.bytes',
-    };
-    const format = createFormatterForMetric(metric);
-    expect(format(103929292)).toBe('831.4 Mbit/s');
-  });
   it('should just work for bytes', () => {
-    const metric: MetricsExplorerMetric = {
-      aggregation: 'avg',
-      field: 'host.network.egress.bytes',
-    };
+    const metric: CustomThresholdExpressionMetric[] = [
+      { name: 'A', aggType: Aggregators.AVERAGE, field: 'host.network.egress.bytes' },
+    ];
     const format = createFormatterForMetric(metric);
     expect(format(103929292)).toBe('103.9 MB');
   });
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.test.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.test.ts
deleted file mode 100644
index 70c4959aafc19..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.test.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { MetricsExplorerMetric } from '../../../../common/custom_threshold_rule/metrics_explorer';
-import { createMetricLabel } from './create_metric_label';
-
-describe('createMetricLabel()', () => {
-  it('should work with metrics with fields', () => {
-    const metric: MetricsExplorerMetric = { aggregation: 'avg', field: 'system.load.1' };
-    expect(createMetricLabel(metric)).toBe('avg(system.load.1)');
-  });
-  it('should work with document count', () => {
-    const metric: MetricsExplorerMetric = { aggregation: 'count' };
-    expect(createMetricLabel(metric)).toBe('count()');
-  });
-});
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.ts
deleted file mode 100644
index 1b3496c07cd43..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/create_metric_label.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { MetricsExplorerOptionsMetric } from '../hooks/use_metrics_explorer_options';
-
-export const createMetricLabel = (metric: MetricsExplorerOptionsMetric) => {
-  if (metric.label) {
-    return metric.label;
-  }
-  return `${metric.aggregation}(${metric.field || ''})`;
-};
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/get_metric_id.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/get_metric_id.ts
deleted file mode 100644
index a60af79ac6e2d..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/get_metric_id.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { MetricsExplorerOptionsMetric } from '../../../../common/custom_threshold_rule/types';
-
-export const getMetricId = (metric: MetricsExplorerOptionsMetric, index: string | number) => {
-  return `metric_${index}`;
-};
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts
index 2a7d28b72b7c7..67710c49c2acd 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts
@@ -6,18 +6,17 @@
  */
 
 import { last } from 'lodash';
-import { InfraFormatterType } from '../../../../common/custom_threshold_rule/types';
-import { MetricsExplorerMetric } from '../../../../common/custom_threshold_rule/metrics_explorer';
+import {
+  CustomThresholdExpressionMetric,
+  InfraFormatterType,
+} from '../../../../common/custom_threshold_rule/types';
 
-export const metricToFormat = (metric?: MetricsExplorerMetric) => {
+export const metricToFormat = (metric?: CustomThresholdExpressionMetric) => {
   if (metric && metric.field) {
     const suffix = last(metric.field.split(/\./));
     if (suffix === 'pct') {
       return InfraFormatterType.percent;
     }
-    if (suffix === 'bytes' && metric.aggregation === 'rate') {
-      return InfraFormatterType.bits;
-    }
     if (suffix === 'bytes') {
       return InfraFormatterType.bytes;
     }
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/helpers/use_alert_prefill.ts b/x-pack/plugins/observability/public/components/custom_threshold/helpers/use_alert_prefill.ts
deleted file mode 100644
index 3f659b1041762..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/helpers/use_alert_prefill.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import createContainer from 'constate';
-import { useMetricThresholdAlertPrefill } from '../hooks/use_metric_threshold_alert_prefill';
-
-const useAlertPrefill = () => {
-  const metricThresholdPrefill = useMetricThresholdAlertPrefill();
-  return { metricThresholdPrefill };
-};
-
-export const [AlertPrefillProvider, useAlertPrefillContext] = createContainer(useAlertPrefill);
diff --git a/x-pack/plugins/observability/public/utils/metrics_explorer.ts b/x-pack/plugins/observability/public/components/custom_threshold/hooks/mocks/metrics_explorer.ts
similarity index 69%
rename from x-pack/plugins/observability/public/utils/metrics_explorer.ts
rename to x-pack/plugins/observability/public/components/custom_threshold/hooks/mocks/metrics_explorer.ts
index 136df77131811..79e281717ab84 100644
--- a/x-pack/plugins/observability/public/utils/metrics_explorer.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/hooks/mocks/metrics_explorer.ts
@@ -6,19 +6,13 @@
  */
 
 import {
+  ExpressionOptions,
+  ExpressionTimestampsRT,
   MetricsExplorerResponse,
   MetricsExplorerSeries,
-} from '../../common/custom_threshold_rule/metrics_explorer';
-import {
-  MetricsExplorerChartOptions,
-  MetricsExplorerChartType,
-  MetricsExplorerOptions,
-  MetricsExplorerTimeOptions,
-  MetricsExplorerTimestampsRT,
-  MetricsExplorerYAxisMode,
-} from '../components/custom_threshold/hooks/use_metrics_explorer_options';
+} from '../../types';
 
-export const options: MetricsExplorerOptions = {
+export const options: ExpressionOptions = {
   limit: 3,
   groupBy: 'host.name',
   aggregation: 'avg',
@@ -41,22 +35,9 @@ export const source = {
   },
   anomalyThreshold: 20,
 };
-
-export const chartOptions: MetricsExplorerChartOptions = {
-  type: MetricsExplorerChartType.line,
-  yAxisMode: MetricsExplorerYAxisMode.fromZero,
-  stack: false,
-};
-
 export const derivedIndexPattern = { title: 'metricbeat-*', fields: [] };
 
-export const timeRange: MetricsExplorerTimeOptions = {
-  from: 'now-1h',
-  to: 'now',
-  interval: '>=10s',
-};
-
-export const mockedTimestamps: MetricsExplorerTimestampsRT = {
+export const mockedTimestamps: ExpressionTimestampsRT = {
   fromTimestamp: 1678376367166,
   toTimestamp: 1678379973620,
   interval: '>=10s',
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_chart_data.ts b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_chart_data.ts
similarity index 58%
rename from x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_chart_data.ts
rename to x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_chart_data.ts
index ef810bc8857d9..1f135473c0866 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_chart_data.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_chart_data.ts
@@ -8,20 +8,24 @@
 import DateMath from '@kbn/datemath';
 import { DataViewBase } from '@kbn/es-query';
 import { useMemo } from 'react';
-import { MetricExplorerCustomMetricAggregations } from '../../../../common/custom_threshold_rule/metrics_explorer';
-import { CustomThresholdExpressionMetric } from '../../../../common/custom_threshold_rule/types';
-import { MetricExpression, TimeRange } from '../types';
-import { useMetricsExplorerData } from './use_metrics_explorer_data';
-
 import {
-  MetricsExplorerOptions,
-  MetricsExplorerTimestampsRT,
-} from './use_metrics_explorer_options';
+  Aggregators,
+  AggType,
+  CustomThresholdExpressionMetric,
+} from '../../../../common/custom_threshold_rule/types';
+import {
+  ExpressionOptions,
+  ExpressionTimestampsRT,
+  MetricExpression,
+  MetricsExplorerMetricRT,
+  TimeRange,
+} from '../types';
+import { useExpressionData } from './use_expression_data';
 
 const DEFAULT_TIME_RANGE = {};
 const DEFAULT_TIMESTAMP = '@timestamp';
 
-export const useMetricsExplorerChartData = (
+export const useExpressionChartData = (
   expression: MetricExpression,
   derivedIndexPattern: DataViewBase,
   filterQuery?: string,
@@ -31,7 +35,7 @@ export const useMetricsExplorerChartData = (
 ) => {
   const { timeSize, timeUnit } = expression || { timeSize: 1, timeUnit: 'm' };
 
-  const options: MetricsExplorerOptions = useMemo(
+  const options: ExpressionOptions = useMemo(
     () => ({
       limit: 1,
       forceInterval: true,
@@ -39,29 +43,28 @@ export const useMetricsExplorerChartData = (
       groupBy,
       filterQuery,
       metrics: [
-        expression.aggType === 'custom'
-          ? {
-              aggregation: 'custom',
-              custom_metrics:
-                expression?.metrics?.map(mapMetricThresholdMetricToMetricsExplorerMetric) ?? [],
-              equation: expression.equation,
-            }
-          : { field: expression.metric, aggregation: expression.aggType },
+        {
+          aggregation: 'custom',
+          // Infra API expects this field to be custom_metrics
+          // since the same field is used in the metric threshold rule
+          custom_metrics:
+            expression?.metrics?.map(mapCustomThresholdMetricToMetricsExplorerMetric) ?? [],
+          equation: expression.equation,
+        },
       ],
-      aggregation: expression.aggType || 'avg',
+      aggregation: expression.aggType || 'custom',
     }),
     // eslint-disable-next-line react-hooks/exhaustive-deps
     [
       expression.aggType,
       expression.equation,
-      expression.metric,
       // eslint-disable-next-line react-hooks/exhaustive-deps
       JSON.stringify(expression.metrics),
       filterQuery,
       groupBy,
     ]
   );
-  const timestamps: MetricsExplorerTimestampsRT = useMemo(() => {
+  const timestamps: ExpressionTimestampsRT = useMemo(() => {
     const from = timeRange.from ?? `now-${(timeSize || 1) * 20}${timeUnit}`;
     const to = timeRange.to ?? 'now';
     const fromTimestamp = DateMath.parse(from)!.valueOf();
@@ -74,23 +77,23 @@ export const useMetricsExplorerChartData = (
     };
   }, [timeRange.from, timeRange.to, timeSize, timeUnit, timeFieldName]);
 
-  return useMetricsExplorerData(options, derivedIndexPattern, timestamps);
+  return useExpressionData(options, derivedIndexPattern, timestamps);
 };
 
-const mapMetricThresholdMetricToMetricsExplorerMetric = (
+const mapCustomThresholdMetricToMetricsExplorerMetric = (
   metric: CustomThresholdExpressionMetric
-) => {
+): MetricsExplorerMetricRT => {
   if (metric.aggType === 'count') {
     return {
       name: metric.name,
-      aggregation: 'count' as MetricExplorerCustomMetricAggregations,
+      aggregation: Aggregators.COUNT,
       filter: metric.filter,
     };
   }
 
   return {
     name: metric.name,
-    aggregation: metric.aggType as MetricExplorerCustomMetricAggregations,
+    aggregation: metric.aggType as AggType,
     field: metric.field,
   };
 };
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_data.ts
similarity index 84%
rename from x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts
rename to x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_data.ts
index 59857990b906e..e6058a124e086 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_expression_data.ts
@@ -9,22 +9,19 @@ import { DataViewBase } from '@kbn/es-query';
 import { useInfiniteQuery } from '@tanstack/react-query';
 
 import { useKibana } from '@kbn/kibana-react-plugin/public';
+import { convertKueryToElasticSearchQuery } from '../helpers/kuery';
+import { decodeOrThrow } from '../helpers/runtime_types';
 import {
+  ExpressionOptions,
+  ExpressionTimestampsRT,
   MetricsExplorerResponse,
   metricsExplorerResponseRT,
-} from '../../../../common/custom_threshold_rule/metrics_explorer';
-
-import {
-  MetricsExplorerOptions,
-  MetricsExplorerTimestampsRT,
-} from './use_metrics_explorer_options';
-import { convertKueryToElasticSearchQuery } from '../helpers/kuery';
-import { decodeOrThrow } from '../helpers/runtime_types';
+} from '../types';
 
-export function useMetricsExplorerData(
-  options: MetricsExplorerOptions,
+export function useExpressionData(
+  options: ExpressionOptions,
   derivedIndexPattern: DataViewBase,
-  { fromTimestamp, toTimestamp, interval, timeFieldName }: MetricsExplorerTimestampsRT,
+  { fromTimestamp, toTimestamp, interval, timeFieldName }: ExpressionTimestampsRT,
   enabled = true
 ) {
   const { http } = useKibana().services;
@@ -51,7 +48,7 @@ export function useMetricsExplorerData(
         body: JSON.stringify({
           forceInterval: options.forceInterval,
           dropLastBucket: options.dropLastBucket != null ? options.dropLastBucket : true,
-          metrics: options.aggregation === 'count' ? [{ aggregation: 'count' }] : options.metrics,
+          metrics: options.metrics,
           groupBy: options.groupBy,
           afterKey,
           limit: options.limit,
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts
index 6314ddb20a115..c54e7a075956a 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts
@@ -7,19 +7,27 @@
 
 import { isEqual } from 'lodash';
 import { useState } from 'react';
-import { MetricsExplorerMetric } from '../../../../common/custom_threshold_rule/metrics_explorer';
+import {
+  Aggregators,
+  CustomThresholdExpressionMetric,
+} from '../../../../common/custom_threshold_rule/types';
 
-export interface MetricThresholdPrefillOptions {
-  groupBy: string | string[] | undefined;
+export interface CustomThresholdPrefillOptions {
+  groupBy?: string[];
   filterQuery: string | undefined;
-  metrics: MetricsExplorerMetric[];
+  metrics: CustomThresholdExpressionMetric[];
 }
 
-export const useMetricThresholdAlertPrefill = () => {
-  const [prefillOptionsState, setPrefillOptionsState] = useState<MetricThresholdPrefillOptions>({
+export const useCustomThresholdAlertPrefill = () => {
+  const [prefillOptionsState, setPrefillOptionsState] = useState<CustomThresholdPrefillOptions>({
     groupBy: undefined,
     filterQuery: undefined,
-    metrics: [],
+    metrics: [
+      {
+        name: 'A',
+        aggType: Aggregators.COUNT,
+      },
+    ],
   });
 
   const { groupBy, filterQuery, metrics } = prefillOptionsState;
@@ -28,7 +36,7 @@ export const useMetricThresholdAlertPrefill = () => {
     groupBy,
     filterQuery,
     metrics,
-    setPrefillOptions(newState: MetricThresholdPrefillOptions) {
+    setPrefillOptions(newState: CustomThresholdPrefillOptions) {
       if (!isEqual(newState, prefillOptionsState)) setPrefillOptionsState(newState);
     },
   };
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.test.tsx
index b0d846ce9b93d..b7e750875a5ff 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.test.tsx
+++ b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.test.tsx
@@ -6,24 +6,19 @@
  */
 
 import React from 'react';
+import { DataViewBase } from '@kbn/es-query';
 import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
-import { useMetricsExplorerData } from './use_metrics_explorer_data';
-
 import { renderHook } from '@testing-library/react-hooks';
 import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
-
-import {
-  MetricsExplorerOptions,
-  MetricsExplorerTimestampsRT,
-} from './use_metrics_explorer_options';
-import { DataViewBase } from '@kbn/es-query';
+import { ExpressionOptions, ExpressionTimestampsRT } from '../types';
+import { useExpressionData } from './use_expression_data';
 import {
   createSeries,
   derivedIndexPattern,
   mockedTimestamps,
   options,
   resp,
-} from '../../../utils/metrics_explorer';
+} from './mocks/metrics_explorer';
 
 const mockedFetch = jest.fn();
 
@@ -51,10 +46,10 @@ const renderUseMetricsExplorerDataHook = () => {
   };
   return renderHook(
     (props: {
-      options: MetricsExplorerOptions;
+      options: ExpressionOptions;
       derivedIndexPattern: DataViewBase;
-      timestamps: MetricsExplorerTimestampsRT;
-    }) => useMetricsExplorerData(props.options, props.derivedIndexPattern, props.timestamps),
+      timestamps: ExpressionTimestampsRT;
+    }) => useExpressionData(props.options, props.derivedIndexPattern, props.timestamps),
     {
       initialProps: {
         options,
@@ -72,7 +67,7 @@ jest.mock('../helpers/kuery', () => {
   };
 });
 
-describe('useMetricsExplorerData Hook', () => {
+describe('useExpressionData Hook', () => {
   afterEach(() => {
     queryClient.clear();
   });
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.test.tsx
deleted file mode 100644
index 9def4a44d6a8e..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.test.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { renderHook, act } from '@testing-library/react-hooks';
-import {
-  useMetricsExplorerOptions,
-  MetricsExplorerOptions,
-  MetricsExplorerTimeOptions,
-  DEFAULT_OPTIONS,
-  DEFAULT_TIMERANGE,
-} from './use_metrics_explorer_options';
-
-let PREFILL: Record<string, any> = {};
-jest.mock('../helpers/use_alert_prefill', () => ({
-  useAlertPrefillContext: () => ({
-    metricThresholdPrefill: {
-      setPrefillOptions(opts: Record<string, any>) {
-        PREFILL = opts;
-      },
-    },
-  }),
-}));
-
-jest.mock('./use_kibana_timefilter_time', () => ({
-  useKibanaTimefilterTime: (defaults: { from: string; to: string }) => [() => defaults],
-  useSyncKibanaTimeFilterTime: () => [() => {}],
-}));
-
-const renderUseMetricsExplorerOptionsHook = () => renderHook(() => useMetricsExplorerOptions());
-
-interface LocalStore {
-  [key: string]: string;
-}
-
-interface LocalStorage {
-  getItem: (key: string) => string | null;
-  setItem: (key: string, value: string) => void;
-}
-
-const STORE: LocalStore = {};
-const localStorageMock: LocalStorage = {
-  getItem: (key: string) => {
-    return STORE[key] || null;
-  },
-  setItem: (key: string, value: any) => {
-    STORE[key] = value.toString();
-  },
-};
-
-Object.defineProperty(window, 'localStorage', {
-  value: localStorageMock,
-});
-
-describe('useMetricExplorerOptions', () => {
-  beforeEach(() => {
-    delete STORE.MetricsExplorerOptions;
-    delete STORE.MetricsExplorerTimeRange;
-    PREFILL = {};
-  });
-
-  it('should just work', () => {
-    const { result } = renderUseMetricsExplorerOptionsHook();
-    expect(result.current.options).toEqual(DEFAULT_OPTIONS);
-    expect(result.current.timeRange).toEqual(DEFAULT_TIMERANGE);
-    expect(result.current.isAutoReloading).toEqual(false);
-    expect(STORE.MetricsExplorerOptions).toEqual(JSON.stringify(DEFAULT_OPTIONS));
-  });
-
-  it('should change the store when options update', () => {
-    const { result, rerender } = renderUseMetricsExplorerOptionsHook();
-    const newOptions: MetricsExplorerOptions = {
-      ...DEFAULT_OPTIONS,
-      metrics: [{ aggregation: 'count' }],
-    };
-    act(() => {
-      result.current.setOptions(newOptions);
-    });
-    rerender();
-    expect(result.current.options).toEqual(newOptions);
-    expect(STORE.MetricsExplorerOptions).toEqual(JSON.stringify(newOptions));
-  });
-
-  it('should change the store when timerange update', () => {
-    const { result, rerender } = renderUseMetricsExplorerOptionsHook();
-    const newTimeRange: MetricsExplorerTimeOptions = {
-      ...DEFAULT_TIMERANGE,
-      from: 'now-15m',
-    };
-    act(() => {
-      result.current.setTimeRange(newTimeRange);
-    });
-    rerender();
-    expect(result.current.timeRange).toEqual(newTimeRange);
-  });
-
-  it('should load from store when available', () => {
-    const newOptions: MetricsExplorerOptions = {
-      ...DEFAULT_OPTIONS,
-      metrics: [{ aggregation: 'avg', field: 'system.load.1' }],
-    };
-    STORE.MetricsExplorerOptions = JSON.stringify(newOptions);
-    const { result } = renderUseMetricsExplorerOptionsHook();
-    expect(result.current.options).toEqual(newOptions);
-  });
-
-  it('should sync the options to the threshold alert preview context', () => {
-    const { result, rerender } = renderUseMetricsExplorerOptionsHook();
-
-    const newOptions: MetricsExplorerOptions = {
-      ...DEFAULT_OPTIONS,
-      metrics: [{ aggregation: 'count' }],
-      filterQuery: 'foo',
-      groupBy: 'host.hostname',
-    };
-    act(() => {
-      result.current.setOptions(newOptions);
-    });
-    rerender();
-    expect(PREFILL.metrics).toEqual(newOptions.metrics);
-    expect(PREFILL.groupBy).toEqual(newOptions.groupBy);
-    expect(PREFILL.filterQuery).toEqual(newOptions.filterQuery);
-  });
-});
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.ts b/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.ts
deleted file mode 100644
index 7d734a961b04e..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_options.ts
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import DateMath from '@kbn/datemath';
-import * as t from 'io-ts';
-import { values } from 'lodash';
-import createContainer from 'constate';
-import type { TimeRange } from '@kbn/es-query';
-import { useState, useEffect, useMemo, Dispatch, SetStateAction } from 'react';
-
-import { metricsExplorerMetricRT } from '../../../../common/custom_threshold_rule/metrics_explorer';
-import { Color } from '../../../../common/custom_threshold_rule/color_palette';
-
-import { useAlertPrefillContext } from '../helpers/use_alert_prefill';
-import { useKibanaTimefilterTime, useSyncKibanaTimeFilterTime } from './use_kibana_timefilter_time';
-
-const metricsExplorerOptionsMetricRT = t.intersection([
-  metricsExplorerMetricRT,
-  t.partial({
-    rate: t.boolean,
-    color: t.keyof(Object.fromEntries(values(Color).map((c) => [c, null])) as Record<Color, null>),
-    label: t.string,
-  }),
-]);
-
-export type MetricsExplorerOptionsMetric = t.TypeOf<typeof metricsExplorerOptionsMetricRT>;
-
-export enum MetricsExplorerChartType {
-  line = 'line',
-  area = 'area',
-  bar = 'bar',
-}
-
-export enum MetricsExplorerYAxisMode {
-  fromZero = 'fromZero',
-  auto = 'auto',
-}
-
-export const metricsExplorerChartOptionsRT = t.type({
-  yAxisMode: t.keyof(
-    Object.fromEntries(values(MetricsExplorerYAxisMode).map((v) => [v, null])) as Record<
-      MetricsExplorerYAxisMode,
-      null
-    >
-  ),
-  type: t.keyof(
-    Object.fromEntries(values(MetricsExplorerChartType).map((v) => [v, null])) as Record<
-      MetricsExplorerChartType,
-      null
-    >
-  ),
-  stack: t.boolean,
-});
-
-export type MetricsExplorerChartOptions = t.TypeOf<typeof metricsExplorerChartOptionsRT>;
-
-const metricExplorerOptionsRequiredRT = t.type({
-  aggregation: t.string,
-  metrics: t.array(metricsExplorerOptionsMetricRT),
-});
-
-const metricExplorerOptionsOptionalRT = t.partial({
-  limit: t.number,
-  groupBy: t.union([t.string, t.array(t.string)]),
-  filterQuery: t.string,
-  source: t.string,
-  forceInterval: t.boolean,
-  dropLastBucket: t.boolean,
-});
-export const metricExplorerOptionsRT = t.intersection([
-  metricExplorerOptionsRequiredRT,
-  metricExplorerOptionsOptionalRT,
-]);
-
-export type MetricsExplorerOptions = t.TypeOf<typeof metricExplorerOptionsRT>;
-
-export const metricsExplorerTimestampsRT = t.type({
-  fromTimestamp: t.number,
-  toTimestamp: t.number,
-  interval: t.string,
-  timeFieldName: t.string,
-});
-export type MetricsExplorerTimestampsRT = t.TypeOf<typeof metricsExplorerTimestampsRT>;
-
-export const metricsExplorerTimeOptionsRT = t.type({
-  from: t.string,
-  to: t.string,
-  interval: t.string,
-});
-export type MetricsExplorerTimeOptions = t.TypeOf<typeof metricsExplorerTimeOptionsRT>;
-
-export const DEFAULT_TIMERANGE: MetricsExplorerTimeOptions = {
-  from: 'now-1h',
-  to: 'now',
-  interval: '>=10s',
-};
-
-export const DEFAULT_CHART_OPTIONS: MetricsExplorerChartOptions = {
-  type: MetricsExplorerChartType.line,
-  yAxisMode: MetricsExplorerYAxisMode.fromZero,
-  stack: false,
-};
-
-export const DEFAULT_METRICS: MetricsExplorerOptionsMetric[] = [
-  {
-    aggregation: 'avg',
-    field: 'system.cpu.total.norm.pct',
-    color: Color.color0,
-  },
-  {
-    aggregation: 'avg',
-    field: 'kubernetes.pod.cpu.usage.node.pct',
-    color: Color.color1,
-  },
-  {
-    aggregation: 'avg',
-    field: 'docker.cpu.total.pct',
-    color: Color.color2,
-  },
-];
-
-export const DEFAULT_OPTIONS: MetricsExplorerOptions = {
-  aggregation: 'avg',
-  metrics: DEFAULT_METRICS,
-  source: 'default',
-};
-
-export const DEFAULT_METRICS_EXPLORER_VIEW_STATE = {
-  options: DEFAULT_OPTIONS,
-  chartOptions: DEFAULT_CHART_OPTIONS,
-  currentTimerange: DEFAULT_TIMERANGE,
-};
-
-function parseJsonOrDefault<Obj>(value: string | null, defaultValue: Obj): Obj {
-  if (!value) {
-    return defaultValue;
-  }
-  try {
-    return JSON.parse(value) as Obj;
-  } catch (e) {
-    return defaultValue;
-  }
-}
-
-function useStateWithLocalStorage<State>(
-  key: string,
-  defaultState: State
-): [State, Dispatch<SetStateAction<State>>] {
-  const storageState = localStorage.getItem(key);
-  const [state, setState] = useState<State>(parseJsonOrDefault<State>(storageState, defaultState));
-  useEffect(() => {
-    localStorage.setItem(key, JSON.stringify(state));
-  }, [key, state]);
-  return [state, setState];
-}
-
-const getDefaultTimeRange = ({ from, to }: TimeRange) => {
-  const fromTimestamp = DateMath.parse(from)!.valueOf();
-  const toTimestamp = DateMath.parse(to, { roundUp: true })!.valueOf();
-  return {
-    fromTimestamp,
-    toTimestamp,
-    interval: DEFAULT_TIMERANGE.interval,
-  };
-};
-
-export const useMetricsExplorerOptions = () => {
-  const TIME_DEFAULTS = { from: 'now-1h', to: 'now' };
-  const [getTime] = useKibanaTimefilterTime(TIME_DEFAULTS);
-  const { from, to } = getTime();
-
-  const [options, setOptions] = useStateWithLocalStorage<MetricsExplorerOptions>(
-    'MetricsExplorerOptions',
-    DEFAULT_OPTIONS
-  );
-  const [timeRange, setTimeRange] = useState<MetricsExplorerTimeOptions>({
-    from,
-    to,
-    interval: DEFAULT_TIMERANGE.interval,
-  });
-  const [timestamps, setTimestamps] = useState<MetricsExplorerTimestampsRT>({
-    ...getDefaultTimeRange({ from, to }),
-    timeFieldName: '@timestamp',
-  });
-
-  useSyncKibanaTimeFilterTime(TIME_DEFAULTS, {
-    from: timeRange.from,
-    to: timeRange.to,
-  });
-
-  const [chartOptions, setChartOptions] = useStateWithLocalStorage<MetricsExplorerChartOptions>(
-    'MetricsExplorerChartOptions',
-    DEFAULT_CHART_OPTIONS
-  );
-  const [isAutoReloading, setAutoReloading] = useState<boolean>(false);
-
-  const { metricThresholdPrefill } = useAlertPrefillContext();
-  // For Jest compatibility; including metricThresholdPrefill as a dep in useEffect causes an
-  // infinite loop in test environment
-  const prefillContext = useMemo(() => metricThresholdPrefill, [metricThresholdPrefill]);
-
-  useEffect(() => {
-    if (prefillContext) {
-      const { setPrefillOptions } = prefillContext;
-      const { metrics, groupBy, filterQuery } = options;
-
-      setPrefillOptions({ metrics, groupBy, filterQuery });
-    }
-  }, [options, prefillContext]);
-
-  return {
-    defaultViewState: {
-      options: DEFAULT_OPTIONS,
-      chartOptions: DEFAULT_CHART_OPTIONS,
-      currentTimerange: timeRange,
-    },
-    options,
-    chartOptions,
-    setChartOptions,
-    timeRange,
-    isAutoReloading,
-    setOptions,
-    setTimeRange,
-    startAutoReload: () => setAutoReloading(true),
-    stopAutoReload: () => setAutoReloading(false),
-    timestamps,
-    setTimestamps,
-  };
-};
-
-export const [MetricsExplorerOptionsContainer, useMetricsExplorerOptionsContainerContext] =
-  createContainer(useMetricsExplorerOptions);
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.test.ts b/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.test.ts
deleted file mode 100644
index f6b20963ccb00..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.test.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
-import { MetricExpression } from '../types';
-import { generateUniqueKey } from './generate_unique_key';
-
-describe('generateUniqueKey', () => {
-  const mockedCriteria: Array<[MetricExpression, string]> = [
-    [
-      {
-        aggType: Aggregators.COUNT,
-        comparator: Comparator.LT,
-        threshold: [2000, 5000],
-        timeSize: 15,
-        timeUnit: 'm',
-      },
-      'count<2000,5000',
-    ],
-    [
-      {
-        aggType: Aggregators.CUSTOM,
-        comparator: Comparator.GT_OR_EQ,
-        threshold: [30],
-        timeSize: 15,
-        timeUnit: 'm',
-      },
-      'custom>=30',
-    ],
-    [
-      {
-        aggType: Aggregators.AVERAGE,
-        comparator: Comparator.LT_OR_EQ,
-        threshold: [500],
-        timeSize: 15,
-        timeUnit: 'm',
-        metric: 'metric',
-      },
-      'avg(metric)<=500',
-    ],
-  ];
-  it.each(mockedCriteria)('unique key of %p is %s', (input, output) => {
-    const uniqueKey = generateUniqueKey(input);
-
-    expect(uniqueKey).toBe(output);
-  });
-});
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.ts b/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.ts
deleted file mode 100644
index ec83311055a08..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/lib/generate_unique_key.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { MetricExpression } from '../types';
-
-export const generateUniqueKey = (criterion: MetricExpression) => {
-  const metric = criterion.metric ? `(${criterion.metric})` : '';
-
-  return criterion.aggType + metric + criterion.comparator + criterion.threshold.join(',');
-};
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/lib/transform_metrics_explorer_data.ts b/x-pack/plugins/observability/public/components/custom_threshold/lib/transform_metrics_explorer_data.ts
deleted file mode 100644
index 2a30136924420..0000000000000
--- a/x-pack/plugins/observability/public/components/custom_threshold/lib/transform_metrics_explorer_data.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { first } from 'lodash';
-import { MetricsExplorerResponse } from '../../../../common/custom_threshold_rule/metrics_explorer';
-import { MetricThresholdAlertParams, ExpressionChartSeries } from '../types';
-
-export const transformMetricsExplorerData = (
-  params: MetricThresholdAlertParams,
-  data: MetricsExplorerResponse | null
-) => {
-  const { criteria } = params;
-  const firstSeries = first(data?.series);
-  if (criteria && firstSeries) {
-    const series = firstSeries.rows.reduce((acc, row) => {
-      const { timestamp } = row;
-      criteria.forEach((item, index) => {
-        if (!acc[index]) {
-          acc[index] = [];
-        }
-        const value = (row[`metric_${index}`] as number) || 0;
-        acc[index].push({ timestamp, value });
-      });
-      return acc;
-    }, [] as ExpressionChartSeries);
-    return { id: firstSeries.id, series };
-  }
-};
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/mocks/metric_threshold_rule.ts b/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts
similarity index 78%
rename from x-pack/plugins/observability/public/components/custom_threshold/mocks/metric_threshold_rule.ts
rename to x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts
index 4f2e4ea3772bc..f93bac2b0f104 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/mocks/metric_threshold_rule.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts
@@ -6,13 +6,14 @@
  */
 
 import { v4 as uuidv4 } from 'uuid';
+import { CUSTOM_AGGREGATOR } from '../../../../common/custom_threshold_rule/constants';
 import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
 
-import { MetricThresholdAlert, MetricThresholdRule } from '../components/alert_details_app_section';
+import { CustomThresholdAlert, CustomThresholdRule } from '../components/alert_details_app_section';
 
-export const buildMetricThresholdRule = (
-  rule: Partial<MetricThresholdRule> = {}
-): MetricThresholdRule => {
+export const buildCustomThresholdRule = (
+  rule: Partial<CustomThresholdRule> = {}
+): CustomThresholdRule => {
   return {
     alertTypeId: 'metrics.alert.threshold',
     createdBy: 'admin',
@@ -59,29 +60,47 @@ export const buildMetricThresholdRule = (
     params: {
       criteria: [
         {
-          aggType: Aggregators.COUNT,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
+          metrics: [
+            {
+              name: 'A',
+              aggType: Aggregators.COUNT,
+            },
+          ],
           threshold: [2000],
           timeSize: 15,
           timeUnit: 'm',
         },
         {
-          aggType: Aggregators.MAX,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
+          metrics: [
+            {
+              name: 'B',
+              aggType: Aggregators.MAX,
+              field: 'system.cpu.user.pct',
+            },
+          ],
           threshold: [4],
           timeSize: 15,
           timeUnit: 'm',
-          metric: 'system.cpu.user.pct',
           warningComparator: Comparator.GT,
           warningThreshold: [2.2],
         },
         {
-          aggType: Aggregators.MIN,
+          aggType: CUSTOM_AGGREGATOR,
           comparator: Comparator.GT,
+          metrics: [
+            {
+              name: 'C',
+              aggType: Aggregators.MIN,
+              field: 'system.memory.used.pct',
+            },
+          ],
           threshold: [0.8],
           timeSize: 15,
           timeUnit: 'm',
-          metric: 'system.memory.used.pct',
         },
       ],
       searchConfiguration: {
@@ -126,9 +145,9 @@ export const buildMetricThresholdRule = (
   };
 };
 
-export const buildMetricThresholdAlert = (
-  alert: Partial<MetricThresholdAlert> = {}
-): MetricThresholdAlert => {
+export const buildCustomThresholdAlert = (
+  alert: Partial<CustomThresholdAlert> = {}
+): CustomThresholdAlert => {
   return {
     link: '/app/metrics/explorer',
     reason: 'system.cpu.user.pct reported no data in the last 1m for ',
@@ -136,20 +155,32 @@ export const buildMetricThresholdAlert = (
       'kibana.alert.rule.parameters': {
         criteria: [
           {
-            aggType: Aggregators.AVERAGE,
+            aggType: CUSTOM_AGGREGATOR,
             comparator: Comparator.GT,
+            metrics: [
+              {
+                name: 'A',
+                aggType: Aggregators.AVERAGE,
+                field: 'system.cpu.user.pct',
+              },
+            ],
             threshold: [2000],
             timeSize: 15,
             timeUnit: 'm',
-            metric: 'system.cpu.user.pct',
           },
           {
-            aggType: Aggregators.MAX,
+            aggType: CUSTOM_AGGREGATOR,
             comparator: Comparator.GT,
+            metrics: [
+              {
+                name: 'B',
+                aggType: Aggregators.MAX,
+                metric: 'system.cpu.user.pct',
+              },
+            ],
             threshold: [4],
             timeSize: 15,
             timeUnit: 'm',
-            metric: 'system.cpu.user.pct',
             warningComparator: Comparator.GT,
             warningThreshold: [2.2],
           },
diff --git a/x-pack/plugins/observability/public/components/custom_threshold/types.ts b/x-pack/plugins/observability/public/components/custom_threshold/types.ts
index d0b173b4d7c34..e726a8fd01327 100644
--- a/x-pack/plugins/observability/public/components/custom_threshold/types.ts
+++ b/x-pack/plugins/observability/public/components/custom_threshold/types.ts
@@ -24,64 +24,22 @@ import {
 import { UiActionsStart } from '@kbn/ui-actions-plugin/public';
 import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
 import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public';
-import { TimeUnitChar } from '../../../common/utils/formatters';
-import { MetricsExplorerSeries } from '../../../common/custom_threshold_rule/metrics_explorer';
 import {
-  Comparator,
   CustomMetricExpressionParams,
-  MetricExpressionParams,
-  MetricsSourceStatus,
-  NonCountMetricExpressionParams,
-  SnapshotCustomMetricInput,
+  BaseMetricExpressionParams,
+  aggType,
 } from '../../../common/custom_threshold_rule/types';
 import { ObservabilityPublicStart } from '../../plugin';
-import { MetricsExplorerOptions } from './hooks/use_metrics_explorer_options';
 
 export interface AlertContextMeta {
   adHocDataViewList: DataView[];
-  currentOptions?: Partial<MetricsExplorerOptions>;
-  series?: MetricsExplorerSeries;
 }
 
-export type MetricExpression = Omit<
-  MetricExpressionParams,
-  'metric' | 'timeSize' | 'timeUnit' | 'metrics' | 'equation'
-> & {
-  metric?: NonCountMetricExpressionParams['metric'];
-  metrics?: CustomMetricExpressionParams['metrics'];
-  label?: CustomMetricExpressionParams['label'];
-  equation?: CustomMetricExpressionParams['equation'];
-  timeSize?: MetricExpressionParams['timeSize'];
-  timeUnit?: MetricExpressionParams['timeUnit'];
+export type MetricExpression = Omit<CustomMetricExpressionParams, 'timeSize' | 'timeUnit'> & {
+  timeSize?: BaseMetricExpressionParams['timeSize'];
+  timeUnit?: BaseMetricExpressionParams['timeUnit'];
 };
 
-export enum AGGREGATION_TYPES {
-  COUNT = 'count',
-  AVERAGE = 'avg',
-  SUM = 'sum',
-  MIN = 'min',
-  MAX = 'max',
-  RATE = 'rate',
-  CARDINALITY = 'cardinality',
-  P95 = 'p95',
-  P99 = 'p99',
-  CUSTOM = 'custom',
-}
-
-export interface MetricThresholdAlertParams {
-  criteria?: MetricExpression[];
-  groupBy?: string | string[];
-  filterQuery?: string;
-  sourceId?: string;
-}
-
-export interface ExpressionChartRow {
-  timestamp: number;
-  value: number;
-}
-
-export type ExpressionChartSeries = ExpressionChartRow[][];
-
 export interface TimeRange {
   from?: string;
   to?: string;
@@ -106,8 +64,6 @@ export interface InfraClientStartDeps {
   discover: DiscoverStart;
   embeddable?: EmbeddableStart;
   lens: LensPublicStart;
-  // TODO:: check if needed => https://github.com/elastic/kibana/issues/159340
-  // ml: MlPluginStart;
   observability: ObservabilityPublicStart;
   observabilityShared: ObservabilitySharedPluginStart;
   osquery?: unknown; // OsqueryPluginStart;
@@ -125,56 +81,121 @@ export interface InfraClientStartDeps {
 export type RendererResult = React.ReactElement<any> | null;
 
 export type RendererFunction<RenderArgs, Result = RendererResult> = (args: RenderArgs) => Result;
-export interface DerivedIndexPattern {
-  fields: MetricsSourceStatus['indexFields'];
-  title: string;
-}
-
-export const SnapshotMetricTypeKeys = {
-  count: null,
-  cpu: null,
-  diskLatency: null,
-  load: null,
-  memory: null,
-  memoryTotal: null,
-  tx: null,
-  rx: null,
-  logRate: null,
-  diskIOReadBytes: null,
-  diskIOWriteBytes: null,
-  s3TotalRequests: null,
-  s3NumberOfObjects: null,
-  s3BucketSize: null,
-  s3DownloadBytes: null,
-  s3UploadBytes: null,
-  rdsConnections: null,
-  rdsQueriesExecuted: null,
-  rdsActiveTransactions: null,
-  rdsLatency: null,
-  sqsMessagesVisible: null,
-  sqsMessagesDelayed: null,
-  sqsMessagesSent: null,
-  sqsMessagesEmpty: null,
-  sqsOldestMessage: null,
-  custom: null,
-};
-export const SnapshotMetricTypeRT = rt.keyof(SnapshotMetricTypeKeys);
-
-export type SnapshotMetricType = rt.TypeOf<typeof SnapshotMetricTypeRT>;
-export interface InventoryMetricConditions {
-  metric: SnapshotMetricType;
-  timeSize: number;
-  timeUnit: TimeUnitChar;
-  sourceId?: string;
-  threshold: number[];
-  comparator: Comparator;
-  customMetric?: SnapshotCustomMetricInput;
-  warningThreshold?: number[];
-  warningComparator?: Comparator;
-}
 
-export interface MetricThresholdRuleTypeParams extends RuleTypeParams {
-  criteria: MetricExpressionParams[];
+export interface CustomThresholdRuleTypeParams extends RuleTypeParams {
+  criteria: CustomMetricExpressionParams[];
   searchConfiguration: SerializedSearchSourceFields;
   groupBy?: string | string[];
 }
+
+export const expressionTimestampsRT = rt.type({
+  fromTimestamp: rt.number,
+  toTimestamp: rt.number,
+  interval: rt.string,
+  timeFieldName: rt.string,
+});
+export type ExpressionTimestampsRT = rt.TypeOf<typeof expressionTimestampsRT>;
+
+/*
+ * Expression options
+ */
+export const metricsExplorerMetricRT = rt.intersection([
+  rt.type({
+    name: rt.string,
+    aggregation: aggType,
+  }),
+  rt.partial({
+    field: rt.string,
+    filter: rt.string,
+  }),
+]);
+const customThresholdExpressionMetricRT = rt.intersection([
+  rt.type({
+    aggregation: rt.string,
+  }),
+  rt.partial({
+    field: rt.union([rt.string, rt.undefined]),
+    custom_metrics: rt.array(metricsExplorerMetricRT),
+    equation: rt.string,
+  }),
+]);
+export const expressionOptionsRT = rt.intersection([
+  rt.type({
+    aggregation: rt.string,
+    metrics: rt.array(customThresholdExpressionMetricRT),
+  }),
+  rt.partial({
+    limit: rt.number,
+    groupBy: rt.union([rt.string, rt.array(rt.string)]),
+    filterQuery: rt.string,
+    source: rt.string,
+    forceInterval: rt.boolean,
+    dropLastBucket: rt.boolean,
+  }),
+]);
+
+export type MetricsExplorerMetricRT = rt.TypeOf<typeof metricsExplorerMetricRT>;
+export type ExpressionOptions = rt.TypeOf<typeof expressionOptionsRT>;
+/*
+ * End of expression options
+ */
+
+/*
+ * Metrics explorer types
+ */
+export const timeRangeRT = rt.type({
+  from: rt.number,
+  to: rt.number,
+  interval: rt.string,
+});
+
+export const afterKeyObjectRT = rt.record(rt.string, rt.union([rt.string, rt.null]));
+
+export const metricsExplorerPageInfoRT = rt.type({
+  total: rt.number,
+  afterKey: rt.union([rt.string, rt.null, afterKeyObjectRT]),
+});
+
+export const metricsExplorerColumnTypeRT = rt.keyof({
+  date: null,
+  number: null,
+  string: null,
+});
+
+export const metricsExplorerColumnRT = rt.type({
+  name: rt.string,
+  type: metricsExplorerColumnTypeRT,
+});
+
+export const metricsExplorerRowRT = rt.intersection([
+  rt.type({
+    timestamp: rt.number,
+  }),
+  rt.record(
+    rt.string,
+    rt.union([rt.string, rt.number, rt.null, rt.undefined, rt.array(rt.object)])
+  ),
+]);
+
+export const metricsExplorerSeriesRT = rt.intersection([
+  rt.type({
+    id: rt.string,
+    columns: rt.array(metricsExplorerColumnRT),
+    rows: rt.array(metricsExplorerRowRT),
+  }),
+  rt.partial({
+    keys: rt.array(rt.string),
+  }),
+]);
+
+export const metricsExplorerResponseRT = rt.type({
+  series: rt.array(metricsExplorerSeriesRT),
+  pageInfo: metricsExplorerPageInfoRT,
+});
+
+export type MetricsExplorerRow = rt.TypeOf<typeof metricsExplorerRowRT>;
+export type MetricsExplorerSeries = rt.TypeOf<typeof metricsExplorerSeriesRT>;
+export type MetricsExplorerResponse = rt.TypeOf<typeof metricsExplorerResponseRT>;
+/*
+ * End of metrics explorer types
+ */
diff --git a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts
index 4cd705656c01b..4ae8f7f172076 100644
--- a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts
+++ b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts
@@ -14,7 +14,7 @@ import { ConfigSchema } from '../plugin';
 import { ObservabilityRuleTypeRegistry } from './create_observability_rule_type_registry';
 import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../common/constants';
 import { validateBurnRateRule } from '../components/burn_rate_rule_editor/validation';
-import { validateMetricThreshold } from '../components/custom_threshold/components/validation';
+import { validateCustomThreshold } from '../components/custom_threshold/components/validation';
 import { formatReason } from '../components/custom_threshold/rule_data_formatters';
 
 const sloBurnRateDefaultActionMessage = i18n.translate(
@@ -117,7 +117,7 @@ export const registerObservabilityRuleTypes = (
       ruleParamsExpression: lazy(
         () => import('../components/custom_threshold/custom_threshold_rule_expression')
       ),
-      validate: validateMetricThreshold,
+      validate: validateCustomThreshold,
       defaultActionMessage: thresholdDefaultActionMessage,
       defaultRecoveryMessage: thresholdDefaultRecoveryMessage,
       requiresAppContext: false,
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts
index 73fead1a6f12b..e5301b8ac8da1 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts
@@ -21,11 +21,12 @@ import { CustomThresholdAlertContext } from './types';
 import { Evaluation } from './lib/evaluate_rule';
 import type { LogMeta, Logger } from '@kbn/logging';
 import { DEFAULT_FLAPPING_SETTINGS } from '@kbn/alerting-plugin/common';
+import { CUSTOM_AGGREGATOR } from '../../../../common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
-  CountMetricExpressionParams,
-  NonCountMetricExpressionParams,
+  CustomMetricExpressionParams,
+  CustomThresholdExpressionMetric,
 } from '../../../../common/custom_threshold_rule/types';
 
 jest.mock('./lib/evaluate_rule', () => ({ evaluateRule: jest.fn() }));
@@ -147,7 +148,7 @@ describe('The metric threshold alert type', () => {
           sourceId,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold,
             },
@@ -163,10 +164,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator,
             threshold,
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire,
@@ -235,7 +235,7 @@ describe('The metric threshold alert type', () => {
       const { action } = mostRecentAction(instanceID);
       expect(action.group).toBeUndefined();
       expect(action.reason).toBe(
-        'test.metric.1 is 1, above the threshold of 0.75. (duration: 1 min, data view: mockedDataViewName)'
+        'Average test.metric.1 is 1, above the threshold of 0.75. (duration: 1 min, data view: mockedDataViewName)'
       );
     });
   });
@@ -246,7 +246,7 @@ describe('The metric threshold alert type', () => {
       comparator: Comparator,
       threshold: number[],
       groupBy: string[] = ['groupByField'],
-      metric?: string,
+      metrics?: CustomThresholdExpressionMetric[],
       state?: any
     ) =>
       executor({
@@ -257,10 +257,10 @@ describe('The metric threshold alert type', () => {
           groupBy,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold,
-              metric: metric ?? baseNonCountCriterion.metric,
+              metrics: metrics ?? customThresholdNonCountCriterion.metrics,
             },
           ],
         },
@@ -272,10 +272,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -283,10 +282,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -303,10 +301,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT,
             threshold: [1.5],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -314,10 +311,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT,
             threshold: [1.5],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -334,10 +330,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [5],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -345,10 +340,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [5],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -365,10 +359,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -376,10 +369,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -400,10 +392,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -411,10 +409,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -422,10 +426,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'b' },
           },
           c: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -438,16 +448,21 @@ describe('The metric threshold alert type', () => {
         Comparator.GT,
         [0.75],
         ['groupByField'],
-        'test.metric.2'
+        [
+          {
+            aggType: Aggregators.AVERAGE,
+            name: 'A',
+            field: 'test.metric.2',
+          },
+        ]
       );
       expect(stateResult1.missingGroups).toEqual(expect.arrayContaining([]));
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -455,10 +470,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -466,10 +480,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'b' },
           },
           c: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -482,7 +495,13 @@ describe('The metric threshold alert type', () => {
         Comparator.GT,
         [0.75],
         ['groupByField'],
-        'test.metric.1',
+        [
+          {
+            aggType: Aggregators.AVERAGE,
+            name: 'A',
+            field: 'test.metric.1',
+          },
+        ],
         stateResult1
       );
       expect(stateResult2.missingGroups).toEqual(
@@ -491,10 +510,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -502,10 +520,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -518,7 +535,13 @@ describe('The metric threshold alert type', () => {
         Comparator.GT,
         [0.75],
         ['groupByField', 'groupByField-else'],
-        'test.metric.1',
+        [
+          {
+            aggType: Aggregators.AVERAGE,
+            name: 'A',
+            field: 'test.metric.2',
+          },
+        ],
         stateResult2
       );
       expect(stateResult3.missingGroups).toEqual(expect.arrayContaining([]));
@@ -528,7 +551,7 @@ describe('The metric threshold alert type', () => {
       comparator: Comparator,
       threshold: number[],
       filterQuery: string,
-      metric?: string,
+      metrics?: any,
       state?: any
     ) =>
       executor({
@@ -539,10 +562,10 @@ describe('The metric threshold alert type', () => {
           groupBy: ['groupByField'],
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold,
-              metric: metric ?? baseNonCountCriterion.metric,
+              metrics: metrics ?? customThresholdNonCountCriterion.metrics,
             },
           ],
           searchConfiguration: {
@@ -558,10 +581,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -569,10 +598,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -580,10 +615,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'b' },
           },
           c: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -602,10 +643,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -613,10 +653,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -624,10 +663,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'b' },
           },
           c: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -649,10 +687,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -660,10 +697,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -676,7 +712,13 @@ describe('The metric threshold alert type', () => {
         Comparator.GT,
         [0.75],
         JSON.stringify({ query: 'different' }),
-        'test.metric.1',
+        [
+          {
+            aggType: Aggregators.AVERAGE,
+            name: 'A',
+            field: 'test.metric.1',
+          },
+        ],
         stateResult2
       );
       expect(stateResult3.groups).toEqual(expect.arrayContaining([]));
@@ -689,7 +731,7 @@ describe('The metric threshold alert type', () => {
       comparator: Comparator,
       threshold: number[],
       groupBy: string[] = ['host.name'],
-      metric?: string,
+      metrics?: any,
       state?: any
     ) =>
       executor({
@@ -700,10 +742,10 @@ describe('The metric threshold alert type', () => {
           groupBy,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold,
-              metric: metric ?? baseNonCountCriterion.metric,
+              metrics: metrics ?? customThresholdNonCountCriterion.metrics,
             },
           ],
         },
@@ -720,10 +762,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           'host-01': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -734,10 +775,9 @@ describe('The metric threshold alert type', () => {
             },
           },
           'host-02': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -771,7 +811,7 @@ describe('The metric threshold alert type', () => {
       comparator: Comparator,
       threshold: number[],
       groupBy: string = '',
-      metric?: string,
+      metrics?: any,
       state?: any
     ) =>
       executor({
@@ -782,10 +822,10 @@ describe('The metric threshold alert type', () => {
           groupBy,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold,
-              metric: metric ?? baseNonCountCriterion.metric,
+              metrics: metrics ?? customThresholdNonCountCriterion.metrics,
             },
           ],
         },
@@ -800,10 +840,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.75],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -837,15 +876,21 @@ describe('The metric threshold alert type', () => {
           groupBy,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold: thresholdA,
             },
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator,
               threshold: thresholdB,
-              metric: 'test.metric.2',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.2',
+                },
+              ],
             },
           ],
         },
@@ -854,10 +899,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [1.0],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -867,10 +911,9 @@ describe('The metric threshold alert type', () => {
         },
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [3.0],
-            metric: 'test.metric.2',
             currentValue: 3.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -887,10 +930,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT_OR_EQ,
             threshold: [1.0],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -908,10 +950,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [1.0],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -919,10 +960,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [1.0],
-            metric: 'test.metric.1',
             currentValue: 3.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -932,10 +972,16 @@ describe('The metric threshold alert type', () => {
         },
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [3.0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -943,10 +989,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [3.0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -965,10 +1017,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [1.0],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -978,10 +1029,16 @@ describe('The metric threshold alert type', () => {
         },
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT_OR_EQ,
             threshold: [3.0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -995,7 +1052,7 @@ describe('The metric threshold alert type', () => {
       const { action } = mostRecentAction(instanceID);
       const reasons = action.reason;
       expect(reasons).toBe(
-        'test.metric.1 is 1, above the threshold of 1; test.metric.2 is 3, above the threshold of 3. (duration: 1 min, data view: mockedDataViewName)'
+        'Average test.metric.1 is 1, above the threshold of 1; Average test.metric.2 is 3, above the threshold of 3. (duration: 1 min, data view: mockedDataViewName)'
       );
     });
   });
@@ -1011,10 +1068,10 @@ describe('The metric threshold alert type', () => {
           sourceId,
           criteria: [
             {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator,
               threshold,
-            } as CountMetricExpressionParams,
+            },
           ],
         },
       });
@@ -1022,10 +1079,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseCountCriterion,
+            ...customThresholdCountCriterion,
             comparator: Comparator.GT,
             threshold: [0.9],
-            metric: 'count',
             currentValue: 1,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1039,10 +1095,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseCountCriterion,
+            ...customThresholdCountCriterion,
             comparator: Comparator.LT,
             threshold: [0.5],
-            metric: 'count',
             currentValue: 1,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1070,7 +1125,7 @@ describe('The metric threshold alert type', () => {
             groupBy: 'groupByField',
             criteria: [
               {
-                ...baseCountCriterion,
+                ...customThresholdCountCriterion,
                 comparator,
                 threshold,
               },
@@ -1085,10 +1140,9 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             a: {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator: Comparator.LT_OR_EQ,
               threshold: [0],
-              metric: 'count',
               currentValue: 1,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1096,10 +1150,9 @@ describe('The metric threshold alert type', () => {
               bucketKey: { groupBy0: 'a' },
             },
             b: {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator: Comparator.LT_OR_EQ,
               threshold: [0],
-              metric: 'count',
               currentValue: 1,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1114,10 +1167,9 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             a: {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator: Comparator.LT_OR_EQ,
               threshold: [0],
-              metric: 'count',
               currentValue: 0,
               timestamp: new Date().toISOString(),
               shouldFire: true,
@@ -1125,10 +1177,9 @@ describe('The metric threshold alert type', () => {
               bucketKey: { groupBy0: 'a' },
             },
             b: {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator: Comparator.LT_OR_EQ,
               threshold: [0],
-              metric: 'count',
               currentValue: 0,
               timestamp: new Date().toISOString(),
               shouldFire: true,
@@ -1143,121 +1194,6 @@ describe('The metric threshold alert type', () => {
       });
     });
   });
-  describe('querying with the p99 aggregator', () => {
-    afterAll(() => clearInstances());
-    const instanceID = '*';
-    const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') =>
-      executor({
-        ...mockOptions,
-        services,
-        params: {
-          ...mockOptions.params,
-          criteria: [
-            {
-              ...baseNonCountCriterion,
-              comparator,
-              threshold,
-              aggType: Aggregators.P99,
-              metric: 'test.metric.2',
-            },
-          ],
-        },
-      });
-    test('alerts based on the p99 values', async () => {
-      setEvaluationResults([
-        {
-          '*': {
-            ...baseNonCountCriterion,
-            comparator: Comparator.GT,
-            threshold: [1],
-            metric: 'test.metric.2',
-            currentValue: 3,
-            timestamp: new Date().toISOString(),
-            shouldFire: true,
-            isNoData: false,
-            bucketKey: { groupBy0: '*' },
-          },
-        },
-      ]);
-      await execute(Comparator.GT, [1]);
-      expect(mostRecentAction(instanceID)).toBeAlertAction();
-      setEvaluationResults([
-        {
-          '*': {
-            ...baseNonCountCriterion,
-            comparator: Comparator.LT,
-            threshold: [1],
-            metric: 'test.metric.2',
-            currentValue: 3,
-            timestamp: new Date().toISOString(),
-            shouldFire: false,
-            isNoData: false,
-            bucketKey: { groupBy0: '*' },
-          },
-        },
-      ]);
-      await execute(Comparator.LT, [1]);
-      expect(mostRecentAction(instanceID)).toBe(undefined);
-    });
-  });
-  describe('querying with the p95 aggregator', () => {
-    afterAll(() => clearInstances());
-    const instanceID = '*';
-    const execute = (comparator: Comparator, threshold: number[], sourceId: string = 'default') =>
-      executor({
-        ...mockOptions,
-        services,
-        params: {
-          ...mockOptions.params,
-          sourceId,
-          criteria: [
-            {
-              ...baseNonCountCriterion,
-              comparator,
-              threshold,
-              aggType: Aggregators.P95,
-              metric: 'test.metric.1',
-            },
-          ],
-        },
-      });
-    test('alerts based on the p95 values', async () => {
-      setEvaluationResults([
-        {
-          '*': {
-            ...baseNonCountCriterion,
-            comparator: Comparator.GT,
-            threshold: [0.25],
-            metric: 'test.metric.1',
-            currentValue: 1.0,
-            timestamp: new Date().toISOString(),
-            shouldFire: true,
-            isNoData: false,
-            bucketKey: { groupBy0: '*' },
-          },
-        },
-      ]);
-      await execute(Comparator.GT, [0.25]);
-      expect(mostRecentAction(instanceID)).toBeAlertAction();
-      setEvaluationResults([
-        {
-          '*': {
-            ...baseNonCountCriterion,
-            comparator: Comparator.LT,
-            threshold: [0.95],
-            metric: 'test.metric.1',
-            currentValue: 1.0,
-            timestamp: new Date().toISOString(),
-            shouldFire: false,
-            isNoData: false,
-            bucketKey: { groupBy0: '*' },
-          },
-        },
-      ]);
-      await execute(Comparator.LT, [0.95]);
-      expect(mostRecentAction(instanceID)).toBe(undefined);
-    });
-  });
   describe("querying a metric that hasn't reported data", () => {
     afterAll(() => clearInstances());
     const instanceID = '*';
@@ -1270,10 +1206,16 @@ describe('The metric threshold alert type', () => {
           sourceId,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [1],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
             },
           ],
           alertOnNoData,
@@ -1283,10 +1225,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT,
             threshold: [1],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1297,17 +1245,25 @@ describe('The metric threshold alert type', () => {
       ]);
       await execute(true);
       const recentAction = mostRecentAction(instanceID);
-      expect(recentAction.action.reason).toEqual('test.metric.3 reported no data in the last 1m');
+      expect(recentAction.action.reason).toEqual(
+        'Average test.metric.3 reported no data in the last 1m'
+      );
       expect(recentAction).toBeNoDataAction();
     });
     test('does not send a No Data alert when not configured to do so', async () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT,
             threshold: [1],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1333,13 +1289,19 @@ describe('The metric threshold alert type', () => {
           sourceId,
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [1],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
             },
             {
-              ...baseCountCriterion,
+              ...customThresholdCountCriterion,
               comparator: Comparator.GT,
               threshold: [30],
             },
@@ -1351,10 +1313,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.LT,
             threshold: [1],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: STARTED_AT_MOCK_DATE.toISOString(),
             shouldFire: false,
@@ -1368,9 +1336,9 @@ describe('The metric threshold alert type', () => {
       const recentAction = mostRecentAction(instanceID);
       expect(recentAction.action).toEqual({
         alertDetailsUrl: '',
-        reason: 'test.metric.3 reported no data in the last 1m',
+        reason: 'Average test.metric.3 reported no data in the last 1m',
         timestamp: STARTED_AT_MOCK_DATE.toISOString(),
-        value: ['[NO DATA]', 0],
+        value: ['[NO DATA]', null],
         tags: [],
       });
       expect(recentAction).toBeNoDataAction();
@@ -1383,7 +1351,7 @@ describe('The metric threshold alert type', () => {
     const instanceIdA = 'a';
     const instanceIdB = 'b';
     const instanceIdC = 'c';
-    const execute = (metric: string, alertOnGroupDisappear: boolean = true, state?: any) =>
+    const execute = (metrics: any, alertOnGroupDisappear: boolean = true, state?: any) =>
       executor({
         ...mockOptions,
         services,
@@ -1393,10 +1361,10 @@ describe('The metric threshold alert type', () => {
           sourceId: 'default',
           criteria: [
             {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric,
+              metrics,
             },
           ],
           alertOnNoData: true,
@@ -1418,10 +1386,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1435,10 +1409,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           '*': {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1452,10 +1432,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.1',
             currentValue: 1.0,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1463,10 +1442,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1488,10 +1466,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1499,10 +1483,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.3',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.3',
+              },
+            ],
             currentValue: null,
             timestamp: new Date().toISOString(),
             shouldFire: false,
@@ -1520,10 +1510,16 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1531,10 +1527,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 1,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1542,10 +1544,16 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'b' },
           },
           c: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.2',
+            metrics: [
+              {
+                aggType: Aggregators.AVERAGE,
+                name: 'A',
+                field: 'test.metric.2',
+              },
+            ],
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1562,10 +1570,9 @@ describe('The metric threshold alert type', () => {
       setEvaluationResults([
         {
           a: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.1',
             currentValue: 1,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1573,10 +1580,9 @@ describe('The metric threshold alert type', () => {
             bucketKey: { groupBy0: 'a' },
           },
           b: {
-            ...baseNonCountCriterion,
+            ...customThresholdNonCountCriterion,
             comparator: Comparator.GT,
             threshold: [0],
-            metric: 'test.metric.1',
             currentValue: 3,
             timestamp: new Date().toISOString(),
             shouldFire: true,
@@ -1593,7 +1599,7 @@ describe('The metric threshold alert type', () => {
     });
 
     describe('if alertOnNoData is disabled but alertOnGroupDisappear is enabled', () => {
-      const executeWeirdNoDataConfig = (metric: string, state?: any) =>
+      const executeWeirdNoDataConfig = (metrics: any, state?: any) =>
         executor({
           ...mockOptions,
           services,
@@ -1603,10 +1609,10 @@ describe('The metric threshold alert type', () => {
             sourceId: 'default',
             criteria: [
               {
-                ...baseNonCountCriterion,
+                ...customThresholdNonCountCriterion,
                 comparator: Comparator.GT,
                 threshold: [0],
-                metric,
+                metrics,
               },
             ],
             alertOnNoData: false,
@@ -1624,10 +1630,16 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             '*': {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
               currentValue: null,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1641,10 +1653,16 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             '*': {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
               currentValue: null,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1658,10 +1676,9 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             a: {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.1',
               currentValue: 1,
               timestamp: new Date().toISOString(),
               shouldFire: true,
@@ -1669,10 +1686,9 @@ describe('The metric threshold alert type', () => {
               bucketKey: { groupBy0: 'a' },
             },
             b: {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.1',
               currentValue: 3,
               timestamp: new Date().toISOString(),
               shouldFire: true,
@@ -1692,10 +1708,16 @@ describe('The metric threshold alert type', () => {
         setEvaluationResults([
           {
             a: {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
               currentValue: null,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1703,10 +1725,16 @@ describe('The metric threshold alert type', () => {
               bucketKey: { groupBy0: 'a' },
             },
             b: {
-              ...baseNonCountCriterion,
+              ...customThresholdNonCountCriterion,
               comparator: Comparator.GT,
               threshold: [0],
-              metric: 'test.metric.3',
+              metrics: [
+                {
+                  aggType: Aggregators.AVERAGE,
+                  name: 'A',
+                  field: 'test.metric.3',
+                },
+              ],
               currentValue: null,
               timestamp: new Date().toISOString(),
               shouldFire: false,
@@ -1854,19 +1882,31 @@ declare global {
   }
 }
 
-const baseNonCountCriterion = {
-  aggType: Aggregators.AVERAGE,
-  metric: 'test.metric.1',
+const customThresholdNonCountCriterion: CustomMetricExpressionParams = {
+  aggType: CUSTOM_AGGREGATOR,
+  comparator: Comparator.GT,
+  metrics: [
+    {
+      aggType: Aggregators.AVERAGE,
+      name: 'A',
+      field: 'test.metric.1',
+    },
+  ],
   timeSize: 1,
   timeUnit: 'm',
   threshold: [0],
-  comparator: Comparator.GT,
-} as NonCountMetricExpressionParams;
+};
 
-const baseCountCriterion = {
-  aggType: Aggregators.COUNT,
+const customThresholdCountCriterion: CustomMetricExpressionParams = {
+  aggType: CUSTOM_AGGREGATOR,
+  comparator: Comparator.GT,
+  metrics: [
+    {
+      aggType: Aggregators.COUNT,
+      name: 'A',
+    },
+  ],
   timeSize: 1,
   timeUnit: 'm',
   threshold: [0],
-  comparator: Comparator.GT,
-} as CountMetricExpressionParams;
+};
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts
index c832ecc9144bf..2e50c33048f51 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts
@@ -43,7 +43,7 @@ import {
   getFormattedGroupBy,
 } from './utils';
 
-import { formatAlertResult } from './lib/format_alert_result';
+import { formatAlertResult, getLabel } from './lib/format_alert_result';
 import { EvaluatedRuleParams, evaluateRule } from './lib/evaluate_rule';
 import { MissingGroupsRecord } from './lib/check_missing_group';
 import { convertStringsToMissingGroupsRecord } from './lib/convert_strings_to_missing_groups_record';
@@ -86,7 +86,6 @@ export const createCustomThresholdExecutor = ({
       executionId,
     });
 
-    // TODO: check if we need to use "savedObjectsClient"=> https://github.com/elastic/kibana/issues/159340
     const {
       alertWithLifecycle,
       getAlertUuid,
@@ -215,7 +214,9 @@ export const createCustomThresholdExecutor = ({
         if (nextState === AlertStates.NO_DATA) {
           reason = alertResults
             .filter((result) => result[group]?.isNoData)
-            .map((result) => buildNoDataAlertReason({ ...result[group], group }))
+            .map((result) =>
+              buildNoDataAlertReason({ ...result[group], label: getLabel(result[group]), group })
+            )
             .join('\n');
         }
       }
@@ -271,9 +272,7 @@ export const createCustomThresholdExecutor = ({
           timestamp,
           value: alertResults.map((result, index) => {
             const evaluation = result[group];
-            if (!evaluation && criteria[index].aggType === 'count') {
-              return 0;
-            } else if (!evaluation) {
+            if (!evaluation) {
               return null;
             }
             return formatAlertResult(evaluation).currentValue;
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts
index 7651130601b6c..6b8041b448484 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts
@@ -8,7 +8,7 @@
 import { ElasticsearchClient } from '@kbn/core/server';
 import type { Logger } from '@kbn/logging';
 import { isString, get, identity } from 'lodash';
-import { MetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 import type { BucketKey } from './get_data';
 import { calculateCurrentTimeframe, createBaseFilters } from './metric_query';
 
@@ -19,7 +19,7 @@ export interface MissingGroupsRecord {
 
 export const checkMissingGroups = async (
   esClient: ElasticsearchClient,
-  metricParams: MetricExpressionParams,
+  metricParams: CustomMetricExpressionParams,
   indexPattern: string,
   timeFieldName: string,
   groupBy: string | undefined | string[],
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts
index 3066276316921..9a1dde442983c 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts
@@ -5,33 +5,19 @@
  * 2.0.
  */
 
-import {
-  Aggregators,
-  MetricExpressionParams,
-} from '../../../../../common/custom_threshold_rule/types';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 import { createConditionScript } from './create_condition_script';
 import { createLastPeriod } from './wrap_in_period';
 
 export const createBucketSelector = (
-  condition: MetricExpressionParams,
+  condition: CustomMetricExpressionParams,
   alertOnGroupDisappear: boolean = false,
   timeFieldName: string,
   groupBy?: string | string[],
   lastPeriodEnd?: number
 ) => {
   const hasGroupBy = !!groupBy;
-  const isPercentile = [Aggregators.P95, Aggregators.P99].includes(condition.aggType);
-  const isCount = condition.aggType === Aggregators.COUNT;
-  const isRate = condition.aggType === Aggregators.RATE;
-  const bucketPath = isCount
-    ? "currentPeriod['all']>_count"
-    : isRate
-    ? `aggregatedValue`
-    : isPercentile
-    ? `currentPeriod[\'all\']>aggregatedValue[${
-        condition.aggType === Aggregators.P95 ? '95' : '99'
-      }]`
-    : "currentPeriod['all']>aggregatedValue";
+  const bucketPath = "currentPeriod['all']>aggregatedValue";
 
   const shouldTrigger = {
     bucket_script: {
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts
index 770d16c927e23..255475c8d8a5c 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts
@@ -8,25 +8,16 @@
 import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query';
 import { isEmpty } from 'lodash';
 import { CustomThresholdExpressionMetric } from '../../../../../common/custom_threshold_rule/types';
-import { MetricsExplorerCustomMetric } from './metrics_explorer';
-
-const isMetricExpressionCustomMetric = (
-  subject: MetricsExplorerCustomMetric | CustomThresholdExpressionMetric
-): subject is CustomThresholdExpressionMetric => {
-  return 'aggType' in subject;
-};
 
 export const createCustomMetricsAggregations = (
   id: string,
-  customMetrics: Array<MetricsExplorerCustomMetric | CustomThresholdExpressionMetric>,
+  customMetrics: CustomThresholdExpressionMetric[],
   equation?: string
 ) => {
   const bucketsPath: { [id: string]: string } = {};
   const metricAggregations = customMetrics.reduce((acc, metric) => {
     const key = `${id}_${metric.name}`;
-    const aggregation = isMetricExpressionCustomMetric(metric)
-      ? metric.aggType
-      : metric.aggregation;
+    const aggregation = metric.aggType;
 
     if (aggregation === 'count') {
       bucketsPath[metric.name] = `${key}>_count`;
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_percentile_aggregation.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_percentile_aggregation.ts
deleted file mode 100644
index 73db4a3e747ee..0000000000000
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_percentile_aggregation.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import { Aggregators } from '../../../../../common/custom_threshold_rule/types';
-
-export const createPercentileAggregation = (
-  type: Aggregators.P95 | Aggregators.P99,
-  field: string
-) => {
-  const value = type === Aggregators.P95 ? 95 : 99;
-  return {
-    aggregatedValue: {
-      percentiles: {
-        field,
-        percents: [value],
-        keyed: true,
-      },
-    },
-  };
-};
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts
deleted file mode 100644
index 3017d7bc95dcd..0000000000000
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import moment from 'moment';
-import { calculateRateTimeranges } from '../utils';
-
-export const createRateAggsBucketScript = (
-  timeframe: { start: number; end: number },
-  id: string
-) => {
-  const { intervalInSeconds } = calculateRateTimeranges({
-    to: timeframe.end,
-    from: timeframe.start,
-  });
-  return {
-    [id]: {
-      bucket_script: {
-        buckets_path: {
-          first: `currentPeriod['all']>${id}_first_bucket.maxValue`,
-          second: `currentPeriod['all']>${id}_second_bucket.maxValue`,
-        },
-        script: `params.second > 0.0 && params.first > 0.0 && params.second > params.first ? (params.second - params.first) / ${intervalInSeconds}: null`,
-      },
-    },
-  };
-};
-
-export const createRateAggsBuckets = (
-  timeframe: { start: number; end: number; timeFieldName: string },
-  id: string,
-  field: string
-) => {
-  const { firstBucketRange, secondBucketRange } = calculateRateTimeranges({
-    to: timeframe.end,
-    from: timeframe.start,
-  });
-
-  return {
-    [`${id}_first_bucket`]: {
-      filter: {
-        range: {
-          [timeframe.timeFieldName]: {
-            gte: moment(firstBucketRange.from).toISOString(),
-            lt: moment(firstBucketRange.to).toISOString(),
-          },
-        },
-      },
-      aggs: { maxValue: { max: { field } } },
-    },
-    [`${id}_second_bucket`]: {
-      filter: {
-        range: {
-          [timeframe.timeFieldName]: {
-            gte: moment(secondBucketRange.from).toISOString(),
-            lt: moment(secondBucketRange.to).toISOString(),
-          },
-        },
-      },
-      aggs: { maxValue: { max: { field } } },
-    },
-  };
-};
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts
index 41109fbeae912..c82f07594bf83 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts
@@ -5,7 +5,6 @@
  * 2.0.
  */
 
-import { Aggregators } from '../../../../../common/custom_threshold_rule/types';
 import moment from 'moment';
 
 import { createTimerange } from './create_timerange';
@@ -18,65 +17,37 @@ describe('createTimerange(interval, aggType, timeframe)', () => {
   };
   describe('Basic Metric Aggs', () => {
     it('should return a second range for last 1 second', () => {
-      const subject = createTimerange(1000, Aggregators.COUNT, timeframe);
+      const subject = createTimerange(1000, timeframe);
       expect(subject.end - subject.start).toEqual(1000);
     });
     it('should return a minute range for last 1 minute', () => {
-      const subject = createTimerange(60000, Aggregators.COUNT, timeframe);
+      const subject = createTimerange(60000, timeframe);
       expect(subject.end - subject.start).toEqual(60000);
     });
     it('should return 5 minute range for last 5 minutes', () => {
-      const subject = createTimerange(300000, Aggregators.COUNT, timeframe);
+      const subject = createTimerange(300000, timeframe);
       expect(subject.end - subject.start).toEqual(300000);
     });
     it('should return a hour range for last 1 hour', () => {
-      const subject = createTimerange(3600000, Aggregators.COUNT, timeframe);
+      const subject = createTimerange(3600000, timeframe);
       expect(subject.end - subject.start).toEqual(3600000);
     });
     it('should return a day range for last 1 day', () => {
-      const subject = createTimerange(86400000, Aggregators.COUNT, timeframe);
+      const subject = createTimerange(86400000, timeframe);
       expect(subject.end - subject.start).toEqual(86400000);
     });
   });
-  describe('Rate Aggs', () => {
-    it('should return a 20 second range for last 1 second', () => {
-      const subject = createTimerange(1000, Aggregators.RATE, timeframe);
-      expect(subject.end - subject.start).toEqual(1000 * 2);
-    });
-    it('should return a 5 minute range for last 1 minute', () => {
-      const subject = createTimerange(60000, Aggregators.RATE, timeframe);
-      expect(subject.end - subject.start).toEqual(60000 * 2);
-    });
-    it('should return 25 minute range for last 5 minutes', () => {
-      const subject = createTimerange(300000, Aggregators.RATE, timeframe);
-      expect(subject.end - subject.start).toEqual(300000 * 2);
-    });
-    it('should return 5 hour range for last hour', () => {
-      const subject = createTimerange(3600000, Aggregators.RATE, timeframe);
-      expect(subject.end - subject.start).toEqual(3600000 * 2);
-    });
-    it('should return a 5 day range for last day', () => {
-      const subject = createTimerange(86400000, Aggregators.RATE, timeframe);
-      expect(subject.end - subject.start).toEqual(86400000 * 2);
-    });
-  });
   describe('With lastPeriodEnd', () => {
     it('should return a minute and 1 second range for last 1 second when the lastPeriodEnd is less than the timeframe start', () => {
       const subject = createTimerange(
         1000,
-        Aggregators.COUNT,
         timeframe,
         end.clone().subtract(1, 'minutes').valueOf()
       );
       expect(subject.end - subject.start).toEqual(61000);
     });
     it('should return a second range for last 1 second when the lastPeriodEnd is not less than the timeframe start', () => {
-      const subject = createTimerange(
-        1000,
-        Aggregators.COUNT,
-        timeframe,
-        end.clone().add(2, 'seconds').valueOf()
-      );
+      const subject = createTimerange(1000, timeframe, end.clone().add(2, 'seconds').valueOf());
       expect(subject.end - subject.start).toEqual(1000);
     });
   });
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts
index 257318a0bd109..a6c39adcd3204 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts
@@ -6,20 +6,16 @@
  */
 
 import moment from 'moment';
-import { Aggregators } from '../../../../../common/custom_threshold_rule/types';
 
 export const createTimerange = (
   interval: number,
-  aggType: Aggregators,
   timeframe: { end: string; start: string },
   lastPeriodEnd?: number
 ) => {
   const end = moment(timeframe.end).valueOf();
   let start = moment(timeframe.start).valueOf();
 
-  // Rate aggregations need 5 buckets worth of data
-  const minimumBuckets = aggType === Aggregators.RATE ? 2 : 1;
-  start = start - interval * minimumBuckets;
+  start = start - interval;
 
   // Use lastPeriodEnd - interval when it's less than start
   if (lastPeriodEnd && lastPeriodEnd - interval < start) {
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts
index 30e3033d16737..b1f790da9d146 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts
@@ -8,35 +8,20 @@
 import moment from 'moment';
 import { ElasticsearchClient } from '@kbn/core/server';
 import type { Logger } from '@kbn/logging';
-import {
-  Aggregators,
-  CustomMetricExpressionParams,
-  MetricExpressionParams,
-} from '../../../../../common/custom_threshold_rule/types';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 import { AdditionalContext, getIntervalInSeconds } from '../utils';
-import {
-  AVERAGE_I18N,
-  CARDINALITY_I18N,
-  CUSTOM_EQUATION_I18N,
-  DOCUMENT_COUNT_I18N,
-  MAX_I18N,
-  MIN_I18N,
-  SUM_I18N,
-} from '../translations';
 import { SearchConfigurationType } from '../types';
 import { createTimerange } from './create_timerange';
 import { getData } from './get_data';
 import { checkMissingGroups, MissingGroupsRecord } from './check_missing_group';
-import { isCustom } from './metric_expression_params';
 
 export interface EvaluatedRuleParams {
-  criteria: MetricExpressionParams[];
+  criteria: CustomMetricExpressionParams[];
   groupBy: string | undefined | string[];
   searchConfiguration: SearchConfigurationType;
 }
 
-export type Evaluation = Omit<MetricExpressionParams, 'metric'> & {
-  metric: string;
+export type Evaluation = CustomMetricExpressionParams & {
   currentValue: number | null;
   timestamp: string;
   shouldFire: boolean;
@@ -45,26 +30,6 @@ export type Evaluation = Omit<MetricExpressionParams, 'metric'> & {
   context?: AdditionalContext;
 };
 
-const getMetric = (criterion: CustomMetricExpressionParams) => {
-  if (!criterion.label && criterion.metrics.length === 1) {
-    switch (criterion.metrics[0].aggType) {
-      case Aggregators.COUNT:
-        return DOCUMENT_COUNT_I18N;
-      case Aggregators.AVERAGE:
-        return AVERAGE_I18N(criterion.metrics[0].field!);
-      case Aggregators.MAX:
-        return MAX_I18N(criterion.metrics[0].field!);
-      case Aggregators.MIN:
-        return MIN_I18N(criterion.metrics[0].field!);
-      case Aggregators.CARDINALITY:
-        return CARDINALITY_I18N(criterion.metrics[0].field!);
-      case Aggregators.SUM:
-        return SUM_I18N(criterion.metrics[0].field!);
-    }
-  }
-  return criterion.label || CUSTOM_EQUATION_I18N;
-};
-
 export const evaluateRule = async <Params extends EvaluatedRuleParams = EvaluatedRuleParams>(
   esClient: ElasticsearchClient,
   params: Params,
@@ -84,12 +49,7 @@ export const evaluateRule = async <Params extends EvaluatedRuleParams = Evaluate
       const interval = `${criterion.timeSize}${criterion.timeUnit}`;
       const intervalAsSeconds = getIntervalInSeconds(interval);
       const intervalAsMS = intervalAsSeconds * 1000;
-      const calculatedTimerange = createTimerange(
-        intervalAsMS,
-        criterion.aggType,
-        timeframe,
-        lastPeriodEnd
-      );
+      const calculatedTimerange = createTimerange(intervalAsMS, timeframe, lastPeriodEnd);
 
       const currentValues = await getData(
         esClient,
@@ -133,12 +93,6 @@ export const evaluateRule = async <Params extends EvaluatedRuleParams = Evaluate
         if (result.trigger || result.value === null) {
           evaluations[key] = {
             ...criterion,
-            metric:
-              criterion.aggType === 'count'
-                ? DOCUMENT_COUNT_I18N
-                : isCustom(criterion)
-                ? getMetric(criterion)
-                : criterion.metric,
             currentValue: result.value,
             timestamp: moment(calculatedTimerange.end).toISOString(),
             shouldFire: result.trigger,
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts
index 926096fd62585..c0220d89c9d98 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts
@@ -6,7 +6,17 @@
  */
 
 import { i18n } from '@kbn/i18n';
+import { Aggregators } from '../../../../../common/custom_threshold_rule/types';
 import { createFormatter } from '../../../../../common/custom_threshold_rule/formatters';
+import {
+  AVERAGE_I18N,
+  CARDINALITY_I18N,
+  CUSTOM_EQUATION_I18N,
+  DOCUMENT_COUNT_I18N,
+  MAX_I18N,
+  MIN_I18N,
+  SUM_I18N,
+} from '../translations';
 import { Evaluation } from './evaluate_rule';
 
 export type FormattedEvaluation = Omit<Evaluation, 'currentValue' | 'threshold'> & {
@@ -14,31 +24,45 @@ export type FormattedEvaluation = Omit<Evaluation, 'currentValue' | 'threshold'>
   threshold: string[];
 };
 
+export const getLabel = (criterion: Evaluation) => {
+  if (!criterion.label && criterion.metrics.length === 1) {
+    switch (criterion.metrics[0].aggType) {
+      case Aggregators.COUNT:
+        return DOCUMENT_COUNT_I18N;
+      case Aggregators.AVERAGE:
+        return AVERAGE_I18N(criterion.metrics[0].field!);
+      case Aggregators.MAX:
+        return MAX_I18N(criterion.metrics[0].field!);
+      case Aggregators.MIN:
+        return MIN_I18N(criterion.metrics[0].field!);
+      case Aggregators.CARDINALITY:
+        return CARDINALITY_I18N(criterion.metrics[0].field!);
+      case Aggregators.SUM:
+        return SUM_I18N(criterion.metrics[0].field!);
+    }
+  }
+  return criterion.label || CUSTOM_EQUATION_I18N;
+};
+
 export const formatAlertResult = (evaluationResult: Evaluation): FormattedEvaluation => {
-  const { metric, currentValue, threshold, comparator } = evaluationResult;
+  const { metrics, currentValue, threshold, comparator } = evaluationResult;
   const noDataValue = i18n.translate(
     'xpack.observability.customThreshold.rule.alerting.threshold.noDataFormattedValue',
     { defaultMessage: '[NO DATA]' }
   );
 
-  if (metric.endsWith('.pct')) {
-    const formatter = createFormatter('percent');
-    return {
-      ...evaluationResult,
-      currentValue:
-        currentValue !== null && currentValue !== undefined ? formatter(currentValue) : noDataValue,
-      threshold: Array.isArray(threshold)
-        ? threshold.map((v: number) => formatter(v))
-        : [formatter(threshold)],
-      comparator,
-    };
+  let formatter = createFormatter('highPrecision');
+  const label = getLabel(evaluationResult);
+
+  if (metrics.length === 1 && metrics[0].field && metrics[0].field.endsWith('.pct')) {
+    formatter = createFormatter('percent');
   }
 
-  const formatter = createFormatter('highPrecision');
   return {
     ...evaluationResult,
     currentValue:
       currentValue !== null && currentValue !== undefined ? formatter(currentValue) : noDataValue,
+    label: label || CUSTOM_EQUATION_I18N,
     threshold: Array.isArray(threshold)
       ? threshold.map((v: number) => formatter(v))
       : [formatter(threshold)],
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts
index 7d7a9e2997acc..9658e0876ca1e 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts
@@ -9,11 +9,7 @@ import { SearchResponse, AggregationsAggregate } from '@elastic/elasticsearch/li
 import { ElasticsearchClient } from '@kbn/core/server';
 import type { Logger } from '@kbn/logging';
 import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common/search_strategy';
-import {
-  Aggregators,
-  Comparator,
-  MetricExpressionParams,
-} from '../../../../../common/custom_threshold_rule/types';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 
 import { UNGROUPED_FACTORY_KEY } from '../constants';
 import { CONTAINER_ID, AdditionalContext, doFieldsExist, KUBERNETES_POD_UID } from '../utils';
@@ -81,11 +77,6 @@ interface ResponseAggregations extends Partial<Aggs> {
   };
 }
 
-const getValue = (aggregatedValue: AggregatedValue, params: MetricExpressionParams) =>
-  [Aggregators.P95, Aggregators.P99].includes(params.aggType) && aggregatedValue.values != null
-    ? aggregatedValue.values[params.aggType === Aggregators.P95 ? '95.0' : '99.0']
-    : aggregatedValue.value;
-
 const NO_DATA_RESPONSE = {
   [UNGROUPED_FACTORY_KEY]: {
     value: null,
@@ -105,7 +96,7 @@ const createContainerList = (containerContext: ContainerContext) => {
 
 export const getData = async (
   esClient: ElasticsearchClient,
-  params: MetricExpressionParams,
+  params: CustomMetricExpressionParams,
   index: string,
   timeFieldName: string,
   groupBy: string | undefined | string[],
@@ -132,16 +123,10 @@ export const getData = async (
       const nextAfterKey = groupings.after_key;
       for (const bucket of groupings.buckets) {
         const key = Object.values(bucket.key).join(',');
-        const {
-          shouldTrigger,
-          missingGroup,
-          currentPeriod,
-          aggregatedValue: aggregatedValueForRate,
-          additionalContext,
-          containerContext,
-        } = bucket;
+        const { shouldTrigger, missingGroup, currentPeriod, additionalContext, containerContext } =
+          bucket;
 
-        const { aggregatedValue, doc_count: docCount } = currentPeriod.buckets.all;
+        const { aggregatedValue } = currentPeriod.buckets.all;
 
         const containerList = containerContext ? createContainerList(containerContext) : undefined;
 
@@ -156,14 +141,7 @@ export const getData = async (
             bucketKey: bucket.key,
           };
         } else {
-          const value =
-            params.aggType === Aggregators.COUNT
-              ? docCount
-              : params.aggType === Aggregators.RATE && aggregatedValueForRate != null
-              ? aggregatedValueForRate.value
-              : aggregatedValue != null
-              ? getValue(aggregatedValue, params)
-              : null;
+          const value = aggregatedValue ? aggregatedValue.value : null;
 
           previous[key] = {
             trigger: (shouldTrigger && shouldTrigger.value > 0) || false,
@@ -194,36 +172,10 @@ export const getData = async (
       return previous;
     }
     if (aggs.all?.buckets.all) {
-      const {
-        currentPeriod,
-        aggregatedValue: aggregatedValueForRate,
-        shouldTrigger,
-      } = aggs.all.buckets.all;
-
-      const { aggregatedValue, doc_count: docCount } = currentPeriod.buckets.all;
+      const { currentPeriod, shouldTrigger } = aggs.all.buckets.all;
 
-      const value =
-        params.aggType === Aggregators.COUNT
-          ? docCount
-          : params.aggType === Aggregators.RATE && aggregatedValueForRate != null
-          ? aggregatedValueForRate.value
-          : aggregatedValue != null
-          ? getValue(aggregatedValue, params)
-          : null;
-      // There is an edge case where there is no results and the shouldTrigger
-      // bucket scripts will be missing. This is only an issue for document count because
-      // the value will end up being ZERO, for other metrics it will be null. In this case
-      // we need to do the evaluation in Node.js
-      if (aggs.all && params.aggType === Aggregators.COUNT && value === 0) {
-        const trigger = comparatorMap[params.comparator](value, params.threshold);
-        return {
-          [UNGROUPED_FACTORY_KEY]: {
-            value,
-            trigger,
-            bucketKey: { groupBy0: UNGROUPED_FACTORY_KEY },
-          },
-        };
-      }
+      const { aggregatedValue } = currentPeriod.buckets.all;
+      const value = aggregatedValue ? aggregatedValue.value : null;
       return {
         [UNGROUPED_FACTORY_KEY]: {
           value,
@@ -268,15 +220,3 @@ export const getData = async (
   }
   return NO_DATA_RESPONSE;
 };
-
-const comparatorMap = {
-  [Comparator.BETWEEN]: (value: number, [a, b]: number[]) =>
-    value >= Math.min(a, b) && value <= Math.max(a, b),
-  // `threshold` is always an array of numbers in case the BETWEEN comparator is
-  // used; all other compartors will just destructure the first value in the array
-  [Comparator.GT]: (a: number, [b]: number[]) => a > b,
-  [Comparator.LT]: (a: number, [b]: number[]) => a < b,
-  [Comparator.OUTSIDE_RANGE]: (value: number, [a, b]: number[]) => value < a || value > b,
-  [Comparator.GT_OR_EQ]: (a: number, [b]: number[]) => a >= b,
-  [Comparator.LT_OR_EQ]: (a: number, [b]: number[]) => a <= b,
-};
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_expression_params.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_expression_params.ts
deleted file mode 100644
index 278f33dadafe9..0000000000000
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_expression_params.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import {
-  CustomMetricExpressionParams,
-  MetricExpressionParams,
-  NonCountMetricExpressionParams,
-} from '../../../../../common/custom_threshold_rule/types';
-
-export const isNotCountOrCustom = (
-  metricExpressionParams: MetricExpressionParams
-): metricExpressionParams is NonCountMetricExpressionParams => {
-  const { aggType } = metricExpressionParams;
-  return aggType !== 'count' && aggType !== 'custom';
-};
-
-export const isCustom = (
-  metricExpressionParams: MetricExpressionParams
-): metricExpressionParams is CustomMetricExpressionParams => {
-  const { aggType } = metricExpressionParams;
-  return aggType === 'custom';
-};
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts
index cdfe0c66c0ab9..53a89303fa171 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts
@@ -5,18 +5,25 @@
  * 2.0.
  */
 
+import moment from 'moment';
+import { CUSTOM_AGGREGATOR } from '../../../../../common/custom_threshold_rule/constants';
 import {
   Comparator,
   Aggregators,
-  MetricExpressionParams,
+  CustomMetricExpressionParams,
 } from '../../../../../common/custom_threshold_rule/types';
-import moment from 'moment';
 import { getElasticsearchMetricQuery } from './metric_query';
 
 describe("The Metric Threshold Alert's getElasticsearchMetricQuery", () => {
-  const expressionParams: MetricExpressionParams = {
-    metric: 'system.is.a.good.puppy.dog',
-    aggType: Aggregators.AVERAGE,
+  const expressionParams: CustomMetricExpressionParams = {
+    metrics: [
+      {
+        name: 'A',
+        aggType: Aggregators.AVERAGE,
+        field: 'system.is.a.good.puppy.dog',
+      },
+    ],
+    aggType: CUSTOM_AGGREGATOR,
     timeUnit: 'm',
     timeSize: 1,
     threshold: [1],
@@ -47,8 +54,28 @@ describe("The Metric Threshold Alert's getElasticsearchMetricQuery", () => {
     });
 
     test('includes a metric field filter', () => {
-      expect(searchBody.query.bool.filter).toMatchObject(
-        expect.arrayContaining([{ exists: { field: 'system.is.a.good.puppy.dog' } }])
+      expect(searchBody.aggs.groupings.aggs.currentPeriod).toMatchObject(
+        expect.objectContaining({
+          aggs: {
+            // eslint-disable-next-line @typescript-eslint/naming-convention
+            aggregatedValue_A: {
+              avg: {
+                field: 'system.is.a.good.puppy.dog',
+              },
+            },
+            aggregatedValue: {
+              bucket_script: {
+                buckets_path: {
+                  A: 'aggregatedValue_A',
+                },
+                script: {
+                  source: 'params.A',
+                  lang: 'painless',
+                },
+              },
+            },
+          },
+        })
       );
     });
   });
@@ -79,7 +106,6 @@ describe("The Metric Threshold Alert's getElasticsearchMetricQuery", () => {
       expect(searchBody.query.bool.filter).toMatchObject(
         expect.arrayContaining([
           { range: { mockedTimeFieldName: expect.any(Object) } },
-          { exists: { field: 'system.is.a.good.puppy.dog' } },
           {
             bool: {
               filter: [
@@ -108,6 +134,36 @@ describe("The Metric Threshold Alert's getElasticsearchMetricQuery", () => {
           },
         ])
       );
+      expect(searchBody.aggs.groupings.aggs).toMatchObject(
+        expect.objectContaining({
+          currentPeriod: {
+            filters: {
+              filters: {
+                all: { range: { mockedTimeFieldName: expect.any(Object) } },
+              },
+            },
+            aggs: {
+              // eslint-disable-next-line @typescript-eslint/naming-convention
+              aggregatedValue_A: {
+                avg: {
+                  field: 'system.is.a.good.puppy.dog',
+                },
+              },
+              aggregatedValue: {
+                bucket_script: {
+                  buckets_path: {
+                    A: 'aggregatedValue_A',
+                  },
+                  script: {
+                    source: 'params.A',
+                    lang: 'painless',
+                  },
+                },
+              },
+            },
+          },
+        })
+      );
     });
   });
 });
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts
index 66868ad97dfc9..6471926522929 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts
@@ -6,11 +6,7 @@
  */
 
 import moment from 'moment';
-import {
-  Aggregators,
-  MetricExpressionParams,
-} from '../../../../../common/custom_threshold_rule/types';
-import { isCustom, isNotCountOrCustom } from './metric_expression_params';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 import { createCustomMetricsAggregations } from './create_custom_metrics_aggregations';
 import {
   CONTAINER_ID,
@@ -20,26 +16,19 @@ import {
   validGroupByForContext,
 } from '../utils';
 import { createBucketSelector } from './create_bucket_selector';
-import { createPercentileAggregation } from './create_percentile_aggregation';
-import { createRateAggsBuckets, createRateAggsBucketScript } from './create_rate_aggregation';
 import { wrapInCurrentPeriod } from './wrap_in_period';
 import { getParsedFilterQuery } from '../../../../utils/get_parsed_filtered_query';
 
 export const calculateCurrentTimeframe = (
-  metricParams: MetricExpressionParams,
+  metricParams: CustomMetricExpressionParams,
   timeframe: { start: number; end: number }
 ) => ({
   ...timeframe,
-  start: moment(timeframe.end)
-    .subtract(
-      metricParams.aggType === Aggregators.RATE ? metricParams.timeSize * 2 : metricParams.timeSize,
-      metricParams.timeUnit
-    )
-    .valueOf(),
+  start: moment(timeframe.end).subtract(metricParams.timeSize, metricParams.timeUnit).valueOf(),
 });
 
 export const createBaseFilters = (
-  metricParams: MetricExpressionParams,
+  metricParams: CustomMetricExpressionParams,
   timeframe: { start: number; end: number },
   timeFieldName: string,
   filterQuery?: string
@@ -55,24 +44,13 @@ export const createBaseFilters = (
     },
   ];
 
-  const metricFieldFilters =
-    isNotCountOrCustom(metricParams) && metricParams.metric
-      ? [
-          {
-            exists: {
-              field: metricParams.metric,
-            },
-          },
-        ]
-      : [];
-
   const parsedFilterQuery = getParsedFilterQuery(filterQuery);
 
-  return [...rangeFilters, ...metricFieldFilters, ...parsedFilterQuery];
+  return [...rangeFilters, ...parsedFilterQuery];
 };
 
 export const getElasticsearchMetricQuery = (
-  metricParams: MetricExpressionParams,
+  metricParams: CustomMetricExpressionParams,
   timeframe: { start: number; end: number },
   timeFieldName: string,
   compositeSize: number,
@@ -83,13 +61,6 @@ export const getElasticsearchMetricQuery = (
   afterKey?: Record<string, string>,
   fieldsExisted?: Record<string, boolean> | null
 ) => {
-  const { aggType } = metricParams;
-  if (isNotCountOrCustom(metricParams) && !metricParams.metric) {
-    throw new Error(
-      'Can only aggregate without a metric if using the document count or custom aggregator'
-    );
-  }
-
   // We need to make a timeframe that represents the current timeframe as opposed
   // to the total timeframe (which includes the last period).
   const currentTimeframe = {
@@ -97,26 +68,11 @@ export const getElasticsearchMetricQuery = (
     timeFieldName,
   };
 
-  const metricAggregations =
-    aggType === Aggregators.COUNT
-      ? {}
-      : aggType === Aggregators.RATE
-      ? createRateAggsBuckets(currentTimeframe, 'aggregatedValue', metricParams.metric)
-      : aggType === Aggregators.P95 || aggType === Aggregators.P99
-      ? createPercentileAggregation(aggType, metricParams.metric)
-      : isCustom(metricParams)
-      ? createCustomMetricsAggregations(
-          'aggregatedValue',
-          metricParams.metrics,
-          metricParams.equation
-        )
-      : {
-          aggregatedValue: {
-            [aggType]: {
-              field: metricParams.metric,
-            },
-          },
-        };
+  const metricAggregations = createCustomMetricsAggregations(
+    'aggregatedValue',
+    metricParams.metrics,
+    metricParams.equation
+  );
 
   const bucketSelectorAggregations = createBucketSelector(
     metricParams,
@@ -126,11 +82,6 @@ export const getElasticsearchMetricQuery = (
     lastPeriodEnd
   );
 
-  const rateAggBucketScript =
-    metricParams.aggType === Aggregators.RATE
-      ? createRateAggsBucketScript(currentTimeframe, 'aggregatedValue')
-      : {};
-
   const currentPeriod = wrapInCurrentPeriod(currentTimeframe, metricAggregations);
 
   const containerIncludesList = ['container.*'];
@@ -207,7 +158,6 @@ export const getElasticsearchMetricQuery = (
           },
           aggs: {
             ...currentPeriod,
-            ...rateAggBucketScript,
             ...bucketSelectorAggregations,
             ...additionalContextAgg,
             ...containerContextAgg,
@@ -225,7 +175,6 @@ export const getElasticsearchMetricQuery = (
           },
           aggs: {
             ...currentPeriod,
-            ...rateAggBucketScript,
             ...bucketSelectorAggregations,
           },
         },
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metrics_explorer.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metrics_explorer.ts
deleted file mode 100644
index e72974828b027..0000000000000
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/metrics_explorer.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0; you may not use this file except in compliance with the Elastic License
- * 2.0.
- */
-
-import * as rt from 'io-ts';
-import { METRIC_EXPLORER_AGGREGATIONS } from '../../../../../common/custom_threshold_rule/constants';
-import { metricsExplorerCustomMetricAggregationRT } from '../../../../../common/custom_threshold_rule/metrics_explorer';
-
-type MetricExplorerAggregations = typeof METRIC_EXPLORER_AGGREGATIONS[number];
-
-const metricsExplorerAggregationKeys = METRIC_EXPLORER_AGGREGATIONS.reduce<
-  Record<MetricExplorerAggregations, null>
->((acc, agg) => ({ ...acc, [agg]: null }), {} as Record<MetricExplorerAggregations, null>);
-
-export const metricsExplorerAggregationRT = rt.keyof(metricsExplorerAggregationKeys);
-
-export const metricsExplorerMetricRequiredFieldsRT = rt.type({
-  aggregation: metricsExplorerAggregationRT,
-});
-
-export const metricsExplorerCustomMetricRT = rt.intersection([
-  rt.type({
-    name: rt.string,
-    aggregation: metricsExplorerCustomMetricAggregationRT,
-  }),
-  rt.partial({
-    field: rt.string,
-    filter: rt.string,
-  }),
-]);
-
-export type MetricsExplorerCustomMetric = rt.TypeOf<typeof metricsExplorerCustomMetricRT>;
-
-export const metricsExplorerMetricOptionalFieldsRT = rt.partial({
-  field: rt.union([rt.string, rt.undefined]),
-  custom_metrics: rt.array(metricsExplorerCustomMetricRT),
-  equation: rt.string,
-});
-
-export const metricsExplorerMetricRT = rt.intersection([
-  metricsExplorerMetricRequiredFieldsRT,
-  metricsExplorerMetricOptionalFieldsRT,
-]);
-
-export const timeRangeRT = rt.type({
-  from: rt.number,
-  to: rt.number,
-  interval: rt.string,
-});
-
-export const metricsExplorerRequestBodyRequiredFieldsRT = rt.type({
-  timerange: timeRangeRT,
-  indexPattern: rt.string,
-  metrics: rt.array(metricsExplorerMetricRT),
-});
-
-const groupByRT = rt.union([rt.string, rt.null, rt.undefined]);
-export const afterKeyObjectRT = rt.record(rt.string, rt.union([rt.string, rt.null]));
-
-export const metricsExplorerRequestBodyOptionalFieldsRT = rt.partial({
-  groupBy: rt.union([groupByRT, rt.array(groupByRT)]),
-  afterKey: rt.union([rt.string, rt.null, rt.undefined, afterKeyObjectRT]),
-  limit: rt.union([rt.number, rt.null, rt.undefined]),
-  filterQuery: rt.union([rt.string, rt.null, rt.undefined]),
-  forceInterval: rt.boolean,
-  dropLastBucket: rt.boolean,
-});
-
-export const metricsExplorerRequestBodyRT = rt.intersection([
-  metricsExplorerRequestBodyRequiredFieldsRT,
-  metricsExplorerRequestBodyOptionalFieldsRT,
-]);
-
-export const metricsExplorerPageInfoRT = rt.type({
-  total: rt.number,
-  afterKey: rt.union([rt.string, rt.null, afterKeyObjectRT]),
-});
-
-export const metricsExplorerColumnTypeRT = rt.keyof({
-  date: null,
-  number: null,
-  string: null,
-});
-
-export const metricsExplorerColumnRT = rt.type({
-  name: rt.string,
-  type: metricsExplorerColumnTypeRT,
-});
-
-export const metricsExplorerRowRT = rt.intersection([
-  rt.type({
-    timestamp: rt.number,
-  }),
-  rt.record(
-    rt.string,
-    rt.union([rt.string, rt.number, rt.null, rt.undefined, rt.array(rt.object)])
-  ),
-]);
-
-export const metricsExplorerSeriesRT = rt.intersection([
-  rt.type({
-    id: rt.string,
-    columns: rt.array(metricsExplorerColumnRT),
-    rows: rt.array(metricsExplorerRowRT),
-  }),
-  rt.partial({
-    keys: rt.array(rt.string),
-  }),
-]);
-
-export const metricsExplorerResponseRT = rt.type({
-  series: rt.array(metricsExplorerSeriesRT),
-  pageInfo: metricsExplorerPageInfoRT,
-});
-
-export type AfterKey = rt.TypeOf<typeof afterKeyObjectRT>;
-
-export type MetricsExplorerColumnType = rt.TypeOf<typeof metricsExplorerColumnTypeRT>;
-
-export type MetricsExplorerPageInfo = rt.TypeOf<typeof metricsExplorerPageInfoRT>;
-
-export type MetricsExplorerColumn = rt.TypeOf<typeof metricsExplorerColumnRT>;
-
-export type MetricsExplorerRow = rt.TypeOf<typeof metricsExplorerRowRT>;
-
-export type MetricsExplorerRequestBody = rt.TypeOf<typeof metricsExplorerRequestBodyRT>;
-
-export type MetricsExplorerResponse = rt.TypeOf<typeof metricsExplorerResponseRT>;
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts
index a76c45e4e4583..2e23ba5ae45dd 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts
@@ -6,11 +6,11 @@
  */
 
 import moment from 'moment';
-import { MetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
+import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types';
 
 export const createLastPeriod = (
   lastPeriodEnd: number,
-  { timeUnit, timeSize }: MetricExpressionParams,
+  { timeUnit, timeSize }: CustomMetricExpressionParams,
   timeFieldName: string
 ) => {
   const start = moment(lastPeriodEnd).subtract(timeSize, timeUnit).toISOString();
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/messages.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/messages.ts
index 4a8d7a2c2dc8a..973ce8f57093a 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/messages.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/messages.ts
@@ -10,7 +10,13 @@ import { Comparator } from '../../../../common/custom_threshold_rule/types';
 import { formatDurationFromTimeUnitChar } from '../../../../common';
 import { Evaluation } from './lib/evaluate_rule';
 import { formatAlertResult, FormattedEvaluation } from './lib/format_alert_result';
-import { BELOW_TEXT, ABOVE_TEXT, BETWEEN_TEXT, NOT_BETWEEN_TEXT } from './translations';
+import {
+  BELOW_TEXT,
+  ABOVE_TEXT,
+  BETWEEN_TEXT,
+  NOT_BETWEEN_TEXT,
+  CUSTOM_EQUATION_I18N,
+} from './translations';
 import { UNGROUPED_FACTORY_KEY } from './constants';
 
 const toNumber = (value: number | string) =>
@@ -103,17 +109,15 @@ export const buildFiredAlertReason: (
 };
 
 const buildAggregationReason: (evaluation: FormattedEvaluation) => string = ({
-  metric,
+  label,
   comparator,
   threshold,
   currentValue,
-  timeSize,
-  timeUnit,
 }) =>
   i18n.translate('xpack.observability.customThreshold.rule.threshold.firedAlertReason', {
-    defaultMessage: '{metric} is {currentValue}, {comparator} the threshold of {threshold}',
+    defaultMessage: '{label} is {currentValue}, {comparator} the threshold of {threshold}',
     values: {
-      metric,
+      label,
       comparator: alertComparatorToI18n(comparator),
       threshold: thresholdToI18n(threshold),
       currentValue,
@@ -123,16 +127,16 @@ const buildAggregationReason: (evaluation: FormattedEvaluation) => string = ({
 // Once recovered reason messages are re-enabled, checkout this issue https://github.com/elastic/kibana/issues/121272 regarding latest reason format
 export const buildRecoveredAlertReason: (alertResult: {
   group: string;
-  metric: string;
+  label?: string;
   comparator: Comparator;
   threshold: Array<number | string>;
   currentValue: number | string;
-}) => string = ({ group, metric, comparator, threshold, currentValue }) =>
+}) => string = ({ group, label = CUSTOM_EQUATION_I18N, comparator, threshold, currentValue }) =>
   i18n.translate('xpack.observability.customThreshold.rule.threshold.recoveredAlertReason', {
     defaultMessage:
-      '{metric} is now {comparator} a threshold of {threshold} (current value is {currentValue}) for {group}',
+      '{label} is now {comparator} a threshold of {threshold} (current value is {currentValue}) for {group}',
     values: {
-      metric,
+      label,
       comparator: recoveredComparatorToI18n(
         comparator,
         threshold.map(toNumber),
@@ -144,16 +148,16 @@ export const buildRecoveredAlertReason: (alertResult: {
     },
   });
 
-export const buildNoDataAlertReason: (alertResult: {
-  group: string;
-  metric: string;
-  timeSize: number;
-  timeUnit: string;
-}) => string = ({ group, metric, timeSize, timeUnit }) =>
+export const buildNoDataAlertReason: (alertResult: Evaluation & { group: string }) => string = ({
+  group,
+  label = CUSTOM_EQUATION_I18N,
+  timeSize,
+  timeUnit,
+}) =>
   i18n.translate('xpack.observability.customThreshold.rule.threshold.noDataAlertReason', {
-    defaultMessage: '{metric} reported no data in the last {interval}{group}',
+    defaultMessage: '{label} reported no data in the last {interval}{group}',
     values: {
-      metric,
+      label,
       interval: `${timeSize}${timeUnit}`,
       group: formatGroup(group),
     },
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts
index f3d2b1f6c9c94..2166c21db8609 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts
@@ -8,6 +8,7 @@
 import { DEFAULT_APP_CATEGORIES } from '@kbn/core/server';
 import { schema } from '@kbn/config-schema';
 import { extractReferences, injectReferences } from '@kbn/data-plugin/common';
+import { dataViewSpecSchema } from '@kbn/data-views-plugin/server/rest_api_routes/schema';
 import { i18n } from '@kbn/i18n';
 import { IRuleTypeAlerts, GetViewInAppRelativeUrlFnOpts } from '@kbn/alerting-plugin/server';
 import { IBasePath, Logger } from '@kbn/core/server';
@@ -52,7 +53,7 @@ export const MetricsRulesTypeAlertDefinition: IRuleTypeAlerts = {
 };
 
 export const searchConfigurationSchema = schema.object({
-  index: schema.string(),
+  index: schema.oneOf([schema.string(), dataViewSpecSchema]),
   query: schema.object({
     language: schema.string({
       validate: validateKQLStringFilter,
diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/types.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/types.ts
index 693277bd3af2a..97881f55d8d32 100644
--- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/types.ts
+++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/types.ts
@@ -18,8 +18,6 @@ import { FIRED_ACTIONS_ID, NO_DATA_ACTIONS_ID, FIRED_ACTION, NO_DATA_ACTION } fr
 import { MissingGroupsRecord } from './lib/check_missing_group';
 import { AdditionalContext } from './utils';
 import { searchConfigurationSchema } from './register_custom_threshold_rule_type';
-import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types';
-import { TimeUnitChar } from '../../../../common';
 
 export enum AlertStates {
   OK,
@@ -75,27 +73,6 @@ type CustomThresholdAlert = Alert<
   CustomThresholdSpecificActionGroups
 >;
 
-interface BaseMetricExpressionParams {
-  timeSize: number;
-  timeUnit: TimeUnitChar;
-  threshold: number[];
-  comparator: Comparator;
-}
-
-export interface NonCountMetricExpressionParams extends BaseMetricExpressionParams {
-  aggType: Exclude<Aggregators, [Aggregators.COUNT, Aggregators.CUSTOM]>;
-  metric: string;
-}
-
-export interface CountMetricExpressionParams extends BaseMetricExpressionParams {
-  aggType: Aggregators.COUNT;
-}
-
-export type CustomMetricAggTypes = Exclude<
-  Aggregators,
-  Aggregators.CUSTOM | Aggregators.RATE | Aggregators.P95 | Aggregators.P99
->;
-
 export interface AlertExecutionDetails {
   alertId: string;
   executionId: string;
diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json
index 4e2f8ef70482c..2eeefa1b3165a 100644
--- a/x-pack/plugins/observability/tsconfig.json
+++ b/x-pack/plugins/observability/tsconfig.json
@@ -70,7 +70,6 @@
     "@kbn/exploratory-view-plugin",
     "@kbn/rison",
     "@kbn/io-ts-utils",
-    "@kbn/ml-anomaly-utils",
     "@kbn/observability-alert-details",
     "@kbn/ui-actions-plugin",
     "@kbn/field-types",
diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json
index ad8ed89bb8061..ca26a40d31d22 100644
--- a/x-pack/plugins/translations/translations/fr-FR.json
+++ b/x-pack/plugins/translations/translations/fr-FR.json
@@ -29102,8 +29102,6 @@
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabel": "Dernière {lookback} {timeLabel}",
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabelWithGrouping": "Dernières {lookback} {timeLabel} de données pour {id}",
     "xpack.observability.customThreshold.rule.threshold.errorAlertReason": "Elasticsearch a échoué lors de l'interrogation des données pour {metric}",
-    "xpack.observability.customThreshold.rule.threshold.noDataAlertReason": "{metric} n'a signalé aucune donnée dans les dernières {interval} {group}",
-    "xpack.observability.customThreshold.rule.threshold.recoveredAlertReason": "{metric} est maintenant {comparator} un seuil de {threshold} (la valeur actuelle est {currentValue}) pour {group}",
     "xpack.observability.customThreshold.rule.threshold.thresholdRange": "{a} et {b}",
     "xpack.observability.customThreshold.rule.thresholdExtraTitle": "Alerte lorsque {comparator} {threshold}.",
     "xpack.observability.enableAgentExplorerDescription": "{betaLabel} Active la vue d'explorateur d'agent.",
@@ -29251,9 +29249,6 @@
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.count": "Compte du document",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.max": "Max",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.min": "Min",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p95": "95e centile",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p99": "99e centile",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.rate": "Taux",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.sum": "Somme",
     "xpack.observability.customThreshold.rule.alertFlyout.alertDescription": "Alerter quand un type de données Observability atteint ou dépasse une valeur donnée.",
     "xpack.observability.customThreshold.rule.alertFlyout.alertOnGroupDisappear": "Me prévenir si un groupe cesse de signaler les données",
@@ -29274,12 +29269,10 @@
     "xpack.observability.customThreshold.rule.alertFlyout.customEquationTooltip": "Ceci est compatible avec des calculs de base (A + B / C) et la logique booléenne (A < B ? A : B).",
     "xpack.observability.customThreshold.rule.alertFlyout.dataViewError.noTimestamp": "La vue de données sélectionnée ne dispose pas de champ d'horodatage. Veuillez sélectionner une autre vue de données.",
     "xpack.observability.customThreshold.rule.alertFlyout.defineTextQueryPrompt": "Définir le filtre de recherche (facultatif)",
-    "xpack.observability.customThreshold.rule.alertFlyout.docCountNoDataDisabledHelpText": "[Ce paramètre n’est pas applicable à l’agrégateur du nombre de documents.]",
     "xpack.observability.customThreshold.rule.alertFlyout.error.aggregationRequired": "L'agrégation est requise.",
     "xpack.observability.customThreshold.rule.alertFlyout.error.equation.invalidCharacters": "Le champ d'équation prend en charge uniquement les caractères suivants : A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidFilterQuery": "La requête de filtre n'est pas valide.",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidSearchConfiguration": "La vue de données est requise.",
-    "xpack.observability.customThreshold.rule.alertFlyout.error.metricRequired": "L'indicateur est requis.",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.aggTypeRequired": "L'agrégation est requise",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.fieldRequired": "Le champ est obligatoire",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metricsError": "Vous devez définir au moins 1 indicateur personnalisé",
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index f529bae21b70e..18ff35c3bb09d 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -29101,8 +29101,6 @@
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabel": "最後の{lookback} {timeLabel}",
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabelWithGrouping": "{id}のデータの最後の{lookback} {timeLabel}",
     "xpack.observability.customThreshold.rule.threshold.errorAlertReason": "{metric}のデータのクエリを試行しているときに、Elasticsearchが失敗しました",
-    "xpack.observability.customThreshold.rule.threshold.noDataAlertReason": "{metric}は最後の{interval}{group}でデータがないことを報告しました",
-    "xpack.observability.customThreshold.rule.threshold.recoveredAlertReason": "{metric} が {comparator} に、{group} が {threshold} のしきい値(現在の値は {currentValue})になりました",
     "xpack.observability.customThreshold.rule.threshold.thresholdRange": "{a}および{b}",
     "xpack.observability.customThreshold.rule.thresholdExtraTitle": "{comparator} {threshold}のときにアラートを通知",
     "xpack.observability.enableAgentExplorerDescription": "{betaLabel}エージェントエクスプローラー表示を有効にします。",
@@ -29250,9 +29248,6 @@
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.count": "ドキュメントカウント",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.max": "最高",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.min": "最低",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p95": "95パーセンタイル",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p99": "99パーセンタイル",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.rate": "レート",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.sum": "合計",
     "xpack.observability.customThreshold.rule.alertFlyout.alertDescription": "オブザーバビリティデータタイプが特定の値以上になったときにアラートを送信します。",
     "xpack.observability.customThreshold.rule.alertFlyout.alertOnGroupDisappear": "グループがデータのレポートを停止する場合にアラートで通知する",
@@ -29273,12 +29268,10 @@
     "xpack.observability.customThreshold.rule.alertFlyout.customEquationTooltip": "これは基本的な数学ロジック(A + B / C)とブールロジック(A < B ?A :B)をサポートします。",
     "xpack.observability.customThreshold.rule.alertFlyout.dataViewError.noTimestamp": "選択したデータビューにタイムスタンプフィールドがありません。他のデータビューを選択してください。",
     "xpack.observability.customThreshold.rule.alertFlyout.defineTextQueryPrompt": "クエリフィルターを定義(任意)",
-    "xpack.observability.customThreshold.rule.alertFlyout.docCountNoDataDisabledHelpText": "[この設定は、ドキュメントカウントアグリゲーターには適用されません。]",
     "xpack.observability.customThreshold.rule.alertFlyout.error.aggregationRequired": "集約が必要です。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.equation.invalidCharacters": "等式フィールドでは次の文字のみを使用できます:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidFilterQuery": "フィルタークエリは無効です。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidSearchConfiguration": "データビューが必要です。",
-    "xpack.observability.customThreshold.rule.alertFlyout.error.metricRequired": "メトリックが必要です。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.aggTypeRequired": "集約が必要です",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.fieldRequired": "フィールドが必要です",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metricsError": "1つ以上のカスタムメトリックを定義する必要があります",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 7ef6acf6b7b43..617557d691e2c 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -29099,8 +29099,6 @@
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabel": "过去 {lookback} {timeLabel}",
     "xpack.observability.customThreshold.rule.alerts.dataTimeRangeLabelWithGrouping": "{id} 过去 {lookback} {timeLabel}的数据",
     "xpack.observability.customThreshold.rule.threshold.errorAlertReason": "Elasticsearch 尝试查询 {metric} 的数据时出现故障",
-    "xpack.observability.customThreshold.rule.threshold.noDataAlertReason": "对于 {group},{metric} 在过去 {interval}中未报告数据",
-    "xpack.observability.customThreshold.rule.threshold.recoveredAlertReason": "对于 {group},{metric} 现在{comparator}阈值 {threshold}(当前值为 {currentValue})",
     "xpack.observability.customThreshold.rule.threshold.thresholdRange": "{a} 和 {b}",
     "xpack.observability.customThreshold.rule.thresholdExtraTitle": "{comparator} {threshold} 时告警",
     "xpack.observability.enableAgentExplorerDescription": "{betaLabel} 启用代理浏览器视图。",
@@ -29248,9 +29246,6 @@
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.count": "文档计数",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.max": "最大值",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.min": "最小值",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p95": "第 95 个百分位",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.p99": "第 99 个百分位",
-    "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.rate": "比率",
     "xpack.observability.customThreshold.rule.alertFlyout.aggregationText.sum": "求和",
     "xpack.observability.customThreshold.rule.alertFlyout.alertDescription": "任何 Observability 数据类型到达或超出给定值时告警。",
     "xpack.observability.customThreshold.rule.alertFlyout.alertOnGroupDisappear": "组停止报告数据时提醒我",
@@ -29271,12 +29266,10 @@
     "xpack.observability.customThreshold.rule.alertFlyout.customEquationTooltip": "这支持基本数学 (A + B / C) 和布尔逻辑 (A < B ?A :B)。",
     "xpack.observability.customThreshold.rule.alertFlyout.dataViewError.noTimestamp": "选定数据视图没有时间戳字段,请选择其他数据视图。",
     "xpack.observability.customThreshold.rule.alertFlyout.defineTextQueryPrompt": "定义查询筛选(可选)",
-    "xpack.observability.customThreshold.rule.alertFlyout.docCountNoDataDisabledHelpText": "[此设置不适用于文档计数聚合器。]",
     "xpack.observability.customThreshold.rule.alertFlyout.error.aggregationRequired": "“聚合”必填。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.equation.invalidCharacters": "方程字段仅支持以下字符:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidFilterQuery": "筛选查询无效。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.invalidSearchConfiguration": "需要数据视图。",
-    "xpack.observability.customThreshold.rule.alertFlyout.error.metricRequired": "“指标”必填。",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.aggTypeRequired": "“聚合”必填",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metrics.fieldRequired": "“字段”必填",
     "xpack.observability.customThreshold.rule.alertFlyout.error.metricsError": "必须至少定义 1 个定制指标",
diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx
index 9988fd94eee59..7e8eb5d6feee0 100644
--- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx
@@ -115,6 +115,23 @@ describe('threshold expression', () => {
     expect(onChangeSelectedThresholdComparator).toHaveBeenCalled();
   });
 
+  it('renders threshold unit correctly', async () => {
+    const wrapper = mountWithIntl(
+      <ThresholdExpression
+        thresholdComparator={'>'}
+        threshold={[10]}
+        errors={{ threshold0: [], threshold1: [] }}
+        onChangeSelectedThreshold={jest.fn()}
+        onChangeSelectedThresholdComparator={jest.fn()}
+        unit="%"
+      />
+    );
+
+    expect(wrapper.find('[data-test-subj="thresholdPopover"]').last().text()).toMatchInlineSnapshot(
+      `"Is above 10%"`
+    );
+  });
+
   it('renders the correct number of threshold inputs', async () => {
     const wrapper = mountWithIntl(
       <ThresholdExpression
diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.tsx
index 9f43a652cb2d4..fdbd0f6bc7022 100644
--- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.tsx
+++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.tsx
@@ -46,6 +46,7 @@ export interface ThresholdExpressionProps {
     | 'rightUp'
     | 'rightDown';
   display?: 'fullWidth' | 'inline';
+  unit?: string;
 }
 
 export const ThresholdExpression = ({
@@ -57,6 +58,7 @@ export const ThresholdExpression = ({
   display = 'inline',
   threshold = [],
   popupPosition,
+  unit = '',
 }: ThresholdExpressionProps) => {
   const comparators = customComparators ?? builtInComparators;
   const [alertThresholdPopoverOpen, setAlertThresholdPopoverOpen] = useState(false);
@@ -88,7 +90,9 @@ export const ThresholdExpression = ({
         <EuiExpression
           data-test-subj="thresholdPopover"
           description={comparators[comparator].text}
-          value={(threshold || []).slice(0, numRequiredThresholds).join(` ${andThresholdText} `)}
+          value={
+            (threshold || []).slice(0, numRequiredThresholds).join(` ${andThresholdText} `) + unit
+          }
           isActive={Boolean(
             alertThresholdPopoverOpen ||
               (errors.threshold0 && errors.threshold0.length) ||
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_fired.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_fired.ts
index 2af99f85887b0..b38b4b0ee672c 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_fired.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_fired.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import moment from 'moment';
 import { cleanup, generate } from '@kbn/infra-forge';
 import {
@@ -91,7 +92,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.5],
                 timeSize: 5,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_no_data.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_no_data.ts
index e2ea6264a1233..f02eb9568f68b 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_no_data.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_pct_no_data.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import moment from 'moment';
 import {
   Aggregators,
@@ -84,7 +85,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.5],
                 timeSize: 5,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_us_fired.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_us_fired.ts
index 18a8fb4b4708c..9929491ea4e0e 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_us_fired.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/avg_us_fired.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import moment from 'moment';
 import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace';
 import { format } from 'url';
@@ -97,7 +98,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [7500000],
                 timeSize: 5,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
index 7446b4b8b6ea3..71f0a1bed860b 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
@@ -11,6 +11,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import moment from 'moment';
 import { cleanup, generate } from '@kbn/infra-forge';
 import {
@@ -96,7 +97,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.9],
                 timeSize: 1,
@@ -194,7 +195,7 @@ export default function ({ getService }: FtrProviderContext) {
           .eql({
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.9],
                 timeSize: 1,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/documents_count_fired.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/documents_count_fired.ts
index fbebf8f95fed2..c2ca213bae98a 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/documents_count_fired.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/documents_count_fired.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import moment from 'moment';
 import { cleanup, generate } from '@kbn/infra-forge';
 import {
@@ -91,7 +92,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [2],
                 timeSize: 1,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/group_by_fired.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/group_by_fired.ts
index 20d25ecb4db96..74144e8e7c721 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/group_by_fired.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule/group_by_fired.ts
@@ -7,6 +7,7 @@
 
 import moment from 'moment';
 import { cleanup, generate } from '@kbn/infra-forge';
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -90,7 +91,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT_OR_EQ,
                 threshold: [0.2],
                 timeSize: 1,
diff --git a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule_data_view.ts b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule_data_view.ts
index ada064c133ffc..0cbb1044f887e 100644
--- a/x-pack/test/alerting_api_integration/observability/custom_threshold_rule_data_view.ts
+++ b/x-pack/test/alerting_api_integration/observability/custom_threshold_rule_data_view.ts
@@ -6,6 +6,7 @@
  */
 
 import expect from '@kbn/expect';
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -73,7 +74,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [7500000],
                 timeSize: 5,
diff --git a/x-pack/test/alerting_api_integration/observability/helpers/alerting_api_helper.ts b/x-pack/test/alerting_api_integration/observability/helpers/alerting_api_helper.ts
index 4bde235e97dd2..d56b91dda5515 100644
--- a/x-pack/test/alerting_api_integration/observability/helpers/alerting_api_helper.ts
+++ b/x-pack/test/alerting_api_integration/observability/helpers/alerting_api_helper.ts
@@ -5,7 +5,6 @@
  * 2.0.
  */
 
-import { MetricThresholdParams } from '@kbn/infra-plugin/common/alerting/metrics';
 import { ThresholdParams } from '@kbn/observability-plugin/common/custom_threshold_rule/types';
 import type { SuperTest, Test } from 'supertest';
 
@@ -32,7 +31,7 @@ export async function createIndexConnector({
   return body.id as string;
 }
 
-export async function createRule({
+export async function createRule<Params = ThresholdParams>({
   supertest,
   name,
   ruleTypeId,
@@ -45,7 +44,7 @@ export async function createRule({
   supertest: SuperTest<Test>;
   ruleTypeId: string;
   name: string;
-  params: MetricThresholdParams | ThresholdParams;
+  params: Params;
   actions?: any[];
   tags?: any[];
   schedule?: { interval: string };
diff --git a/x-pack/test/alerting_api_integration/observability/metric_threshold_rule.ts b/x-pack/test/alerting_api_integration/observability/metric_threshold_rule.ts
index 0de7e3d600612..181b34c3956c1 100644
--- a/x-pack/test/alerting_api_integration/observability/metric_threshold_rule.ts
+++ b/x-pack/test/alerting_api_integration/observability/metric_threshold_rule.ts
@@ -8,7 +8,12 @@
 import moment from 'moment';
 import expect from '@kbn/expect';
 import { cleanup, generate } from '@kbn/infra-forge';
-import { Aggregators, Comparator, InfraRuleType } from '@kbn/infra-plugin/common/alerting/metrics';
+import {
+  Aggregators,
+  Comparator,
+  InfraRuleType,
+  MetricThresholdParams,
+} from '@kbn/infra-plugin/common/alerting/metrics';
 import {
   waitForDocumentInIndex,
   waitForAlertInIndex,
@@ -48,7 +53,7 @@ export default function ({ getService }: FtrProviderContext) {
           name: 'Index Connector: Metric threshold API test',
           indexName: ALERT_ACTION_INDEX,
         });
-        const createdRule = await createRule({
+        const createdRule = await createRule<MetricThresholdParams>({
           supertest,
           ruleTypeId: InfraRuleType.MetricThreshold,
           consumer: 'infrastructure',
diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_fired.ts
index 4aea7f5d670db..2b7fc3653c3b6 100644
--- a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_fired.ts
+++ b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_fired.ts
@@ -6,6 +6,7 @@
  */
 
 import { cleanup, generate } from '@kbn/infra-forge';
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -88,7 +89,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.5],
                 timeSize: 5,
diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_no_data.ts b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_no_data.ts
index 2d6e8d63afbf2..4f1e9a4ab080b 100644
--- a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_no_data.ts
+++ b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/avg_pct_no_data.ts
@@ -5,6 +5,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -74,7 +75,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.5],
                 timeSize: 5,
diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
index 1f02377919a8d..47ed54412296d 100644
--- a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
+++ b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/custom_eq_avg_bytes_fired.ts
@@ -12,6 +12,7 @@
  */
 
 import { cleanup, generate } from '@kbn/infra-forge';
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -90,7 +91,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.9],
                 timeSize: 1,
@@ -187,7 +188,7 @@ export default function ({ getService }: FtrProviderContext) {
           .eql({
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [0.9],
                 timeSize: 1,
diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/documents_count_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/documents_count_fired.ts
index 5c34258de8c15..0f47627be5e2b 100644
--- a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/documents_count_fired.ts
+++ b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/documents_count_fired.ts
@@ -6,6 +6,7 @@
  */
 
 import { cleanup, generate } from '@kbn/infra-forge';
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import {
   Aggregators,
   Comparator,
@@ -84,7 +85,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT,
                 threshold: [2],
                 timeSize: 1,
diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/group_by_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/group_by_fired.ts
index 864b35de6f3d4..78daabb1eb131 100644
--- a/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/group_by_fired.ts
+++ b/x-pack/test_serverless/api_integration/test_suites/observability/custom_threshold_rule/group_by_fired.ts
@@ -11,6 +11,7 @@
  * 2.0.
  */
 
+import { CUSTOM_AGGREGATOR } from '@kbn/observability-plugin/common/custom_threshold_rule/constants';
 import { kbnTestConfig } from '@kbn/test';
 import moment from 'moment';
 import { cleanup, generate } from '@kbn/infra-forge';
@@ -94,7 +95,7 @@ export default function ({ getService }: FtrProviderContext) {
           params: {
             criteria: [
               {
-                aggType: Aggregators.CUSTOM,
+                aggType: CUSTOM_AGGREGATOR,
                 comparator: Comparator.GT_OR_EQ,
                 threshold: [0.2],
                 timeSize: 1,