diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index acd02f0c7d200..90dec4eeeb926 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -790,6 +790,7 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations /x-pack/test/search_sessions_integration/ @elastic/kibana-data-discovery /test/plugin_functional/test_suites/data_plugin @elastic/kibana-data-discovery /examples/demo_search/ @elastic/kibana-data-discovery +/test/examples/discover_customization_examples @elastic/kibana-data-discovery # Vis Editors /src/plugins/visualize/ @elastic/kibana-visualizations diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 8e41168097706..5a3acd96839b2 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-07-27 +date: 2023-07-28 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 b7f3f17066c6f..d185d224fb1de 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-07-27 +date: 2023-07-28 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 1f97cf56c5bf2..874d58236f32b 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-07-27 +date: 2023-07-28 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 076e69e6e0775..6c3492b53bd23 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index fb9e44cb2f915..9056cdd8f9858 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -621,7 +621,7 @@ "section": "def-server.LicensingPluginStart", "text": "LicensingPluginStart" }, - ">; }; observability: { setup: { getAlertDetailsConfig(): Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; getScopedAnnotationsClient: (requestContext: ", + ">; }; observability: { setup: { getAlertDetailsConfig(): Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; getScopedAnnotationsClient: (requestContext: ", { "pluginId": "@kbn/core-http-request-handler-context-server", "scope": "common", @@ -2059,7 +2059,13 @@ "TypeC", "<{ kuery: ", "StringC", - "; }>]>; }> | undefined; handler: ({}: ", + "; }>, ", + "TypeC", + "<{ start: ", + "Type", + "<number, string, unknown>; end: ", + "Type", + "<number, string, unknown>; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "apm", "scope": "server", @@ -2079,7 +2085,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; } & { kuery: string; }; }; }) => Promise<{ services: { serviceName: string; }[]; }>; } & ", + ">; } & { kuery: string; } & { start: number; end: number; }; }; }) => Promise<{ services: { serviceName: string; }[]; }>; } & ", "APMRouteCreateOptions", "; \"GET /internal/apm/storage_explorer/is_cross_cluster_search\": { endpoint: \"GET /internal/apm/storage_explorer/is_cross_cluster_search\"; params?: undefined; handler: ({}: ", { diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 2c03a8b6bba16..7aa636a2cceb9 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index c7677853a3f89..15fc28540900d 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-07-27 +date: 2023-07-28 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 c629cd996e526..18b7e4a29bc88 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-07-27 +date: 2023-07-28 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 6c8cdb115f76a..e0d59e0bb590c 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-07-27 +date: 2023-07-28 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 b2376792cc6e9..fea05a9202604 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-07-27 +date: 2023-07-28 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 4ed5fbec8f94c..dc6e12ef21c3b 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-07-27 +date: 2023-07-28 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 81b9fbd1984f7..e7d7285fbae76 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-07-27 +date: 2023-07-28 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 d1dbb1364546f..91149e0e02b5d 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index aa9b317065bb4..9fa928c76c383 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 3be804a885964..6ea831251f400 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index cac97aa5c2a27..cee55d96fe3ee 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-07-27 +date: 2023-07-28 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 5393af3437887..dc205a8e2d153 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-07-27 +date: 2023-07-28 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 673a7c193e25d..7cf2c5c1dc369 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-07-27 +date: 2023-07-28 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 8c4292ddd871f..560f7b8c3fd14 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-07-27 +date: 2023-07-28 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 a445a434ef205..c7845dc384471 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-07-27 +date: 2023-07-28 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 9069226f17cb1..287a9d9b9c753 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-07-27 +date: 2023-07-28 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 d77da6d29efbd..acfa097d08372 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-07-27 +date: 2023-07-28 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 1d2f33a57c077..9999a645dcbf9 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-07-27 +date: 2023-07-28 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 3849805b5f8da..a83df2633f752 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-07-27 +date: 2023-07-28 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 6e4f12f8634f6..746ff2a3ee8a2 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-07-27 +date: 2023-07-28 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 459040e8f1a6b..a9fbbb13c3eeb 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-07-27 +date: 2023-07-28 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 4dd059b9740d0..eb26092786abf 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-07-27 +date: 2023-07-28 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 00d531fe0b066..6bf2228558c54 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-07-27 +date: 2023-07-28 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 9bc66e8361182..957924c3977ba 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-07-27 +date: 2023-07-28 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 8591ce3a50013..d7330b4b77256 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-07-27 +date: 2023-07-28 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 26f84e5481c8c..42f3451c9ee02 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-07-27 +date: 2023-07-28 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 072ee66e9f6c6..30bd4a0f877c1 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-07-27 +date: 2023-07-28 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 9f6f1614313cb..9bfc9645be966 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-07-27 +date: 2023-07-28 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 b4b45759f096f..6549da97e59f6 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 23ce12e742ed2..4241b062f51b7 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 72853f72c37d4..ed0f64dce5615 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 347e6ebd3ed90..7df812a6f9d63 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-07-27 +date: 2023-07-28 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 293322d465a8d..c05e1abbddd4a 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-07-27 +date: 2023-07-28 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 f04e723fc5950..46f90bc15bf00 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-07-27 +date: 2023-07-28 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 0617d36fdff7b..8825f6db291bc 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 3d081d3247e15..2d7796323fdeb 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-07-27 +date: 2023-07-28 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 47b428e0ebef2..782fe2de454d4 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-07-27 +date: 2023-07-28 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 37dce2ad391e4..1630ed004dd7b 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-07-27 +date: 2023-07-28 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 f5614988a6980..40a9601a5166a 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-07-27 +date: 2023-07-28 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 7ea0c94bc19c5..bed73dd531aa1 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-07-27 +date: 2023-07-28 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 0f5abff437b4f..9bd938cad38c9 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index d91851eb6cd7f..5c24fe386b75c 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-07-27 +date: 2023-07-28 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 95aab622ead6a..df213095ba7fe 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-07-27 +date: 2023-07-28 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 9db1cb0b11c22..e1385e44e7d43 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-07-27 +date: 2023-07-28 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 462e87f5ef6ed..692b1ad534e05 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-07-27 +date: 2023-07-28 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 b946f5d9ffd90..e2910e740dede 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-07-27 +date: 2023-07-28 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 1da6fbd3fb233..9870cae3cf219 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-07-27 +date: 2023-07-28 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 602eef9a8e7d7..5c362a397da77 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-07-27 +date: 2023-07-28 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 c4583f0b72ce3..549684c7f11b9 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-07-27 +date: 2023-07-28 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 c97e9c8b1a2f0..f4b2199fa9a24 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-07-27 +date: 2023-07-28 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 a88bad685a53b..afa6ff23f772f 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-07-27 +date: 2023-07-28 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 2cc8ed77ef80e..d4b6b9617e361 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-07-27 +date: 2023-07-28 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 7fafcdabe0737..0841418986ae9 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-07-27 +date: 2023-07-28 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 53fba3c96d56d..767904dfcda1b 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-07-27 +date: 2023-07-28 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 dcc4edc530848..08f698104edf7 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-07-27 +date: 2023-07-28 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 efd2945a3e6ae..9c65e8510473c 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-07-27 +date: 2023-07-28 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 497a533b537d8..8653dd049dbc2 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-07-27 +date: 2023-07-28 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 2928313fc3d79..812fa58d6b9b6 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-07-27 +date: 2023-07-28 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 c7401a6bdad9e..e96da014677e1 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-07-27 +date: 2023-07-28 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 54811851e7dad..a1d1f59b9ae53 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-07-27 +date: 2023-07-28 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 93d50d91c48a0..5e050f7f791a1 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-07-27 +date: 2023-07-28 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 856c3a49764e6..134031c4e1d8b 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-07-27 +date: 2023-07-28 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 2e6d384de33d6..ad14003518a4c 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-07-27 +date: 2023-07-28 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 c3d389620a377..a3bcb8f6848b6 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-07-27 +date: 2023-07-28 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 1c8922c84c721..e318039bfa4d7 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-07-27 +date: 2023-07-28 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 978189fe71718..2e7ec0eb34d85 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-07-27 +date: 2023-07-28 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 c2bb1d6b98b2c..0269db8cd4d9a 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-07-27 +date: 2023-07-28 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 6aead681a664e..36e0197ff58fb 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-07-27 +date: 2023-07-28 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 22111e13c3972..6e1d3598202bc 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-07-27 +date: 2023-07-28 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 7aa805fa3879a..f0b4bfd6029fd 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-07-27 +date: 2023-07-28 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 a2be604ec1ce5..f9f1c60333487 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-07-27 +date: 2023-07-28 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 fe20780694418..80b65501d9016 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-07-27 +date: 2023-07-28 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 fbbae2843571c..8841f67689193 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-07-27 +date: 2023-07-28 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 0808c219b7ea4..5564a5ad40b32 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.devdocs.json b/api_docs/kbn_aiops_utils.devdocs.json index 0f666c5815730..a5ede404640b1 100644 --- a/api_docs/kbn_aiops_utils.devdocs.json +++ b/api_docs/kbn_aiops_utils.devdocs.json @@ -175,862 +175,9 @@ "WindowParameters" ], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory", - "type": "Function", - "tags": [], - "label": "streamFactory", - "description": [ - "\nOverload to set up a string based response stream with support\nfor gzip compression depending on provided request headers.\n" - ], - "signature": [ - "(headers: ", - { - "pluginId": "@kbn/core-http-server", - "scope": "common", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-common.Headers", - "text": "Headers" - }, - ", logger: ", - { - "pluginId": "@kbn/logging", - "scope": "common", - "docId": "kibKbnLoggingPluginApi", - "section": "def-common.Logger", - "text": "Logger" - }, - ", compressOverride: boolean | undefined, flushFix: boolean | undefined) => StreamFactoryReturnType<T>" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$1", - "type": "CompoundType", - "tags": [], - "label": "headers", - "description": [ - "- Request headers." - ], - "signature": [ - { - "pluginId": "@kbn/core-http-server", - "scope": "common", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-common.Headers", - "text": "Headers" - } - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$2", - "type": "Object", - "tags": [], - "label": "logger", - "description": [ - "- Kibana logger." - ], - "signature": [ - { - "pluginId": "@kbn/logging", - "scope": "common", - "docId": "kibKbnLoggingPluginApi", - "section": "def-common.Logger", - "text": "Logger" - } - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$3", - "type": "CompoundType", - "tags": [], - "label": "compressOverride", - "description": [ - "- Optional flag to override header based compression setting." - ], - "signature": [ - "boolean | undefined" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$4", - "type": "CompoundType", - "tags": [], - "label": "flushFix", - "description": [ - "- Adds an attribute with a random string payload to overcome buffer flushing with certain proxy configurations." - ], - "signature": [ - "boolean | undefined" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [ - "An object with stream attributes and methods." - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory", - "type": "Function", - "tags": [], - "label": "streamFactory", - "description": [ - "\nSets up a response stream with support for gzip compression depending on provided\nrequest headers. Any non-string data pushed to the stream will be stream as NDJSON.\n" - ], - "signature": [ - "(headers: ", - { - "pluginId": "@kbn/core-http-server", - "scope": "common", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-common.Headers", - "text": "Headers" - }, - ", logger: ", - { - "pluginId": "@kbn/logging", - "scope": "common", - "docId": "kibKbnLoggingPluginApi", - "section": "def-common.Logger", - "text": "Logger" - }, - ", compressOverride: boolean, flushFix: boolean) => StreamFactoryReturnType<T>" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$1", - "type": "CompoundType", - "tags": [], - "label": "headers", - "description": [ - "- Request headers." - ], - "signature": [ - { - "pluginId": "@kbn/core-http-server", - "scope": "common", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-common.Headers", - "text": "Headers" - } - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$2", - "type": "Object", - "tags": [], - "label": "logger", - "description": [ - "- Kibana logger." - ], - "signature": [ - { - "pluginId": "@kbn/logging", - "scope": "common", - "docId": "kibKbnLoggingPluginApi", - "section": "def-common.Logger", - "text": "Logger" - } - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$3", - "type": "boolean", - "tags": [], - "label": "compressOverride", - "description": [ - "- Optional flag to override header based compression setting." - ], - "signature": [ - "boolean" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.streamFactory.$4", - "type": "boolean", - "tags": [], - "label": "flushFix", - "description": [ - "- Adds an attribute with a random string payload to overcome buffer flushing with certain proxy configurations." - ], - "signature": [ - "boolean" - ], - "path": "x-pack/packages/ml/aiops_utils/src/stream_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [ - "An object with stream attributes and methods." - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream", - "type": "Function", - "tags": [ - "export", - "template", - "template" - ], - "label": "useFetchStream", - "description": [ - "\nThis overload allows us to fall back to a simple reducer that\njust acts on a string as the reducer state if no options are supplied.\n" - ], - "signature": [ - "(endpoint: `${BasePath}${I[\"endpoint\"]}`, apiVersion: I[\"apiVersion\"], body: I[\"body\"]) => UseFetchStreamReturnType<string, React.ReducerAction<I[\"reducer\"]>>" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$1", - "type": "Uncategorized", - "tags": [], - "label": "endpoint", - "description": [ - "- API endpoint including Kibana base path." - ], - "signature": [ - "`${BasePath}${I[\"endpoint\"]}`" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$2", - "type": "Uncategorized", - "tags": [], - "label": "apiVersion", - "description": [ - "- API version." - ], - "signature": [ - "I[\"apiVersion\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$3", - "type": "Uncategorized", - "tags": [], - "label": "body", - "description": [ - "- API request body." - ], - "signature": [ - "I[\"body\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [ - "- An object with streaming data and methods to act on the stream." - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream", - "type": "Function", - "tags": [ - "export", - "template", - "template" - ], - "label": "useFetchStream", - "description": [ - "\nThis overload covers passing in options and will use\na custom reducer with appropriate type support.\n" - ], - "signature": [ - "(endpoint: `${BasePath}${I[\"endpoint\"]}`, apiVersion: I[\"apiVersion\"], body: I[\"body\"], options: { reducer: I[\"reducer\"]; initialState: React.ReducerState<I[\"reducer\"]>; }) => UseFetchStreamReturnType<React.ReducerState<I[\"reducer\"]>, React.ReducerAction<I[\"reducer\"]>>" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$1", - "type": "Uncategorized", - "tags": [], - "label": "endpoint", - "description": [ - "- API endpoint including Kibana base path." - ], - "signature": [ - "`${BasePath}${I[\"endpoint\"]}`" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$2", - "type": "Uncategorized", - "tags": [], - "label": "apiVersion", - "description": [ - "- API version." - ], - "signature": [ - "I[\"apiVersion\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$3", - "type": "Uncategorized", - "tags": [], - "label": "body", - "description": [ - "- API request body." - ], - "signature": [ - "I[\"body\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer", - "type": "Function", - "tags": [ - "type" - ], - "label": "reducer", - "description": [ - "\nCustom reducer" - ], - "signature": [ - "I[\"reducer\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer.$1", - "type": "Uncategorized", - "tags": [], - "label": "prevState", - "description": [], - "signature": [ - "S" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer.$2", - "type": "Uncategorized", - "tags": [], - "label": "action", - "description": [], - "signature": [ - "A" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.initialState", - "type": "Uncategorized", - "tags": [ - "type" - ], - "label": "initialState", - "description": [ - "\nInitial state" - ], - "signature": [ - "I[\"reducer\"] extends React.Reducer<infer S, any> ? S : never" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "returnComment": [ - "- An object with streaming data and methods to act on the stream." - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream", - "type": "Function", - "tags": [], - "label": "useFetchStream", - "description": [ - "\nCustom hook to receive streaming data.\n" - ], - "signature": [ - "(endpoint: `${BasePath}${I[\"endpoint\"]}`, apiVersion: string, body: I[\"body\"], options: { reducer: I[\"reducer\"]; initialState: React.ReducerState<I[\"reducer\"]>; } | undefined) => UseFetchStreamReturnType<React.ReducerState<I[\"reducer\"]>, React.ReducerAction<I[\"reducer\"]>>" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$1", - "type": "Uncategorized", - "tags": [], - "label": "endpoint", - "description": [ - "- API endpoint including Kibana base path." - ], - "signature": [ - "`${BasePath}${I[\"endpoint\"]}`" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$2", - "type": "string", - "tags": [], - "label": "apiVersion", - "description": [ - "- API version." - ], - "signature": [ - "string" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$3", - "type": "Uncategorized", - "tags": [], - "label": "body", - "description": [ - "- API request body." - ], - "signature": [ - "I[\"body\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer", - "type": "Function", - "tags": [ - "type" - ], - "label": "reducer", - "description": [ - "\nCustom reducer" - ], - "signature": [ - "I[\"reducer\"]" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer.$1", - "type": "Uncategorized", - "tags": [], - "label": "prevState", - "description": [], - "signature": [ - "S" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.reducer.$2", - "type": "Uncategorized", - "tags": [], - "label": "action", - "description": [], - "signature": [ - "A" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.useFetchStream.$4.initialState", - "type": "Uncategorized", - "tags": [ - "type" - ], - "label": "initialState", - "description": [ - "\nInitial state" - ], - "signature": [ - "I[\"reducer\"] extends React.Reducer<infer S, any> ? S : never" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "returnComment": [ - "An object with streaming data and methods to act on the stream." - ], - "initialIsOpen": false } ], "interfaces": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams", - "type": "Interface", - "tags": [ - "export", - "interface", - "typedef" - ], - "label": "UseFetchStreamCustomReducerParams", - "description": [ - "\nCustom hook type definition of the base params for an NDJSON stream with custom reducer.\n" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.endpoint", - "type": "string", - "tags": [ - "type" - ], - "label": "endpoint", - "description": [ - "\nAPI endpoint" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.apiVersion", - "type": "string", - "tags": [ - "type" - ], - "label": "apiVersion", - "description": [ - "\nAPI version" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.body", - "type": "Uncategorized", - "tags": [ - "type" - ], - "label": "body", - "description": [ - "\nRequest body" - ], - "signature": [ - "object" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.reducer", - "type": "Function", - "tags": [ - "type" - ], - "label": "reducer", - "description": [ - "\nReducer function to be applied to response chunks." - ], - "signature": [ - "(prevState: any, action: any) => any" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.reducer.$1", - "type": "Uncategorized", - "tags": [], - "label": "prevState", - "description": [], - "signature": [ - "S" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamCustomReducerParams.reducer.$2", - "type": "Uncategorized", - "tags": [], - "label": "action", - "description": [], - "signature": [ - "A" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault", - "type": "Interface", - "tags": [], - "label": "UseFetchStreamParamsDefault", - "description": [ - "\nCustom hook type definition of the base params for a string base stream without a custom reducer." - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.endpoint", - "type": "string", - "tags": [ - "type" - ], - "label": "endpoint", - "description": [ - "\nAPI endpoint" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.apiVersion", - "type": "string", - "tags": [ - "type" - ], - "label": "apiVersion", - "description": [ - "\nAPI version" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.body", - "type": "Uncategorized", - "tags": [ - "type" - ], - "label": "body", - "description": [ - "\nRequest body" - ], - "signature": [ - "object" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.reducer", - "type": "Function", - "tags": [ - "type" - ], - "label": "reducer", - "description": [ - "\nReducer function to be applied to response chunks." - ], - "signature": [ - "(prevState: string, action: StringReducerPayload) => string" - ], - "path": "x-pack/packages/ml/aiops_utils/src/use_fetch_stream.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.reducer.$1", - "type": "Uncategorized", - "tags": [], - "label": "prevState", - "description": [], - "signature": [ - "S" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/aiops-utils", - "id": "def-common.UseFetchStreamParamsDefault.reducer.$2", - "type": "Uncategorized", - "tags": [], - "label": "action", - "description": [], - "signature": [ - "A" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.WindowParameters", diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 7599682b180a8..43da1b74baba2 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_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 | |-------------------|-----------|------------------------|-----------------| -| 58 | 0 | 2 | 0 | +| 12 | 0 | 0 | 0 | ## Common diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index fe6fa33f03fc7..2ac8828f378cf 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-07-27 +date: 2023-07-28 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 d97388c661e07..35ff5d9d29a0e 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-07-27 +date: 2023-07-28 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 f49430d2adfb4..2db8a0dadc5bc 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-07-27 +date: 2023-07-28 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 51c6c9fbeff48..7fa235031aa15 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-07-27 +date: 2023-07-28 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 567971e124c4e..3e5ec7cc8a153 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-07-27 +date: 2023-07-28 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 a9ab5e8ff2863..c174d0812b1f0 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-07-27 +date: 2023-07-28 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 c16de0b3dd142..6ad5d57ecbced 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-07-27 +date: 2023-07-28 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 d98dc4986fbd9..31788f6d7363d 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-07-27 +date: 2023-07-28 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 5e9d511b012d2..624d144d51eec 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-07-27 +date: 2023-07-28 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 626d46ffd9e1f..05aab29762d43 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-07-27 +date: 2023-07-28 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 089844c4a02ef..eac96eeb22bea 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-07-27 +date: 2023-07-28 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 13f693dc3968a..9e947aa62a7a9 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-07-27 +date: 2023-07-28 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 5ba76b5246d33..0ff9af9478f9a 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-07-27 +date: 2023-07-28 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 fb858ae460352..b105f7e2846d3 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-07-27 +date: 2023-07-28 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 ea01b64ef5487..d8f9fcadfd3bd 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-07-27 +date: 2023-07-28 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 1090dc8ce25e9..102d192dc0831 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-07-27 +date: 2023-07-28 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 9d3b4dec2da56..4a1b59518cad1 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-07-27 +date: 2023-07-28 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 931d9e5077ad6..88724236f24f3 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-07-27 +date: 2023-07-28 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 12b4e98d16535..6ede84419fe79 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-07-27 +date: 2023-07-28 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 0d5a4d2946962..139e826190897 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-07-27 +date: 2023-07-28 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 9a1538033f7fb..dc37c54f79e7f 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-07-27 +date: 2023-07-28 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 559a486261845..80dbe0883c662 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-07-27 +date: 2023-07-28 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 175923ba5098c..986522a95ba20 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-07-27 +date: 2023-07-28 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 e6a842378fd74..b9ae56ec75650 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index a12d8a53a1bf9..47d62dc69b56a 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 257571d071be7..5f9a6926ae4a7 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-07-27 +date: 2023-07-28 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 97aa2442abbfe..de95c4a55a832 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-07-27 +date: 2023-07-28 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 110710bffe41d..78b23d46316f3 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-07-27 +date: 2023-07-28 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 2c3faf772546f..40500a81263da 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-07-27 +date: 2023-07-28 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 e2e327116ca47..5a549ab7b8bf9 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-07-27 +date: 2023-07-28 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 0e5bef2cb2960..e20d10c4f7715 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-07-27 +date: 2023-07-28 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 449e02ec418c0..cbf561329f0e3 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-07-27 +date: 2023-07-28 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 60b19ffbbed6e..662b4ed7ed5d1 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-07-27 +date: 2023-07-28 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 23088b9b584d2..45091460be895 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-07-27 +date: 2023-07-28 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 1782079d1691b..ac119ee2c7315 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-07-27 +date: 2023-07-28 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 2eca4af17e278..411a5a37baef9 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-07-27 +date: 2023-07-28 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 494bb312e3bf4..77533dbef6f22 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-07-27 +date: 2023-07-28 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 1b88262ff61f4..7f2a6661b4b21 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-07-27 +date: 2023-07-28 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 8d575a0deba51..58abca865d157 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-07-27 +date: 2023-07-28 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 f98e171989be1..dfacb70888c91 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-07-27 +date: 2023-07-28 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 500478395edc2..d0bfe1f40e866 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-07-27 +date: 2023-07-28 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 617b57ef9b408..d51b576b86014 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-07-27 +date: 2023-07-28 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 712f397393e4c..74097769ec376 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-07-27 +date: 2023-07-28 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 698bc4bff5a54..6a57af65054ea 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-07-27 +date: 2023-07-28 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 d1034b38f93c7..b21548da262a8 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-07-27 +date: 2023-07-28 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 0a9e97bdf5773..cea6fbe495895 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-07-27 +date: 2023-07-28 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 3049b9fc454eb..be6c79247bb69 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-07-27 +date: 2023-07-28 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 ae88b7b482472..9c9b13ccce8c1 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-07-27 +date: 2023-07-28 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 5e90fdb05fc77..5b7442fb2b9d0 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-07-27 +date: 2023-07-28 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 51eb2438e06d5..3f02581340741 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-07-27 +date: 2023-07-28 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 5239767b594dd..a8e55ffd65de5 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-07-27 +date: 2023-07-28 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 8d2945abf2a94..d949b86ccdb9d 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-07-27 +date: 2023-07-28 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 167f0cb2c5611..dd04a90ed717f 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-07-27 +date: 2023-07-28 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 46d48f378f12c..228174335f8c8 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-07-27 +date: 2023-07-28 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 c752b146c0de5..8683ace78a5c5 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-07-27 +date: 2023-07-28 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 89f4412834843..16c38ae12149d 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-07-27 +date: 2023-07-28 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 9d390913a39e4..0d3ddb5d5e73d 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-07-27 +date: 2023-07-28 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 2071e5401f9fa..c9d1ee7f1c4e3 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-07-27 +date: 2023-07-28 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 57e7e3f085a44..d52bdd112dc54 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-07-27 +date: 2023-07-28 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 93b26eb05a94d..0cfeffbf8a1d4 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-07-27 +date: 2023-07-28 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 290ecf88ae2ef..618ce50c6139a 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-07-27 +date: 2023-07-28 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 610f2c7fe919e..935e055f760d0 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-07-27 +date: 2023-07-28 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 455f1cd33ceac..b49cefba67a25 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-07-27 +date: 2023-07-28 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 c198173d1dadd..50afa8cf4e2f2 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-07-27 +date: 2023-07-28 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 fcee8d02a69d1..0823c078f139e 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-07-27 +date: 2023-07-28 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 7b2aeab22046c..921fc34bc9e67 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-07-27 +date: 2023-07-28 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 33bcf309e936b..a5d1330dfd68d 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-07-27 +date: 2023-07-28 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 f0c284cd00ccd..538fe2264179b 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-07-27 +date: 2023-07-28 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 f97b5040201d5..5e9cd9dff3d5e 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-07-27 +date: 2023-07-28 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 86d8b47dfd30e..3978240dca5da 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-07-27 +date: 2023-07-28 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 f8b2105e92b46..7bbfa297c250d 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-07-27 +date: 2023-07-28 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 5b0deb24839d1..ac1171488bfec 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-07-27 +date: 2023-07-28 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 c2034c82567f3..8fe7475527dc4 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-07-27 +date: 2023-07-28 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 4c796497cb7d8..7f586b9d0a4e3 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-07-27 +date: 2023-07-28 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 b40841e44e462..7365a3732e515 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-07-27 +date: 2023-07-28 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 ee5ca4aba8143..c455e25980d17 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-07-27 +date: 2023-07-28 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 0ca5e87751bde..2d2a2fbd1fc40 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-07-27 +date: 2023-07-28 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 0baa37ec2135c..932b21c20efa1 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-07-27 +date: 2023-07-28 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 e998b816a483b..a4ffdafa98113 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-07-27 +date: 2023-07-28 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 df3d6e80293cc..e548255575803 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-07-27 +date: 2023-07-28 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 96224e4958414..a94122a822c74 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-07-27 +date: 2023-07-28 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 f4c6929271743..666f8c823025c 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-07-27 +date: 2023-07-28 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 a5157d85968e1..09d80ba913b60 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-07-27 +date: 2023-07-28 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 142fe7197bd3c..5cfb3837a3375 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-07-27 +date: 2023-07-28 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 70d24fb276c2f..99f980a75386a 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-07-27 +date: 2023-07-28 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 43827b6ff38cf..f44b7041f727d 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-07-27 +date: 2023-07-28 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 29d0e6e121843..572d901c73e08 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-07-27 +date: 2023-07-28 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 25e7d3598d637..1cbb5f3829e0f 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-07-27 +date: 2023-07-28 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 85b9ab3e0a0a6..15340e08cac25 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-07-27 +date: 2023-07-28 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 588033dbf7e90..a133b4ec96cf3 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-07-27 +date: 2023-07-28 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 7d5032f3171c0..cec1a425c04c1 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-07-27 +date: 2023-07-28 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 25ab5d11a1640..8d1375d6441ae 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-07-27 +date: 2023-07-28 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 0afdae81f00bd..504caa6ad5c97 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-07-27 +date: 2023-07-28 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 be1069ccadc3e..8a5b998bcbfc1 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-07-27 +date: 2023-07-28 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 c6b5e2d53d782..c10e72d7cb9b1 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-07-27 +date: 2023-07-28 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 a6367ccbd5f23..911855786c246 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-07-27 +date: 2023-07-28 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 151c68d1c8c73..7693e88b65df3 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-07-27 +date: 2023-07-28 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 4ec198289eca3..f09ee571311d7 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-07-27 +date: 2023-07-28 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 171a9a12992c3..591b922f6648d 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-07-27 +date: 2023-07-28 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 c8e4d79ade644..33ecc5437dfeb 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-07-27 +date: 2023-07-28 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 e9fb5dbfc209f..46174d4dd1deb 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-07-27 +date: 2023-07-28 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 049490bca4b8f..12d1e4663fd34 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-07-27 +date: 2023-07-28 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 34885f0052ab6..94f8530bb82d3 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-07-27 +date: 2023-07-28 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 d81447f2639d9..acc52d657029e 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-07-27 +date: 2023-07-28 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 ac3cc1e260126..10726c1ee7a17 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-07-27 +date: 2023-07-28 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 0f07af557228e..fe88489e960b8 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-07-27 +date: 2023-07-28 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 3bf97504690f4..3f4d2e7fccc98 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-07-27 +date: 2023-07-28 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 bbfc7dbda35a1..74734b04451f2 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-07-27 +date: 2023-07-28 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 09f47e2d69a70..0226c56b277aa 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-07-27 +date: 2023-07-28 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 135b883884ec2..acb502c7ab804 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-07-27 +date: 2023-07-28 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 5f16a43a72e51..35a1bdac014f0 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-07-27 +date: 2023-07-28 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 a5c60f379f124..d03504aa05a44 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-07-27 +date: 2023-07-28 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 5e8518f0bfaa4..105695f25bea9 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-07-27 +date: 2023-07-28 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 b4eacf13684e0..5a021e05e520c 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-07-27 +date: 2023-07-28 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 a217236f1dd7c..8ef4e7a496c3b 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-07-27 +date: 2023-07-28 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 738b745075be9..4c3da0899e3b2 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-07-27 +date: 2023-07-28 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 c70fa1b33c0f9..fea60b88e43bc 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-07-27 +date: 2023-07-28 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 a66d8979be3ca..2302bbae6fde9 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-07-27 +date: 2023-07-28 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 b1ddabf7a46e1..1b4651edf85b8 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-07-27 +date: 2023-07-28 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 63f7595ac7f0d..4f163a1faec12 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-07-27 +date: 2023-07-28 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 d8850a6c86dd0..0980115d6811e 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-07-27 +date: 2023-07-28 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 34470c4c61752..9d99e08190c0b 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-07-27 +date: 2023-07-28 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 d3132b956341d..06b9cd3888d54 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-07-27 +date: 2023-07-28 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 c63f47b011aac..0429056cf2d33 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-07-27 +date: 2023-07-28 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 f0d2440492a1e..9a7694aa69fbe 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-07-27 +date: 2023-07-28 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 fc3a00305de63..31e808d01dcb9 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-07-27 +date: 2023-07-28 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 de3d7dabd903d..278bb65ebcce1 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-07-27 +date: 2023-07-28 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 8495fea1d4bfc..512b300ccb811 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-07-27 +date: 2023-07-28 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 47b0733186acd..1d78e0e9369e1 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-07-27 +date: 2023-07-28 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 eb96a47c353e4..aa9e305b4aa6e 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-07-27 +date: 2023-07-28 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 0f54a4bc4696a..7515bee48bf9c 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-07-27 +date: 2023-07-28 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 2d4c1e3abe3ef..4eaed2ab2b22a 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-07-27 +date: 2023-07-28 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 72fea171824df..a25522a121d0f 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-07-27 +date: 2023-07-28 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 1b5e7f796c1b7..f9c766e52f90b 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-07-27 +date: 2023-07-28 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 3182a4c714b35..dccd35f962a5d 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-07-27 +date: 2023-07-28 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 44950a99d3c9c..11e55a087107b 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-07-27 +date: 2023-07-28 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 340f4bcea205b..2cba83561a6f3 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-07-27 +date: 2023-07-28 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 f6c92e195a9c1..4d83184b7da91 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-07-27 +date: 2023-07-28 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 d51ed42b6fe27..a232749953e2a 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-07-27 +date: 2023-07-28 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 896483f9160f8..c49852410bff6 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 55c7caf403e3a..0a079253e1c38 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-07-27 +date: 2023-07-28 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 09e11de1a1c40..b10c85eaff9f6 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-07-27 +date: 2023-07-28 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 ff7beb3a4da0e..54ff4d2c68325 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-07-27 +date: 2023-07-28 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 7f9bfd1322058..4d39c803c096d 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-07-27 +date: 2023-07-28 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 3bc57c33e96d6..e9ebbc1e2fe10 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-07-27 +date: 2023-07-28 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 fe9d936868825..66a5d33d1fbd0 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-07-27 +date: 2023-07-28 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 47950bcd12008..eb11b08ee6e6c 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-07-27 +date: 2023-07-28 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 4a1b645ee5629..a32656b8efd5e 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-07-27 +date: 2023-07-28 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 570705d30e6f1..3ea6b82b1b82c 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-07-27 +date: 2023-07-28 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 d1e0cffd6111b..98e87ec5b33ee 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-07-27 +date: 2023-07-28 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 05febc93ded9b..342d8dd9e2d22 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-07-27 +date: 2023-07-28 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 a5e04ae0aa220..191c9766262cb 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-07-27 +date: 2023-07-28 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 3d2fc48f22084..9e12236870711 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-07-27 +date: 2023-07-28 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 4060a0c50b999..3f0577125e4aa 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-07-27 +date: 2023-07-28 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 9c93854f4991d..72124135e7008 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-07-27 +date: 2023-07-28 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 f4e3c4e5723ec..df3823e3f4e49 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-07-27 +date: 2023-07-28 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 63e8e77bf0813..57d3af7bd76ad 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-07-27 +date: 2023-07-28 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 2c74406345ab8..15f95d3d0c78c 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-07-27 +date: 2023-07-28 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 0a3d464d63b88..75b75b0b2fb9b 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-07-27 +date: 2023-07-28 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 0dd65be7efe75..b8595279dda4b 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-07-27 +date: 2023-07-28 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 f9b09a55e5f34..ae19342750ce9 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-07-27 +date: 2023-07-28 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 6a04d41e93e30..ef7a27591c5a4 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-07-27 +date: 2023-07-28 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 c9eaae021d959..c0794c7a9dd34 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-07-27 +date: 2023-07-28 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 cb46d18ef214d..ca6af5e73fe76 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-07-27 +date: 2023-07-28 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 4a00a53ca3041..64f6b41476c54 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-07-27 +date: 2023-07-28 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 29fb952f1d689..b985202eb0d66 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-07-27 +date: 2023-07-28 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 dfd48995c9d92..670657b2edd44 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-07-27 +date: 2023-07-28 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 ac620aa2a9a54..615017d0a82ad 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-07-27 +date: 2023-07-28 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 b11f5cd32cf78..122ab88195a54 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-07-27 +date: 2023-07-28 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 98090f627fd52..e07720eb12610 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-07-27 +date: 2023-07-28 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 c9cb231c2cf18..41c71491f8f60 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-07-27 +date: 2023-07-28 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 e2414c5f8156a..8da65cc20aca6 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-07-27 +date: 2023-07-28 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 921996f40a4f9..eb91954f814db 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index b69e474034c15..e2d6e2ea4774b 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-07-27 +date: 2023-07-28 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 27d4ab35d851a..9f13c92e100c4 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-07-27 +date: 2023-07-28 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 da83c7ec9f109..8f9bb787dfa69 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 618d8e79303eb..bf93fd23748e0 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 43a0c3ece34bc..9b0542717b25b 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-07-27 +date: 2023-07-28 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 14986507dad4b..5372c31a609bd 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-07-27 +date: 2023-07-28 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 2caf9c412321f..bcd9355823b93 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-07-27 +date: 2023-07-28 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 c787e40e1ea78..8b8cef6cc9bbe 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-07-27 +date: 2023-07-28 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 1fde771974230..ec9eb74ff6698 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-07-27 +date: 2023-07-28 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 0d7da9ec93365..1d335532d9c87 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-07-27 +date: 2023-07-28 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 8fdbbc86f2032..45fbe15f9f392 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-07-27 +date: 2023-07-28 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 970801671a677..e8eac4fb80682 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-07-27 +date: 2023-07-28 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 c426e915c73eb..97c72ce25e89f 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-07-27 +date: 2023-07-28 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 0cbd850f51087..66ababc2a1dee 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-07-27 +date: 2023-07-28 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 bc1d0ada79b60..98dcb7a4a3c58 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-07-27 +date: 2023-07-28 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 4bfba4b001d15..34196b8f752a4 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-07-27 +date: 2023-07-28 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 cff381abd3d0e..4226d811718f9 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-07-27 +date: 2023-07-28 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 d3ddd1d018651..7e566b7d840c8 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-07-27 +date: 2023-07-28 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 03cc7814ff608..f6c789827ca4a 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-07-27 +date: 2023-07-28 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 add62b1d333d8..5070cfb55ff71 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 0506f77492225..7f30231ef4e63 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-07-27 +date: 2023-07-28 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 96178f3e3824b..51f70ffb39747 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-07-27 +date: 2023-07-28 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 ff9412c03d9eb..ff5601b4c501b 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-07-27 +date: 2023-07-28 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 27a5ad5e5bd01..2637d88283d3f 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-07-27 +date: 2023-07-28 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 4231a969e7938..b8cec8b9abdce 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-07-27 +date: 2023-07-28 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 554e789a9bc2f..344e9e533bbc3 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-07-27 +date: 2023-07-28 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 ab4e1672bcff3..5a4b2b000bab7 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-07-27 +date: 2023-07-28 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 b7c216a7d8a97..cea5414a9f0d4 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-07-27 +date: 2023-07-28 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 39dbf514105a7..56333c8f8399d 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-07-27 +date: 2023-07-28 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 9441b6bfdcc09..be4527f244694 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-07-27 +date: 2023-07-28 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 7683279ae1cd6..0427537148c10 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-07-27 +date: 2023-07-28 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 4413a550777fd..2c5b10b8fba5c 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-07-27 +date: 2023-07-28 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 c6cc82d44a2a5..87e46a8980b75 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-07-27 +date: 2023-07-28 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 0736334307edc..22ddcb5984e83 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-07-27 +date: 2023-07-28 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 47bb9cfffd526..86e5d6e9a4b6e 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-07-27 +date: 2023-07-28 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 34f0162e36766..baffe13bbac89 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-07-27 +date: 2023-07-28 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 a0378239d5d30..edbdae9f27878 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-07-27 +date: 2023-07-28 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 60d717b227510..88b9107b55eb1 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 84bd831e90e9c..3e8d6352e66f7 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -868,7 +868,7 @@ "label": "clients", "description": [], "signature": [ - "{ readonly guide: string; readonly goIndex: string; readonly goOverview: string; readonly javaBasicAuthentication: string; readonly javaIndex: string; readonly javaInstallation: string; readonly javaIntroduction: string; readonly javaRestLow: string; readonly jsAdvancedConfig: string; readonly jsApiReference: string; readonly jsBasicConfig: string; readonly jsClientConnecting: string; readonly jsIntro: string; readonly netGuide: string; readonly netIntroduction: string; readonly netNest: string; readonly netSingleNode: string; readonly phpGuide: string; readonly phpConnecting: string; readonly phpInstallation: string; readonly phpOverview: string; readonly pythonAuthentication: string; readonly pythonGuide: string; readonly pythonOverview: string; readonly rubyAuthentication: string; readonly rubyAdvancedConfig: string; readonly rubyBasicConfig: string; readonly rubyExamples: string; readonly rubyOverview: string; readonly rustGuide: string; readonly rustOverview: string; }" + "{ readonly guide: string; readonly goConnecting: string; readonly goGettingStarted: string; readonly goIndex: string; readonly goOverview: string; readonly javaBasicAuthentication: string; readonly javaIndex: string; readonly javaInstallation: string; readonly javaIntroduction: string; readonly javaRestLow: string; readonly jsAdvancedConfig: string; readonly jsApiReference: string; readonly jsBasicConfig: string; readonly jsClientConnecting: string; readonly jsIntro: string; readonly netGuide: string; readonly netIntroduction: string; readonly netNest: string; readonly netSingleNode: string; readonly phpConfiguration: string; readonly phpConnecting: string; readonly phpGuide: string; readonly phpInstallation: string; readonly phpOverview: string; readonly pythonAuthentication: string; readonly pythonConfig: string; readonly pythonConnecting: string; readonly pythonGuide: string; readonly pythonOverview: string; readonly rubyAuthentication: string; readonly rubyAdvancedConfig: string; readonly rubyBasicConfig: string; readonly rubyExamples: string; readonly rubyOverview: string; readonly rustGuide: string; readonly rustOverview: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 0cad193aea9db..94e4b25bdf30a 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-07-27 +date: 2023-07-28 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 3bad7e03e299a..8cd15c6a3a14e 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-07-27 +date: 2023-07-28 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 80cd17b167f73..78515305b418b 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-07-27 +date: 2023-07-28 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 70923631a490f..0361552872570 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-07-27 +date: 2023-07-28 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 86883c6a83445..d1167342d6fc8 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-07-27 +date: 2023-07-28 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 80f2b75a11cef..0358804d8ed8c 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-07-27 +date: 2023-07-28 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 e20d363ed8426..ecb435bb7a7f4 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-07-27 +date: 2023-07-28 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 d7e62e4e8df47..d38967007cfe0 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-07-27 +date: 2023-07-28 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 bdfbeb78ad51e..de4e0a0318f80 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-07-27 +date: 2023-07-28 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 3b0f3f00f0ddc..889707ac938fd 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index bc53217d27e65..9fd0e550a9174 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -2047,6 +2047,41 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.escapeQuotes", + "type": "Function", + "tags": [], + "label": "escapeQuotes", + "description": [ + "\nEscapes backslashes and double-quotes. (Useful when putting a string in quotes to use as a value\nin a KQL expression. See the QuotedCharacter rule in kuery.peg.)" + ], + "signature": [ + "(str: string) => string" + ], + "path": "packages/kbn-es-query/src/kuery/utils/escape_kuery.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.escapeQuotes.$1", + "type": "string", + "tags": [], + "label": "str", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-es-query/src/kuery/utils/escape_kuery.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-query", "id": "def-common.extractTimeFilter", diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 5e01482784050..951faa365f94d 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.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 | |-------------------|-----------|------------------------|-----------------| -| 253 | 1 | 194 | 15 | +| 255 | 1 | 195 | 15 | ## Common diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 684c60efa4de6..7a5a761f424d8 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-07-27 +date: 2023-07-28 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 85a229c5c2161..b848896403fad 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-07-27 +date: 2023-07-28 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 255ac85d9c438..b1562194a6fed 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-07-27 +date: 2023-07-28 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 df70f67aff1d2..124fbd9dafcea 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-07-27 +date: 2023-07-28 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 3f5af56c62929..ef9cbad51e5e3 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-07-27 +date: 2023-07-28 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 e5aa4a1a96b02..2fc4160691152 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 3883dfaa4b36b..3e5924bbdf1e2 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-07-27 +date: 2023-07-28 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 52b58c9d24039..f491bb1a358b5 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-07-27 +date: 2023-07-28 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 75ad4096d8a65..ed7f8abd50bf4 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-07-27 +date: 2023-07-28 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 abdb0b453ab4a..a438f04622e90 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-07-27 +date: 2023-07-28 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 d328131ce5840..ca96dbf1ceaf1 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-07-27 +date: 2023-07-28 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 f42f4ea878d74..f68886ee0c3b8 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-07-27 +date: 2023-07-28 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 b4c064f88490d..237ab00d568d3 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-07-27 +date: 2023-07-28 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 bf209dbdffc5f..9717198802708 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-07-27 +date: 2023-07-28 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 3857a1faa7e85..5797d009f2dd8 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-07-27 +date: 2023-07-28 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 5a2afd725ae79..14b829fdf7345 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-07-27 +date: 2023-07-28 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 7b8b92d29a7ae..0919f981f0212 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-07-27 +date: 2023-07-28 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 24c39069a0e72..7208a59daa9ea 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-07-27 +date: 2023-07-28 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 1c3c7af3585e7..10c300cf0322a 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-07-27 +date: 2023-07-28 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 aa5acdc39ef58..0b279ee79308b 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-07-27 +date: 2023-07-28 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 fb6366728afb5..726c13554ffa4 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-07-27 +date: 2023-07-28 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 f8f968ea8e681..b91c6e63eaf2b 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-07-27 +date: 2023-07-28 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 d7fe5f0dcfdbf..c2eafe909234b 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-07-27 +date: 2023-07-28 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 56dde4e9a0ba2..bdf3351a4c4ce 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-07-27 +date: 2023-07-28 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 0e9ba36c56ef8..6261ef066b6e4 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-07-27 +date: 2023-07-28 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 a9d0681142a2a..426b091aaa764 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-07-27 +date: 2023-07-28 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 d138b17cad28b..26dbe8fa3da51 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-07-27 +date: 2023-07-28 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 ec0a06a79ab35..2f12b5b3e87a5 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-07-27 +date: 2023-07-28 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 5812895c0b52b..db4c49952e44b 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 0f305574d7a59..ae74d00bfe3bc 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-07-27 +date: 2023-07-28 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 2ac5ae2473ead..a3b6f98d3a460 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-07-27 +date: 2023-07-28 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 4a48ed6b8139d..d3bb59ad18627 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-07-27 +date: 2023-07-28 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 cfc4b05ef7f30..cc33fcd033788 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-07-27 +date: 2023-07-28 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_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index af90a51db9fab..10397a425e126 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-07-27 +date: 2023-07-28 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 b62e2b20ebb45..ed292c39645d8 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-07-27 +date: 2023-07-28 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 f024c4a03ed55..c47891133f5be 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-07-27 +date: 2023-07-28 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 76451efeb0f14..3de6773b4c92e 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-07-27 +date: 2023-07-28 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 26b98ab500862..03e8034a8fa2b 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-07-27 +date: 2023-07-28 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 f764b9e1da9ea..bbae975199336 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 3f6ccda303ca4..a4b66ac9626ac 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-07-27 +date: 2023-07-28 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 1d9c3408f96de..eb70a1f4ab9c8 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-07-27 +date: 2023-07-28 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 b0bd2460b8046..4f7873f3456b3 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-07-27 +date: 2023-07-28 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 66fa3f6178edb..4a22c61416cd0 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-07-27 +date: 2023-07-28 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 43deec6344363..65b97c9889568 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 972ff7b6ebc34..b3e1c6f4e1286 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-07-27 +date: 2023-07-28 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 e0fac12b4420c..836de16d1d0a4 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-07-27 +date: 2023-07-28 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 f65ba2162998d..3ec34a6f10cee 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-07-27 +date: 2023-07-28 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 45ea5fe902b01..4b7f05a79d6df 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-07-27 +date: 2023-07-28 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 52ea36a1bdf2d..ca7625f918134 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-07-27 +date: 2023-07-28 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 6c6984a6ae822..f1c87c04c5fc5 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-07-27 +date: 2023-07-28 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 fbca38460f342..293326c84b3e1 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-07-27 +date: 2023-07-28 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 296cb733d2b7f..e444a1295c5f5 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-07-27 +date: 2023-07-28 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 96e99cfbcfa05..08a7789ddaa55 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-07-27 +date: 2023-07-28 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 122566f0e234d..e4bd338fd238c 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-07-27 +date: 2023-07-28 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 0b1b715ac1cd3..6ba5b732e98e3 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-07-27 +date: 2023-07-28 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 a32263d25dcd6..9e7ec38a73307 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-07-27 +date: 2023-07-28 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 577412c168891..240b871194bb6 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-07-27 +date: 2023-07-28 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 fd6f767cbe24a..e14b6487e4998 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-07-27 +date: 2023-07-28 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 e5f59b7bc0b0c..f962e8bdedf53 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-07-27 +date: 2023-07-28 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 e48ab289bc62b..be1614e26bc14 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index f802eaf8714b1..b8abc2ef53d7b 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-07-27 +date: 2023-07-28 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 6b6a41c432dd1..8fec31aae9c09 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-07-27 +date: 2023-07-28 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 85a6bb97691a1..25cc639f53341 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-07-27 +date: 2023-07-28 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 e39021b625d7f..90250aa1b2422 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-07-27 +date: 2023-07-28 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 aeb945baa245b..c017e90884e73 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-07-27 +date: 2023-07-28 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 74e0834b598f3..5cfa188d78fd1 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 27b09873ea36a..1ca80a827b645 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-07-27 +date: 2023-07-28 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 28f3e0893e749..69e7fcddf8939 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index a3d443f29cc33..c6ca095bfcf98 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-07-27 +date: 2023-07-28 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 4a727554a3042..2f26c19581470 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-07-27 +date: 2023-07-28 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 ae57623a08e41..748199d2941f7 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-07-27 +date: 2023-07-28 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 e1c82af68d26d..0c499fb2e2d21 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-07-27 +date: 2023-07-28 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 272aff9050d66..eb9a6b4e5d2b3 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 546ee112c39a9..bf79d647d36f1 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-07-27 +date: 2023-07-28 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 dd7a3f3e65e0d..9459ca4bd3c96 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-07-27 +date: 2023-07-28 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 3c7b44376c3d9..4c8597996cb97 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-07-27 +date: 2023-07-28 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 f77eaf3c7cce0..1074b3f742b87 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index d8d1b18464eb4..6ab6c36c66674 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-07-27 +date: 2023-07-28 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 701cba1e7dbab..948d5d97d504b 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-07-27 +date: 2023-07-28 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 0ced337386539..043e78bbbafdf 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-07-27 +date: 2023-07-28 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 af60de9c16f32..40aa0c3a55f62 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-07-27 +date: 2023-07-28 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 52204fea9b55b..ba6833a30c2ca 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-07-27 +date: 2023-07-28 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 bdec33d07ae24..357b060b33471 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-07-27 +date: 2023-07-28 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 174c53f244e53..d83e474b52fcf 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-07-27 +date: 2023-07-28 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 84ac073efcee9..44073d15c6297 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-07-27 +date: 2023-07-28 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 a5dda8b5fccad..d2faec2f39ca5 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-07-27 +date: 2023-07-28 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 cd00882e89388..8c1df95400634 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-07-27 +date: 2023-07-28 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 215c30fb01352..3dcd327453a20 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-07-27 +date: 2023-07-28 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 c1c34cc86624c..2294c1015f578 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-07-27 +date: 2023-07-28 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 8495544975166..47d1d041ce0b0 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-07-27 +date: 2023-07-28 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 6e70561345510..2759f422804c3 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-07-27 +date: 2023-07-28 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 f970218c90501..cfb9bd3a3fc4b 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-07-27 +date: 2023-07-28 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 80d54f57faa8e..b5a6ea01581f2 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-07-27 +date: 2023-07-28 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 04ed12f14ca13..28fcc5af3c9a8 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-07-27 +date: 2023-07-28 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 c21c6c1cec679..ce2e10ca1c37a 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-07-27 +date: 2023-07-28 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 213305ad15314..5bc93cb50153e 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-07-27 +date: 2023-07-28 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 e5c2c4d91096c..936193ca17d40 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-07-27 +date: 2023-07-28 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 89b907ffcae1b..5788eaabaa4b8 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-07-27 +date: 2023-07-28 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 29bdb1a97a48a..cad55e09bedb8 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-07-27 +date: 2023-07-28 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 ca5506f3a799f..f2bd0f6d94a7a 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 5ae3fe9eac78d..c1b241bd579c9 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 30463f7a2d1ef..b946b2080e8da 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-07-27 +date: 2023-07-28 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 02001d299f309..5f5177a122e59 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-07-27 +date: 2023-07-28 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 7a6d0a6f97c7c..a439ebae31787 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index dc87f655bcdde..16d3bf353e247 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 355f6be5f44c0..a867942195cde 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 5e92ba89a47be..95615956f2c72 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index b469f33f05340..80beabd3166b1 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-07-27 +date: 2023-07-28 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 6e1de624b4852..5099f781c4a40 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-07-27 +date: 2023-07-28 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 7c065f5c456a9..593ba51e85836 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-07-27 +date: 2023-07-28 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 4065308eced90..ddd19e88cc84e 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index a73333d8387ba..5e36a842577ac 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-07-27 +date: 2023-07-28 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 b79e88accf218..a96994315d614 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-07-27 +date: 2023-07-28 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 2aabd174a07c5..0883ed4e10fb5 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-07-27 +date: 2023-07-28 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 df8fa79cebd3c..498cb34f9800b 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-07-27 +date: 2023-07-28 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 4e8f0af212025..4d9fc84d5c49c 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-07-27 +date: 2023-07-28 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 53b3cdf8b8bd7..02183a8f9dce9 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-07-27 +date: 2023-07-28 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 da97a6ae1ac7d..28894dbfae785 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-07-27 +date: 2023-07-28 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 aa5ec412a77d3..cc15a6c6b904c 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-07-27 +date: 2023-07-28 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 71674c5ce8340..a3fc346430d5a 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-07-27 +date: 2023-07-28 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 bc69d395368d7..926e1d4d02ac8 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-07-27 +date: 2023-07-28 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 3ae4bdeb4c90f..b252dffb61932 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-07-27 +date: 2023-07-28 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 d3abe54e4a4d7..153a53eb2b3a9 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-07-27 +date: 2023-07-28 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 2cbf4fb45a235..5bb8a1315690f 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-07-27 +date: 2023-07-28 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 03230de3c9ebe..a6890ebd5c478 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-07-27 +date: 2023-07-28 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 55b18b55488a6..f94e46cccaff0 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-07-27 +date: 2023-07-28 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 9c3d39eb32df0..c20fea3a4911b 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-07-27 +date: 2023-07-28 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 2f8e4dc07d5a8..ad42409c309d3 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-07-27 +date: 2023-07-28 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 85c314a694700..dfbeb1f7f5471 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-07-27 +date: 2023-07-28 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 34c5a75d92cf3..debbd0c03baf5 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-07-27 +date: 2023-07-28 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 ec4917115f07d..a073020b89eb3 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-07-27 +date: 2023-07-28 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 b403b7280882d..4916e85965167 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-07-27 +date: 2023-07-28 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 5e7d6b04a6ccd..2b8e8940c1ed3 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-07-27 +date: 2023-07-28 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 670027e21046f..d4a76e4099b06 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-07-27 +date: 2023-07-28 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 cc945c83bf96c..0629d50cda212 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-07-27 +date: 2023-07-28 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 4b0158779346d..60b9aa23c4575 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-07-27 +date: 2023-07-28 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 113b262fcba9f..be8ef362885a7 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-07-27 +date: 2023-07-28 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 183e904d0cfbc..426b7a42265ea 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-07-27 +date: 2023-07-28 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 704d63a0abefe..7bc2c0642e201 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-07-27 +date: 2023-07-28 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 7191fd67f76cb..b7b5c0052c3bb 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-07-27 +date: 2023-07-28 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 9f655ac0c0619..3264aee6878ca 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-07-27 +date: 2023-07-28 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 703e1132c4204..967f11c2f1c38 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-07-27 +date: 2023-07-28 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 a81fe2459754d..a9d0025ba5818 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-07-27 +date: 2023-07-28 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 ecccb61945808..049407704addc 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-07-27 +date: 2023-07-28 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 80cfa650df226..3d958f77addce 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-07-27 +date: 2023-07-28 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 d17cf0682c358..6bb4e74e2e85e 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-07-27 +date: 2023-07-28 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 0d717d47c0e58..8273af766bcc5 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index cb5fb456bea28..34d7b02686737 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-07-27 +date: 2023-07-28 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 48d2bbe7a09d0..510338f3f3abd 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-07-27 +date: 2023-07-28 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 5b58ea869d3c2..590c163a761b3 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-07-27 +date: 2023-07-28 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 dbaabdb09d88f..dae1b732406c5 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-07-27 +date: 2023-07-28 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 f050f697fccdd..4f42be6a2c635 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-07-27 +date: 2023-07-28 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 0046c022172e2..d65686ef1a5ab 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-07-27 +date: 2023-07-28 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 c9f83f2967ef4..c00d56133758b 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-07-27 +date: 2023-07-28 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 481701bc20ecf..60287858354ad 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-07-27 +date: 2023-07-28 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 02134bb5110a7..a6907928a1178 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-07-27 +date: 2023-07-28 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 9f99038591e8d..029c35d739cd9 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-07-27 +date: 2023-07-28 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 ed53d7cfb34f9..6670f4f41f56d 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 0fdeff031ef38..79fd0393c6eca 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-07-27 +date: 2023-07-28 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 ff89e5ecc3a77..d6410d9b4a088 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 3a2d2294c7456..7fb7796a2c0e4 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-07-27 +date: 2023-07-28 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 d6b9986ebb553..513dafd67025c 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-07-27 +date: 2023-07-28 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 2162bbf928df0..319ae37182f9d 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-07-27 +date: 2023-07-28 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 a666bb73398e3..36672eae9b8db 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-07-27 +date: 2023-07-28 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 5503fd8190de1..6addf0069d63f 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index a46c25337390d..5c9ada61c3561 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index c5e1141269aae..07888fa3d72b1 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-07-27 +date: 2023-07-28 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 012d9c39fd3ef..2ab108d855206 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-07-27 +date: 2023-07-28 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 5787735d82c4c..eecba8cff7db9 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-07-27 +date: 2023-07-28 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 5f783e9de8207..01e175ed43157 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-07-27 +date: 2023-07-28 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 44598f55cec3f..5ef5bc01edb12 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-07-27 +date: 2023-07-28 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 9ff37496a14a9..fd36556365f08 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-07-27 +date: 2023-07-28 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 b6cf3035df40c..6a947c27fff4f 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-07-27 +date: 2023-07-28 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 7ba5ca013ea01..ee88cfe36ff5f 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index d4ed4d236c6d9..46d083b4d82d1 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 10ce3fb31cb75..d029cf9c5aec8 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-07-27 +date: 2023-07-28 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 6037080b5dbad..43856152acb1a 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-07-27 +date: 2023-07-28 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 2b9819f964648..8b4731bd1d037 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-07-27 +date: 2023-07-28 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 47012bfff3585..2fd19cb16b5d0 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 4cfaa0889fc47..4eb15e7afd93f 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-07-27 +date: 2023-07-28 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 e3bd0a0aa3872..cc4585340a2ff 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-07-27 +date: 2023-07-28 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 d0fceaf5ea0a2..2a865919213c2 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-07-27 +date: 2023-07-28 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 93272d4d7753c..67c595bdc77b7 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-07-27 +date: 2023-07-28 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 2e98b437520c0..c3b93cd151af2 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 4835740810f86..ae6144160e29b 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-07-27 +date: 2023-07-28 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 68ccd5d5fe025..3cdccc91c0adc 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -7722,7 +7722,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" ], "path": "x-pack/plugins/observability/server/routes/types.ts", "deprecated": false, @@ -9652,7 +9652,7 @@ "label": "ObservabilityConfig", "description": [], "signature": [ - "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" ], "path": "x-pack/plugins/observability/server/index.ts", "deprecated": false, @@ -13803,7 +13803,7 @@ "label": "ObservabilityPluginSetup", "description": [], "signature": [ - "{ getAlertDetailsConfig(): Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; getScopedAnnotationsClient: (requestContext: ", + "{ getAlertDetailsConfig(): Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; getScopedAnnotationsClient: (requestContext: ", { "pluginId": "@kbn/core-http-request-handler-context-server", "scope": "common", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 06e6fa1ebc782..fc308283c618d 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 1f28830680a62..944122f941feb 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-07-27 +date: 2023-07-28 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 6c706c73ef537..f493379a741cc 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-07-27 +date: 2023-07-28 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 58751f7fd2287..8958c15cab79c 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 7c53b63d50237..ff0f40ae58d6a 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-07-27 +date: 2023-07-28 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 | |--------------|----------|------------------------| -| 651 | 542 | 38 | +| 652 | 542 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 71679 | 555 | 61345 | 1467 | +| 71635 | 555 | 61344 | 1467 | ## Plugin Directory @@ -211,7 +211,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] |--------------|----------------|-----------|--------------|----------|---------------|--------| | <DocLink id="kibKbnAcePluginApi" text="@kbn/ace"/> | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 11 | 5 | 11 | 0 | | <DocLink id="kibKbnAiopsComponentsPluginApi" text="@kbn/aiops-components"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 6 | 0 | 6 | 0 | -| <DocLink id="kibKbnAiopsUtilsPluginApi" text="@kbn/aiops-utils"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 58 | 0 | 2 | 0 | +| <DocLink id="kibKbnAiopsUtilsPluginApi" text="@kbn/aiops-utils"/> | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 | | <DocLink id="kibKbnAlertingStateTypesPluginApi" text="@kbn/alerting-state-types"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 15 | 0 | | <DocLink id="kibKbnAlertsAsDataUtilsPluginApi" text="@kbn/alerts-as-data-utils"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 24 | 0 | 24 | 0 | | <DocLink id="kibKbnAlertsUiSharedPluginApi" text="@kbn/alerts-ui-shared"/> | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 8 | 0 | 7 | 1 | @@ -433,7 +433,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | <DocLink id="kibKbnEsPluginApi" text="@kbn/es"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 4 | 0 | | <DocLink id="kibKbnEsArchiverPluginApi" text="@kbn/es-archiver"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 27 | 0 | 14 | 1 | | <DocLink id="kibKbnEsErrorsPluginApi" text="@kbn/es-errors"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 3 | 0 | -| <DocLink id="kibKbnEsQueryPluginApi" text="@kbn/es-query"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 253 | 1 | 194 | 15 | +| <DocLink id="kibKbnEsQueryPluginApi" text="@kbn/es-query"/> | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 255 | 1 | 195 | 15 | | <DocLink id="kibKbnEsTypesPluginApi" text="@kbn/es-types"/> | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 12 | 0 | 12 | 0 | | <DocLink id="kibKbnEslintPluginImportsPluginApi" text="@kbn/eslint-plugin-imports"/> | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | | <DocLink id="kibKbnEventAnnotationCommonPluginApi" text="@kbn/event-annotation-common"/> | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 39 | 1 | 39 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 5892a9a0bb0e9..f607f29d10708 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-07-27 +date: 2023-07-28 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 b4dfe37536068..ffefd93be9c39 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 23cc938ef54fe..d1efd1694334d 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-07-27 +date: 2023-07-28 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 7c6daaa4076b3..e31178ee99299 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index e378ee8eedff6..a8c9644436b1c 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 503117000e729..3ed1c892be973 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-07-27 +date: 2023-07-28 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 375095e9a5d47..999225d940166 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-07-27 +date: 2023-07-28 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 e1e897b32676e..fa72f497ef8a8 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-07-27 +date: 2023-07-28 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 d7964243a59e7..b4a7ddecac91a 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-07-27 +date: 2023-07-28 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 625fa0a85ed47..9fa2eb0fd7ab6 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-07-27 +date: 2023-07-28 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 58511707d7c2f..bfb6a2a3f03ba 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-07-27 +date: 2023-07-28 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 0e32e84078743..3dbf5ca1313ac 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-07-27 +date: 2023-07-28 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 146e58569e3eb..5e0b2c3e02bc2 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-07-27 +date: 2023-07-28 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 c7f12d20616b8..b6c9e11b2d3fe 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-07-27 +date: 2023-07-28 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 93965097c1c13..04a71a63ace7e 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-07-27 +date: 2023-07-28 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 d870c855c3317..d6d47312b579e 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-07-27 +date: 2023-07-28 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 a7e6e90ce21e8..d178ef5d622c3 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-07-27 +date: 2023-07-28 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 f487650b8b721..4868d768401fa 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-07-27 +date: 2023-07-28 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 0353c48cbf76c..5b26d71a69aee 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-07-27 +date: 2023-07-28 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 90fd476ef1bd0..3180e49d90137 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-07-27 +date: 2023-07-28 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 5572db7c4ec3c..dfb2ff400a89e 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-07-27 +date: 2023-07-28 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 b0ba8d4732393..caf9655958a21 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-07-27 +date: 2023-07-28 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 1bd4188e5c3c7..8fe12f467c3c9 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-07-27 +date: 2023-07-28 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 d7751f23d16d0..28b44be583f3f 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-07-27 +date: 2023-07-28 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 815dadcf358b6..729c7496d3f4f 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-07-27 +date: 2023-07-28 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 62834d79c338b..e5c8a0c93912a 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-07-27 +date: 2023-07-28 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 933a9b4a6c7e5..a74b50ddb2fe8 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-07-27 +date: 2023-07-28 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 a7b5a01e8d6a4..8c11b8e598079 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-07-27 +date: 2023-07-28 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 f6a6ccf575a07..07525ec4e5ffe 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-07-27 +date: 2023-07-28 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 2656df66170dc..2de2b7df5cff7 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-07-27 +date: 2023-07-28 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 5ada100eefefb..b4485da8e8ebe 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-07-27 +date: 2023-07-28 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 994fe1265851b..274c830cbe30f 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-07-27 +date: 2023-07-28 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 d9378d02d0c08..50307aaddd7b6 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-07-27 +date: 2023-07-28 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 6fe1418890d2a..af2aa41eaa814 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-07-27 +date: 2023-07-28 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 c7f01d2cbecc3..74f77a18ce16c 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-07-27 +date: 2023-07-28 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 3108503855831..34e4c5385a18d 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-07-27 +date: 2023-07-28 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 0a3aaf54b5772..4b7e27180605a 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-07-27 +date: 2023-07-28 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 9390f5cf849a8..c44696e99f890 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-07-27 +date: 2023-07-28 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 c95578dcbcd5a..50f107a95f810 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-07-27 +date: 2023-07-28 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 9f161b231a5d2..f5e00f327e9ab 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-07-27 +date: 2023-07-28 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 100b35f569fac..7f8cb3daeaedb 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 687e744857ec2..bb64923d02d33 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-07-27 +date: 2023-07-28 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 aa2cab334c214..a1a231fbe5b19 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-07-27 +date: 2023-07-28 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 e14a2e67c5080..32e4c2b9402ea 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 1cee6a1031537..9feef3a59780d 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-07-27 +date: 2023-07-28 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 8973ffd3afdfa..02d0c96b68821 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-07-27 +date: 2023-07-28 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 7f4a7307ad385..bdc3842af192f 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-07-27 +date: 2023-07-28 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 8cb8769baccbb..3dbc91f196841 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-07-27 +date: 2023-07-28 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 886f3bee447ab..69616aa2a187d 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-07-27 +date: 2023-07-28 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 7a7e9cd58afac..b035de52d65a2 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-07-27 +date: 2023-07-28 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 ef101c9facc41..534a80cc9c493 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-07-27 +date: 2023-07-28 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 f1b64d263b47a..6e4c192d54223 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-07-27 +date: 2023-07-28 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 315a41f514769..7a1ca596d745c 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-07-27 +date: 2023-07-28 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 b7db2e1ae3225..094c3301bf5ff 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-07-27 +date: 2023-07-28 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 2d31cad644c4e..ef08fc04688b6 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-07-27 +date: 2023-07-28 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 4566a5109ba1d..555d77f4f839d 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-07-27 +date: 2023-07-28 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 b82073a1eecec..36d127c13797d 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-07-27 +date: 2023-07-28 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 906b9a9c91482..f0fa04a2bd5b3 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-07-27 +date: 2023-07-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/fleet_packages.json b/fleet_packages.json index 65f6969fc2034..c94a6aecf1b41 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -54,7 +54,7 @@ }, { "name": "synthetics", - "version": "1.0.2" + "version": "1.0.3" }, { "name": "security_detection_engine", diff --git a/nav-kibana-dev.docnav.json b/nav-kibana-dev.docnav.json index 3af82d0ce2387..9d71533c1a47e 100644 --- a/nav-kibana-dev.docnav.json +++ b/nav-kibana-dev.docnav.json @@ -181,6 +181,9 @@ { "id": "kibDevTutorialScreenshotting" }, + { + "id": "kibDevTutorialsContentManagementOnboarding" + }, { "id": "kibDevTutorialsServerlessProjectNavigation" } @@ -485,4 +488,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index 3b1ee85678c9e..58234e0656555 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.8.0-canary.2", "@elastic/ems-client": "8.4.0", - "@elastic/eui": "84.0.0", + "@elastic/eui": "85.0.1", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", diff --git a/packages/content-management/table_list_view_table/src/components/table_sort_select.tsx b/packages/content-management/table_list_view_table/src/components/table_sort_select.tsx index 37cc6fc9eea80..9140c8ac3bc32 100644 --- a/packages/content-management/table_list_view_table/src/components/table_sort_select.tsx +++ b/packages/content-management/table_list_view_table/src/components/table_sort_select.tsx @@ -160,7 +160,7 @@ export function TableSortSelect({ tableSort, hasUpdatedAtMetadata, onChange }: P closePopover={closePopover} panelPaddingSize="none" anchorPosition="downCenter" - panelClassName="euiFilterGroup__popoverPanel" + panelProps={{ css: { width: euiTheme.base * 18 } }} > <> <EuiText css={panelHeaderCSS}>{i18nText.headerSort}</EuiText> diff --git a/packages/content-management/table_list_view_table/src/components/tag_filter_panel.tsx b/packages/content-management/table_list_view_table/src/components/tag_filter_panel.tsx index 03439f9dec161..c9871eb509d7e 100644 --- a/packages/content-management/table_list_view_table/src/components/tag_filter_panel.tsx +++ b/packages/content-management/table_list_view_table/src/components/tag_filter_panel.tsx @@ -116,7 +116,7 @@ export const TagFilterPanel: FC<Props> = ({ closePopover={closePopover} panelPaddingSize="none" anchorPosition="downCenter" - panelClassName="euiFilterGroup__popoverPanel" + panelProps={{ css: { width: euiTheme.base * 18 } }} panelStyle={isInUse ? { transition: 'none' } : undefined} > <EuiPopoverTitle paddingSize="m" css={popoverTitleCSS}> diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/deduplicate_toasts.test.tsx.snap b/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/deduplicate_toasts.test.tsx.snap new file mode 100644 index 0000000000000..b940ae7a6a178 --- /dev/null +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/deduplicate_toasts.test.tsx.snap @@ -0,0 +1,15 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TitleWithBadge component renders with string titles 1`] = ` +<Fragment> + Welcome! + + <EuiNotificationBadge + className="css-1f5ny76" + color="subdued" + size="m" + > + 5 + </EuiNotificationBadge> +</Fragment> +`; diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/global_toast_list.test.tsx.snap b/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/global_toast_list.test.tsx.snap index 558f0f19080e6..d9dc9f6c7b13d 100644 --- a/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/global_toast_list.test.tsx.snap +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/__snapshots__/global_toast_list.test.tsx.snap @@ -1,5 +1,117 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`global_toast_list with duplicate elements renders the list with a single element 1`] = ` +<EuiGlobalToastList + aria-label="Notification message list" + data-test-subj="globalToastList" + dismissToast={[Function]} + toastLifeTimeMs={Infinity} + toasts={ + Array [ + Object { + "id": "0", + "text": "You've got mail!", + "title": <TitleWithBadge + counter={4} + title="AOL Notifications" + />, + "toastLifeTimeMs": 5000, + }, + ] + } +/> +`; + +exports[`global_toast_list with duplicate elements, using MountPoints renders the all separate elements element: euiToastList 1`] = ` +<EuiGlobalToastList + aria-label="Notification message list" + data-test-subj="globalToastList" + dismissToast={[Function]} + toastLifeTimeMs={Infinity} + toasts={ + Array [ + Object { + "id": "0", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "1", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "2", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "3", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + ] + } +/> +`; + +exports[`global_toast_list with duplicate elements, using MountPoints renders the all separate elements element: globalToastList 1`] = ` +<EuiGlobalToastList + aria-label="Notification message list" + data-test-subj="globalToastList" + dismissToast={[Function]} + toastLifeTimeMs={Infinity} + toasts={ + Array [ + Object { + "id": "0", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "1", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "2", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + Object { + "id": "3", + "text": "You've got mail!", + "title": <MountWrapper + mount={[Function]} + />, + "toastLifeTimeMs": 5000, + }, + ] + } +/> +`; + exports[`renders matching snapshot 1`] = ` <EuiGlobalToastList aria-label="Notification message list" diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.test.tsx b/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.test.tsx new file mode 100644 index 0000000000000..07da6a0c2d364 --- /dev/null +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.test.tsx @@ -0,0 +1,126 @@ +/* + * Copyright 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 { mount, render, shallow } from 'enzyme'; +import { ReactElement, ReactNode } from 'react'; + +import { deduplicateToasts, TitleWithBadge, ToastWithRichTitle } from './deduplicate_toasts'; +import { Toast } from '@kbn/core-notifications-browser'; +import { MountPoint } from '@kbn/core-mount-utils-browser'; + +function toast(title: string | MountPoint, text?: string | MountPoint, id = Math.random()): Toast { + return { + id: id.toString(), + title, + text, + }; +} + +const fakeMountPoint = () => () => {}; + +describe('deduplicate toasts', () => { + it('returns an empty list for an empty input', () => { + const toasts: Toast[] = []; + + const { toasts: deduplicatedToastList } = deduplicateToasts(toasts); + + expect(deduplicatedToastList).toHaveLength(0); + }); + + it(`doesn't affect singular notifications`, () => { + const toasts: Toast[] = [ + toast('A', 'B'), // single toast + toast('X', 'Y'), // single toast + ]; + + const { toasts: deduplicatedToastList } = deduplicateToasts(toasts); + + expect(deduplicatedToastList).toHaveLength(toasts.length); + verifyTextAndTitle(deduplicatedToastList[0], 'A', 'B'); + verifyTextAndTitle(deduplicatedToastList[1], 'X', 'Y'); + }); + + it(`doesn't group notifications with MountPoints for title`, () => { + const toasts: Toast[] = [ + toast('A', 'B'), + toast(fakeMountPoint, 'B'), + toast(fakeMountPoint, 'B'), + toast(fakeMountPoint, fakeMountPoint), + toast(fakeMountPoint, fakeMountPoint), + ]; + + const { toasts: deduplicatedToastList } = deduplicateToasts(toasts); + + expect(deduplicatedToastList).toHaveLength(toasts.length); + }); + + it('groups toasts based on title + text', () => { + const toasts: Toast[] = [ + toast('A', 'B'), // 2 of these + toast('X', 'Y'), // 3 of these + toast('A', 'B'), + toast('X', 'Y'), + toast('A', 'C'), // 1 of these + toast('X', 'Y'), + ]; + + const { toasts: deduplicatedToastList } = deduplicateToasts(toasts); + + expect(deduplicatedToastList).toHaveLength(3); + verifyTextAndTitle(deduplicatedToastList[0], 'A 2', 'B'); + verifyTextAndTitle(deduplicatedToastList[1], 'X 3', 'Y'); + verifyTextAndTitle(deduplicatedToastList[2], 'A', 'C'); + }); + + it('groups toasts based on title, when text is not available', () => { + const toasts: Toast[] = [ + toast('A', 'B'), // 2 of these + toast('A', fakeMountPoint), // 2 of these + toast('A', 'C'), // 1 of this + toast('A', 'B'), + toast('A', fakeMountPoint), + toast('A'), // but it doesn't group functions with missing texts + ]; + + const { toasts: deduplicatedToastList } = deduplicateToasts(toasts); + + expect(deduplicatedToastList).toHaveLength(4); + verifyTextAndTitle(deduplicatedToastList[0], 'A 2', 'B'); + verifyTextAndTitle(deduplicatedToastList[1], 'A 2', expect.any(Function)); + verifyTextAndTitle(deduplicatedToastList[2], 'A', 'C'); + verifyTextAndTitle(deduplicatedToastList[3], 'A', undefined); + }); +}); + +describe('TitleWithBadge component', () => { + it('renders with string titles', () => { + const title = 'Welcome!'; + + const titleComponent = <TitleWithBadge title={title} counter={5} />; + const shallowRender = shallow(titleComponent); + const fullRender = mount(titleComponent); + + expect(fullRender.text()).toBe('Welcome! 5'); + expect(shallowRender).toMatchSnapshot(); + }); +}); + +function verifyTextAndTitle( + { text, title }: ToastWithRichTitle, + expectedTitle?: string, + expectedText?: string +) { + expect(getNodeText(title)).toEqual(expectedTitle); + expect(text).toEqual(expectedText); +} + +function getNodeText(node: ReactNode) { + const rendered = render(node as ReactElement); + return rendered.text(); +} diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.tsx b/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.tsx new file mode 100644 index 0000000000000..51a3a8989b7b8 --- /dev/null +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/deduplicate_toasts.tsx @@ -0,0 +1,138 @@ +/* + * Copyright 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, { ReactNode } from 'react'; +import { css } from '@emotion/css'; + +import { EuiNotificationBadge } from '@elastic/eui'; +import { Toast } from '@kbn/core-notifications-browser'; +import { MountPoint } from '@kbn/core-mount-utils-browser'; + +/** + * We can introduce this type within this domain, to allow for react-managed titles + */ +export type ToastWithRichTitle = Omit<Toast, 'title'> & { + title?: MountPoint | ReactNode; +}; + +export interface DeduplicateResult { + toasts: ToastWithRichTitle[]; + idToToasts: Record<string, Toast[]>; +} + +interface TitleWithBadgeProps { + title: string | undefined; + counter: number; +} + +/** + * Collects toast messages to groups based on the `getKeyOf` function, + * then represents every group of message with a single toast + * @param allToasts + * @return the deduplicated list of toasts, and a lookup to find toasts represented by their first toast's ID + */ +export function deduplicateToasts(allToasts: Toast[]): DeduplicateResult { + const toastGroups = groupByKey(allToasts); + + const distinctToasts: ToastWithRichTitle[] = []; + const idToToasts: Record<string, Toast[]> = {}; + for (const toastGroup of Object.values(toastGroups)) { + const firstElement = toastGroup[0]; + idToToasts[firstElement.id] = toastGroup; + if (toastGroup.length === 1) { + distinctToasts.push(firstElement); + } else { + // Grouping will only happen for toasts whose titles are strings (or missing) + const title = firstElement.title as string | undefined; + distinctToasts.push({ + ...firstElement, + title: <TitleWithBadge title={title} counter={toastGroup.length} />, + }); + } + } + + return { toasts: distinctToasts, idToToasts }; +} + +/** + * Derives a key from a toast object + * these keys decide what makes between different toasts, and which ones should be merged + * These toasts will be merged: + * - where title and text are strings, and the same + * - where titles are the same, and texts are missing + * - where titles are the same, and the text's mount function is the same string + * - where titles are missing, but the texts are the same string + * @param toast The toast whose key we're deriving + */ +function getKeyOf(toast: Toast): string { + if (isString(toast.title) && isString(toast.text)) { + return toast.title + ' ' + toast.text; + } else if (isString(toast.title) && !toast.text) { + return toast.title; + } else if (isString(toast.title) && typeof toast.text === 'function') { + return toast.title + ' ' + djb2Hash(toast.text.toString()); + } else if (isString(toast.text) && !toast.title) { + return toast.text; + } else { + // Either toast or text is a mount function, or both missing + return 'KEY_' + toast.id.toString(); + } +} + +function isString(a: string | any): a is string { + return typeof a === 'string'; +} + +// Based on: https://gist.github.com/eplawless/52813b1d8ad9af510d85 +function djb2Hash(str: string): number { + const len = str.length; + let hash = 5381; + + for (let i = 0; i < len; i++) { + // eslint-disable-next-line no-bitwise + hash = (hash * 33) ^ str.charCodeAt(i); + } + // eslint-disable-next-line no-bitwise + return hash >>> 0; +} + +function groupByKey(allToasts: Toast[]) { + const toastGroups: Record<string, Toast[]> = {}; + for (const toast of allToasts) { + const key = getKeyOf(toast); + + if (!toastGroups[key]) { + toastGroups[key] = [toast]; + } else { + toastGroups[key].push(toast); + } + } + return toastGroups; +} + +const floatTopRight = css` + position: absolute; + top: -8px; + right: -8px; +`; + +/** + * A component that renders a title with a floating counter + * @param title {string} The title string + * @param counter {number} The count of notifications represented + */ +export function TitleWithBadge({ title, counter }: TitleWithBadgeProps) { + return ( + <React.Fragment> + {title}{' '} + <EuiNotificationBadge color="subdued" size="m" className={floatTopRight}> + {counter} + </EuiNotificationBadge> + </React.Fragment> + ); +} diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.test.tsx b/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.test.tsx index 77430aa951b11..3835dfd24e899 100644 --- a/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.test.tsx +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.test.tsx @@ -7,14 +7,17 @@ */ import { EuiGlobalToastList } from '@elastic/eui'; +import { Toast } from '@kbn/core-notifications-browser/src/types'; import { shallow } from 'enzyme'; import React from 'react'; import { Observable, from, EMPTY } from 'rxjs'; import { GlobalToastList } from './global_toast_list'; +const mockDismissToast = jest.fn(); + function render(props: Partial<GlobalToastList['props']> = {}) { - return <GlobalToastList dismissToast={jest.fn()} toasts$={EMPTY} {...props} />; + return <GlobalToastList dismissToast={mockDismissToast} toasts$={EMPTY} {...props} />; } it('renders matching snapshot', () => { @@ -52,3 +55,78 @@ it('passes latest value from toasts$ to <EuiGlobalToastList />', () => { expect(el.find(EuiGlobalToastList).prop('toasts')).toEqual([{ id: '1' }, { id: '2' }]); }); + +describe('global_toast_list with duplicate elements', () => { + const dummyText = `You've got mail!`; + const dummyTitle = `AOL Notifications`; + const toast = (id: any): Toast => ({ + id: id.toString(), + text: dummyText, + title: dummyTitle, + toastLifeTimeMs: 5000, + }); + + const globalToastList = shallow( + render({ + toasts$: from([[toast(0), toast(1), toast(2), toast(3)]]) as any, + }) + ); + + const euiToastList = globalToastList.find(EuiGlobalToastList); + const toastsProp = euiToastList.prop('toasts'); + + it('renders the list with a single element', () => { + expect(toastsProp).toBeDefined(); + expect(toastsProp).toHaveLength(1); + expect(euiToastList).toMatchSnapshot(); + }); + + it('renders the single toast with the common text', () => { + const firstRenderedToast = toastsProp![0]; + expect(firstRenderedToast.text).toBe(dummyText); + }); + + it(`calls all toast's dismiss when closed`, () => { + const firstRenderedToast = toastsProp![0]; + const dismissToast = globalToastList.prop('dismissToast'); + dismissToast(firstRenderedToast); + + expect(mockDismissToast).toHaveBeenCalledTimes(4); + expect(mockDismissToast).toHaveBeenCalledWith('0'); + expect(mockDismissToast).toHaveBeenCalledWith('1'); + expect(mockDismissToast).toHaveBeenCalledWith('2'); + expect(mockDismissToast).toHaveBeenCalledWith('3'); + }); +}); + +describe('global_toast_list with duplicate elements, using MountPoints', () => { + const dummyText = `You've got mail!`; + const toast = (id: any): Toast => ({ + id: id.toString(), + text: dummyText, + title: (element) => { + const a = document.createElement('a'); + a.innerText = 'Click me!'; + a.href = 'https://elastic.co'; + element.appendChild(a); + return () => element.removeChild(a); + }, + toastLifeTimeMs: 5000, + }); + + const globalToastList = shallow( + render({ + toasts$: from([[toast(0), toast(1), toast(2), toast(3)]]) as any, + }) + ); + + const euiToastList = globalToastList.find(EuiGlobalToastList); + const toastsProp = euiToastList.prop('toasts'); + + it('renders the all separate elements element', () => { + expect(toastsProp).toBeDefined(); + expect(toastsProp).toHaveLength(4); + expect(euiToastList).toMatchSnapshot('euiToastList'); + expect(globalToastList).toMatchSnapshot('globalToastList'); + }); +}); diff --git a/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.tsx b/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.tsx index db700da12cf0a..e0a5d631d3776 100644 --- a/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.tsx +++ b/packages/core/notifications/core-notifications-browser-internal/src/toasts/global_toast_list.tsx @@ -13,6 +13,7 @@ import { i18n } from '@kbn/i18n'; import type { Toast } from '@kbn/core-notifications-browser'; import { MountWrapper } from '@kbn/core-mount-utils-browser-internal'; +import { deduplicateToasts, ToastWithRichTitle } from './deduplicate_toasts'; interface Props { toasts$: Observable<Toast[]>; @@ -20,25 +21,28 @@ interface Props { } interface State { - toasts: Toast[]; + toasts: ToastWithRichTitle[]; + idToToasts: Record<string, Toast[]>; } -const convertToEui = (toast: Toast): EuiToast => ({ +const convertToEui = (toast: ToastWithRichTitle): EuiToast => ({ ...toast, - title: typeof toast.title === 'function' ? <MountWrapper mount={toast.title} /> : toast.title, - text: typeof toast.text === 'function' ? <MountWrapper mount={toast.text} /> : toast.text, + title: toast.title instanceof Function ? <MountWrapper mount={toast.title} /> : toast.title, + text: toast.text instanceof Function ? <MountWrapper mount={toast.text} /> : toast.text, }); export class GlobalToastList extends React.Component<Props, State> { public state: State = { toasts: [], + idToToasts: {}, }; private subscription?: Subscription; public componentDidMount() { - this.subscription = this.props.toasts$.subscribe((toasts) => { - this.setState({ toasts }); + this.subscription = this.props.toasts$.subscribe((redundantToastList) => { + const { toasts, idToToasts } = deduplicateToasts(redundantToastList); + this.setState({ toasts, idToToasts }); }); } @@ -48,6 +52,13 @@ export class GlobalToastList extends React.Component<Props, State> { } } + private closeToastsRepresentedById(id: string) { + const representedToasts = this.state.idToToasts[id]; + if (representedToasts) { + representedToasts.forEach((toast) => this.props.dismissToast(toast.id)); + } + } + public render() { return ( <EuiGlobalToastList @@ -56,7 +67,7 @@ export class GlobalToastList extends React.Component<Props, State> { })} data-test-subj="globalToastList" toasts={this.state.toasts.map(convertToEui)} - dismissToast={({ id }) => this.props.dismissToast(id)} + dismissToast={({ id }) => this.closeToastsRepresentedById(id)} /** * This prop is overridden by the individual toasts that are added. * Use `Infinity` here so that it's obvious a timeout hasn't been diff --git a/packages/core/notifications/core-notifications-browser-internal/tsconfig.json b/packages/core/notifications/core-notifications-browser-internal/tsconfig.json index f2828768aa26b..a2cdcd20e4889 100644 --- a/packages/core/notifications/core-notifications-browser-internal/tsconfig.json +++ b/packages/core/notifications/core-notifications-browser-internal/tsconfig.json @@ -28,6 +28,7 @@ "@kbn/test-jest-helpers", "@kbn/core-overlays-browser-mocks", "@kbn/core-theme-browser-mocks", + "@kbn/core-mount-utils-browser", ], "exclude": [ "target/**/*", diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 6be061f7aaa21..249820124ef7a 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -741,6 +741,8 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { clients: { /** Changes to these URLs must also be synched in src/plugins/custom_integrations/server/language_clients/index.ts */ guide: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/index.html`, + goConnecting: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/go-api/${DOC_LINK_VERSION}/connecting.html`, + goGettingStarted: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/go-api/${DOC_LINK_VERSION}/getting-started-go.html`, goIndex: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/go-api/${DOC_LINK_VERSION}/index.html`, goOverview: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/go-api/${DOC_LINK_VERSION}/overview.html`, javaBasicAuthentication: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/java-api-client/${DOC_LINK_VERSION}/_basic_authentication.html`, @@ -757,11 +759,14 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { netIntroduction: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/net-api/${DOC_LINK_VERSION}/introduction.html`, netNest: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/net-api/${DOC_LINK_VERSION}/nest.html`, netSingleNode: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/net-api/${DOC_LINK_VERSION}/connecting.html#single-node`, + phpConfiguration: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/php-api/${DOC_LINK_VERSION}/configuration.html`, phpConnecting: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/php-api/${DOC_LINK_VERSION}/connecting.html`, phpInstallation: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/php-api/${DOC_LINK_VERSION}/installation.html`, phpGuide: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/php-api/${DOC_LINK_VERSION}/index.html`, phpOverview: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/php-api/${DOC_LINK_VERSION}/overview.html`, pythonAuthentication: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/python-api/${DOC_LINK_VERSION}/connecting.html#authentication`, + pythonConfig: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/python-api/${DOC_LINK_VERSION}/config.html`, + pythonConnecting: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/python-api/${DOC_LINK_VERSION}/connecting.html`, pythonGuide: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/python-api/${DOC_LINK_VERSION}/index.html`, pythonOverview: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/python-api/${DOC_LINK_VERSION}/overview.html`, rubyAuthentication: `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/client/ruby-api/${DOC_LINK_VERSION}/connecting.html#client-auth`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 0702c2bbe3f2e..dff8af667ccba 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -508,6 +508,8 @@ export interface DocLinks { }; readonly clients: { readonly guide: string; + readonly goConnecting: string; + readonly goGettingStarted: string; readonly goIndex: string; readonly goOverview: string; readonly javaBasicAuthentication: string; @@ -524,11 +526,14 @@ export interface DocLinks { readonly netIntroduction: string; readonly netNest: string; readonly netSingleNode: string; - readonly phpGuide: string; + readonly phpConfiguration: string; readonly phpConnecting: string; + readonly phpGuide: string; readonly phpInstallation: string; readonly phpOverview: string; readonly pythonAuthentication: string; + readonly pythonConfig: string; + readonly pythonConnecting: string; readonly pythonGuide: string; readonly pythonOverview: string; readonly rubyAuthentication: string; diff --git a/packages/kbn-es-query/index.ts b/packages/kbn-es-query/index.ts index e36c2dd329ea8..1e0d9092adefb 100644 --- a/packages/kbn-es-query/index.ts +++ b/packages/kbn-es-query/index.ts @@ -116,6 +116,7 @@ export { nodeTypes, toElasticsearchQuery, escapeKuery, + escapeQuotes, } from './src/kuery'; export { diff --git a/packages/kbn-es-query/src/kuery/index.ts b/packages/kbn-es-query/src/kuery/index.ts index c7faf0cb4154a..002c67b19c7dc 100644 --- a/packages/kbn-es-query/src/kuery/index.ts +++ b/packages/kbn-es-query/src/kuery/index.ts @@ -23,5 +23,5 @@ export const toElasticsearchQuery = (...params: Parameters<typeof astToElasticse export { KQLSyntaxError } from './kuery_syntax_error'; export { nodeTypes, nodeBuilder } from './node_types'; export { fromKueryExpression, toKqlExpression } from './ast'; -export { escapeKuery } from './utils'; +export { escapeKuery, escapeQuotes } from './utils'; export type { DslQuery, KueryNode, KueryQueryOptions, KueryParseOptions } from './types'; diff --git a/packages/kbn-es-query/src/kuery/node_types/literal.test.ts b/packages/kbn-es-query/src/kuery/node_types/literal.test.ts index bdc7765d167f1..c0680016644f7 100644 --- a/packages/kbn-es-query/src/kuery/node_types/literal.test.ts +++ b/packages/kbn-es-query/src/kuery/node_types/literal.test.ts @@ -31,13 +31,13 @@ describe('kuery node types', () => { }); describe('toKqlExpression', () => { - test('quoted', () => { + test('unquoted', () => { const node = buildNode('foo'); const result = toKqlExpression(node); expect(result).toBe('foo'); }); - test('unquoted', () => { + test('quoted', () => { const node = buildNode('foo', true); const result = toKqlExpression(node); expect(result).toBe('"foo"'); @@ -54,6 +54,12 @@ describe('kuery node types', () => { const result = toKqlExpression(node); expect(result).toBe('foo \\and bar \\not baz \\or qux'); }); + + test('quoted with escaped quotes', () => { + const node = buildNode(`I said, "Hello."`, true); + const result = toKqlExpression(node); + expect(result).toBe(`"I said, \\"Hello.\\""`); + }); }); }); }); diff --git a/packages/kbn-es-query/src/kuery/node_types/literal.ts b/packages/kbn-es-query/src/kuery/node_types/literal.ts index 51ab68dfe1f3a..d34413308ceb7 100644 --- a/packages/kbn-es-query/src/kuery/node_types/literal.ts +++ b/packages/kbn-es-query/src/kuery/node_types/literal.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { type KueryNode, escapeKuery } from '..'; +import { type KueryNode, escapeKuery, escapeQuotes } from '..'; export const KQL_NODE_TYPE_LITERAL = 'literal'; @@ -35,5 +35,5 @@ export function toElasticsearchQuery(node: KqlLiteralNode) { } export function toKqlExpression(node: KqlLiteralNode): string { - return node.isQuoted ? `"${node.value}"` : escapeKuery(`${node.value}`); + return node.isQuoted ? `"${escapeQuotes(`${node.value}`)}"` : escapeKuery(`${node.value}`); } diff --git a/packages/kbn-es-query/src/kuery/utils/escape_kuery.test.ts b/packages/kbn-es-query/src/kuery/utils/escape_kuery.test.ts index 58aabfe41d41b..7ec4ab93081d9 100644 --- a/packages/kbn-es-query/src/kuery/utils/escape_kuery.test.ts +++ b/packages/kbn-es-query/src/kuery/utils/escape_kuery.test.ts @@ -6,7 +6,23 @@ * Side Public License, v 1. */ -import { escapeKuery } from './escape_kuery'; +import { escapeKuery, escapeQuotes } from './escape_kuery'; + +describe('escapeQuotes', () => { + test('should escape quotes', () => { + const value = 'I said, "Hello."'; + const expected = 'I said, \\"Hello.\\"'; + + expect(escapeQuotes(value)).toBe(expected); + }); + + test('should escape backslashes and quotes', () => { + const value = 'Backslashes \\" in the middle and ends with quotes \\"'; + const expected = 'Backslashes \\\\\\" in the middle and ends with quotes \\\\\\"'; + + expect(escapeQuotes(value)).toBe(expected); + }); +}); describe('escapeKuery', () => { test('should escape special characters', () => { diff --git a/packages/kbn-es-query/src/kuery/utils/escape_kuery.ts b/packages/kbn-es-query/src/kuery/utils/escape_kuery.ts index 6693fbb847fd1..62eede9fe5340 100644 --- a/packages/kbn-es-query/src/kuery/utils/escape_kuery.ts +++ b/packages/kbn-es-query/src/kuery/utils/escape_kuery.ts @@ -8,6 +8,14 @@ import { flow } from 'lodash'; +/** + * Escapes backslashes and double-quotes. (Useful when putting a string in quotes to use as a value + * in a KQL expression. See the QuotedCharacter rule in kuery.peg.) + */ +export function escapeQuotes(str: string) { + return str.replace(/[\\"]/g, '\\$&'); +} + /** * Escapes a Kuery node value to ensure that special characters, operators, and whitespace do not result in a parsing error or unintended * behavior when using the value as an argument for the `buildNode` function. diff --git a/packages/kbn-es-query/src/kuery/utils/index.ts b/packages/kbn-es-query/src/kuery/utils/index.ts index 34575ef08573d..8726b56a466cc 100644 --- a/packages/kbn-es-query/src/kuery/utils/index.ts +++ b/packages/kbn-es-query/src/kuery/utils/index.ts @@ -6,4 +6,4 @@ * Side Public License, v 1. */ -export { escapeKuery } from './escape_kuery'; +export { escapeKuery, escapeQuotes } from './escape_kuery'; diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.tsx b/packages/kbn-expandable-flyout/src/components/preview_section.tsx index 0c030293e8807..72aa87e388150 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.tsx +++ b/packages/kbn-expandable-flyout/src/components/preview_section.tsx @@ -11,19 +11,55 @@ import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem, - EuiPanel, + EuiText, useEuiTheme, + EuiSplitPanel, } from '@elastic/eui'; import React from 'react'; import { css } from '@emotion/react'; + +import { has } from 'lodash'; import { PREVIEW_SECTION, PREVIEW_SECTION_BACK_BUTTON, PREVIEW_SECTION_CLOSE_BUTTON, + PREVIEW_SECTION_HEADER, } from './test_ids'; import { useExpandableFlyoutContext } from '../..'; import { BACK_BUTTON, CLOSE_BUTTON } from './translations'; +export interface PreviewBanner { + /** + * Optional title to be shown + */ + title?: string; + /** + * Optional string for background color + */ + backgroundColor?: + | 'primary' + | 'plain' + | 'warning' + | 'accent' + | 'success' + | 'danger' + | 'transparent' + | 'subdued'; + /** + * Optional string for text color + */ + textColor?: string; +} + +/** + * Type guard to check the passed object is of preview banner type + * @param banner passed from panel params + * @returns a boolean to indicate whether the banner passed is a preview banner + */ +export const isPreviewBanner = (banner: unknown): banner is PreviewBanner => { + return has(banner, 'title') || has(banner, 'backgroundColor') || has(banner, 'textColor'); +}; + interface PreviewSectionProps { /** * Component to be rendered @@ -37,6 +73,10 @@ interface PreviewSectionProps { * Display the back button in the header */ showBackButton: boolean; + /** + * Preview banner shown at the top of preview panel + */ + banner?: PreviewBanner; } /** @@ -47,6 +87,7 @@ export const PreviewSection: React.FC<PreviewSectionProps> = ({ component, showBackButton, width, + banner, }: PreviewSectionProps) => { const { euiTheme } = useEuiTheme(); const { closePreviewPanel, previousPreviewPanel } = useExpandableFlyoutContext(); @@ -95,8 +136,10 @@ export const PreviewSection: React.FC<PreviewSectionProps> = ({ opacity: 0.5; `} /> - <div + <EuiSplitPanel.Outer css={css` + margin: ${euiTheme.size.xs}; + height: 99%; position: absolute; top: 0; bottom: 0; @@ -104,18 +147,21 @@ export const PreviewSection: React.FC<PreviewSectionProps> = ({ left: ${left}; z-index: 1000; `} + className="eui-yScroll" + data-test-subj={PREVIEW_SECTION} > - <EuiPanel - css={css` - margin: ${euiTheme.size.xs}; - height: 100%; - `} - data-test-subj={PREVIEW_SECTION} - > + {isPreviewBanner(banner) && ( + <EuiSplitPanel.Inner grow={false} color={banner.backgroundColor} paddingSize="none"> + <EuiText textAlign="center" color={banner.textColor} size="s"> + {banner.title} + </EuiText> + </EuiSplitPanel.Inner> + )} + <EuiSplitPanel.Inner grow={false} paddingSize="s" data-test-subj={PREVIEW_SECTION_HEADER}> {header} - {component} - </EuiPanel> - </div> + </EuiSplitPanel.Inner> + <EuiSplitPanel.Inner paddingSize="none">{component}</EuiSplitPanel.Inner> + </EuiSplitPanel.Outer> </> ); }; diff --git a/packages/kbn-expandable-flyout/src/components/test_ids.ts b/packages/kbn-expandable-flyout/src/components/test_ids.ts index 38dd9231712c4..430f87f85c5d5 100644 --- a/packages/kbn-expandable-flyout/src/components/test_ids.ts +++ b/packages/kbn-expandable-flyout/src/components/test_ids.ts @@ -15,3 +15,5 @@ export const PREVIEW_SECTION = 'previewSection'; export const PREVIEW_SECTION_CLOSE_BUTTON = 'previewSectionCloseButton'; export const PREVIEW_SECTION_BACK_BUTTON = 'previewSectionBackButton'; + +export const PREVIEW_SECTION_HEADER = 'previewSectionHeader'; diff --git a/packages/kbn-expandable-flyout/src/index.tsx b/packages/kbn-expandable-flyout/src/index.tsx index fa9a1bf5af7c2..e6e5af85ac0a3 100644 --- a/packages/kbn-expandable-flyout/src/index.tsx +++ b/packages/kbn-expandable-flyout/src/index.tsx @@ -15,6 +15,7 @@ import { PreviewSection } from './components/preview_section'; import { RightSection } from './components/right_section'; import type { FlyoutPanelProps, Panel } from './types'; import { LeftSection } from './components/left_section'; +import { isPreviewBanner } from './components/preview_section'; export interface ExpandableFlyoutProps extends Omit<EuiFlyoutProps, 'onClose'> { /** @@ -65,6 +66,10 @@ export const ExpandableFlyout: React.FC<ExpandableFlyoutProps> = ({ // retrieve the last preview panel (most recent) const mostRecentPreview = preview ? preview[preview.length - 1] : undefined; + const previewBanner = isPreviewBanner(mostRecentPreview?.params?.banner) + ? mostRecentPreview?.params?.banner + : undefined; + const showBackButton = preview && preview.length > 1; const previewSection = useMemo( () => registeredPanels.find((panel) => panel.key === mostRecentPreview?.id), @@ -115,6 +120,7 @@ export const ExpandableFlyout: React.FC<ExpandableFlyoutProps> = ({ component={previewSection.component({ ...(mostRecentPreview as FlyoutPanelProps) })} showBackButton={showBackButton} width={previewSectionWidth} + banner={previewBanner} /> ) : null} </EuiFlyout> diff --git a/packages/kbn-unified-field-list/src/components/field_list_filters/field_type_filter.tsx b/packages/kbn-unified-field-list/src/components/field_list_filters/field_type_filter.tsx index db98acad65013..1afe4bac5f0ba 100644 --- a/packages/kbn-unified-field-list/src/components/field_list_filters/field_type_filter.tsx +++ b/packages/kbn-unified-field-list/src/components/field_list_filters/field_type_filter.tsx @@ -47,7 +47,8 @@ const popoverTitleStyle = css` padding: ${EQUAL_HEIGHT_OFFSET}px 0; `; const filterButtonStyle = css` - .euiFilterButton__textShift { + &, + & .euiFilterButton__textShift { min-width: 0; line-height: 1; } @@ -105,7 +106,12 @@ export function FieldTypeFilter<T extends FieldListItem = DataViewField>({ const itemStyle = useMemo( () => css` font-size: ${euiTheme.size.m}; - padding: ${euiTheme.size.s} ${euiTheme.size.m}; + + // Specificity needed to override Sass styles + // EUI TODO: Remove this selector once EuiContextMenu has been converted to Emotion + &.euiContextMenuItem { + padding: ${euiTheme.size.s} ${euiTheme.size.m}; + } & + & { border-top: 1px solid ${euiTheme.colors.lightestShade}; @@ -149,7 +155,7 @@ export function FieldTypeFilter<T extends FieldListItem = DataViewField>({ return ( <EuiPopover id="unifiedFieldTypeFilter" - panelClassName="euiFilterGroup__popoverPanel" + panelProps={{ css: { width: euiTheme.base * 18 } }} panelPaddingSize="none" anchorPosition="rightUp" display="block" diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index c12e6f91b821f..dd525d80a27a1 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint '@elastic/ems-client@8.4.0': ['Elastic License 2.0'], - '@elastic/eui@84.0.0': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@85.0.1': ['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/src/plugins/content_management/docs/content_onboarding.md b/src/plugins/content_management/docs/content_onboarding.mdx similarity index 98% rename from src/plugins/content_management/docs/content_onboarding.md rename to src/plugins/content_management/docs/content_onboarding.mdx index d170d80f87981..f198a720b9878 100644 --- a/src/plugins/content_management/docs/content_onboarding.md +++ b/src/plugins/content_management/docs/content_onboarding.mdx @@ -1,6 +1,11 @@ -# Content management - onboarding - -This documentation lays down the steps to migrate away from the saved object public client by using the content management registries (public and server) and its public client. +--- +id: kibDevTutorialsContentManagementOnboarding +slug: /kibana-dev-docs/content-management-onboarding +title: Content Management Onboarding +description: This documentation lays down the steps to migrate away from the saved object public client by using the content management registries (public and server) and its public client. +date: 2023-04-13 +tags: ['kibana', 'dev', 'content management', 'saved objects'] +--- ## High level architecture diff --git a/src/plugins/presentation_util/public/components/field_picker/field_type_filter.scss b/src/plugins/presentation_util/public/components/field_picker/field_type_filter.scss index bc4ea714a4113..f993a2a0a065c 100644 --- a/src/plugins/presentation_util/public/components/field_picker/field_type_filter.scss +++ b/src/plugins/presentation_util/public/components/field_picker/field_type_filter.scss @@ -1,4 +1,5 @@ .presFilterByType__panel { + width: $euiSize * 18; min-width: $euiSizeXXL * 8; @include euiBreakpoint('l', 'xl') { width: $euiFormMaxWidth; diff --git a/src/plugins/presentation_util/public/components/field_picker/field_type_filter.tsx b/src/plugins/presentation_util/public/components/field_picker/field_type_filter.tsx index a17739cf8ccbd..d6fa9827f0af1 100644 --- a/src/plugins/presentation_util/public/components/field_picker/field_type_filter.tsx +++ b/src/plugins/presentation_util/public/components/field_picker/field_type_filter.tsx @@ -66,7 +66,7 @@ export function FieldTypeFilter({ <EuiOutsideClickDetector onOutsideClick={() => {}} isDisabled={!isPopoverOpen}> <EuiFilterGroup fullWidth> <EuiPopover - panelClassName="euiFilterGroup__popoverPanel presFilterByType__panel" + panelClassName="presFilterByType__panel" panelPaddingSize="none" display="block" isOpen={isPopoverOpen} diff --git a/src/plugins/saved_objects_finder/public/finder/saved_object_finder.test.tsx b/src/plugins/saved_objects_finder/public/finder/saved_object_finder.test.tsx index 1c8ed33853c87..674e49a77c360 100644 --- a/src/plugins/saved_objects_finder/public/finder/saved_object_finder.test.tsx +++ b/src/plugins/saved_objects_finder/public/finder/saved_object_finder.test.tsx @@ -679,8 +679,8 @@ describe('SavedObjectsFinder', () => { wrapper.instance().componentDidMount!(); await nextTick(); expect(wrapper.find('button.euiFilterButton')).toHaveLength(2); - expect(wrapper.find('button.euiFilterButton [data-text="Types"]')).toHaveLength(1); - expect(wrapper.find('button.euiFilterButton [data-text="Tags"]')).toHaveLength(1); + expect(wrapper.find('button.euiFilterButton span[data-text="Types"]')).toHaveLength(1); + expect(wrapper.find('button.euiFilterButton span[data-text="Tags"]')).toHaveLength(1); }); it('should not render filter buttons if disabled', async () => { diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.test.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.test.ts deleted file mode 100644 index 162c461f7a175..0000000000000 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.test.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 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 { escapeQuotes } from './escape_kuery'; - -describe('Kuery escape', () => { - test('should escape quotes', () => { - const value = 'I said, "Hello."'; - const expected = 'I said, \\"Hello.\\"'; - - expect(escapeQuotes(value)).toBe(expected); - }); - - test('should escape backslashes and quotes', () => { - const value = 'Backslashes \\" in the middle and ends with quotes \\"'; - const expected = 'Backslashes \\\\\\" in the middle and ends with quotes \\\\\\"'; - - expect(escapeQuotes(value)).toBe(expected); - }); -}); diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts deleted file mode 100644 index 20a20797c15e2..0000000000000 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.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 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. - */ - -/** - * Escapes backslashes and double-quotes. (Useful when putting a string in quotes to use as a value - * in a KQL expression. See the QuotedCharacter rule in kuery.peg.) - */ -export function escapeQuotes(str: string) { - return str.replace(/[\\"]/g, '\\$&'); -} diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts index 9ad16e0e13991..b4ea74d8be518 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts +++ b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/value.ts @@ -9,7 +9,7 @@ import { flatten } from 'lodash'; import { CoreSetup } from '@kbn/core/public'; import type { DataView, DataViewField } from '@kbn/data-views-plugin/common'; -import { escapeQuotes } from './lib/escape_kuery'; +import { escapeQuotes } from '@kbn/es-query'; import { KqlQuerySuggestionProvider } from './types'; import type { UnifiedSearchPublicPluginStart } from '../../../types'; import { QuerySuggestion, QuerySuggestionTypes } from '../query_suggestion_provider'; diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx b/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx index f9ac3ab3d8ade..dfae852660332 100644 --- a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx +++ b/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx @@ -106,28 +106,25 @@ export const SolutionSideNav: React.FC<SolutionSideNavProps> = React.memo(functi <EuiFlexGroup gutterSize="none" direction="column"> <EuiFlexItem> <EuiFlexGroup gutterSize="none" direction="column"> - <EuiFlexItem> - <EuiListGroup gutterSize="none"> - <SolutionSideNavItems - items={topItems} - categories={categories} - selectedId={selectedId} - activePanelNavId={activePanelNavId} - isMobileSize={isMobileSize} - onOpenPanelNav={openPanelNav} - /> - </EuiListGroup> + <EuiFlexItem grow={false}> + <SolutionSideNavItems + items={topItems} + categories={categories} + selectedId={selectedId} + activePanelNavId={activePanelNavId} + isMobileSize={isMobileSize} + onOpenPanelNav={openPanelNav} + /> </EuiFlexItem> + <EuiFlexItem /> <EuiFlexItem grow={false}> - <EuiListGroup gutterSize="none"> - <SolutionSideNavItems - items={bottomItems} - selectedId={selectedId} - activePanelNavId={activePanelNavId} - isMobileSize={isMobileSize} - onOpenPanelNav={openPanelNav} - /> - </EuiListGroup> + <SolutionSideNavItems + items={bottomItems} + selectedId={selectedId} + activePanelNavId={activePanelNavId} + isMobileSize={isMobileSize} + onOpenPanelNav={openPanelNav} + /> </EuiFlexItem> </EuiFlexGroup> </EuiFlexItem> @@ -284,16 +281,18 @@ const SolutionSideNavItem: React.FC<SolutionSideNavItemProps> = React.memo( <> <EuiFlexGroup alignItems="center" gutterSize="xs"> <EuiFlexItem> - <EuiListGroupItem - label={itemLabel} - href={href} - wrapText - onClick={onLinkClicked} - className={itemClassNames} - color="text" - size="s" - data-test-subj={`solutionSideNavItemLink-${id}`} - /> + <EuiListGroup gutterSize="none"> + <EuiListGroupItem + label={itemLabel} + href={href} + wrapText + onClick={onLinkClicked} + className={itemClassNames} + color="text" + size="s" + data-test-subj={`solutionSideNavItemLink-${id}`} + /> + </EuiListGroup> </EuiFlexItem> {hasPanelNav && ( <EuiFlexItem grow={0}> diff --git a/x-pack/plugins/cases/common/constants/index.ts b/x-pack/plugins/cases/common/constants/index.ts index 2b4e576dcf7f1..02a20b014aa8a 100644 --- a/x-pack/plugins/cases/common/constants/index.ts +++ b/x-pack/plugins/cases/common/constants/index.ts @@ -127,6 +127,7 @@ export const MAX_DELETE_IDS_LENGTH = 100 as const; export const MAX_SUGGESTED_PROFILES = 10 as const; export const MAX_CASES_TO_UPDATE = 100 as const; export const MAX_BULK_CREATE_ATTACHMENTS = 100 as const; +export const MAX_USER_ACTIONS_PER_CASE = 10000 as const; export const MAX_PERSISTABLE_STATE_AND_EXTERNAL_REFERENCES = 100 as const; /** diff --git a/x-pack/plugins/cases/common/utils/index.ts b/x-pack/plugins/cases/common/utils/index.ts index b8be12831200e..ef509fb8bfd86 100644 --- a/x-pack/plugins/cases/common/utils/index.ts +++ b/x-pack/plugins/cases/common/utils/index.ts @@ -7,3 +7,4 @@ export * from './connectors_api'; export * from './capabilities'; +export * from './validators'; diff --git a/x-pack/plugins/cases/common/utils/validators.test.ts b/x-pack/plugins/cases/common/utils/validators.test.ts index 9b0a20320118d..1daf64f90c611 100644 --- a/x-pack/plugins/cases/common/utils/validators.test.ts +++ b/x-pack/plugins/cases/common/utils/validators.test.ts @@ -5,8 +5,9 @@ * 2.0. */ -import { MAX_ASSIGNEES_PER_CASE } from '../constants'; -import { areTotalAssigneesInvalid } from './validators'; +import { createUserActionServiceMock } from '../../server/services/mocks'; +import { MAX_ASSIGNEES_PER_CASE, MAX_USER_ACTIONS_PER_CASE } from '../constants'; +import { areTotalAssigneesInvalid, validateMaxUserActions } from './validators'; describe('validators', () => { describe('areTotalAssigneesInvalid', () => { @@ -31,4 +32,37 @@ describe('validators', () => { expect(areTotalAssigneesInvalid(generateAssignees(MAX_ASSIGNEES_PER_CASE + 1))).toBe(true); }); }); + + describe('validateMaxUserActions', () => { + const caseId = 'test-case'; + const userActionService = createUserActionServiceMock(); + + userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [caseId]: MAX_USER_ACTIONS_PER_CASE - 1, + }); + + it('does not throw if the limit is not reached', async () => { + await expect( + validateMaxUserActions({ caseId, userActionService, userActionsToAdd: 1 }) + ).resolves.not.toThrow(); + }); + + it('throws if the max user actions per case limit is reached', async () => { + await expect( + validateMaxUserActions({ caseId, userActionService, userActionsToAdd: 2 }) + ).rejects.toThrow( + `The case with id ${caseId} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + }); + + it('the caseId does not exist in the response', async () => { + userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + foobar: MAX_USER_ACTIONS_PER_CASE - 1, + }); + + await expect( + validateMaxUserActions({ caseId, userActionService, userActionsToAdd: 1 }) + ).resolves.not.toThrow(); + }); + }); }); diff --git a/x-pack/plugins/cases/common/utils/validators.ts b/x-pack/plugins/cases/common/utils/validators.ts index 9311c3a9a8bae..cd85401d7a6bd 100644 --- a/x-pack/plugins/cases/common/utils/validators.ts +++ b/x-pack/plugins/cases/common/utils/validators.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { MAX_ASSIGNEES_PER_CASE } from '../constants'; +import Boom from '@hapi/boom'; + +import type { CaseUserActionService } from '../../server/services'; +import { MAX_ASSIGNEES_PER_CASE, MAX_USER_ACTIONS_PER_CASE } from '../constants'; import type { CaseAssignees } from '../types/domain'; export const areTotalAssigneesInvalid = (assignees?: CaseAssignees): boolean => { @@ -15,3 +18,25 @@ export const areTotalAssigneesInvalid = (assignees?: CaseAssignees): boolean => return assignees.length > MAX_ASSIGNEES_PER_CASE; }; + +export const validateMaxUserActions = async ({ + caseId, + userActionService, + userActionsToAdd, +}: { + caseId: string; + userActionService: CaseUserActionService; + userActionsToAdd: number; +}) => { + const result = await userActionService.getMultipleCasesUserActionsTotal({ + caseIds: [caseId], + }); + + const totalUserActions = result[caseId] ?? 0; + + if (totalUserActions + userActionsToAdd > MAX_USER_ACTIONS_PER_CASE) { + throw Boom.badRequest( + `The case with id ${caseId} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + } +}; diff --git a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx index 130fdcf0bc1d1..d39656e9d500e 100644 --- a/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx +++ b/x-pack/plugins/cases/public/components/case_view/components/case_view_activity.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; -import { screen, waitFor, within, fireEvent } from '@testing-library/react'; +import { screen, waitFor, within } from '@testing-library/react'; import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; import { alertComment, @@ -313,8 +313,7 @@ describe('Case View Page activity tab', () => { expect(await screen.findByTestId('case-view-edit-connector')).toBeInTheDocument(); }); - // FLAKY: https://github.com/elastic/kibana/issues/152202 - describe.skip('filter activity', () => { + describe('filter activity', () => { beforeEach(() => { jest.clearAllMocks(); useFindCaseUserActionsMock.mockReturnValue(defaultUseFindCaseUserActions); @@ -325,13 +324,12 @@ describe('Case View Page activity tab', () => { }); }); - it('should show all filter as active', async () => { + it('should call user action hooks correctly when filtering for all', async () => { appMockRender.render(<CaseViewActivity {...caseProps} />); const lastPageForAll = Math.ceil(userActionsStats.total / userActivityQueryParams.perPage); - expect(await screen.findByTestId('user-actions-activity-bar')); - userEvent.click(screen.getByTestId('user-actions-filter-activity-button-all')); + userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-all')); expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( caseData.id, @@ -348,25 +346,14 @@ describe('Case View Page activity tab', () => { expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); }); - it('should call user action hooks correctly when filtering for all', async () => { - appMockRender.render(<CaseViewActivity {...caseProps} />); - - userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-all')); - - expect(screen.getByLabelText(`${userActionsStats.total} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); - }); - - it('should show comment filter as active', async () => { + it('should call user action hooks correctly when filtering for comments', async () => { appMockRender.render(<CaseViewActivity {...caseProps} />); const lastPageForComment = Math.ceil( userActionsStats.totalComments / userActivityQueryParams.perPage ); - expect(await screen.findByTestId('user-actions-activity-bar')); - userEvent.click(screen.getByTestId('user-actions-filter-activity-button-comments')); + userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-comments')); expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( @@ -381,28 +368,6 @@ describe('Case View Page activity tab', () => { ); }); - it('should call user action hooks correctly when filtering for comments', async () => { - appMockRender.render(<CaseViewActivity {...caseProps} />); - - expect(await screen.findByTestId('user-actions-activity-bar')); - userEvent.click(screen.getByTestId('user-actions-filter-activity-button-comments')); - - expect(screen.getByLabelText(`${userActionsStats.totalComments} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} available filters`)); - }); - - it('should show history as active filter correctly', async () => { - appMockRender.render(<CaseViewActivity {...caseProps} />); - - expect(await screen.findByTestId('user-actions-activity-bar')); - userEvent.click(screen.getByTestId('user-actions-filter-activity-button-history')); - - expect(screen.getByLabelText(`${userActionsStats.totalOtherActions} active filters`)); - expect(screen.getByLabelText(`${userActionsStats.totalComments} available filters`)); - expect(screen.getByLabelText(`${userActionsStats.total} available filters`)); - }); - it('should call user action hooks correctly when filtering for history', async () => { appMockRender.render(<CaseViewActivity {...caseProps} />); @@ -410,8 +375,7 @@ describe('Case View Page activity tab', () => { userActionsStats.totalOtherActions / userActivityQueryParams.perPage ); - expect(await screen.findByTestId('user-actions-activity-bar')); - userEvent.click(screen.getByTestId('user-actions-filter-activity-button-history')); + userEvent.click(await screen.findByTestId('user-actions-filter-activity-button-history')); expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( @@ -425,29 +389,6 @@ describe('Case View Page activity tab', () => { true ); }); - - it('should render by desc sort order', async () => { - appMockRender.render(<CaseViewActivity {...caseProps} />); - - const sortSelect = await screen.findByTestId('user-actions-sort-select'); - - fireEvent.change(sortSelect, { target: { value: 'desc' } }); - - await waitFor(() => { - expect(useGetCaseUserActionsStatsMock).toHaveBeenCalledWith(caseData.id); - expect(useFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { type: 'all', sortOrder: 'desc', page: 3, perPage: 10 }, - true - ); - - expect(useInfiniteFindCaseUserActionsMock).toHaveBeenCalledWith( - caseData.id, - { type: 'all', sortOrder: 'desc', page: 1, perPage: 10 }, - true - ); - }); - }); }); describe('Case users', () => { diff --git a/x-pack/plugins/cases/public/components/user_actions_activity_bar/filter_activity.tsx b/x-pack/plugins/cases/public/components/user_actions_activity_bar/filter_activity.tsx index ba95479ae6107..f3730a24cbad8 100644 --- a/x-pack/plugins/cases/public/components/user_actions_activity_bar/filter_activity.tsx +++ b/x-pack/plugins/cases/public/components/user_actions_activity_bar/filter_activity.tsx @@ -27,6 +27,7 @@ const MyEuiFilterGroup = styled(EuiFilterGroup)` `; const FilterAllButton = styled(EuiFilterButton)` + &, & .euiFilterButton__textShift { min-width: 28px; } diff --git a/x-pack/plugins/cases/server/client/attachments/add.test.ts b/x-pack/plugins/cases/server/client/attachments/add.test.ts index b78ec1219088b..ff610cba6cd2b 100644 --- a/x-pack/plugins/cases/server/client/attachments/add.test.ts +++ b/x-pack/plugins/cases/server/client/attachments/add.test.ts @@ -5,13 +5,19 @@ * 2.0. */ +import { MAX_COMMENT_LENGTH, MAX_USER_ACTIONS_PER_CASE } from '../../../common/constants'; import { comment } from '../../mocks'; +import { createUserActionServiceMock } from '../../services/mocks'; import { createCasesClientMockArgs } from '../mocks'; -import { MAX_COMMENT_LENGTH } from '../../../common/constants'; import { addComment } from './add'; describe('addComment', () => { + const caseId = 'test-case'; + const clientArgs = createCasesClientMockArgs(); + const userActionService = createUserActionServiceMock(); + + clientArgs.services.userActionService = userActionService; beforeEach(() => { jest.clearAllMocks(); @@ -20,7 +26,7 @@ describe('addComment', () => { it('throws with excess fields', async () => { await expect( // @ts-expect-error: excess attribute - addComment({ comment: { ...comment, foo: 'bar' }, caseId: 'test-case' }, clientArgs) + addComment({ comment: { ...comment, foo: 'bar' }, caseId }, clientArgs) ).rejects.toThrow('invalid keys "foo"'); }); @@ -28,7 +34,7 @@ describe('addComment', () => { const longComment = 'x'.repeat(MAX_COMMENT_LENGTH + 1); await expect( - addComment({ comment: { ...comment, comment: longComment }, caseId: 'test-case' }, clientArgs) + addComment({ comment: { ...comment, comment: longComment }, caseId }, clientArgs) ).rejects.toThrow( `Failed while adding a comment to case id: test-case error: Error: The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH}.` ); @@ -36,7 +42,7 @@ describe('addComment', () => { it('should throw an error if the comment is an empty string', async () => { await expect( - addComment({ comment: { ...comment, comment: '' }, caseId: 'test-case' }, clientArgs) + addComment({ comment: { ...comment, comment: '' }, caseId }, clientArgs) ).rejects.toThrow( 'Failed while adding a comment to case id: test-case error: Error: The comment field cannot be an empty string.' ); @@ -44,9 +50,19 @@ describe('addComment', () => { it('should throw an error if the description is a string with empty characters', async () => { await expect( - addComment({ comment: { ...comment, comment: ' ' }, caseId: 'test-case' }, clientArgs) + addComment({ comment: { ...comment, comment: ' ' }, caseId }, clientArgs) ).rejects.toThrow( 'Failed while adding a comment to case id: test-case error: Error: The comment field cannot be an empty string.' ); }); + + it(`throws error when the case user actions become > ${MAX_USER_ACTIONS_PER_CASE}`, async () => { + userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [caseId]: MAX_USER_ACTIONS_PER_CASE, + }); + + await expect(addComment({ comment, caseId }, clientArgs)).rejects.toThrow( + `The case with id ${caseId} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + }); }); diff --git a/x-pack/plugins/cases/server/client/attachments/add.ts b/x-pack/plugins/cases/server/client/attachments/add.ts index 987b87bdcf52c..5eba3d4b81f02 100644 --- a/x-pack/plugins/cases/server/client/attachments/add.ts +++ b/x-pack/plugins/cases/server/client/attachments/add.ts @@ -7,6 +7,7 @@ import { SavedObjectsUtils } from '@kbn/core/server'; +import { validateMaxUserActions } from '../../../common/utils'; import { AttachmentRequestRt } from '../../../common/types/api'; import type { Case } from '../../../common/types/domain'; import { decodeWithExcessOrThrow } from '../../../common/api'; @@ -31,11 +32,13 @@ export const addComment = async (addArgs: AddArgs, clientArgs: CasesClientArgs): authorization, persistableStateAttachmentTypeRegistry, externalReferenceAttachmentTypeRegistry, + services: { userActionService }, } = clientArgs; try { const query = decodeWithExcessOrThrow(AttachmentRequestRt)(comment); + await validateMaxUserActions({ caseId, userActionService, userActionsToAdd: 1 }); decodeCommentRequest(comment, externalReferenceAttachmentTypeRegistry); const savedObjectID = SavedObjectsUtils.generateId(); diff --git a/x-pack/plugins/cases/server/client/attachments/bulk_create.test.ts b/x-pack/plugins/cases/server/client/attachments/bulk_create.test.ts index 5d72eb17277b0..bd65dcd3896f1 100644 --- a/x-pack/plugins/cases/server/client/attachments/bulk_create.test.ts +++ b/x-pack/plugins/cases/server/client/attachments/bulk_create.test.ts @@ -7,11 +7,21 @@ import { comment, actionComment } from '../../mocks'; import { createCasesClientMockArgs } from '../mocks'; -import { MAX_COMMENT_LENGTH, MAX_BULK_CREATE_ATTACHMENTS } from '../../../common/constants'; +import { + MAX_COMMENT_LENGTH, + MAX_BULK_CREATE_ATTACHMENTS, + MAX_USER_ACTIONS_PER_CASE, +} from '../../../common/constants'; import { bulkCreate } from './bulk_create'; +import { createUserActionServiceMock } from '../../services/mocks'; describe('bulkCreate', () => { + const caseId = 'test-case'; + const clientArgs = createCasesClientMockArgs(); + const userActionService = createUserActionServiceMock(); + + clientArgs.services.userActionService = userActionService; beforeEach(() => { jest.clearAllMocks(); @@ -20,18 +30,30 @@ describe('bulkCreate', () => { it('throws with excess fields', async () => { await expect( // @ts-expect-error: excess attribute - bulkCreate({ attachments: [{ ...comment, foo: 'bar' }], caseId: 'test-case' }, clientArgs) + bulkCreate({ attachments: [{ ...comment, foo: 'bar' }], caseId }, clientArgs) ).rejects.toThrow('invalid keys "foo"'); }); it(`throws error when attachments are more than ${MAX_BULK_CREATE_ATTACHMENTS}`, async () => { const attachments = Array(MAX_BULK_CREATE_ATTACHMENTS + 1).fill(comment); - await expect(bulkCreate({ attachments, caseId: 'test-case' }, clientArgs)).rejects.toThrow( + await expect(bulkCreate({ attachments, caseId }, clientArgs)).rejects.toThrow( `The length of the field attachments is too long. Array must be of length <= ${MAX_BULK_CREATE_ATTACHMENTS}.` ); }); + it(`throws error when the case user actions become > ${MAX_USER_ACTIONS_PER_CASE}`, async () => { + userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [caseId]: MAX_USER_ACTIONS_PER_CASE - 1, + }); + + await expect( + bulkCreate({ attachments: [comment, comment], caseId }, clientArgs) + ).rejects.toThrow( + `The case with id ${caseId} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + }); + describe('comments', () => { it('should throw an error if the comment length is too long', async () => { const longComment = Array(MAX_COMMENT_LENGTH + 1) @@ -39,10 +61,7 @@ describe('bulkCreate', () => { .toString(); await expect( - bulkCreate( - { attachments: [{ ...comment, comment: longComment }], caseId: 'test-case' }, - clientArgs - ) + bulkCreate({ attachments: [{ ...comment, comment: longComment }], caseId }, clientArgs) ).rejects.toThrow( `Failed while bulk creating attachment to case id: test-case error: Error: The length of the comment is too long. The maximum length is ${MAX_COMMENT_LENGTH}.` ); @@ -50,7 +69,7 @@ describe('bulkCreate', () => { it('should throw an error if the comment is an empty string', async () => { await expect( - bulkCreate({ attachments: [{ ...comment, comment: '' }], caseId: 'test-case' }, clientArgs) + bulkCreate({ attachments: [{ ...comment, comment: '' }], caseId }, clientArgs) ).rejects.toThrow( 'Failed while bulk creating attachment to case id: test-case error: Error: The comment field cannot be an empty string.' ); @@ -58,10 +77,7 @@ describe('bulkCreate', () => { it('should throw an error if the description is a string with empty characters', async () => { await expect( - bulkCreate( - { attachments: [{ ...comment, comment: ' ' }], caseId: 'test-case' }, - clientArgs - ) + bulkCreate({ attachments: [{ ...comment, comment: ' ' }], caseId }, clientArgs) ).rejects.toThrow( 'Failed while bulk creating attachment to case id: test-case error: Error: The comment field cannot be an empty string.' ); @@ -76,7 +92,7 @@ describe('bulkCreate', () => { await expect( bulkCreate( - { attachments: [{ ...actionComment, comment: longComment }], caseId: 'test-case' }, + { attachments: [{ ...actionComment, comment: longComment }], caseId }, clientArgs ) ).rejects.toThrow( @@ -86,10 +102,7 @@ describe('bulkCreate', () => { it('should throw an error if the comment is an empty string', async () => { await expect( - bulkCreate( - { attachments: [{ ...actionComment, comment: '' }], caseId: 'test-case' }, - clientArgs - ) + bulkCreate({ attachments: [{ ...actionComment, comment: '' }], caseId }, clientArgs) ).rejects.toThrow( 'Failed while bulk creating attachment to case id: test-case error: Error: The comment field cannot be an empty string.' ); @@ -97,10 +110,7 @@ describe('bulkCreate', () => { it('should throw an error if the description is a string with empty characters', async () => { await expect( - bulkCreate( - { attachments: [{ ...actionComment, comment: ' ' }], caseId: 'test-case' }, - clientArgs - ) + bulkCreate({ attachments: [{ ...actionComment, comment: ' ' }], caseId }, clientArgs) ).rejects.toThrow( 'Failed while bulk creating attachment to case id: test-case error: Error: The comment field cannot be an empty string.' ); diff --git a/x-pack/plugins/cases/server/client/attachments/bulk_create.ts b/x-pack/plugins/cases/server/client/attachments/bulk_create.ts index 693336ffd31f7..8e265ab9c88d5 100644 --- a/x-pack/plugins/cases/server/client/attachments/bulk_create.ts +++ b/x-pack/plugins/cases/server/client/attachments/bulk_create.ts @@ -7,6 +7,7 @@ import { SavedObjectsUtils } from '@kbn/core/server'; +import { validateMaxUserActions } from '../../../common/utils'; import type { AttachmentRequest } from '../../../common/types/api'; import { BulkCreateAttachmentsRequestRt } from '../../../common/types/api'; import type { Case } from '../../../common/types/domain'; @@ -33,10 +34,16 @@ export const bulkCreate = async ( authorization, externalReferenceAttachmentTypeRegistry, persistableStateAttachmentTypeRegistry, + services: { userActionService }, } = clientArgs; try { decodeWithExcessOrThrow(BulkCreateAttachmentsRequestRt)(attachments); + await validateMaxUserActions({ + caseId, + userActionService, + userActionsToAdd: attachments.length, + }); attachments.forEach((attachment) => { decodeCommentRequest(attachment, externalReferenceAttachmentTypeRegistry); diff --git a/x-pack/plugins/cases/server/client/cases/update.test.ts b/x-pack/plugins/cases/server/client/cases/update.test.ts index 5a6d81f020928..039f4e8582804 100644 --- a/x-pack/plugins/cases/server/client/cases/update.test.ts +++ b/x-pack/plugins/cases/server/client/cases/update.test.ts @@ -12,6 +12,7 @@ import { MAX_LENGTH_PER_TAG, MAX_TITLE_LENGTH, MAX_CASES_TO_UPDATE, + MAX_USER_ACTIONS_PER_CASE, } from '../../../common/constants'; import { mockCases } from '../../mocks'; import { createCasesClientMockArgs } from '../mocks'; @@ -737,5 +738,116 @@ describe('update', () => { 'Error: The length of the field cases is too short. Array must be of length >= 1.' ); }); + + describe('Validate max user actions per page', () => { + const casesClient = createCasesClientMockArgs(); + + beforeEach(() => { + jest.clearAllMocks(); + casesClient.services.caseService.getCases.mockResolvedValue({ + saved_objects: [{ ...mockCases[0] }, { ...mockCases[1] }], + }); + casesClient.services.caseService.getAllCaseComments.mockResolvedValue({ + saved_objects: [], + total: 0, + per_page: 10, + page: 1, + }); + }); + + it('passes validation if max user actions per case is not reached', async () => { + casesClient.services.userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [mockCases[0].id]: MAX_USER_ACTIONS_PER_CASE - 1, + }); + + // @ts-ignore: only the array length matters here + casesClient.services.userActionService.creator.buildUserActions.mockReturnValue({ + [mockCases[0].id]: [1], + }); + + casesClient.services.caseService.patchCases.mockResolvedValue({ + saved_objects: [{ ...mockCases[0] }], + }); + + await expect( + update( + { + cases: [ + { + id: mockCases[0].id, + version: mockCases[0].version ?? '', + title: 'This is a test case!!', + }, + ], + }, + casesClient + ) + ).resolves.not.toThrow(); + }); + + it(`throws an error when the user actions to be created will reach ${MAX_USER_ACTIONS_PER_CASE}`, async () => { + casesClient.services.userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [mockCases[0].id]: MAX_USER_ACTIONS_PER_CASE, + }); + + // @ts-ignore: only the array length matters here + casesClient.services.userActionService.creator.buildUserActions.mockReturnValue({ + [mockCases[0].id]: [1, 2, 3], + }); + + await expect( + update( + { + cases: [ + { + id: mockCases[0].id, + version: mockCases[0].version ?? '', + title: 'This is a test case!!', + }, + ], + }, + casesClient + ) + ).rejects.toThrow( + `Error: The case with case id ${mockCases[0].id} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + }); + + it('throws an error when trying to update multiple cases and one of them is expected to fail', async () => { + casesClient.services.userActionService.getMultipleCasesUserActionsTotal.mockResolvedValue({ + [mockCases[0].id]: MAX_USER_ACTIONS_PER_CASE, + [mockCases[1].id]: 0, + }); + + // @ts-ignore: only the array length matters here + casesClient.services.userActionService.creator.buildUserActions.mockReturnValue({ + [mockCases[0].id]: [1, 2, 3], + [mockCases[1].id]: [1], + }); + + await expect( + update( + { + cases: [ + { + id: mockCases[0].id, + version: mockCases[0].version ?? '', + title: 'This is supposed to fail', + }, + + { + id: mockCases[1].id, + version: mockCases[1].version ?? '', + title: 'This is supposed to pass', + }, + ], + }, + casesClient + ) + ).rejects.toThrow( + `Error: The case with case id ${mockCases[0].id} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + }); + }); }); }); diff --git a/x-pack/plugins/cases/server/client/cases/update.ts b/x-pack/plugins/cases/server/client/cases/update.ts index c7b2e124dbf76..1844b12b3ab07 100644 --- a/x-pack/plugins/cases/server/client/cases/update.ts +++ b/x-pack/plugins/cases/server/client/cases/update.ts @@ -17,28 +17,29 @@ import type { import { nodeBuilder } from '@kbn/es-query'; +import type { AlertService, CasesService, CaseUserActionService } from '../../services'; +import type { UpdateAlertStatusRequest } from '../alerts/types'; +import type { CasesClientArgs } from '..'; +import type { OwnerEntity } from '../../authorization'; +import type { PatchCasesArgs } from '../../services/cases/types'; +import type { UserActionEvent, UserActionsDict } from '../../services/user_actions/types'; + import type { CasePatchRequest, CasesPatchRequest } from '../../../common/types/api'; import { areTotalAssigneesInvalid } from '../../../common/utils/validators'; -import { decodeWithExcessOrThrow } from '../../../common/api'; import { CASE_COMMENT_SAVED_OBJECT, CASE_SAVED_OBJECT, MAX_ASSIGNEES_PER_CASE, + MAX_USER_ACTIONS_PER_CASE, } from '../../../common/constants'; - -import { arraysDifference, getCaseToUpdate } from '../utils'; - -import type { AlertService, CasesService } from '../../services'; +import { Operations } from '../../authorization'; import { createCaseError } from '../../common/error'; import { createAlertUpdateStatusRequest, flattenCaseSavedObject, isCommentRequestTypeAlert, } from '../../common/utils'; -import type { UpdateAlertStatusRequest } from '../alerts/types'; -import type { CasesClientArgs } from '..'; -import type { OwnerEntity } from '../../authorization'; -import { Operations } from '../../authorization'; +import { arraysDifference, getCaseToUpdate } from '../utils'; import { dedupAssignees, getClosedInfoForUpdate, getDurationForUpdate } from './utils'; import { LICENSING_CASE_ASSIGNMENT_FEATURE } from '../../common/constants'; import type { LicensingService } from '../../services/licensing'; @@ -53,6 +54,7 @@ import type { AttachmentAttributes, } from '../../../common/types/domain'; import { CasesPatchRequestRt } from '../../../common/types/api'; +import { decodeWithExcessOrThrow } from '../../../common/api'; import { CasesRt, CaseStatuses, AttachmentType } from '../../../common/types/domain'; /** @@ -67,6 +69,36 @@ function throwIfUpdateOwner(requests: UpdateRequestWithOriginalCase[]) { } } +/** + * Throws an error if any of the requests attempt to create a number of user actions that would put + * it's case over the limit. + */ +async function throwIfMaxUserActionsReached({ + userActionsDict, + userActionService, +}: { + userActionsDict: UserActionsDict; + userActionService: CaseUserActionService; +}) { + if (userActionsDict == null) { + return; + } + + const currentTotals = await userActionService.getMultipleCasesUserActionsTotal({ + caseIds: Object.keys(userActionsDict), + }); + + Object.keys(currentTotals).forEach((caseId) => { + const totalToAdd = userActionsDict?.[caseId]?.length ?? 0; + + if (currentTotals[caseId] + totalToAdd > MAX_USER_ACTIONS_PER_CASE) { + throw Boom.badRequest( + `The case with case id ${caseId} has reached the limit of ${MAX_USER_ACTIONS_PER_CASE} user actions.` + ); + } + }); +} + /** * Throws an error if any of the requests attempt to update the assignees of the case * without the appropriate license @@ -364,9 +396,16 @@ export const update = async ( throwIfUpdateAssigneesWithoutValidLicense(casesToUpdate, hasPlatinumLicense); throwIfTotalAssigneesAreInvalid(casesToUpdate); + const patchCasesPayload = createPatchCasesPayload({ user, casesToUpdate }); + const userActionsDict = userActionService.creator.buildUserActions({ + updatedCases: patchCasesPayload, + user, + }); + + await throwIfMaxUserActionsReached({ userActionsDict, userActionService }); notifyPlatinumUsage(licensingService, casesToUpdate); - const updatedCases = await patchCases({ caseService, user, casesToUpdate }); + const updatedCases = await patchCases({ caseService, patchCasesPayload }); // If a status update occurred and the case is synced then we need to update all alerts' status // attached to the case to the new status. @@ -413,10 +452,15 @@ export const update = async ( return flattenCases; }, [] as Case[]); + const builtUserActions = + userActionsDict != null + ? Object.keys(userActionsDict).reduce<UserActionEvent[]>((acc, key) => { + return [...acc, ...userActionsDict[key]]; + }, []) + : []; + await userActionService.creator.bulkCreateUpdateCase({ - originalCases: myCases.saved_objects, - updatedCases: updatedCases.saved_objects, - user, + builtUserActions, }); const casesAndAssigneesToNotifyForAssignment = getCasesAndAssigneesToNotifyForAssignment( @@ -442,18 +486,16 @@ export const update = async ( } }; -const patchCases = async ({ - caseService, +const createPatchCasesPayload = ({ casesToUpdate, user, }: { - caseService: CasesService; casesToUpdate: UpdateRequestWithOriginalCase[]; user: User; -}) => { +}): PatchCasesArgs => { const updatedDt = new Date().toISOString(); - const updatedCases = await caseService.patchCases({ + return { cases: casesToUpdate.map(({ updateReq, originalCase }) => { // intentionally removing owner from the case so that we don't accidentally allow it to be updated const { id: caseId, version, owner, assignees, ...updateCaseAttributes } = updateReq; @@ -483,9 +525,17 @@ const patchCases = async ({ }; }), refresh: false, - }); + }; +}; - return updatedCases; +const patchCases = async ({ + caseService, + patchCasesPayload, +}: { + caseService: CasesService; + patchCasesPayload: PatchCasesArgs; +}) => { + return caseService.patchCases(patchCasesPayload); }; const getCasesAndAssigneesToNotifyForAssignment = ( diff --git a/x-pack/plugins/cases/server/services/mocks.ts b/x-pack/plugins/cases/server/services/mocks.ts index b43a3c226b1e4..7a9507be8b080 100644 --- a/x-pack/plugins/cases/server/services/mocks.ts +++ b/x-pack/plugins/cases/server/services/mocks.ts @@ -97,6 +97,7 @@ const createUserActionPersisterServiceMock = (): CaseUserActionPersisterServiceM const service: PublicMethodsOf<UserActionPersister> = { bulkAuditLogCaseDeletion: jest.fn(), bulkCreateUpdateCase: jest.fn(), + buildUserActions: jest.fn(), bulkCreateAttachmentDeletion: jest.fn(), bulkCreateAttachmentCreation: jest.fn(), createUserAction: jest.fn(), @@ -126,6 +127,7 @@ export const createUserActionServiceMock = (): CaseUserActionServiceMock => { getAll: jest.fn(), getUniqueConnectors: jest.fn(), getUserActionIdsForCases: jest.fn(), + getMultipleCasesUserActionsTotal: jest.fn(), getCaseUserActionStats: jest.fn(), getUsers: jest.fn(), }; diff --git a/x-pack/plugins/cases/server/services/user_actions/index.test.ts b/x-pack/plugins/cases/server/services/user_actions/index.test.ts index b59172b6999b8..b09b8aba8d114 100644 --- a/x-pack/plugins/cases/server/services/user_actions/index.test.ts +++ b/x-pack/plugins/cases/server/services/user_actions/index.test.ts @@ -12,27 +12,27 @@ import type { SavedObject, SavedObjectsBulkCreateObject, SavedObjectsFindResponse, - SavedObjectsUpdateResponse, } from '@kbn/core/server'; import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks'; -import { - CaseSeverity, - CaseStatuses, - UserActionActions, - UserActionTypes, -} from '../../../common/types/domain'; -import { SECURITY_SOLUTION_OWNER } from '../../../common/constants'; +import type { CaseUserActionWithoutReferenceIds } from '../../../common/types/domain'; +import type { UserActionEvent } from './types'; -import { createCaseSavedObjectResponse, createSOFindResponse } from '../test_utils'; +import { SECURITY_SOLUTION_OWNER } from '../../../common/constants'; +import { createSOFindResponse } from '../test_utils'; import { casePayload, externalService, - originalCases, - updatedCases, attachments, - updatedAssigneesCases, - originalCasesWithAssignee, - updatedTagsCases, + patchRemoveAssigneesCasesRequest, + patchCasesRequest, + patchAssigneesCasesRequest, + patchAddRemoveAssigneesCasesRequest, + patchTagsCasesRequest, + getBuiltUserActions, + getAssigneesAddedUserActions, + getAssigneesRemovedUserActions, + getAssigneesAddedRemovedUserActions, + getTagsAddedRemovedUserActions, } from './mocks'; import { CaseUserActionService } from '.'; import { createPersistableStateAttachmentTypeRegistryMock } from '../../attachment_framework/mocks'; @@ -44,9 +44,11 @@ import { pushConnectorUserAction, } from './test_utils'; import { comment } from '../../mocks'; -import type { - CaseUserActionWithoutReferenceIds, - CaseAttributes, +import { + UserActionActions, + UserActionTypes, + CaseSeverity, + CaseStatuses, } from '../../../common/types/domain'; describe('CaseUserActionService', () => { @@ -506,13 +508,73 @@ describe('CaseUserActionService', () => { }); }); + describe('buildUserActions', () => { + it('creates the correct user actions when bulk updating cases', async () => { + expect( + await service.creator.buildUserActions({ + updatedCases: patchCasesRequest, + user: commonArgs.user, + }) + ).toEqual(getBuiltUserActions({ isMock: false })); + }); + + it('creates the correct user actions when an assignee is added', async () => { + expect( + await service.creator.buildUserActions({ + updatedCases: patchAssigneesCasesRequest, + user: commonArgs.user, + }) + ).toEqual(getAssigneesAddedUserActions({ isMock: false })); + }); + + it('creates the correct user actions when an assignee is removed', async () => { + expect( + await service.creator.buildUserActions({ + updatedCases: patchRemoveAssigneesCasesRequest, + user: commonArgs.user, + }) + ).toEqual(getAssigneesRemovedUserActions({ isMock: false })); + }); + + it('creates the correct user actions when assignees are added and removed', async () => { + expect( + await service.creator.buildUserActions({ + updatedCases: patchAddRemoveAssigneesCasesRequest, + user: commonArgs.user, + }) + ).toEqual( + getAssigneesAddedRemovedUserActions({ + isMock: false, + }) + ); + }); + + it('creates the correct user actions when tags are added and removed', async () => { + expect( + await service.creator.buildUserActions({ + updatedCases: patchTagsCasesRequest, + user: commonArgs.user, + }) + ).toEqual( + getTagsAddedRemovedUserActions({ + isMock: false, + }) + ); + }); + }); + describe('bulkCreateUpdateCase', () => { + const mockBuiltUserActions = getBuiltUserActions({ isMock: true }); + const builtUserActions = Object.keys(mockBuiltUserActions).reduce<UserActionEvent[]>( + (acc, key) => { + return [...acc, ...mockBuiltUserActions[key]]; + }, + [] + ); + it('creates the correct user actions when bulk updating cases', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases, - user: commonArgs.user, + builtUserActions, }); expect(unsecuredSavedObjectsClient.bulkCreate).toHaveBeenCalledWith( @@ -582,6 +644,22 @@ describe('CaseUserActionService', () => { ], type: 'cases-user-actions', }, + { + attributes: { + action: UserActionActions.update, + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + type: 'category', + owner: 'securitySolution', + payload: { category: 'pizza toppings' }, + }, + references: [{ id: '1', name: 'associated-cases', type: 'cases' }], + type: 'cases-user-actions', + }, { attributes: { action: UserActionActions.update, @@ -677,13 +755,10 @@ describe('CaseUserActionService', () => { it('logs the correct user actions when bulk updating cases', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases, - user: commonArgs.user, + builtUserActions, }); - expect(mockAuditLogger.log).toBeCalledTimes(8); + expect(mockAuditLogger.log).toBeCalledTimes(9); expect(mockAuditLogger.log.mock.calls).toMatchInlineSnapshot(` Array [ Array [ @@ -704,7 +779,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User updated the title for case id: 1 - user action id: 0", + "message": undefined, }, ], Array [ @@ -725,7 +800,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User updated the status for case id: 1 - user action id: 1", + "message": undefined, }, ], Array [ @@ -746,7 +821,28 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User changed the case connector to id: 456 for case id: 1 - user action id: 2", + "message": undefined, + }, + ], + Array [ + Object { + "event": Object { + "action": "case_user_action_update_case_category", + "category": Array [ + "database", + ], + "outcome": "success", + "type": Array [ + "change", + ], + }, + "kibana": Object { + "saved_object": Object { + "id": "1", + "type": "cases", + }, + }, + "message": undefined, }, ], Array [ @@ -767,7 +863,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User updated the description for case id: 2 - user action id: 3", + "message": undefined, }, ], Array [ @@ -788,7 +884,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User added tags to case id: 2 - user action id: 4", + "message": undefined, }, ], Array [ @@ -809,7 +905,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User deleted tags in case id: 2 - user action id: 5", + "message": undefined, }, ], Array [ @@ -830,7 +926,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User updated the settings for case id: 2 - user action id: 6", + "message": undefined, }, ], Array [ @@ -851,19 +947,23 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User updated the severity for case id: 2 - user action id: 7", + "message": undefined, }, ], ] `); }); + const mockAssigneesAddedUserActions = getAssigneesAddedUserActions({ isMock: true }); + const assigneesAddedUserActions = Object.keys(mockAssigneesAddedUserActions).reduce< + UserActionEvent[] + >((acc, key) => { + return [...acc, ...mockAssigneesAddedUserActions[key]]; + }, []); + it('creates the correct user actions when an assignee is added', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases: updatedAssigneesCases, - user: commonArgs.user, + builtUserActions: assigneesAddedUserActions, }); expect(unsecuredSavedObjectsClient.bulkCreate.mock.calls[0]).toMatchInlineSnapshot(` @@ -907,10 +1007,7 @@ describe('CaseUserActionService', () => { it('logs the correct user actions when an assignee is added', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases: updatedAssigneesCases, - user: commonArgs.user, + builtUserActions: assigneesAddedUserActions, }); expect(mockAuditLogger.log).toBeCalledTimes(1); @@ -934,29 +1031,23 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User assigned uids: [1] to case id: 1 - user action id: 0", + "message": undefined, }, ], ] `); }); - it('creates the correct user actions when an assignee is removed', async () => { - const casesWithAssigneeRemoved: Array<SavedObjectsUpdateResponse<CaseAttributes>> = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - assignees: [], - }, - }, - ]; + const mockAssigneesRemovedUserActions = getAssigneesRemovedUserActions({ isMock: true }); + const assigneesRemovedUserActions = Object.keys(mockAssigneesRemovedUserActions).reduce< + UserActionEvent[] + >((acc, key) => { + return [...acc, ...mockAssigneesRemovedUserActions[key]]; + }, []); + it('creates the correct user actions when an assignee is removed', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases: originalCasesWithAssignee, - updatedCases: casesWithAssigneeRemoved, - user: commonArgs.user, + builtUserActions: assigneesRemovedUserActions, }); expect(unsecuredSavedObjectsClient.bulkCreate.mock.calls[0]).toMatchInlineSnapshot(` @@ -999,21 +1090,8 @@ describe('CaseUserActionService', () => { }); it('logs the correct user actions when an assignee is removed', async () => { - const casesWithAssigneeRemoved: Array<SavedObjectsUpdateResponse<CaseAttributes>> = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - assignees: [], - }, - }, - ]; - await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases: originalCasesWithAssignee, - updatedCases: casesWithAssigneeRemoved, - user: commonArgs.user, + builtUserActions: assigneesRemovedUserActions, }); expect(mockAuditLogger.log).toBeCalledTimes(1); @@ -1037,29 +1115,25 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User unassigned uids: [1] from case id: 1 - user action id: 0", + "message": undefined, }, ], ] `); }); - it('creates the correct user actions when assignees are added and removed', async () => { - const caseAssignees: Array<SavedObjectsUpdateResponse<CaseAttributes>> = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - assignees: [{ uid: '2' }], - }, - }, - ]; + const mockAssigneesAddedRemovedUserActions = getAssigneesAddedRemovedUserActions({ + isMock: true, + }); + const assigneesAddedRemovedUserActions = Object.keys( + mockAssigneesAddedRemovedUserActions + ).reduce<UserActionEvent[]>((acc, key) => { + return [...acc, ...mockAssigneesAddedRemovedUserActions[key]]; + }, []); + it('creates the correct user actions when assignees are added and removed', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases: originalCasesWithAssignee, - updatedCases: caseAssignees, - user: commonArgs.user, + builtUserActions: assigneesAddedRemovedUserActions, }); expect(unsecuredSavedObjectsClient.bulkCreate.mock.calls[0]).toMatchInlineSnapshot(` @@ -1130,21 +1204,8 @@ describe('CaseUserActionService', () => { }); it('logs the correct user actions when assignees are added and removed', async () => { - const caseAssignees: Array<SavedObjectsUpdateResponse<CaseAttributes>> = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - assignees: [{ uid: '2' }], - }, - }, - ]; - await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases: originalCasesWithAssignee, - updatedCases: caseAssignees, - user: commonArgs.user, + builtUserActions: assigneesAddedRemovedUserActions, }); expect(mockAuditLogger.log).toBeCalledTimes(2); @@ -1168,7 +1229,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User assigned uids: [2] to case id: 1 - user action id: 0", + "message": undefined, }, ], Array [ @@ -1189,19 +1250,25 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User unassigned uids: [1] from case id: 1 - user action id: 1", + "message": undefined, }, ], ] `); }); + const mockTagsAddedRemovedUserActions = getTagsAddedRemovedUserActions({ + isMock: true, + }); + const tagsAddedRemovedUserActions = Object.keys(mockTagsAddedRemovedUserActions).reduce< + UserActionEvent[] + >((acc, key) => { + return [...acc, ...mockTagsAddedRemovedUserActions[key]]; + }, []); + it('creates the correct user actions when tags are added and removed', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases: updatedTagsCases, - user: commonArgs.user, + builtUserActions: tagsAddedRemovedUserActions, }); expect(unsecuredSavedObjectsClient.bulkCreate.mock.calls[0]).toMatchInlineSnapshot(` @@ -1270,10 +1337,7 @@ describe('CaseUserActionService', () => { it('logs the correct user actions when tags are added and removed', async () => { await service.creator.bulkCreateUpdateCase({ - ...commonArgs, - originalCases, - updatedCases: updatedTagsCases, - user: commonArgs.user, + builtUserActions: tagsAddedRemovedUserActions, }); expect(mockAuditLogger.log).toBeCalledTimes(2); @@ -1297,7 +1361,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User added tags to case id: 1 - user action id: 0", + "message": undefined, }, ], Array [ @@ -1318,7 +1382,7 @@ describe('CaseUserActionService', () => { "type": "cases", }, }, - "message": "User deleted tags in case id: 1 - user action id: 1", + "message": undefined, }, ], ] diff --git a/x-pack/plugins/cases/server/services/user_actions/index.ts b/x-pack/plugins/cases/server/services/user_actions/index.ts index 51188a6ff489b..939fb843758d1 100644 --- a/x-pack/plugins/cases/server/services/user_actions/index.ts +++ b/x-pack/plugins/cases/server/services/user_actions/index.ts @@ -28,6 +28,7 @@ import type { ConnectorActivityAggsResult, ConnectorFieldsBeforePushAggsResult, GetUsersResponse, + MultipleCasesUserActionsTotalAggsResult, ParticipantsAggsResult, PushInfo, PushTimeFrameInfo, @@ -652,6 +653,55 @@ export class CaseUserActionService { }; } + public async getMultipleCasesUserActionsTotal({ + caseIds, + }: { + caseIds: string[]; + }): Promise<Record<string, number>> { + const response = await this.context.unsecuredSavedObjectsClient.find< + unknown, + MultipleCasesUserActionsTotalAggsResult + >({ + type: CASE_USER_ACTION_SAVED_OBJECT, + hasReference: caseIds.map((id) => ({ type: CASE_SAVED_OBJECT, id })), + hasReferenceOperator: 'OR', + page: 1, + perPage: 1, + sortField: defaultSortField, + aggs: CaseUserActionService.buildMultipleCasesUserActionsTotalAgg(caseIds.length), + }); + + const result: Record<string, number> = {}; + + response?.aggregations?.references.caseUserActions.buckets.forEach( + ({ key, doc_count: totalUserActions }: { key: string; doc_count: number }) => { + result[key] = totalUserActions; + } + ); + + return result; + } + + private static buildMultipleCasesUserActionsTotalAgg( + idsLength: number + ): Record<string, estypes.AggregationsAggregationContainer> { + return { + references: { + nested: { + path: `${CASE_USER_ACTION_SAVED_OBJECT}.references`, + }, + aggregations: { + caseUserActions: { + terms: { + field: `${CASE_USER_ACTION_SAVED_OBJECT}.references.id`, + size: idsLength, + }, + }, + }, + }, + }; + } + public async getCaseUserActionStats({ caseId }: { caseId: string }) { const response = await this.context.unsecuredSavedObjectsClient.find< unknown, diff --git a/x-pack/plugins/cases/server/services/user_actions/mocks.ts b/x-pack/plugins/cases/server/services/user_actions/mocks.ts index b3aecb676d296..41689cc785324 100644 --- a/x-pack/plugins/cases/server/services/user_actions/mocks.ts +++ b/x-pack/plugins/cases/server/services/user_actions/mocks.ts @@ -11,6 +11,7 @@ import type { CasePostRequest } from '../../../common/types/api'; import { createCaseSavedObjectResponse } from '../test_utils'; import { transformSavedObjectToExternalModel } from '../cases/transform'; import { alertComment, comment } from '../../mocks'; +import type { UserActionsDict } from './types'; import { CaseSeverity, CaseStatuses, ConnectorTypes } from '../../../common/types/domain'; export const casePayload: CasePostRequest = { @@ -53,57 +54,648 @@ export const originalCases = [ { ...createCaseSavedObjectResponse(), id: '2' }, ].map((so) => transformSavedObjectToExternalModel(so)); -export const updatedCases = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - type: CASE_SAVED_OBJECT, - attributes: { - title: 'updated title', - status: CaseStatuses.closed, - connector: casePayload.connector, - }, - references: [], - }, - { - ...createCaseSavedObjectResponse(), - id: '2', - type: CASE_SAVED_OBJECT, - attributes: { - description: 'updated desc', - tags: ['one', 'two'], - settings: { syncAlerts: false }, - severity: CaseSeverity.CRITICAL, - }, - references: [], - }, -]; +export const patchCasesRequest = { + cases: [ + { + ...createCaseSavedObjectResponse(), + caseId: '1', + type: CASE_SAVED_OBJECT, + updatedAttributes: { + title: 'updated title', + status: CaseStatuses.closed, + connector: casePayload.connector, + category: 'pizza toppings', + }, + originalCase: originalCases[0], + references: [], + }, + { + ...createCaseSavedObjectResponse(), + caseId: '2', + type: CASE_SAVED_OBJECT, + updatedAttributes: { + description: 'updated desc', + tags: ['one', 'two'], + settings: { syncAlerts: false }, + severity: CaseSeverity.CRITICAL, + }, + originalCase: originalCases[1], + references: [], + }, + ], +}; -export const originalCasesWithAssignee = [ +const originalCasesWithAssignee = [ { ...createCaseSavedObjectResponse({ overrides: { assignees: [{ uid: '1' }] } }), id: '1' }, ].map((so) => transformSavedObjectToExternalModel(so)); -export const updatedAssigneesCases = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - assignees: [{ uid: '1' }], +export const patchAssigneesCasesRequest = { + cases: [ + { + ...createCaseSavedObjectResponse(), + caseId: '1', + updatedAttributes: { + assignees: [{ uid: '1' }], + }, + originalCase: originalCases[0], }, - }, -]; + ], +}; -export const updatedTagsCases = [ - { - ...createCaseSavedObjectResponse(), - id: '1', - attributes: { - tags: ['a', 'b'], +export const patchRemoveAssigneesCasesRequest = { + cases: [ + { + ...createCaseSavedObjectResponse(), + caseId: '1', + updatedAttributes: { + assignees: [], + }, + originalCase: originalCasesWithAssignee[0], }, - }, -]; + ], +}; + +export const patchAddRemoveAssigneesCasesRequest = { + cases: [ + { + ...createCaseSavedObjectResponse(), + caseId: '1', + updatedAttributes: { + assignees: [{ uid: '2' }], + }, + originalCase: originalCasesWithAssignee[0], + }, + ], +}; + +export const patchTagsCasesRequest = { + cases: [ + { + ...createCaseSavedObjectResponse(), + caseId: '1', + updatedAttributes: { + tags: ['a', 'b'], + }, + originalCase: originalCases[0], + }, + ], +}; export const attachments = [ { id: '1', attachment: { ...comment }, owner: SECURITY_SOLUTION_OWNER }, { id: '2', attachment: { ...alertComment }, owner: SECURITY_SOLUTION_OWNER }, ]; + +export const getBuiltUserActions = ({ isMock }: { isMock: boolean }): UserActionsDict => ({ + '1': [ + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_title', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + title: 'updated title', + }, + type: 'title', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_status', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + status: 'closed', + }, + type: 'status', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_connector', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + connector: { + fields: { + category: 'Denial of Service', + destIp: true, + malwareHash: true, + malwareUrl: true, + priority: '2', + sourceIp: true, + subcategory: '45', + }, + name: 'ServiceNow SN', + type: '.servicenow-sir', + }, + }, + type: 'connector', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + { + id: '456', + name: 'connectorId', + type: 'action', + }, + ], + }, + }, + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_category', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + category: 'pizza toppings', + }, + type: 'category', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], + '2': [ + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_description', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '2', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + description: 'updated desc', + }, + type: 'description', + }, + references: [ + { + id: '2', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'add', + descriptiveAction: 'case_user_action_add_case_tags', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '2', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'add', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + tags: ['one', 'two'], + }, + type: 'tags', + }, + references: [ + { + id: '2', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'delete', + descriptiveAction: 'case_user_action_delete_case_tags', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '2', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'delete', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + tags: ['defacement'], + }, + type: 'tags', + }, + references: [ + { + id: '2', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_settings', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '2', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + settings: { + syncAlerts: false, + }, + }, + type: 'settings', + }, + references: [ + { + id: '2', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'update', + descriptiveAction: 'case_user_action_update_case_severity', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '2', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'update', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + severity: 'critical', + }, + type: 'severity', + }, + references: [ + { + id: '2', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], +}); + +export const getAssigneesAddedUserActions = ({ isMock }: { isMock: boolean }): UserActionsDict => ({ + '1': [ + { + eventDetails: { + action: 'add', + descriptiveAction: 'case_user_action_add_case_assignees', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'add', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + assignees: [ + { + uid: '1', + }, + ], + }, + type: 'assignees', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], +}); + +export const getAssigneesRemovedUserActions = ({ + isMock, +}: { + isMock: boolean; +}): UserActionsDict => ({ + '1': [ + { + eventDetails: { + action: 'delete', + descriptiveAction: 'case_user_action_delete_case_assignees', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'delete', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + assignees: [ + { + uid: '1', + }, + ], + }, + type: 'assignees', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], +}); + +export const getAssigneesAddedRemovedUserActions = ({ + isMock, +}: { + isMock: boolean; +}): UserActionsDict => ({ + '1': [ + { + eventDetails: { + action: 'add', + descriptiveAction: 'case_user_action_add_case_assignees', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'add', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + assignees: [ + { + uid: '2', + }, + ], + }, + type: 'assignees', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'delete', + descriptiveAction: 'case_user_action_delete_case_assignees', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'delete', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + assignees: [ + { + uid: '1', + }, + ], + }, + type: 'assignees', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], +}); + +export const getTagsAddedRemovedUserActions = ({ + isMock, +}: { + isMock: boolean; +}): UserActionsDict => ({ + '1': [ + { + eventDetails: { + action: 'add', + descriptiveAction: 'case_user_action_add_case_tags', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'add', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + tags: ['a', 'b'], + }, + type: 'tags', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + { + eventDetails: { + action: 'delete', + descriptiveAction: 'case_user_action_delete_case_tags', + getMessage: isMock ? jest.fn() : expect.any(Function), + savedObjectId: '1', + savedObjectType: 'cases', + }, + parameters: { + attributes: { + action: 'delete', + created_at: '2022-01-09T22:00:00.000Z', + created_by: { + email: 'elastic@elastic.co', + full_name: 'Elastic User', + username: 'elastic', + }, + owner: 'securitySolution', + payload: { + tags: ['defacement'], + }, + type: 'tags', + }, + references: [ + { + id: '1', + name: 'associated-cases', + type: 'cases', + }, + ], + }, + }, + ], +}); diff --git a/x-pack/plugins/cases/server/services/user_actions/operations/create.test.ts b/x-pack/plugins/cases/server/services/user_actions/operations/create.test.ts index 92f5a6b6c254b..e29bb63168ece 100644 --- a/x-pack/plugins/cases/server/services/user_actions/operations/create.test.ts +++ b/x-pack/plugins/cases/server/services/user_actions/operations/create.test.ts @@ -17,6 +17,18 @@ import { UserActionPersister } from './create'; import { createUserActionSO } from '../test_utils'; import type { BulkCreateAttachmentUserAction, CreateUserActionClient } from '../types'; import type { UserActionPersistedAttributes } from '../../../common/types/user_actions'; +import { + getAssigneesAddedRemovedUserActions, + getAssigneesAddedUserActions, + getAssigneesRemovedUserActions, + getBuiltUserActions, + getTagsAddedRemovedUserActions, + patchAddRemoveAssigneesCasesRequest, + patchAssigneesCasesRequest, + patchCasesRequest, + patchRemoveAssigneesCasesRequest, + patchTagsCasesRequest, +} from '../mocks'; import { AttachmentType } from '../../../../common/types/domain'; describe('UserActionPersister', () => { @@ -28,6 +40,11 @@ describe('UserActionPersister', () => { let persister: UserActionPersister; + beforeAll(() => { + jest.useFakeTimers(); + jest.setSystemTime(new Date('2022-01-09T22:00:00.000Z')); + }); + beforeEach(() => { jest.resetAllMocks(); persister = new UserActionPersister({ @@ -39,6 +56,10 @@ describe('UserActionPersister', () => { }); }); + afterAll(() => { + jest.useRealTimers(); + }); + const getRequest = () => ({ action: 'update' as const, @@ -62,6 +83,8 @@ describe('UserActionPersister', () => { user: { email: '', full_name: '', username: '' }, }); + const testUser = { full_name: 'Elastic User', username: 'elastic', email: 'elastic@elastic.co' }; + describe('Decoding requests', () => { describe('createUserAction', () => { beforeEach(() => { @@ -141,4 +164,59 @@ describe('UserActionPersister', () => { }); }); }); + + describe('buildUserActions', () => { + it('creates the correct user actions when bulk updating cases', async () => { + expect( + persister.buildUserActions({ + updatedCases: patchCasesRequest, + user: testUser, + }) + ).toEqual(getBuiltUserActions({ isMock: false })); + }); + + it('creates the correct user actions when an assignee is added', async () => { + expect( + persister.buildUserActions({ + updatedCases: patchAssigneesCasesRequest, + user: testUser, + }) + ).toEqual(getAssigneesAddedUserActions({ isMock: false })); + }); + + it('creates the correct user actions when an assignee is removed', async () => { + expect( + persister.buildUserActions({ + updatedCases: patchRemoveAssigneesCasesRequest, + user: testUser, + }) + ).toEqual(getAssigneesRemovedUserActions({ isMock: false })); + }); + + it('creates the correct user actions when assignees are added and removed', async () => { + expect( + persister.buildUserActions({ + updatedCases: patchAddRemoveAssigneesCasesRequest, + user: testUser, + }) + ).toEqual( + getAssigneesAddedRemovedUserActions({ + isMock: false, + }) + ); + }); + + it('creates the correct user actions when tags are added and removed', async () => { + expect( + persister.buildUserActions({ + updatedCases: patchTagsCasesRequest, + user: testUser, + }) + ).toEqual( + getTagsAddedRemovedUserActions({ + isMock: false, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/cases/server/services/user_actions/operations/create.ts b/x-pack/plugins/cases/server/services/user_actions/operations/create.ts index 5713197a653db..3b9c51e2df24b 100644 --- a/x-pack/plugins/cases/server/services/user_actions/operations/create.ts +++ b/x-pack/plugins/cases/server/services/user_actions/operations/create.ts @@ -22,6 +22,7 @@ import { isUserActionType } from '../../../../common/utils/user_actions'; import { decodeOrThrow } from '../../../../common/api'; import { BuilderFactory } from '../builder_factory'; import type { + BuildUserActionsDictParams, BuilderParameters, BulkCreateAttachmentUserAction, BulkCreateBulkUpdateCaseUserActions, @@ -34,6 +35,7 @@ import type { ServiceContext, TypedUserActionDiffedItems, UserActionEvent, + UserActionsDict, } from '../types'; import { isAssigneesArray, isStringArray } from '../type_guards'; import type { IndexRefresh } from '../../types'; @@ -55,30 +57,25 @@ export class UserActionPersister { this.auditLogger = new UserActionAuditLogger(this.context.auditLogger); } - public async bulkCreateUpdateCase({ - originalCases, - updatedCases, - user, - refresh, - }: BulkCreateBulkUpdateCaseUserActions): Promise<void> { - const builtUserActions = updatedCases.reduce<UserActionEvent[]>((acc, updatedCase) => { - const originalCase = originalCases.find(({ id }) => id === updatedCase.id); + public buildUserActions({ updatedCases, user }: BuildUserActionsDictParams): UserActionsDict { + return updatedCases.cases.reduce<UserActionsDict>((acc, updatedCase) => { + const originalCase = updatedCase.originalCase; if (originalCase == null) { return acc; } - const caseId = updatedCase.id; + const caseId = updatedCase.caseId; const owner = originalCase.attributes.owner; const userActions: UserActionEvent[] = []; - const updatedFields = Object.keys(updatedCase.attributes); + const updatedFields = Object.keys(updatedCase.updatedAttributes); updatedFields .filter((field) => UserActionPersister.userActionFieldsAllowed.has(field)) .forEach((field) => { const originalValue = get(originalCase, ['attributes', field]); - const newValue = get(updatedCase, ['attributes', field]); + const newValue = get(updatedCase, ['updatedAttributes', field]); userActions.push( ...this.getUserActionItemByDifference({ field, @@ -91,9 +88,15 @@ export class UserActionPersister { ); }); - return [...acc, ...userActions]; - }, []); + acc[caseId] = userActions; + return acc; + }, {}); + } + public async bulkCreateUpdateCase({ + builtUserActions, + refresh, + }: BulkCreateBulkUpdateCaseUserActions): Promise<void> { await this.bulkCreateAndLog({ userActions: builtUserActions, refresh, @@ -368,6 +371,7 @@ export class UserActionPersister { userAction: UserActionEvent; } & IndexRefresh): Promise<void> { const createdUserAction = await this.create({ ...userAction.parameters, refresh }); + this.auditLogger.log(userAction.eventDetails, createdUserAction.id); } @@ -381,7 +385,7 @@ export class UserActionPersister { const decodedAttributes = decodeOrThrow(UserActionPersistedAttributesRt)(attributes); - return await this.context.unsecuredSavedObjectsClient.create<T>( + const res = await this.context.unsecuredSavedObjectsClient.create<T>( CASE_USER_ACTION_SAVED_OBJECT, decodedAttributes as unknown as T, { @@ -389,6 +393,7 @@ export class UserActionPersister { refresh, } ); + return res; } catch (error) { this.context.log.error(`Error on POST a new case user action: ${error}`); throw error; diff --git a/x-pack/plugins/cases/server/services/user_actions/types.ts b/x-pack/plugins/cases/server/services/user_actions/types.ts index 68e60fe6ccc0a..657fc31d7275b 100644 --- a/x-pack/plugins/cases/server/services/user_actions/types.ts +++ b/x-pack/plugins/cases/server/services/user_actions/types.ts @@ -11,7 +11,6 @@ import type { Logger, ISavedObjectsSerializer, SavedObjectsRawDoc, - SavedObjectsUpdateResponse, } from '@kbn/core/server'; import type { KueryNode } from '@kbn/es-query'; import type { AuditLogger } from '@kbn/security-plugin/server'; @@ -22,7 +21,6 @@ import type { ConnectorUserAction, PushedUserAction, UserActionType, - CaseAttributes, CaseSettings, CaseSeverity, CaseStatuses, @@ -35,7 +33,7 @@ import type { UserActionSavedObjectTransformed, } from '../../common/types/user_actions'; import type { IndexRefresh } from '../types'; -import type { CaseSavedObjectTransformed } from '../../common/types/case'; +import type { PatchCasesArgs } from '../cases/types'; import type { AttachmentRequest, CasePostRequest, @@ -237,6 +235,17 @@ export interface UserActionsStatsAggsResult { }; } +export interface MultipleCasesUserActionsTotalAggsResult { + references: { + caseUserActions: { + buckets: Array<{ + key: string; + doc_count: number; + }>; + }; + }; +} + export interface ParticipantsAggsResult { participants: { buckets: Array<{ @@ -282,12 +291,17 @@ export type CreatePayloadFunction<Item, ActionType extends UserActionType> = ( items: Item[] ) => UserActionParameters<ActionType>['payload']; -export interface BulkCreateBulkUpdateCaseUserActions extends IndexRefresh { - originalCases: CaseSavedObjectTransformed[]; - updatedCases: Array<SavedObjectsUpdateResponse<CaseAttributes>>; +export interface BuildUserActionsDictParams { + updatedCases: PatchCasesArgs; user: User; } +export type UserActionsDict = Record<string, UserActionEvent[]>; + +export interface BulkCreateBulkUpdateCaseUserActions extends IndexRefresh { + builtUserActions: UserActionEvent[]; +} + export interface BulkCreateAttachmentUserAction extends Omit<CommonUserActionArgs, 'owner'>, IndexRefresh { diff --git a/x-pack/plugins/enterprise_search/common/types/pipelines.ts b/x-pack/plugins/enterprise_search/common/types/pipelines.ts index 8dc5869df4c10..b94249d33af2b 100644 --- a/x-pack/plugins/enterprise_search/common/types/pipelines.ts +++ b/x-pack/plugins/enterprise_search/common/types/pipelines.ts @@ -86,6 +86,7 @@ export interface CreateMlInferencePipelineParameters { export interface CreateMLInferencePipelineDefinition { field_mappings: FieldMapping[]; inference_config?: InferencePipelineInferenceConfig; + model_id: string; pipeline_definition: MlInferencePipeline; pipeline_name: string; } diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.test.ts index d62612c805f51..cb1f5a1b5adcd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.test.ts @@ -32,6 +32,7 @@ describe('CreateMlInferencePipelineApiLogic', () => { }, ], indexName: 'my-index', + modelId: 'my-model-id', pipelineName: 'my-pipeline', pipelineDefinition: { processors: [], version: 1 }, }; @@ -39,7 +40,7 @@ describe('CreateMlInferencePipelineApiLogic', () => { expect(http.post).toHaveBeenCalledWith( '/internal/enterprise_search/indices/my-index/ml_inference/pipeline_processors', { - body: '{"field_mappings":[{"sourceField":"my_source_field","targetField":"my_target_field"}],"pipeline_definition":{"processors":[],"version":1},"pipeline_name":"my-pipeline"}', + body: '{"field_mappings":[{"sourceField":"my_source_field","targetField":"my_target_field"}],"model_id":"my-model-id","pipeline_definition":{"processors":[],"version":1},"pipeline_name":"my-pipeline"}', } ); expect(result).toEqual({ diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts index 6626c88f69a59..8b7c990a14fc0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts @@ -18,6 +18,7 @@ export interface CreateMlInferencePipelineApiLogicArgs { fieldMappings: FieldMapping[]; indexName: string; inferenceConfig?: InferencePipelineInferenceConfig; + modelId: string; pipelineDefinition: MlInferencePipeline; pipelineName: string; } @@ -33,6 +34,7 @@ export const createMlInferencePipeline = async ( const params: CreateMLInferencePipelineDefinition = { field_mappings: args.fieldMappings, inference_config: args.inferenceConfig, + model_id: args.modelId, pipeline_definition: args.pipelineDefinition, pipeline_name: args.pipelineName, }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx index 3d65e79eca664..ef2101c1de7da 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx @@ -26,7 +26,7 @@ describe('ConfigureFields', () => { addInferencePipelineModal: { configuration: { existingPipeline: false } }, }; - it('renders multi-field selector components if non-text expansion model is selected', () => { + it('renders single field selector component if non-text expansion model is selected', () => { setMockValues(mockValues); const wrapper = shallow(<ConfigureFields />); expect(wrapper.find(SingleFieldMapping)).toHaveLength(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx index db6f5476757ab..c84266cc6cc03 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx @@ -77,7 +77,14 @@ export const ConfigureFields: React.FC = () => { <EuiForm component="form"> {isTextExpansionModelSelected ? ( <> - {areInputsDisabled || <MultiFieldMapping />} + {areInputsDisabled ? ( + <></> + ) : ( + <> + <MultiFieldMapping /> + <EuiSpacer size="l" /> + </> + )} <SelectedFieldMappings isReadOnly={areInputsDisabled} /> </> ) : ( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts index 8e1b2ab906032..0d85cd3428c68 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts @@ -172,6 +172,7 @@ describe('MlInferenceLogic', () => { }, ], indexName: 'test', + modelId: 'test-model', pipelineDefinition: {}, pipelineName: 'unit-test', }); @@ -340,6 +341,7 @@ describe('MlInferenceLogic', () => { pipelineName: 'unit-test', sourceField: '', fieldMappings: [], + targetField: '', }); expect(MLInferenceLogic.values.mlInferencePipeline).toBeUndefined(); @@ -352,6 +354,7 @@ describe('MlInferenceLogic', () => { pipelineName: 'unit-test', sourceField: 'body', fieldMappings: [], + targetField: '', }); expect(MLInferenceLogic.values.mlInferencePipeline).not.toBeUndefined(); @@ -364,6 +367,7 @@ describe('MlInferenceLogic', () => { pipelineName: '', sourceField: '', fieldMappings: [], + targetField: '', }); expect(MLInferenceLogic.values.mlInferencePipeline).toBeUndefined(); }); @@ -383,6 +387,7 @@ describe('MlInferenceLogic', () => { pipelineName: 'unit-test', sourceField: '', fieldMappings: [], + targetField: '', }); expect(MLInferenceLogic.values.mlInferencePipeline).not.toBeUndefined(); expect(MLInferenceLogic.values.mlInferencePipeline).toEqual(existingPipeline); @@ -563,12 +568,13 @@ describe('MlInferenceLogic', () => { MLModelsApiLogic.actions.apiSuccess([textExpansionModel]); MLInferenceLogic.actions.selectFields(['my_source_field1', 'my_source_field2']); - MLInferenceLogic.actions.addSelectedFieldsToMapping(); + MLInferenceLogic.actions.addSelectedFieldsToMapping(true); MLInferenceLogic.actions.createPipeline(); expect(MLInferenceLogic.actions.makeCreatePipelineRequest).toHaveBeenCalledWith({ indexName: mockModelConfiguration.indexName, inferenceConfig: undefined, + modelId: textExpansionModel.model_id, fieldMappings: [ { sourceField: 'my_source_field1', @@ -609,6 +615,7 @@ describe('MlInferenceLogic', () => { targetField: `ml.inference.${mockModelConfiguration.configuration.destinationField}`, }, ], + modelId: nerModel.model_id, pipelineDefinition: expect.any(Object), // Generation logic is tested elsewhere pipelineName: mockModelConfiguration.configuration.pipelineName, }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts index 663f1e62a7541..f67d764a97bb0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts @@ -93,11 +93,23 @@ export const EMPTY_PIPELINE_CONFIGURATION: InferencePipelineConfiguration = { modelID: '', pipelineName: '', sourceField: '', + targetField: '', }; const API_REQUEST_COMPLETE_STATUSES = [Status.SUCCESS, Status.ERROR]; const DEFAULT_CONNECTOR_FIELDS = ['body', 'title', 'id', 'type', 'url']; +const getFullTargetFieldName = ( + sourceField: string, + targetField: string | undefined, + isTextExpansionModelSelected: boolean +) => { + const suffixedTargetField = `${targetField || sourceField}${ + isTextExpansionModelSelected ? '_expanded' : '' + }`; + return getMlInferencePrefixedFieldName(suffixedTargetField); +}; + export interface MLInferencePipelineOption { disabled: boolean; disabledReason?: string; @@ -109,7 +121,9 @@ export interface MLInferencePipelineOption { } interface MLInferenceProcessorsActions { - addSelectedFieldsToMapping: () => void; + addSelectedFieldsToMapping: (isTextExpansionModelSelected: boolean) => { + isTextExpansionModelSelected: boolean; + }; attachApiError: Actions< AttachMlInferencePipelineApiLogicArgs, AttachMlInferencePipelineResponse @@ -166,6 +180,7 @@ interface MLInferenceProcessorsActions { setInferencePipelineConfiguration: (configuration: InferencePipelineConfiguration) => { configuration: InferencePipelineConfiguration; }; + setTargetField: (targetFieldName: string) => { targetFieldName: string }; startTextExpansionModelSuccess: StartTextExpansionModelApiLogicActions['apiSuccess']; } @@ -203,7 +218,9 @@ export const MLInferenceLogic = kea< MakeLogicType<MLInferenceProcessorsValues, MLInferenceProcessorsActions> >({ actions: { - addSelectedFieldsToMapping: true, + addSelectedFieldsToMapping: (isTextExpansionModelSelected: string) => ({ + isTextExpansionModelSelected, + }), attachPipeline: true, clearFormErrors: true, createPipeline: true, @@ -217,6 +234,7 @@ export const MLInferenceLogic = kea< setInferencePipelineConfiguration: (configuration: InferencePipelineConfiguration) => ({ configuration, }), + setTargetField: (targetFieldName: string) => ({ targetFieldName }), }, connect: { actions: [ @@ -298,6 +316,7 @@ export const MLInferenceLogic = kea< targetField: getMlInferencePrefixedFieldName(configuration.destinationField), }, ], + modelId: configuration.modelID, pipelineDefinition: mlInferencePipeline!, pipelineName: configuration.pipelineName, }); @@ -314,6 +333,7 @@ export const MLInferenceLogic = kea< pipelineName, sourceField: params.source_field, fieldMappings: params.field_mappings, + targetField: params.destination_field ?? '', }); }, setIndexName: ({ indexName }) => { @@ -370,17 +390,21 @@ export const MLInferenceLogic = kea< step: AddInferencePipelineSteps.Configuration, }, { - addSelectedFieldsToMapping: (modal) => { + addSelectedFieldsToMapping: (modal, { isTextExpansionModelSelected }) => { const { - configuration: { fieldMappings }, + configuration: { fieldMappings, targetField }, selectedSourceFields, } = modal; const mergedFieldMappings: FieldMapping[] = [ ...(fieldMappings || []), - ...(selectedSourceFields || []).map((fieldName) => ({ + ...(selectedSourceFields || []).map((fieldName: string) => ({ sourceField: fieldName, - targetField: getMlInferencePrefixedFieldName(`${fieldName}_expanded`), + targetField: getFullTargetFieldName( + fieldName, + targetField, + isTextExpansionModelSelected + ), })), ]; @@ -389,6 +413,7 @@ export const MLInferenceLogic = kea< configuration: { ...modal.configuration, fieldMappings: mergedFieldMappings, + targetField: '', }, selectedSourceFields: [], }; @@ -437,6 +462,13 @@ export const MLInferenceLogic = kea< ...modal, configuration, }), + setTargetField: (modal, { targetFieldName }) => ({ + ...modal, + configuration: { + ...modal.configuration, + targetField: targetFieldName, + }, + }), }, ], createErrors: [ diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.test.tsx index 34b3a771fa46a..4eb8bb7eb1829 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.test.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { EuiBasicTable, EuiButton, EuiComboBox } from '@elastic/eui'; +import { EuiBasicTable, EuiButton, EuiComboBox, EuiFieldText } from '@elastic/eui'; import { MultiFieldMapping, SelectedFieldMappings } from './multi_field_selector'; @@ -92,6 +92,53 @@ describe('MultiFieldMapping', () => { const button = wrapper.find(EuiButton); expect(button.prop('disabled')).toBe(false); }); + it('disables target field text field if no source fields are selected', () => { + setMockValues(DEFAULT_VALUES); + const wrapper = shallow(<MultiFieldMapping />); + + expect(wrapper.find(EuiFieldText)).toHaveLength(1); + const textField = wrapper.find(EuiFieldText); + expect(textField.prop('disabled')).toBe(true); + }); + it('disables target field text field if multiple source fields are selected', () => { + setMockValues({ + ...DEFAULT_VALUES, + addInferencePipelineModal: { + ...DEFAULT_VALUES.addInferencePipelineModal, + selectedSourceFields: ['my-source-field1', 'my-source-field2'], + }, + }); + const wrapper = shallow(<MultiFieldMapping />); + + expect(wrapper.find(EuiFieldText)).toHaveLength(1); + const textField = wrapper.find(EuiFieldText); + expect(textField.prop('disabled')).toBe(true); + }); + it('disables target field text field if text expansion model is selected', () => { + setMockValues({ + ...DEFAULT_VALUES, + isTextExpansionModelSelected: true, + }); + const wrapper = shallow(<MultiFieldMapping />); + + expect(wrapper.find(EuiFieldText)).toHaveLength(1); + const textField = wrapper.find(EuiFieldText); + expect(textField.prop('disabled')).toBe(true); + }); + it('enables target field text field if a single source field is selected', () => { + setMockValues({ + ...DEFAULT_VALUES, + addInferencePipelineModal: { + ...DEFAULT_VALUES.addInferencePipelineModal, + selectedSourceFields: ['my-source-field1'], + }, + }); + const wrapper = shallow(<MultiFieldMapping />); + + expect(wrapper.find(EuiFieldText)).toHaveLength(1); + const textField = wrapper.find(EuiFieldText); + expect(textField.prop('disabled')).toBe(false); + }); }); describe('SelectedFieldMappings', () => { @@ -133,6 +180,10 @@ describe('SelectedFieldMappings', () => { expect(wrapper.find(EuiBasicTable)).toHaveLength(1); const table = wrapper.find(EuiBasicTable); - expect(table.prop('columns').map((c) => c.name)).toEqual(['Source field', '', 'Target field']); + expect(table.prop('columns').map((c) => c.name)).toEqual([ + 'Source text field', + '', + 'Target field', + ]); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.tsx index a4bd461171986..1ab912ae9d613 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/multi_field_selector.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { useState } from 'react'; import { useValues, useActions } from 'kea'; @@ -31,13 +31,62 @@ import { MLInferenceLogic } from './ml_inference_logic'; type FieldNames = Array<{ label: string }>; +const TARGET_FIELD_PLACEHOLDER_TEXT_NO_FIELDS = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.placeholder.noFields', + { + defaultMessage: 'Select a source field', + } +); + +const TARGET_FIELD_PLACEHOLDER_TEXT_MULTIPLE_FIELDS = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.placeholder.multipleFields', + { + defaultMessage: 'Automatically created for multi-select', + } +); + +const TARGET_FIELD_PLACEHOLDER_TEXT_TEXT_EXPANSION_MODEL = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.placeholder.textExpansionModel', + { + defaultMessage: 'Automatically created', + } +); + +const TARGET_FIELD_HELP_TEXT_DEFAULT = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText', + { + defaultMessage: 'Optional. Field name where inference results should be saved.', + } +); + +const TARGET_FIELD_HELP_TEXT_TEXT_EXPANSION_MODEL = i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpTextTextExpansionModel', + { + defaultMessage: 'ELSER target fields are created automatically.', + } +); + +const getInitialTargetFieldPlaceholderText = (isTextExpansionModelSelected: boolean) => + isTextExpansionModelSelected + ? TARGET_FIELD_PLACEHOLDER_TEXT_TEXT_EXPANSION_MODEL + : TARGET_FIELD_PLACEHOLDER_TEXT_NO_FIELDS; + +const getTargetFieldHelpText = (isTextExpansionModelSelected: boolean) => + isTextExpansionModelSelected + ? TARGET_FIELD_HELP_TEXT_TEXT_EXPANSION_MODEL + : TARGET_FIELD_HELP_TEXT_DEFAULT; + export const MultiFieldMapping: React.FC = () => { const { addInferencePipelineModal: { configuration, selectedSourceFields = [] }, + isTextExpansionModelSelected, sourceFields, } = useValues(MLInferenceLogic); const { ingestionMethod } = useValues(IndexViewLogic); - const { addSelectedFieldsToMapping, selectFields } = useActions(MLInferenceLogic); + const { addSelectedFieldsToMapping, selectFields, setTargetField } = useActions(MLInferenceLogic); + const [placeholderText, setPlaceholderText] = useState<string>( + getInitialTargetFieldPlaceholderText(isTextExpansionModelSelected) + ); const mappedSourceFields = configuration.fieldMappings?.map(({ sourceField }) => sourceField) ?? []; @@ -50,9 +99,25 @@ export const MultiFieldMapping: React.FC = () => { const selectedFields = selectedSourceFields.map((fieldName) => ({ label: fieldName, })); + const targetField = configuration.targetField; + const isExactlyOneSourceFieldSelected = selectedSourceFields.length === 1; const onChangeSelectedFields = (selectedFieldNames: FieldNames) => { selectFields(selectedFieldNames.map(({ label }) => label)); + setTargetField( + !isTextExpansionModelSelected && selectedFieldNames.length === 1 + ? selectedFieldNames[0].label + : '' + ); + setPlaceholderText( + isTextExpansionModelSelected + ? TARGET_FIELD_PLACEHOLDER_TEXT_TEXT_EXPANSION_MODEL + : selectedFieldNames.length === 0 + ? TARGET_FIELD_PLACEHOLDER_TEXT_NO_FIELDS + : selectedFieldNames.length === 1 + ? selectedFieldNames[0].label + : TARGET_FIELD_PLACEHOLDER_TEXT_MULTIPLE_FIELDS + ); }; const onCreateField = (fieldName: string) => { @@ -63,6 +128,12 @@ export const MultiFieldMapping: React.FC = () => { selectFields([...selectedSourceFields, fieldName]); }; + const onAddSelectedFields = () => { + addSelectedFieldsToMapping(isTextExpansionModelSelected); + setTargetField(''); + setPlaceholderText(getInitialTargetFieldPlaceholderText(isTextExpansionModelSelected)); + }; + return ( <> <EuiFlexGroup> @@ -72,7 +143,7 @@ export const MultiFieldMapping: React.FC = () => { label={i18n.translate( 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel', { - defaultMessage: 'Source field', + defaultMessage: 'Source text field', } )} helpText={i18n.translate( @@ -109,23 +180,16 @@ export const MultiFieldMapping: React.FC = () => { defaultMessage: 'Target field', } )} - helpText={i18n.translate( - 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText', - { - defaultMessage: 'This name is automatically created based on your source field.', - } - )} + helpText={getTargetFieldHelpText(isTextExpansionModelSelected)} fullWidth > <EuiFieldText + prepend="ml.inference." + onChange={(e) => setTargetField(e.target.value)} data-telemetry-id={`entSearchContent-${ingestionMethod}-pipelines-configureFields-targetField`} - disabled - value={i18n.translate( - 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.defaultValue', - { - defaultMessage: 'This is automatically created', - } - )} + disabled={isTextExpansionModelSelected || !isExactlyOneSourceFieldSelected} + value={targetField} + placeholder={placeholderText} fullWidth /> </EuiFormRow> @@ -136,7 +200,7 @@ export const MultiFieldMapping: React.FC = () => { data-telemetry-id={`entSearchContent-${ingestionMethod}-pipelines-configureFields-addSelectedFieldsToMapping`} disabled={selectedFields.length === 0} iconType="plusInCircle" - onClick={addSelectedFieldsToMapping} + onClick={onAddSelectedFields} style={{ width: '60px' }} > {i18n.translate( @@ -169,7 +233,7 @@ export const SelectedFieldMappings: React.FC<SelectedFieldMappingsProps> = ({ is name: i18n.translate( 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.sourceFieldHeader', { - defaultMessage: 'Source field', + defaultMessage: 'Source text field', } ), }, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx index 9cc4e77cbba5d..354db83afbc34 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx @@ -68,7 +68,7 @@ export const SingleFieldMapping: React.FC = () => { label={i18n.translate( 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel', { - defaultMessage: 'Source field', + defaultMessage: 'Source text field', } )} error={isEmptySourceFields && <NoSourceFieldsError />} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts index fcec6868e1b49..83bf8f7eef545 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts @@ -25,6 +25,7 @@ const DEFAULT_VALUES: TestPipelineValues = { modelID: '', pipelineName: '', sourceField: '', + targetField: '', }, indexName: '', step: AddInferencePipelineSteps.Configuration, @@ -70,6 +71,7 @@ describe('TestPipelineLogic', () => { modelID: '', pipelineName: '', sourceField: '', + targetField: '', }, indexName: '', step: AddInferencePipelineSteps.Configuration, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts index ec1246ab8b464..9754a378e7473 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts @@ -17,6 +17,7 @@ export interface InferencePipelineConfiguration { pipelineName: string; sourceField: string; fieldMappings?: FieldMapping[]; + targetField: string; } export interface AddInferencePipelineFormErrors { diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts index eb8cdecb64a02..21091fec67167 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts @@ -38,7 +38,7 @@ export const preparePipelineAndIndexForMlInference = async ( indexName: string, pipelineName: string, pipelineDefinition: IngestPipeline | undefined, - modelId: string | undefined, + modelId: string, sourceField: string | undefined, destinationField: string | null | undefined, fieldMappings: FieldMapping[] | undefined, @@ -62,7 +62,7 @@ export const preparePipelineAndIndexForMlInference = async ( ); const mappingResponse = fieldMappings - ? (await updateMlInferenceMappings(indexName, fieldMappings, esClient)).acknowledged + ? (await updateMlInferenceMappings(indexName, modelId, fieldMappings, esClient)).acknowledged : false; return { diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.test.ts b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.test.ts index 27425274608e1..59699929ec313 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.test.ts @@ -13,11 +13,27 @@ import { updateMlInferenceMappings } from './update_ml_inference_mappings'; describe('updateMlInferenceMappings', () => { const indexName = 'my-index'; - + const modelId = 'my-model-id'; const mockClient = elasticsearchServiceMock.createScopedClusterClient(); beforeEach(() => { jest.clearAllMocks(); + + mockClient.asCurrentUser.ml.getTrainedModels.mockResolvedValue({ + count: 1, + trained_model_configs: [ + { + inference_config: { + text_expansion: {}, + }, + input: { + field_names: [], + }, + model_id: modelId, + tags: [], + }, + ], + }); }); const expectedMapping = { @@ -62,14 +78,42 @@ describe('updateMlInferenceMappings', () => { }, ]; - it('should update mappings for default output', async () => { - await updateMlInferenceMappings(indexName, fieldMappings, mockClient.asCurrentUser); + it('should update mappings for text expansion pipelines', async () => { + await updateMlInferenceMappings(indexName, modelId, fieldMappings, mockClient.asCurrentUser); expect(mockClient.asCurrentUser.indices.putMapping).toHaveBeenLastCalledWith({ index: indexName, properties: expectedMapping, }); }); + it('should not update mappings for pipelines other than text expansion', async () => { + const nonTextExpansionModelId = 'some-other-model-id'; + + mockClient.asCurrentUser.ml.getTrainedModels.mockResolvedValue({ + count: 1, + trained_model_configs: [ + { + inference_config: { + ner: {}, + }, + input: { + field_names: [], + }, + model_id: nonTextExpansionModelId, + tags: [], + }, + ], + }); + + await updateMlInferenceMappings( + indexName, + nonTextExpansionModelId, + fieldMappings, + mockClient.asCurrentUser + ); + expect(mockClient.asCurrentUser.indices.putMapping).not.toHaveBeenCalled(); + }); + it('should raise an error if the update fails', async () => { mockClient.asCurrentUser.indices.putMapping.mockImplementation(() => Promise.reject({ @@ -84,7 +128,7 @@ describe('updateMlInferenceMappings', () => { }) ); await expect( - updateMlInferenceMappings(indexName, fieldMappings, mockClient.asCurrentUser) + updateMlInferenceMappings(indexName, modelId, fieldMappings, mockClient.asCurrentUser) ).rejects.toThrowError(ErrorCode.MAPPING_UPDATE_FAILED); }); }); diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.ts b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.ts index 0108187efd120..3cc2ef3c2ed4f 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/update_ml_inference_mappings.ts @@ -21,9 +21,17 @@ import { isIllegalArgumentException } from '../../../../utils/identify_exception */ export const updateMlInferenceMappings = async ( indexName: string, + modelId: string, fieldMappings: FieldMapping[], esClient: ElasticsearchClient ) => { + // Check if the model is of text_expansion type, if not, skip the mapping update + if (!(await isTextExpansionModel(modelId, esClient))) { + return { + acknowledged: false, + }; + } + const sourceFields = fieldMappings.map(({ sourceField }) => sourceField); const nonDefaultTargetFields = fieldMappings @@ -97,3 +105,9 @@ const formDefaultElserMappingProps = (sourceFields: string[]) => { {} ); }; + +const isTextExpansionModel = async (modelId: string, esClient: ElasticsearchClient) => { + const models = await esClient.ml.getTrainedModels({ model_id: modelId }); + + return models.trained_model_configs[0]?.inference_config?.text_expansion !== undefined; +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index 5b5a0c7e99b9b..f2219b93919c9 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -409,7 +409,7 @@ export function registerIndexRoutes({ ), }) ), - model_id: schema.maybe(schema.string()), + model_id: schema.string(), pipeline_definition: schema.maybe( schema.object({ description: schema.maybe(schema.string()), @@ -437,14 +437,14 @@ export function registerIndexRoutes({ } = request.body; // additional validations - if ((pipelineDefinition || fieldMappings) && (sourceField || destinationField || modelId)) { + if ((pipelineDefinition || fieldMappings) && (sourceField || destinationField)) { return createError({ errorCode: ErrorCode.PARAMETER_CONFLICT, message: i18n.translate( 'xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterConflictError', { defaultMessage: - 'pipeline_definition and field_mappings should only be provided if source_field and destination_field and model_id are not provided', + 'pipeline_definition and field_mappings should only be provided if source_field and destination_field are not provided', } ), response, diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.test.ts index e31653bd448e3..a81dee11b7165 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.test.ts @@ -15,7 +15,7 @@ import { migratePackagePolicyToV8100 as migration } from './to_v8_10_0'; import { migratePackagePolicyEvictionsFromV8100 as eviction } from './to_v8_10_0'; describe('8.10.0 Endpoint Package Policy migration', () => { - const policyDoc = ({ behaviorProtection = {} }) => { + const policyDoc = ({ behaviorProtection = {}, meta = {} }) => { return { id: 'mock-saved-object-id', attributes: { @@ -42,7 +42,7 @@ describe('8.10.0 Endpoint Package Policy migration', () => { config: { policy: { value: { - meta: {}, + meta: { license: '', cloud: false, ...meta }, windows: { behavior_protection: { ...behaviorProtection, @@ -68,11 +68,12 @@ describe('8.10.0 Endpoint Package Policy migration', () => { }; }; - it('adds reputation service field to behaviour protection, set to false', () => { + it('adds reputation service field to behaviour protection, set to false and adds license_uid and cluster info, defaulted to empty string without overwiting existing meta values', () => { const initialDoc = policyDoc({}); const migratedDoc = policyDoc({ behaviorProtection: { reputation_service: false }, + meta: { license_uid: '', cluster_uuid: '', cluster_name: '' }, }); expect(migration(initialDoc, {} as SavedObjectModelTransformationContext)).toEqual({ @@ -82,9 +83,10 @@ describe('8.10.0 Endpoint Package Policy migration', () => { }); }); - it('removes reputation service field from behaviour protection', () => { + it('removes reputation service from behaviour protection and remove new meta values', () => { const initialDoc = policyDoc({ behaviorProtection: { reputation_service: true }, + meta: { license_uid: '', cluster_uuid: '', cluster_name: '' }, }); const migratedDoc = policyDoc({}); diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.ts index d2cf56d26075c..f457ce5e0c43f 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_10_0.ts @@ -30,6 +30,9 @@ export const migratePackagePolicyToV8100: SavedObjectModelDataBackfillFn< if (input && input.config) { const policy = input.config.policy.value; + const newMetaValues = { license_uid: '', cluster_uuid: '', cluster_name: '' }; + policy.meta = policy?.meta ? { ...policy.meta, ...newMetaValues } : newMetaValues; + policy.windows.behavior_protection.reputation_service = false; policy.mac.behavior_protection.reputation_service = false; policy.linux.behavior_protection.reputation_service = false; @@ -63,6 +66,7 @@ export const migratePackagePolicyEvictionsFromV8100: SavedObjectModelVersionForw 'reputation_service', ]); policy.mac.behavior_protection = omit(policy.mac.behavior_protection, ['reputation_service']); + policy.meta = omit(policy.meta, ['license_uid', 'cluster_uuid', 'cluster_name']); } return updatedAttributes; diff --git a/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list/create_endpoint_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list/create_endpoint_list_route.ts new file mode 100644 index 0000000000000..e3d43a6b6a75c --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list/create_endpoint_list_route.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 { + CreateEndpointListSchema, + createEndpointListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export const createEndpointListResponse = createEndpointListSchema; +export type CreateEndpointListResponse = CreateEndpointListSchema; diff --git a/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list_item/create_endpoint_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list_item/create_endpoint_list_item_route.ts new file mode 100644 index 0000000000000..f4815aa8aba5f --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/create_endpoint_list_item/create_endpoint_list_item_route.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 { + CreateEndpointListItemSchemaDecoded, + ExceptionListItemSchema, + createEndpointListItemSchema, + exceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { createEndpointListItemSchema as createEndpointListItemRequest }; +export type { CreateEndpointListItemSchemaDecoded as CreateEndpointListItemRequestDecoded }; + +export const createEndpointListItemResponse = exceptionListItemSchema; +export type CreateEndpointListItemResponse = ExceptionListItemSchema; diff --git a/x-pack/plugins/lists/common/api/exceptions/create_exception_list/create_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/create_exception_list/create_exception_list_route.ts new file mode 100644 index 0000000000000..cf9afc2409fed --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/create_exception_list/create_exception_list_route.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 { + CreateExceptionListSchemaDecoded, + ExceptionListSchema, + createExceptionListSchema, + exceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { createExceptionListSchema as createExceptionListRequest }; +export type { CreateExceptionListSchemaDecoded as CreateExceptionListRequestDecoded }; + +export const createExceptionListResponse = exceptionListSchema; +export type CreateExceptionListResponse = ExceptionListSchema; diff --git a/x-pack/plugins/lists/common/api/exceptions/create_exception_list_item/create_exception_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/create_exception_list_item/create_exception_list_item_route.ts new file mode 100644 index 0000000000000..cca081025db37 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/create_exception_list_item/create_exception_list_item_route.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 { + CreateExceptionListItemSchemaDecoded, + ExceptionListItemSchema, + createExceptionListItemSchema, + exceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { createExceptionListItemSchema as createExceptionListItemRequest }; +export type { CreateExceptionListItemSchemaDecoded as CreateExceptionListItemRequestDecoded }; + +export const createExceptionListItemResponse = exceptionListItemSchema; +export type CreateExceptionListItemResponse = ExceptionListItemSchema; diff --git a/x-pack/plugins/lists/common/api/exceptions/delete_endpoint_list_item/delete_endpoint_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/delete_endpoint_list_item/delete_endpoint_list_item_route.ts new file mode 100644 index 0000000000000..c6b4a3758ac67 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/delete_endpoint_list_item/delete_endpoint_list_item_route.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. + */ + +import { + DeleteEndpointListItemSchemaDecoded, + deleteEndpointListItemSchema, + exceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + deleteEndpointListItemSchema as deleteEndpointListItemRequestQuery, + exceptionListItemSchema as deleteEndpointListItemResponse, +}; +export type { DeleteEndpointListItemSchemaDecoded as DeleteEndpointListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/delete_exception_list/delete_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/delete_exception_list/delete_exception_list_route.ts new file mode 100644 index 0000000000000..1d068739183b7 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/delete_exception_list/delete_exception_list_route.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. + */ + +import { + DeleteExceptionListSchemaDecoded, + deleteExceptionListSchema, + exceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + deleteExceptionListSchema as deleteExceptionListRequestQuery, + exceptionListSchema as deleteExceptionListResponse, +}; +export type { DeleteExceptionListSchemaDecoded as DeleteExceptionListRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/delete_exception_list_item/delete_exception_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/delete_exception_list_item/delete_exception_list_item_route.ts new file mode 100644 index 0000000000000..327c83c48dd1f --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/delete_exception_list_item/delete_exception_list_item_route.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. + */ + +import { + DeleteExceptionListItemSchemaDecoded, + deleteExceptionListItemSchema, + exceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + deleteExceptionListItemSchema as deleteExceptionListItemRequestQuery, + exceptionListItemSchema as deleteExceptionListItemResponse, +}; +export type { DeleteExceptionListItemSchemaDecoded as DeleteExceptionListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/duplicate_exception_list/duplicate_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/duplicate_exception_list/duplicate_exception_list_route.ts new file mode 100644 index 0000000000000..dbbcdc62f995b --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/duplicate_exception_list/duplicate_exception_list_route.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. + */ + +import { + DuplicateExceptionListQuerySchemaDecoded, + duplicateExceptionListQuerySchema, + exceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + duplicateExceptionListQuerySchema as duplicateExceptionListRequestQuery, + exceptionListSchema as duplicateExceptionListResponse, +}; +export type { DuplicateExceptionListQuerySchemaDecoded as DuplicateExceptionListRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/export_exception_list/export_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/export_exception_list/export_exception_list_route.ts new file mode 100644 index 0000000000000..9423bceabcc15 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/export_exception_list/export_exception_list_route.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 { exportExceptionListQuerySchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { exportExceptionListQuerySchema as exportExceptionListRequestQuery }; diff --git a/x-pack/plugins/lists/common/api/exceptions/export_list_item/export_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/export_list_item/export_list_item_route.ts new file mode 100644 index 0000000000000..d2870f139da5f --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/export_list_item/export_list_item_route.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 { exportListItemQuerySchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { exportListItemQuerySchema as exportListItemRequestQuery }; diff --git a/x-pack/plugins/lists/common/api/exceptions/find_endpoint_list_item/find_endpoint_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/find_endpoint_list_item/find_endpoint_list_item_route.ts new file mode 100644 index 0000000000000..4d03147b87a72 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/find_endpoint_list_item/find_endpoint_list_item_route.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. + */ + +import { + FindEndpointListItemSchemaDecoded, + findEndpointListItemSchema, + foundExceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + findEndpointListItemSchema as findEndpointListItemRequestQuery, + foundExceptionListItemSchema as findEndpointListItemResponse, +}; +export type { FindEndpointListItemSchemaDecoded as FindEndpointListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/find_exception_list/find_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/find_exception_list/find_exception_list_route.ts new file mode 100644 index 0000000000000..da1da9dde9299 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/find_exception_list/find_exception_list_route.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. + */ + +import { + FindExceptionListSchemaDecoded, + findExceptionListSchema, + foundExceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + findExceptionListSchema as findExceptionListRequestQuery, + foundExceptionListSchema as findExceptionListResponse, +}; +export type { FindExceptionListSchemaDecoded as FindExceptionListRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/find_exception_list_item/find_exception_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/find_exception_list_item/find_exception_list_item_route.ts new file mode 100644 index 0000000000000..02bf165d7f990 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/find_exception_list_item/find_exception_list_item_route.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. + */ + +import { + FindExceptionListItemSchemaDecoded, + findExceptionListItemSchema, + foundExceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + findExceptionListItemSchema as findExceptionListItemRequestQuery, + foundExceptionListItemSchema as findExceptionListItemResponse, +}; +export type { FindExceptionListItemSchemaDecoded as FindExceptionListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/get_exception_filter/get_exception_filter_route.ts b/x-pack/plugins/lists/common/api/exceptions/get_exception_filter/get_exception_filter_route.ts new file mode 100644 index 0000000000000..171d829422f64 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/get_exception_filter/get_exception_filter_route.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 { getExceptionFilterSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { getExceptionFilterSchema as getExceptionFilterRequest }; diff --git a/x-pack/plugins/lists/common/api/exceptions/import_exceptions/import_exceptions_route.ts b/x-pack/plugins/lists/common/api/exceptions/import_exceptions/import_exceptions_route.ts new file mode 100644 index 0000000000000..0b18d65ff5178 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/import_exceptions/import_exceptions_route.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 { ImportQuerySchemaDecoded, importQuerySchema } from '@kbn/securitysolution-io-ts-types'; +import { importExceptionsResponseSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { + importQuerySchema as importExceptionsRequestQuery, + importExceptionsResponseSchema as importExceptionsResponse, +}; +export type { ImportQuerySchemaDecoded as ImportExceptionsRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/read_endpoint_list_item/read_endpoint_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/read_endpoint_list_item/read_endpoint_list_item_route.ts new file mode 100644 index 0000000000000..684f124f427ca --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/read_endpoint_list_item/read_endpoint_list_item_route.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. + */ + +import { + ReadEndpointListItemSchemaDecoded, + exceptionListItemSchema, + readEndpointListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + readEndpointListItemSchema as readEndpointListItemRequestQuery, + exceptionListItemSchema as readEndpointListItemResponse, +}; +export type { ReadEndpointListItemSchemaDecoded as ReadEndpointListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/read_exception_list/read_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/read_exception_list/read_exception_list_route.ts new file mode 100644 index 0000000000000..58b43899f7f77 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/read_exception_list/read_exception_list_route.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. + */ + +import { + ReadExceptionListSchemaDecoded, + exceptionListSchema, + readExceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + readExceptionListSchema as readExceptionListRequestQuery, + exceptionListSchema as readExceptionListResponse, +}; +export type { ReadExceptionListSchemaDecoded as ReadExceptionListRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/read_exception_list_item/read_exception_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/read_exception_list_item/read_exception_list_item_route.ts new file mode 100644 index 0000000000000..1499b875b9813 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/read_exception_list_item/read_exception_list_item_route.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. + */ + +import { + ReadExceptionListItemSchemaDecoded, + exceptionListItemSchema, + readExceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + readExceptionListItemSchema as readExceptionListItemRequestQuery, + exceptionListItemSchema as readExceptionListItemResponse, +}; +export type { ReadExceptionListItemSchemaDecoded as ReadExceptionListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/summary_exception_list/summary_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/summary_exception_list/summary_exception_list_route.ts new file mode 100644 index 0000000000000..aecd14d6cba02 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/summary_exception_list/summary_exception_list_route.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. + */ + +import { + SummaryExceptionListSchemaDecoded, + exceptionListSummarySchema, + summaryExceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + summaryExceptionListSchema as summaryExceptionListRequestQuery, + exceptionListSummarySchema as summaryExceptionListResponse, +}; +export type { SummaryExceptionListSchemaDecoded as SummaryExceptionListRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/update_endpoint_list_item/update_endpoint_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/update_endpoint_list_item/update_endpoint_list_item_route.ts new file mode 100644 index 0000000000000..4d6b2095e6a8e --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/update_endpoint_list_item/update_endpoint_list_item_route.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. + */ + +import { + UpdateEndpointListItemSchemaDecoded, + exceptionListItemSchema, + updateEndpointListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + updateEndpointListItemSchema as updateEndpointListItemRequest, + exceptionListItemSchema as updateEndpointListItemResponse, +}; +export type { UpdateEndpointListItemSchemaDecoded as UpdateEndpointListItemRequestDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/update_exception_list/update_exception_list_route.ts b/x-pack/plugins/lists/common/api/exceptions/update_exception_list/update_exception_list_route.ts new file mode 100644 index 0000000000000..0550a5d90311b --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/update_exception_list/update_exception_list_route.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. + */ + +import { + UpdateExceptionListSchemaDecoded, + exceptionListSchema, + updateExceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + updateExceptionListSchema as updateExceptionListRequest, + exceptionListSchema as updateExceptionListResponse, +}; +export type { UpdateExceptionListSchemaDecoded as UpdateExceptionListRequestDecoded }; diff --git a/x-pack/plugins/lists/common/api/exceptions/update_exception_list_item/update_exception_list_item_route.ts b/x-pack/plugins/lists/common/api/exceptions/update_exception_list_item/update_exception_list_item_route.ts new file mode 100644 index 0000000000000..330198a81bd81 --- /dev/null +++ b/x-pack/plugins/lists/common/api/exceptions/update_exception_list_item/update_exception_list_item_route.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. + */ + +import { + UpdateExceptionListItemSchemaDecoded, + exceptionListItemSchema, + updateExceptionListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + updateExceptionListItemSchema as updateExceptionListItemRequest, + exceptionListItemSchema as updateExceptionListItemResponse, +}; +export type { UpdateExceptionListItemSchemaDecoded as UpdateExceptionListItemRequestDecoded }; diff --git a/x-pack/plugins/lists/common/api/index.ts b/x-pack/plugins/lists/common/api/index.ts new file mode 100644 index 0000000000000..1d76a041d2824 --- /dev/null +++ b/x-pack/plugins/lists/common/api/index.ts @@ -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. + */ + +export * from './exceptions/create_endpoint_list_item/create_endpoint_list_item_route'; +export * from './exceptions/create_endpoint_list/create_endpoint_list_route'; +export * from './exceptions/create_exception_list_item/create_exception_list_item_route'; +export * from './exceptions/create_exception_list/create_exception_list_route'; +export * from './exceptions/delete_endpoint_list_item/delete_endpoint_list_item_route'; +export * from './exceptions/delete_exception_list_item/delete_exception_list_item_route'; +export * from './exceptions/delete_exception_list/delete_exception_list_route'; +export * from './exceptions/duplicate_exception_list/duplicate_exception_list_route'; +export * from './exceptions/export_exception_list/export_exception_list_route'; +export * from './exceptions/export_list_item/export_list_item_route'; +export * from './exceptions/find_endpoint_list_item/find_endpoint_list_item_route'; +export * from './exceptions/find_exception_list_item/find_exception_list_item_route'; +export * from './exceptions/find_exception_list/find_exception_list_route'; +export * from './exceptions/get_exception_filter/get_exception_filter_route'; +export * from './exceptions/import_exceptions/import_exceptions_route'; +export * from './exceptions/read_endpoint_list_item/read_endpoint_list_item_route'; +export * from './exceptions/read_exception_list_item/read_exception_list_item_route'; +export * from './exceptions/read_exception_list/read_exception_list_route'; +export * from './exceptions/summary_exception_list/summary_exception_list_route'; +export * from './exceptions/update_endpoint_list_item/update_endpoint_list_item_route'; +export * from './exceptions/update_exception_list_item/update_exception_list_item_route'; +export * from './exceptions/update_exception_list/update_exception_list_route'; +export * from './values/create_list_index/create_list_index_route'; +export * from './values/create_list_item/create_list_item_route'; +export * from './values/create_list/create_list_route'; +export * from './values/delete_list_index/delete_list_index_route'; +export * from './values/delete_list_item/delete_list_item_route'; +export * from './values/delete_list/delete_list_route'; +export * from './values/find_list_item/find_list_item_route'; +export * from './values/find_list/find_list_route'; +export * from './values/find_lists_by_size/find_lists_by_size_route'; +export * from './values/import_list_item/import_list_item_route'; +export * from './values/patch_list_item/patch_list_item_route'; +export * from './values/patch_list/patch_list_route'; +export * from './values/read_list_index/read_list_index_route'; +export * from './values/read_list_item/read_list_item_route'; +export * from './values/read_list/read_list_route'; +export * from './values/update_list_item/update_list_item_route'; +export * from './values/update_list/update_list_route'; diff --git a/x-pack/plugins/lists/common/api/values/create_list/create_list_route.ts b/x-pack/plugins/lists/common/api/values/create_list/create_list_route.ts new file mode 100644 index 0000000000000..71dc2eecde8ea --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/create_list/create_list_route.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 { + CreateListSchemaDecoded, + createListSchema, + listSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { createListSchema as createListRequest, listSchema as createListResponse }; +export type { CreateListSchemaDecoded as CreateListRequestDecoded }; diff --git a/x-pack/plugins/lists/common/api/values/create_list_index/create_list_index_route.ts b/x-pack/plugins/lists/common/api/values/create_list_index/create_list_index_route.ts new file mode 100644 index 0000000000000..85e094b273e13 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/create_list_index/create_list_index_route.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 { acknowledgeSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { acknowledgeSchema as createListIndexResponse }; diff --git a/x-pack/plugins/lists/common/api/values/create_list_item/create_list_item_route.ts b/x-pack/plugins/lists/common/api/values/create_list_item/create_list_item_route.ts new file mode 100644 index 0000000000000..70cef948d6cf1 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/create_list_item/create_list_item_route.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 { createListItemSchema, listItemSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { createListItemSchema as createListItemRequest, listItemSchema as createListItemResponse }; diff --git a/x-pack/plugins/lists/common/api/values/delete_list/delete_list_route.ts b/x-pack/plugins/lists/common/api/values/delete_list/delete_list_route.ts new file mode 100644 index 0000000000000..b360d3e5c6880 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/delete_list/delete_list_route.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 { deleteListSchema, listSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { deleteListSchema as deleteListRequestQuery, listSchema as deleteListResponse }; diff --git a/x-pack/plugins/lists/common/api/values/delete_list_index/delete_list_index_route.ts b/x-pack/plugins/lists/common/api/values/delete_list_index/delete_list_index_route.ts new file mode 100644 index 0000000000000..2423ebd6bea60 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/delete_list_index/delete_list_index_route.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 { acknowledgeSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { acknowledgeSchema as deleteListIndexResponse }; diff --git a/x-pack/plugins/lists/common/api/values/delete_list_item/delete_list_item_route.ts b/x-pack/plugins/lists/common/api/values/delete_list_item/delete_list_item_route.ts new file mode 100644 index 0000000000000..418401d2b6c17 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/delete_list_item/delete_list_item_route.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. + */ + +import { + deleteListItemSchema, + listItemArraySchema, + listItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + deleteListItemSchema as deleteListItemRequestQuery, + listItemSchema as deleteListItemResponse, + listItemArraySchema as deleteListItemArrayResponse, +}; diff --git a/x-pack/plugins/lists/common/api/values/find_list/find_list_route.ts b/x-pack/plugins/lists/common/api/values/find_list/find_list_route.ts new file mode 100644 index 0000000000000..8c3301daed3c9 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/find_list/find_list_route.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 { findListSchema, foundListSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { findListSchema as findListRequestQuery, foundListSchema as findListResponse }; diff --git a/x-pack/plugins/lists/common/api/values/find_list_item/find_list_item_route.ts b/x-pack/plugins/lists/common/api/values/find_list_item/find_list_item_route.ts new file mode 100644 index 0000000000000..b9d4d93ccb340 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/find_list_item/find_list_item_route.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. + */ + +import { + FindListItemSchemaDecoded, + findListItemSchema, + foundListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + findListItemSchema as findListItemRequestQuery, + foundListItemSchema as findListItemResponse, +}; +export type { FindListItemSchemaDecoded as FindListItemRequestQueryDecoded }; diff --git a/x-pack/plugins/lists/common/api/values/find_lists_by_size/find_lists_by_size_route.ts b/x-pack/plugins/lists/common/api/values/find_lists_by_size/find_lists_by_size_route.ts new file mode 100644 index 0000000000000..c6bba9b191cbc --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/find_lists_by_size/find_lists_by_size_route.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { findListSchema, foundListsBySizeSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { + findListSchema as findListsBySizeRequestQuery, + foundListsBySizeSchema as findListsBySizeResponse, +}; diff --git a/x-pack/plugins/lists/common/api/values/import_list_item/import_list_item_route.ts b/x-pack/plugins/lists/common/api/values/import_list_item/import_list_item_route.ts new file mode 100644 index 0000000000000..3ea57eda532fc --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/import_list_item/import_list_item_route.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { importListItemQuerySchema, listSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { + importListItemQuerySchema as importListItemRequestQuery, + listSchema as importListItemResponse, +}; diff --git a/x-pack/plugins/lists/common/api/values/patch_list/patch_list_route.ts b/x-pack/plugins/lists/common/api/values/patch_list/patch_list_route.ts new file mode 100644 index 0000000000000..8821658c5b23a --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/patch_list/patch_list_route.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 { listSchema, patchListSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { patchListSchema as patchListRequest, listSchema as patchListResponse }; diff --git a/x-pack/plugins/lists/common/api/values/patch_list_item/patch_list_item_route.ts b/x-pack/plugins/lists/common/api/values/patch_list_item/patch_list_item_route.ts new file mode 100644 index 0000000000000..12b4bd36e968e --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/patch_list_item/patch_list_item_route.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 { listItemSchema, patchListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { patchListItemSchema as patchListItemRequest, listItemSchema as patchListItemResponse }; diff --git a/x-pack/plugins/lists/common/api/values/read_list/read_list_route.ts b/x-pack/plugins/lists/common/api/values/read_list/read_list_route.ts new file mode 100644 index 0000000000000..be13d604f57c5 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/read_list/read_list_route.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 { listSchema, readListSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { readListSchema as readListRequestQuery, listSchema as readListResponse }; diff --git a/x-pack/plugins/lists/common/api/values/read_list_index/read_list_index_route.ts b/x-pack/plugins/lists/common/api/values/read_list_index/read_list_index_route.ts new file mode 100644 index 0000000000000..772d042b7e11c --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/read_list_index/read_list_index_route.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 { listItemIndexExistSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { listItemIndexExistSchema as readListIndexResponse }; diff --git a/x-pack/plugins/lists/common/api/values/read_list_item/read_list_item_route.ts b/x-pack/plugins/lists/common/api/values/read_list_item/read_list_item_route.ts new file mode 100644 index 0000000000000..0b67159ceaf03 --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/read_list_item/read_list_item_route.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. + */ + +import { + listItemArraySchema, + listItemSchema, + readListItemSchema, +} from '@kbn/securitysolution-io-ts-list-types'; + +export { + readListItemSchema as readListItemRequestQuery, + listItemSchema as readListItemResponse, + listItemArraySchema as readListItemArrayResponse, +}; diff --git a/x-pack/plugins/lists/common/api/values/update_list/update_list_route.ts b/x-pack/plugins/lists/common/api/values/update_list/update_list_route.ts new file mode 100644 index 0000000000000..801e9784ac80d --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/update_list/update_list_route.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 { listSchema, updateListSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { updateListSchema as updateListRequest, listSchema as updateListResponse }; diff --git a/x-pack/plugins/lists/common/api/values/update_list_item/update_list_item_route.ts b/x-pack/plugins/lists/common/api/values/update_list_item/update_list_item_route.ts new file mode 100644 index 0000000000000..9b512e61f464e --- /dev/null +++ b/x-pack/plugins/lists/common/api/values/update_list_item/update_list_item_route.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 { listItemSchema, updateListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; + +export { updateListItemSchema as updateListItemRequest, listItemSchema as updateListItemResponse }; diff --git a/x-pack/plugins/lists/server/handlers/create_exception_list_handler.ts b/x-pack/plugins/lists/server/handlers/create_exception_list_handler.ts index e8fb0e5c6b553..6b4be3b353a8d 100644 --- a/x-pack/plugins/lists/server/handlers/create_exception_list_handler.ts +++ b/x-pack/plugins/lists/server/handlers/create_exception_list_handler.ts @@ -6,18 +6,15 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; -import { - CreateExceptionListSchemaDecoded, - exceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { IKibanaResponse, KibanaRequest, KibanaResponseFactory } from '@kbn/core-http-server'; +import { CreateExceptionListRequestDecoded, createExceptionListResponse } from '../../common/api'; import { SiemResponseFactory, getExceptionListClient } from '../routes'; import { ListsRequestHandlerContext } from '../types'; export const createExceptionListHandler = async ( context: ListsRequestHandlerContext, - request: KibanaRequest<unknown, unknown, CreateExceptionListSchemaDecoded, 'post'>, + request: KibanaRequest<unknown, unknown, CreateExceptionListRequestDecoded, 'post'>, response: KibanaResponseFactory, siemResponse: SiemResponseFactory, options: { ignoreExisting: boolean } = { ignoreExisting: false } @@ -59,7 +56,7 @@ export const createExceptionListHandler = async ( type, version, }); - const [validated, errors] = validate(createdList, exceptionListSchema); + const [validated, errors] = validate(createdList, createExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts index d6272626618ec..ec4276f79bcfd 100644 --- a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts @@ -7,13 +7,13 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - CreateEndpointListItemSchemaDecoded, - createEndpointListItemSchema, - exceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ID, ENDPOINT_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; +import { + CreateEndpointListItemRequestDecoded, + createEndpointListItemRequest, + createEndpointListItemResponse, +} from '../../common/api'; import type { ListsPluginRouter } from '../types'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -28,9 +28,9 @@ export const createEndpointListItemRoute = (router: ListsPluginRouter): void => path: ENDPOINT_LIST_ITEM_URL, validate: { body: buildRouteValidation< - typeof createEndpointListItemSchema, - CreateEndpointListItemSchemaDecoded - >(createEndpointListItemSchema), + typeof createEndpointListItemRequest, + CreateEndpointListItemRequestDecoded + >(createEndpointListItemRequest), }, }, async (context, request, response) => { @@ -69,7 +69,7 @@ export const createEndpointListItemRoute = (router: ListsPluginRouter): void => tags, type, }); - const [validated, errors] = validate(createdList, exceptionListItemSchema); + const [validated, errors] = validate(createdList, createEndpointListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts b/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts index 1868a47952a6d..ed2f8b9873373 100644 --- a/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { createEndpointListSchema } from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { createEndpointListResponse } from '../../common/api'; import { buildSiemResponse } from './utils'; import { getExceptionListClient } from './utils/get_exception_list_client'; @@ -44,7 +44,7 @@ export const createEndpointListRoute = (router: ListsPluginRouter): void => { // and block the least amount of time with this route since it could end up in various parts of the // stack at some point such as repeatedly being called by endpoint agents. const body = createdList ?? {}; - const [validated, errors] = validate(body, createEndpointListSchema); + const [validated, errors] = validate(body, createEndpointListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts index 7754bc9cc31b5..dc6f8ce8804a4 100644 --- a/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - CreateExceptionListItemSchemaDecoded, - createExceptionListItemSchema, - exceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + CreateExceptionListItemRequestDecoded, + createExceptionListItemRequest, + createExceptionListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; import { getExceptionListClient } from './utils/get_exception_list_client'; @@ -30,9 +30,9 @@ export const createExceptionListItemRoute = (router: ListsPluginRouter): void => path: EXCEPTION_LIST_ITEM_URL, validate: { body: buildRouteValidation< - typeof createExceptionListItemSchema, - CreateExceptionListItemSchemaDecoded - >(createExceptionListItemSchema), + typeof createExceptionListItemRequest, + CreateExceptionListItemRequestDecoded + >(createExceptionListItemRequest), }, }, async (context, request, response) => { @@ -103,7 +103,7 @@ export const createExceptionListItemRoute = (router: ListsPluginRouter): void => tags, type, }); - const [validated, errors] = validate(createdList, exceptionListItemSchema); + const [validated, errors] = validate(createdList, createExceptionListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_exception_list_route.ts b/x-pack/plugins/lists/server/routes/create_exception_list_route.ts index 00a9234d21be5..42c4568c74e94 100644 --- a/x-pack/plugins/lists/server/routes/create_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_exception_list_route.ts @@ -6,12 +6,9 @@ */ import { transformError } from '@kbn/securitysolution-es-utils'; -import { - CreateExceptionListSchemaDecoded, - createExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; +import { CreateExceptionListRequestDecoded, createExceptionListRequest } from '../../common/api'; import type { ListsPluginRouter } from '../types'; import { createExceptionListHandler } from '../handlers/create_exception_list_handler'; @@ -26,9 +23,9 @@ export const createExceptionListRoute = (router: ListsPluginRouter): void => { path: EXCEPTION_LIST_URL, validate: { body: buildRouteValidation< - typeof createExceptionListSchema, - CreateExceptionListSchemaDecoded - >(createExceptionListSchema), + typeof createExceptionListRequest, + CreateExceptionListRequestDecoded + >(createExceptionListRequest), }, }, async (context, request, response) => { diff --git a/x-pack/plugins/lists/server/routes/create_list_index_route.ts b/x-pack/plugins/lists/server/routes/create_list_index_route.ts index 5fe903fba39b8..cdfd3b7646aae 100644 --- a/x-pack/plugins/lists/server/routes/create_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_index_route.ts @@ -7,9 +7,9 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { acknowledgeSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_INDEX } from '@kbn/securitysolution-list-constants'; +import { createListIndexResponse } from '../../common/api'; import type { ListsPluginRouter } from '../types'; import { buildSiemResponse } from './utils'; @@ -83,7 +83,7 @@ export const createListIndexRoute = (router: ListsPluginRouter): void => { await lists.createListItemBootStrapIndex(); } - const [validated, errors] = validate({ acknowledged: true }, acknowledgeSchema); + const [validated, errors] = validate({ acknowledged: true }, createListIndexResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_list_item_route.ts index de798aea97fd6..c5642139ae3ad 100644 --- a/x-pack/plugins/lists/server/routes/create_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_item_route.ts @@ -7,9 +7,9 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { createListItemSchema, listItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; +import { createListItemRequest, createListItemResponse } from '../../common/api'; import type { ListsPluginRouter } from '../types'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const createListItemRoute = (router: ListsPluginRouter): void => { }, path: LIST_ITEM_URL, validate: { - body: buildRouteValidation(createListItemSchema), + body: buildRouteValidation(createListItemRequest), }, }, async (context, request, response) => { @@ -58,7 +58,7 @@ export const createListItemRoute = (router: ListsPluginRouter): void => { value, }); if (createdListItem != null) { - const [validated, errors] = validate(createdListItem, listItemSchema); + const [validated, errors] = validate(createdListItem, createListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/create_list_route.ts b/x-pack/plugins/lists/server/routes/create_list_route.ts index 5e2ddea4aa4b2..484d045f23aae 100644 --- a/x-pack/plugins/lists/server/routes/create_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_route.ts @@ -7,14 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - CreateListSchemaDecoded, - createListSchema, - listSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { CreateListRequestDecoded, createListRequest, createListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -28,8 +24,8 @@ export const createListRoute = (router: ListsPluginRouter): void => { }, path: LIST_URL, validate: { - body: buildRouteValidation<typeof createListSchema, CreateListSchemaDecoded>( - createListSchema + body: buildRouteValidation<typeof createListRequest, CreateListRequestDecoded>( + createListRequest ), }, }, @@ -66,7 +62,7 @@ export const createListRoute = (router: ListsPluginRouter): void => { type, version, }); - const [validated, errors] = validate(list, listSchema); + const [validated, errors] = validate(list, createListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts index 94456cea0c328..7f122030a19c2 100644 --- a/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - DeleteEndpointListItemSchemaDecoded, - deleteEndpointListItemSchema, - exceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + DeleteEndpointListItemRequestQueryDecoded, + deleteEndpointListItemRequestQuery, + deleteEndpointListItemResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const deleteEndpointListItemRoute = (router: ListsPluginRouter): void => path: ENDPOINT_LIST_ITEM_URL, validate: { query: buildRouteValidation< - typeof deleteEndpointListItemSchema, - DeleteEndpointListItemSchemaDecoded - >(deleteEndpointListItemSchema), + typeof deleteEndpointListItemRequestQuery, + DeleteEndpointListItemRequestQueryDecoded + >(deleteEndpointListItemRequestQuery), }, }, async (context, request, response) => { @@ -58,7 +58,7 @@ export const deleteEndpointListItemRoute = (router: ListsPluginRouter): void => statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, exceptionListItemSchema); + const [validated, errors] = validate(deleted, deleteEndpointListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts index 5aea87e5e9efb..1f529e2c1b40e 100644 --- a/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - DeleteExceptionListItemSchemaDecoded, - deleteExceptionListItemSchema, - exceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + DeleteExceptionListItemRequestQueryDecoded, + deleteExceptionListItemRequestQuery, + deleteExceptionListItemResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const deleteExceptionListItemRoute = (router: ListsPluginRouter): void => path: EXCEPTION_LIST_ITEM_URL, validate: { query: buildRouteValidation< - typeof deleteExceptionListItemSchema, - DeleteExceptionListItemSchemaDecoded - >(deleteExceptionListItemSchema), + typeof deleteExceptionListItemRequestQuery, + DeleteExceptionListItemRequestQueryDecoded + >(deleteExceptionListItemRequestQuery), }, }, async (context, request, response) => { @@ -59,7 +59,7 @@ export const deleteExceptionListItemRoute = (router: ListsPluginRouter): void => statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, exceptionListItemSchema); + const [validated, errors] = validate(deleted, deleteExceptionListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts b/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts index 26c45c8055a96..e22acea02c4d9 100644 --- a/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - DeleteExceptionListSchemaDecoded, - deleteExceptionListSchema, - exceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + DeleteExceptionListRequestQueryDecoded, + deleteExceptionListRequestQuery, + deleteExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const deleteExceptionListRoute = (router: ListsPluginRouter): void => { path: EXCEPTION_LIST_URL, validate: { query: buildRouteValidation< - typeof deleteExceptionListSchema, - DeleteExceptionListSchemaDecoded - >(deleteExceptionListSchema), + typeof deleteExceptionListRequestQuery, + DeleteExceptionListRequestQueryDecoded + >(deleteExceptionListRequestQuery), }, }, async (context, request, response) => { @@ -59,7 +59,7 @@ export const deleteExceptionListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, exceptionListSchema); + const [validated, errors] = validate(deleted, deleteExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_list_index_route.ts b/x-pack/plugins/lists/server/routes/delete_list_index_route.ts index 2cd15f3026dbc..64607308adda4 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_index_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { acknowledgeSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_INDEX } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { deleteListIndexResponse } from '../../common/api'; import { buildSiemResponse } from './utils'; @@ -93,7 +93,7 @@ export const deleteListIndexRoute = (router: ListsPluginRouter): void => { await lists.deleteLegacyListItemTemplate(); } - const [validated, errors] = validate({ acknowledged: true }, acknowledgeSchema); + const [validated, errors] = validate({ acknowledged: true }, deleteListIndexResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_list_item_route.ts index bf03f083bd742..c580238455fff 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - deleteListItemSchema, - listItemArraySchema, - listItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + deleteListItemArrayResponse, + deleteListItemRequestQuery, + deleteListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -28,7 +28,7 @@ export const deleteListItemRoute = (router: ListsPluginRouter): void => { }, path: LIST_ITEM_URL, validate: { - query: buildRouteValidation(deleteListItemSchema), + query: buildRouteValidation(deleteListItemRequestQuery), }, }, async (context, request, response) => { @@ -44,7 +44,7 @@ export const deleteListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, listItemSchema); + const [validated, errors] = validate(deleted, deleteListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { @@ -70,7 +70,7 @@ export const deleteListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, listItemArraySchema); + const [validated, errors] = validate(deleted, deleteListItemArrayResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/delete_list_route.ts b/x-pack/plugins/lists/server/routes/delete_list_route.ts index e9f0e1245f1d7..a8bb0fe01840d 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_route.ts @@ -13,9 +13,7 @@ import { ExceptionListSchema, FoundExceptionListItemSchema, FoundExceptionListSchema, - deleteListSchema, exceptionListItemSchema, - listSchema, } from '@kbn/securitysolution-io-ts-list-types'; import { getSavedObjectType } from '@kbn/securitysolution-list-utils'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; @@ -23,6 +21,7 @@ import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; import type { ExceptionListClient } from '../services/exception_lists/exception_list_client'; import { escapeQuotes } from '../services/utils/escape_query'; +import { deleteListRequestQuery, deleteListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -36,7 +35,7 @@ export const deleteListRoute = (router: ListsPluginRouter): void => { }, path: LIST_URL, validate: { - query: buildRouteValidation(deleteListSchema), + query: buildRouteValidation(deleteListRequestQuery), }, }, async (context, request, response) => { @@ -115,7 +114,7 @@ export const deleteListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(deleted, listSchema); + const [validated, errors] = validate(deleted, deleteListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/duplicate_exception_list_route.ts b/x-pack/plugins/lists/server/routes/duplicate_exception_list_route.ts index 2724215971aae..b5e44c5c18530 100644 --- a/x-pack/plugins/lists/server/routes/duplicate_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/duplicate_exception_list_route.ts @@ -6,15 +6,15 @@ */ import { transformError } from '@kbn/securitysolution-es-utils'; -import { - DuplicateExceptionListQuerySchemaDecoded, - duplicateExceptionListQuerySchema, - exceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { validate } from '@kbn/securitysolution-io-ts-utils'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + DuplicateExceptionListRequestQueryDecoded, + duplicateExceptionListRequestQuery, + duplicateExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -27,9 +27,9 @@ export const duplicateExceptionsRoute = (router: ListsPluginRouter): void => { path: `${EXCEPTION_LIST_URL}/_duplicate`, validate: { query: buildRouteValidation< - typeof duplicateExceptionListQuerySchema, - DuplicateExceptionListQuerySchemaDecoded - >(duplicateExceptionListQuerySchema), + typeof duplicateExceptionListRequestQuery, + DuplicateExceptionListRequestQueryDecoded + >(duplicateExceptionListRequestQuery), }, }, async (context, request, response) => { @@ -76,7 +76,7 @@ export const duplicateExceptionsRoute = (router: ListsPluginRouter): void => { }); } - const [validated, errors] = validate(duplicatedList, exceptionListSchema); + const [validated, errors] = validate(duplicatedList, duplicateExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/export_exception_list_route.ts b/x-pack/plugins/lists/server/routes/export_exception_list_route.ts index 71f67ead4a8a1..0ba22841dcd23 100644 --- a/x-pack/plugins/lists/server/routes/export_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/export_exception_list_route.ts @@ -6,10 +6,10 @@ */ import { transformError } from '@kbn/securitysolution-es-utils'; -import { exportExceptionListQuerySchema } from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { exportExceptionListRequestQuery } from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -21,7 +21,7 @@ export const exportExceptionsRoute = (router: ListsPluginRouter): void => { }, path: `${EXCEPTION_LIST_URL}/_export`, validate: { - query: buildRouteValidation(exportExceptionListQuerySchema), + query: buildRouteValidation(exportExceptionListRequestQuery), }, }, async (context, request, response) => { diff --git a/x-pack/plugins/lists/server/routes/export_list_item_route.ts b/x-pack/plugins/lists/server/routes/export_list_item_route.ts index f542909327f1c..5ab4dcaea6f8f 100644 --- a/x-pack/plugins/lists/server/routes/export_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/export_list_item_route.ts @@ -8,10 +8,10 @@ import { Stream } from 'stream'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { exportListItemQuerySchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { exportListItemRequestQuery } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -25,7 +25,7 @@ export const exportListItemRoute = (router: ListsPluginRouter): void => { }, path: `${LIST_ITEM_URL}/_export`, validate: { - query: buildRouteValidation(exportListItemQuerySchema), + query: buildRouteValidation(exportListItemRequestQuery), }, }, async (context, request, response) => { diff --git a/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts index c91a7d882355b..ef72152a3bb8f 100644 --- a/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - FindEndpointListItemSchemaDecoded, - findEndpointListItemSchema, - foundExceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ID, ENDPOINT_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + FindEndpointListItemRequestQueryDecoded, + findEndpointListItemRequestQuery, + findEndpointListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -27,9 +27,9 @@ export const findEndpointListItemRoute = (router: ListsPluginRouter): void => { path: `${ENDPOINT_LIST_ITEM_URL}/_find`, validate: { query: buildRouteValidation< - typeof findEndpointListItemSchema, - FindEndpointListItemSchemaDecoded - >(findEndpointListItemSchema), + typeof findEndpointListItemRequestQuery, + FindEndpointListItemRequestQueryDecoded + >(findEndpointListItemRequestQuery), }, }, async (context, request, response) => { @@ -62,7 +62,7 @@ export const findEndpointListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } - const [validated, errors] = validate(exceptionListItems, foundExceptionListItemSchema); + const [validated, errors] = validate(exceptionListItems, findEndpointListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts index c337ac818cbfc..a48b188e8e3bc 100644 --- a/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - FindExceptionListItemSchemaDecoded, - findExceptionListItemSchema, - foundExceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + FindExceptionListItemRequestQueryDecoded, + findExceptionListItemRequestQuery, + findExceptionListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -27,9 +27,9 @@ export const findExceptionListItemRoute = (router: ListsPluginRouter): void => { path: `${EXCEPTION_LIST_ITEM_URL}/_find`, validate: { query: buildRouteValidation< - typeof findExceptionListItemSchema, - FindExceptionListItemSchemaDecoded - >(findExceptionListItemSchema), + typeof findExceptionListItemRequestQuery, + FindExceptionListItemRequestQueryDecoded + >(findExceptionListItemRequestQuery), }, }, async (context, request, response) => { @@ -76,7 +76,7 @@ export const findExceptionListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } - const [validated, errors] = validate(exceptionListItems, foundExceptionListItemSchema); + const [validated, errors] = validate(exceptionListItems, findExceptionListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/find_exception_list_route.ts b/x-pack/plugins/lists/server/routes/find_exception_list_route.ts index 9365c07e876a2..5cd8535d84280 100644 --- a/x-pack/plugins/lists/server/routes/find_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/find_exception_list_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - FindExceptionListSchemaDecoded, - findExceptionListSchema, - foundExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + FindExceptionListRequestQueryDecoded, + findExceptionListRequestQuery, + findExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -26,9 +26,10 @@ export const findExceptionListRoute = (router: ListsPluginRouter): void => { }, path: `${EXCEPTION_LIST_URL}/_find`, validate: { - query: buildRouteValidation<typeof findExceptionListSchema, FindExceptionListSchemaDecoded>( - findExceptionListSchema - ), + query: buildRouteValidation< + typeof findExceptionListRequestQuery, + FindExceptionListRequestQueryDecoded + >(findExceptionListRequestQuery), }, }, async (context, request, response) => { @@ -53,7 +54,7 @@ export const findExceptionListRoute = (router: ListsPluginRouter): void => { sortField, sortOrder, }); - const [validated, errors] = validate(exceptionListItems, foundExceptionListSchema); + const [validated, errors] = validate(exceptionListItems, findExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/find_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_list_item_route.ts index 29b6ff8f6d5e5..077dd90b7323a 100644 --- a/x-pack/plugins/lists/server/routes/find_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_list_item_route.ts @@ -7,15 +7,15 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - FindListItemSchemaDecoded, - findListItemSchema, - foundListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; import { decodeCursor } from '../services/utils'; +import { + FindListItemRequestQueryDecoded, + findListItemRequestQuery, + findListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getListClient } from './utils'; @@ -27,9 +27,10 @@ export const findListItemRoute = (router: ListsPluginRouter): void => { }, path: `${LIST_ITEM_URL}/_find`, validate: { - query: buildRouteValidation<typeof findListItemSchema, FindListItemSchemaDecoded>( - findListItemSchema - ), + query: buildRouteValidation< + typeof findListItemRequestQuery, + FindListItemRequestQueryDecoded + >(findListItemRequestQuery), }, }, async (context, request, response) => { @@ -83,7 +84,7 @@ export const findListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(exceptionList, foundListItemSchema); + const [validated, errors] = validate(exceptionList, findListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/find_list_route.ts b/x-pack/plugins/lists/server/routes/find_list_route.ts index a5f07589b78a1..411fc4e17c760 100644 --- a/x-pack/plugins/lists/server/routes/find_list_route.ts +++ b/x-pack/plugins/lists/server/routes/find_list_route.ts @@ -7,11 +7,11 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { findListSchema, foundListSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; import { decodeCursor } from '../services/utils'; +import { findListRequestQuery, findListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getListClient } from './utils'; @@ -23,7 +23,7 @@ export const findListRoute = (router: ListsPluginRouter): void => { }, path: `${LIST_URL}/_find`, validate: { - query: buildRouteValidation(findListSchema), + query: buildRouteValidation(findListRequestQuery), }, }, async (context, request, response) => { @@ -68,7 +68,7 @@ export const findListRoute = (router: ListsPluginRouter): void => { sortField, sortOrder, }); - const [validated, errors] = validate(exceptionList, foundListSchema); + const [validated, errors] = validate(exceptionList, findListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/find_lists_by_size_route.ts b/x-pack/plugins/lists/server/routes/find_lists_by_size_route.ts index 9ea066e3511b8..1a6af1710ea61 100644 --- a/x-pack/plugins/lists/server/routes/find_lists_by_size_route.ts +++ b/x-pack/plugins/lists/server/routes/find_lists_by_size_route.ts @@ -7,7 +7,6 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { findListSchema, foundListsBySizeSchema } from '@kbn/securitysolution-io-ts-list-types'; import { FIND_LISTS_BY_SIZE, MAXIMUM_SMALL_IP_RANGE_VALUE_LIST_DASH_SIZE, @@ -17,6 +16,7 @@ import { chunk } from 'lodash'; import type { ListsPluginRouter } from '../types'; import { decodeCursor } from '../services/utils'; +import { findListsBySizeRequestQuery, findListsBySizeResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getListClient } from './utils'; @@ -28,7 +28,7 @@ export const findListsBySizeRoute = (router: ListsPluginRouter): void => { }, path: `${FIND_LISTS_BY_SIZE}`, validate: { - query: buildRouteValidation(findListSchema), + query: buildRouteValidation(findListsBySizeRequestQuery), }, }, async (context, request, response) => { @@ -142,7 +142,7 @@ export const findListsBySizeRoute = (router: ListsPluginRouter): void => { const smallLists = valueLists.data.filter((valueList, index) => listBooleans[index]); const largeLists = valueLists.data.filter((valueList, index) => !listBooleans[index]); - const [validated, errors] = validate({ largeLists, smallLists }, foundListsBySizeSchema); + const [validated, errors] = validate({ largeLists, smallLists }, findListsBySizeResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/get_exception_filter_route.ts b/x-pack/plugins/lists/server/routes/get_exception_filter_route.ts index b06076e0fbbef..1577040c9beb6 100644 --- a/x-pack/plugins/lists/server/routes/get_exception_filter_route.ts +++ b/x-pack/plugins/lists/server/routes/get_exception_filter_route.ts @@ -10,12 +10,12 @@ import { CreateExceptionListItemSchema, ExceptionListItemSchema, FoundExceptionListItemSchema, - getExceptionFilterSchema, } from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_FILTER } from '@kbn/securitysolution-list-constants'; import { buildExceptionFilter } from '../services/exception_lists/build_exception_filter'; import { ListsPluginRouter } from '../types'; +import { getExceptionFilterRequest } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -27,7 +27,7 @@ export const getExceptionFilterRoute = (router: ListsPluginRouter): void => { }, path: `${EXCEPTION_FILTER}`, validate: { - body: buildRouteValidation(getExceptionFilterSchema), + body: buildRouteValidation(getExceptionFilterRequest), }, }, async (context, request, response) => { diff --git a/x-pack/plugins/lists/server/routes/import_exceptions_route.ts b/x-pack/plugins/lists/server/routes/import_exceptions_route.ts index 955e2debdea27..71c269880057a 100644 --- a/x-pack/plugins/lists/server/routes/import_exceptions_route.ts +++ b/x-pack/plugins/lists/server/routes/import_exceptions_route.ts @@ -9,13 +9,16 @@ import { extname } from 'path'; import { schema } from '@kbn/config-schema'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { importExceptionsResponseSchema } from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import { validate } from '@kbn/securitysolution-io-ts-utils'; -import { ImportQuerySchemaDecoded, importQuerySchema } from '@kbn/securitysolution-io-ts-types'; import type { ListsPluginRouter } from '../types'; import { ConfigType } from '../config'; +import { + ImportExceptionsRequestQueryDecoded, + importExceptionsRequestQuery, + importExceptionsResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; @@ -37,9 +40,10 @@ export const importExceptionsRoute = (router: ListsPluginRouter, config: ConfigT path: `${EXCEPTION_LIST_URL}/_import`, validate: { body: schema.any(), // validation on file object is accomplished later in the handler. - query: buildRouteValidation<typeof importQuerySchema, ImportQuerySchemaDecoded>( - importQuerySchema - ), + query: buildRouteValidation< + typeof importExceptionsRequestQuery, + ImportExceptionsRequestQueryDecoded + >(importExceptionsRequestQuery), }, }, async (context, request, response) => { @@ -63,7 +67,7 @@ export const importExceptionsRoute = (router: ListsPluginRouter, config: ConfigT overwrite: request.query.overwrite, }); - const [validated, errors] = validate(importsSummary, importExceptionsResponseSchema); + const [validated, errors] = validate(importsSummary, importExceptionsResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); diff --git a/x-pack/plugins/lists/server/routes/import_list_item_route.ts b/x-pack/plugins/lists/server/routes/import_list_item_route.ts index 0af6035e40b5d..5155a32cb2441 100644 --- a/x-pack/plugins/lists/server/routes/import_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/import_list_item_route.ts @@ -8,11 +8,11 @@ import { schema } from '@kbn/config-schema'; import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { importListItemQuerySchema, listSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; import { ConfigType } from '../config'; +import { importListItemRequestQuery, importListItemResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; import { createStreamFromBuffer } from './utils/create_stream_from_buffer'; @@ -36,7 +36,7 @@ export const importListItemRoute = (router: ListsPluginRouter, config: ConfigTyp path: `${LIST_ITEM_URL}/_import`, validate: { body: schema.buffer(), - query: buildRouteValidation(importListItemQuerySchema), + query: buildRouteValidation(importListItemRequestQuery), }, }, async (context, request, response) => { @@ -70,7 +70,7 @@ export const importListItemRoute = (router: ListsPluginRouter, config: ConfigTyp version: 1, }); - const [validated, errors] = validate(list, listSchema); + const [validated, errors] = validate(list, importListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { @@ -92,7 +92,7 @@ export const importListItemRoute = (router: ListsPluginRouter, config: ConfigTyp statusCode: 400, }); } - const [validated, errors] = validate(importedList, listSchema); + const [validated, errors] = validate(importedList, importListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/patch_list_item_route.ts b/x-pack/plugins/lists/server/routes/patch_list_item_route.ts index 45d02f5c9d3ac..c4496197727e4 100644 --- a/x-pack/plugins/lists/server/routes/patch_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/patch_list_item_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listItemSchema, patchListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { patchListItemRequest, patchListItemResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const patchListItemRoute = (router: ListsPluginRouter): void => { }, path: LIST_ITEM_URL, validate: { - body: buildRouteValidation(patchListItemSchema), + body: buildRouteValidation(patchListItemRequest), }, }, async (context, request, response) => { @@ -44,7 +44,7 @@ export const patchListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(listItem, listItemSchema); + const [validated, errors] = validate(listItem, patchListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/patch_list_route.ts b/x-pack/plugins/lists/server/routes/patch_list_route.ts index 6b23fb1da8978..41f9e1c815e54 100644 --- a/x-pack/plugins/lists/server/routes/patch_list_route.ts +++ b/x-pack/plugins/lists/server/routes/patch_list_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listSchema, patchListSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { patchListRequest, patchListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const patchListRoute = (router: ListsPluginRouter): void => { }, path: LIST_URL, validate: { - body: buildRouteValidation(patchListSchema), + body: buildRouteValidation(patchListRequest), }, }, async (context, request, response) => { @@ -39,7 +39,7 @@ export const patchListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(list, listSchema); + const [validated, errors] = validate(list, patchListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts index 053e74dee48c8..3db0aaf377893 100644 --- a/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - ReadEndpointListItemSchemaDecoded, - exceptionListItemSchema, - readEndpointListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + ReadEndpointListItemRequestQueryDecoded, + readEndpointListItemRequestQuery, + readEndpointListItemResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const readEndpointListItemRoute = (router: ListsPluginRouter): void => { path: ENDPOINT_LIST_ITEM_URL, validate: { query: buildRouteValidation< - typeof readEndpointListItemSchema, - ReadEndpointListItemSchemaDecoded - >(readEndpointListItemSchema), + typeof readEndpointListItemRequestQuery, + ReadEndpointListItemRequestQueryDecoded + >(readEndpointListItemRequestQuery), }, }, async (context, request, response) => { @@ -53,7 +53,7 @@ export const readEndpointListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(exceptionListItem, exceptionListItemSchema); + const [validated, errors] = validate(exceptionListItem, readEndpointListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts index 7ea8c02be96db..244587b4a06bb 100644 --- a/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - ReadExceptionListItemSchemaDecoded, - exceptionListItemSchema, - readExceptionListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + ReadExceptionListItemRequestQueryDecoded, + readExceptionListItemRequestQuery, + readExceptionListItemResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const readExceptionListItemRoute = (router: ListsPluginRouter): void => { path: EXCEPTION_LIST_ITEM_URL, validate: { query: buildRouteValidation< - typeof readExceptionListItemSchema, - ReadExceptionListItemSchemaDecoded - >(readExceptionListItemSchema), + typeof readExceptionListItemRequestQuery, + ReadExceptionListItemRequestQueryDecoded + >(readExceptionListItemRequestQuery), }, }, async (context, request, response) => { @@ -54,7 +54,7 @@ export const readExceptionListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(exceptionListItem, exceptionListItemSchema); + const [validated, errors] = validate(exceptionListItem, readExceptionListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/read_exception_list_route.ts b/x-pack/plugins/lists/server/routes/read_exception_list_route.ts index 22ef6e636720f..b35dde0ae0b49 100644 --- a/x-pack/plugins/lists/server/routes/read_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/read_exception_list_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - ReadExceptionListSchemaDecoded, - exceptionListSchema, - readExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + ReadExceptionListRequestQueryDecoded, + readExceptionListRequestQuery, + readExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -31,9 +31,10 @@ export const readExceptionListRoute = (router: ListsPluginRouter): void => { }, path: EXCEPTION_LIST_URL, validate: { - query: buildRouteValidation<typeof readExceptionListSchema, ReadExceptionListSchemaDecoded>( - readExceptionListSchema - ), + query: buildRouteValidation< + typeof readExceptionListRequestQuery, + ReadExceptionListRequestQueryDecoded + >(readExceptionListRequestQuery), }, }, async (context, request, response) => { @@ -53,7 +54,7 @@ export const readExceptionListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(exceptionList, exceptionListSchema); + const [validated, errors] = validate(exceptionList, readExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/read_list_index_route.ts b/x-pack/plugins/lists/server/routes/read_list_index_route.ts index 061c8486db358..cd33c12371b39 100644 --- a/x-pack/plugins/lists/server/routes/read_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_index_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listItemIndexExistSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_INDEX } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { readListIndexResponse } from '../../common/api'; import { buildSiemResponse } from './utils'; @@ -36,7 +36,7 @@ export const readListIndexRoute = (router: ListsPluginRouter): void => { if (listIndexExists || listItemIndexExists) { const [validated, errors] = validate( { list_index: listIndexExists, list_item_index: listItemIndexExists }, - listItemIndexExistSchema + readListIndexResponse ); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); diff --git a/x-pack/plugins/lists/server/routes/read_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_list_item_route.ts index a663cfe9b8d08..cb16d0d5f2df4 100644 --- a/x-pack/plugins/lists/server/routes/read_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - listItemArraySchema, - listItemSchema, - readListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + readListItemArrayResponse, + readListItemRequestQuery, + readListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -28,7 +28,7 @@ export const readListItemRoute = (router: ListsPluginRouter): void => { }, path: LIST_ITEM_URL, validate: { - query: buildRouteValidation(readListItemSchema), + query: buildRouteValidation(readListItemRequestQuery), }, }, async (context, request, response) => { @@ -44,7 +44,7 @@ export const readListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(listItem, listItemSchema); + const [validated, errors] = validate(listItem, readListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { @@ -70,7 +70,7 @@ export const readListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(listItem, listItemArraySchema); + const [validated, errors] = validate(listItem, readListItemArrayResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/read_list_route.ts b/x-pack/plugins/lists/server/routes/read_list_route.ts index 86761b5c98835..583db5c065b62 100644 --- a/x-pack/plugins/lists/server/routes/read_list_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listSchema, readListSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { readListRequestQuery, readListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const readListRoute = (router: ListsPluginRouter): void => { }, path: LIST_URL, validate: { - query: buildRouteValidation(readListSchema), + query: buildRouteValidation(readListRequestQuery), }, }, async (context, request, response) => { @@ -39,7 +39,7 @@ export const readListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(list, listSchema); + const [validated, errors] = validate(list, readListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/summary_exception_list_route.ts b/x-pack/plugins/lists/server/routes/summary_exception_list_route.ts index f44161a25d372..b9c1814485b22 100644 --- a/x-pack/plugins/lists/server/routes/summary_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/summary_exception_list_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - SummaryExceptionListSchemaDecoded, - exceptionListSummarySchema, - summaryExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + SummaryExceptionListRequestQueryDecoded, + summaryExceptionListRequestQuery, + summaryExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const summaryExceptionListRoute = (router: ListsPluginRouter): void => { path: `${EXCEPTION_LIST_URL}/summary`, validate: { query: buildRouteValidation< - typeof summaryExceptionListSchema, - SummaryExceptionListSchemaDecoded - >(summaryExceptionListSchema), + typeof summaryExceptionListRequestQuery, + SummaryExceptionListRequestQueryDecoded + >(summaryExceptionListRequestQuery), }, }, async (context, request, response) => { @@ -55,7 +55,10 @@ export const summaryExceptionListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(exceptionListSummary, exceptionListSummarySchema); + const [validated, errors] = validate( + exceptionListSummary, + summaryExceptionListResponse + ); if (errors != null) { return response.ok({ body: exceptionListSummary }); } else { diff --git a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts index e1e117f6c5604..f7af2aa3bff48 100644 --- a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - UpdateEndpointListItemSchemaDecoded, - exceptionListItemSchema, - updateEndpointListItemSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + UpdateEndpointListItemRequestDecoded, + updateEndpointListItemRequest, + updateEndpointListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -29,9 +29,9 @@ export const updateEndpointListItemRoute = (router: ListsPluginRouter): void => path: ENDPOINT_LIST_ITEM_URL, validate: { body: buildRouteValidation< - typeof updateEndpointListItemSchema, - UpdateEndpointListItemSchemaDecoded - >(updateEndpointListItemSchema), + typeof updateEndpointListItemRequest, + UpdateEndpointListItemRequestDecoded + >(updateEndpointListItemRequest), }, }, async (context, request, response) => { @@ -77,7 +77,7 @@ export const updateEndpointListItemRoute = (router: ListsPluginRouter): void => }); } } else { - const [validated, errors] = validate(exceptionListItem, exceptionListItemSchema); + const [validated, errors] = validate(exceptionListItem, updateEndpointListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts index 00ecb1a8e32a0..55c1105b63c2d 100644 --- a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts @@ -7,15 +7,15 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - UpdateExceptionListItemSchemaDecoded, - exceptionListItemSchema, - updateExceptionListItemSchema, - updateExceptionListItemValidate, -} from '@kbn/securitysolution-io-ts-list-types'; +import { updateExceptionListItemValidate } from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + UpdateExceptionListItemRequestDecoded, + updateExceptionListItemRequest, + updateExceptionListItemResponse, +} from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -30,9 +30,9 @@ export const updateExceptionListItemRoute = (router: ListsPluginRouter): void => path: EXCEPTION_LIST_ITEM_URL, validate: { body: buildRouteValidation< - typeof updateExceptionListItemSchema, - UpdateExceptionListItemSchemaDecoded - >(updateExceptionListItemSchema), + typeof updateExceptionListItemRequest, + UpdateExceptionListItemRequestDecoded + >(updateExceptionListItemRequest), }, }, async (context, request, response) => { @@ -93,7 +93,10 @@ export const updateExceptionListItemRoute = (router: ListsPluginRouter): void => }); } } else { - const [validated, errors] = validate(exceptionListItem, exceptionListItemSchema); + const [validated, errors] = validate( + exceptionListItem, + updateExceptionListItemResponse + ); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/update_exception_list_route.ts b/x-pack/plugins/lists/server/routes/update_exception_list_route.ts index b41a43a0f7c6d..0d739d89f24d3 100644 --- a/x-pack/plugins/lists/server/routes/update_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/update_exception_list_route.ts @@ -7,14 +7,14 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { - UpdateExceptionListSchemaDecoded, - exceptionListSchema, - updateExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { + UpdateExceptionListRequestDecoded, + updateExceptionListRequest, + updateExceptionListResponse, +} from '../../common/api'; import { buildRouteValidation, @@ -32,9 +32,9 @@ export const updateExceptionListRoute = (router: ListsPluginRouter): void => { path: EXCEPTION_LIST_URL, validate: { body: buildRouteValidation< - typeof updateExceptionListSchema, - UpdateExceptionListSchemaDecoded - >(updateExceptionListSchema), + typeof updateExceptionListRequest, + UpdateExceptionListRequestDecoded + >(updateExceptionListRequest), }, }, async (context, request, response) => { @@ -79,7 +79,7 @@ export const updateExceptionListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(list, exceptionListSchema); + const [validated, errors] = validate(list, updateExceptionListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/update_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_list_item_route.ts index 37c9848f9ddcd..d05f68bf05262 100644 --- a/x-pack/plugins/lists/server/routes/update_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_list_item_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listItemSchema, updateListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { updateListItemRequest, updateListItemResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const updateListItemRoute = (router: ListsPluginRouter): void => { }, path: LIST_ITEM_URL, validate: { - body: buildRouteValidation(updateListItemSchema), + body: buildRouteValidation(updateListItemRequest), }, }, async (context, request, response) => { @@ -44,7 +44,7 @@ export const updateListItemRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(listItem, listItemSchema); + const [validated, errors] = validate(listItem, updateListItemResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/lists/server/routes/update_list_route.ts b/x-pack/plugins/lists/server/routes/update_list_route.ts index bbf49df7e689a..b2fe4f49950ad 100644 --- a/x-pack/plugins/lists/server/routes/update_list_route.ts +++ b/x-pack/plugins/lists/server/routes/update_list_route.ts @@ -7,10 +7,10 @@ import { validate } from '@kbn/securitysolution-io-ts-utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { listSchema, updateListSchema } from '@kbn/securitysolution-io-ts-list-types'; import { LIST_URL } from '@kbn/securitysolution-list-constants'; import type { ListsPluginRouter } from '../types'; +import { updateListRequest, updateListResponse } from '../../common/api'; import { buildRouteValidation, buildSiemResponse } from './utils'; @@ -24,7 +24,7 @@ export const updateListRoute = (router: ListsPluginRouter): void => { }, path: LIST_URL, validate: { - body: buildRouteValidation(updateListSchema), + body: buildRouteValidation(updateListRequest), }, }, async (context, request, response) => { @@ -39,7 +39,7 @@ export const updateListRoute = (router: ListsPluginRouter): void => { statusCode: 404, }); } else { - const [validated, errors] = validate(list, listSchema); + const [validated, errors] = validate(list, updateListResponse); if (errors != null) { return siemResponse.error({ body: errors, statusCode: 500 }); } else { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx index 58cea7e80f6b0..831839675591d 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/feature_importance/decision_path_classification.tsx @@ -41,7 +41,9 @@ export const ClassificationDecisionPath: FC<ClassificationDecisionPathProps> = ( baseline, }) => { const [currentClass, setCurrentClass] = useState<string>( - getStringBasedClassName(topClasses[0].class_name) + Array.isArray(topClasses) && topClasses.length > 0 + ? getStringBasedClassName(topClasses[0].class_name) + : '' ); const selectedClass = topClasses.find( (t) => getStringBasedClassName(t.class_name) === getStringBasedClassName(currentClass) diff --git a/x-pack/plugins/observability_onboarding/server/plugin.ts b/x-pack/plugins/observability_onboarding/server/plugin.ts index 2b58fa82859bf..9dc78fea2c6d5 100644 --- a/x-pack/plugins/observability_onboarding/server/plugin.ts +++ b/x-pack/plugins/observability_onboarding/server/plugin.ts @@ -74,6 +74,7 @@ export class ObservabilityOnboardingPlugin repository: getObservabilityOnboardingServerRouteRepository(), plugins: resourcePlugins, config, + kibanaVersion: this.initContext.env.packageInfo.version, services: { esLegacyConfigService: this.esLegacyConfigService, }, diff --git a/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts b/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts index a186c0c5d1594..b71292b94aa93 100644 --- a/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts +++ b/x-pack/plugins/observability_onboarding/server/routes/custom_logs/route.ts @@ -16,8 +16,6 @@ import { getHasLogs } from './get_has_logs'; import { getObservabilityOnboardingState } from './get_observability_onboarding_state'; import { saveObservabilityOnboardingState } from './save_observability_onboarding_state'; -const ELASTIC_AGENT_VERSION = '8.8.0'; // This should be defined from a source with the latest public release - const logMonitoringPrivilegesRoute = createObservabilityOnboardingServerRoute({ endpoint: 'GET /internal/observability_onboarding/custom_logs/privileges', options: { tags: [] }, @@ -46,7 +44,7 @@ const installShipperSetupRoute = createObservabilityOnboardingServerRoute({ scriptDownloadUrl: string; elasticAgentVersion: string; }> { - const { core, plugins } = resources; + const { core, plugins, kibanaVersion } = resources; const coreStart = await core.start(); const kibanaUrl = @@ -59,7 +57,7 @@ const installShipperSetupRoute = createObservabilityOnboardingServerRoute({ return { apiEndpoint, scriptDownloadUrl, - elasticAgentVersion: ELASTIC_AGENT_VERSION, + elasticAgentVersion: kibanaVersion, }; }, }); diff --git a/x-pack/plugins/observability_onboarding/server/routes/register_routes.ts b/x-pack/plugins/observability_onboarding/server/routes/register_routes.ts index 26a670b8f0ee5..d9078819b2ae3 100644 --- a/x-pack/plugins/observability_onboarding/server/routes/register_routes.ts +++ b/x-pack/plugins/observability_onboarding/server/routes/register_routes.ts @@ -25,6 +25,7 @@ interface RegisterRoutes { logger: Logger; plugins: ObservabilityOnboardingRouteHandlerResources['plugins']; config: ObservabilityOnboardingConfig; + kibanaVersion: string; services: { esLegacyConfigService: EsLegacyConfigService; }; @@ -36,6 +37,7 @@ export function registerRoutes({ logger, plugins, config, + kibanaVersion, services, }: RegisterRoutes) { const routes = Object.values(repository); @@ -82,6 +84,7 @@ export function registerRoutes({ }, }, config, + kibanaVersion, services, })) as any; diff --git a/x-pack/plugins/observability_onboarding/server/routes/types.ts b/x-pack/plugins/observability_onboarding/server/routes/types.ts index 5a1defdde16bc..893e7558e9a72 100644 --- a/x-pack/plugins/observability_onboarding/server/routes/types.ts +++ b/x-pack/plugins/observability_onboarding/server/routes/types.ts @@ -33,6 +33,7 @@ export interface ObservabilityOnboardingRouteHandlerResources { start: () => Promise<CoreStart>; }; config: ObservabilityOnboardingConfig; + kibanaVersion: string; services: { esLegacyConfigService: EsLegacyConfigService; }; diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts index fab5a165ad47d..f85587dc40d7d 100644 --- a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts +++ b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts @@ -11,10 +11,19 @@ import { ProtectionModes } from '../types'; /** * Return a new default `PolicyConfig` for platinum and above licenses */ -export const policyFactory = (license = '', cloud = false): PolicyConfig => { +export const policyFactory = ( + license = '', + cloud = false, + licenseUid = '', + clusterUuid = '', + clusterName = '' +): PolicyConfig => { return { meta: { license, + license_uid: licenseUid, + cluster_uuid: clusterUuid, + cluster_name: clusterName, cloud, }, windows: { diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts b/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts index e6e8efc21ee25..1b01d477f1995 100644 --- a/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts +++ b/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts @@ -125,7 +125,7 @@ describe('Policy Config helpers', () => { // This constant makes sure that if the type `PolicyConfig` is ever modified, // the logic for disabling protections is also modified due to type check. export const eventsOnlyPolicy: PolicyConfig = { - meta: { license: '', cloud: false }, + meta: { license: '', cloud: false, license_uid: '', cluster_name: '', cluster_uuid: '' }, windows: { events: { credential_access: true, diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/plugins/security_solution/common/endpoint/types/index.ts index 5f4ddb29aaf8e..eaafc26878070 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/index.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/index.ts @@ -942,6 +942,9 @@ export interface PolicyConfig { meta: { license: string; cloud: boolean; + license_uid: string; + cluster_uuid: string; + cluster_name: string; }; windows: { advanced?: { diff --git a/x-pack/plugins/security_solution/common/license/license.ts b/x-pack/plugins/security_solution/common/license/license.ts index 0054835d6d779..0e585e02d2b57 100644 --- a/x-pack/plugins/security_solution/common/license/license.ts +++ b/x-pack/plugins/security_solution/common/license/license.ts @@ -44,6 +44,12 @@ export class LicenseService { : ''; } + public getLicenseUID() { + return this.licenseInformation && this.licenseInformation.uid + ? this.licenseInformation.uid + : ''; + } + public isAtLeast(level: LicenseType): boolean { return isAtLeast(this.licenseInformation, level); } diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_preview_panel_rule_preview.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_preview_panel_rule_preview.cy.ts new file mode 100644 index 0000000000000..1795a2e623802 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_preview_panel_rule_preview.cy.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { expandFirstAlertExpandableFlyout } from '../../../../tasks/expandable_flyout/common'; +import { + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SECTION, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_BODY, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_CONTENT, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_CONTENT, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_CONTENT, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_FOOTER, +} from '../../../../screens/expandable_flyout/alert_details_preview_panel_rule_preview'; +import { + toggleRulePreviewAboutSection, + toggleRulePreviewDefinitionSection, + toggleRulePreviewScheduleSection, +} from '../../../../tasks/expandable_flyout/alert_details_preview_panel_rule_preview'; +import { clickRuleSummaryButton } from '../../../../tasks/expandable_flyout/alert_details_right_panel_overview_tab'; +import { cleanKibana } from '../../../../tasks/common'; +import { login, visit } from '../../../../tasks/login'; +import { createRule } from '../../../../tasks/api_calls/rules'; +import { getNewRule } from '../../../../objects/rule'; +import { ALERTS_URL } from '../../../../urls/navigation'; +import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; + +describe( + 'Alert details expandable flyout rule preview panel', + { env: { ftrConfig: { enableExperimental: ['securityFlyoutEnabled'] } } }, + () => { + const rule = getNewRule(); + + beforeEach(() => { + cleanKibana(); + login(); + createRule(rule); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + expandFirstAlertExpandableFlyout(); + clickRuleSummaryButton(); + }); + + describe('rule preview', () => { + it('should display rule preview and its sub sections', () => { + cy.log('rule preview panel'); + + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SECTION).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SECTION).should('be.visible'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_HEADER).should('be.visible'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_BODY).should('be.visible'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_FOOTER).should('be.visible'); + + cy.log('about'); + + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER) + .should('be.visible') + .and('contain.text', 'About'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_CONTENT).should('be.visible'); + toggleRulePreviewAboutSection(); + + cy.log('definition'); + + toggleRulePreviewDefinitionSection(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER) + .should('be.visible') + .and('contain.text', 'Definition'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_CONTENT).should( + 'be.visible' + ); + toggleRulePreviewDefinitionSection(); + + cy.log('schedule'); + + toggleRulePreviewScheduleSection(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER) + .should('be.visible') + .and('contain.text', 'Schedule'); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_CONTENT).should('be.visible'); + toggleRulePreviewScheduleSection(); + }); + }); + } +); diff --git a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts index 2f29461f5228f..501e6c6429ab7 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts @@ -5,6 +5,7 @@ * 2.0. */ +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, @@ -17,9 +18,8 @@ import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_EXPAND_BUTTON, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE, - DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS, - DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK, 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, @@ -42,6 +42,8 @@ import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_DETAILS, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_SESSION_PREVIEW, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL, } from '../../../../screens/expandable_flyout/alert_details_right_panel_overview_tab'; import { clickCorrelationsViewAllButton, @@ -61,10 +63,10 @@ import { getNewRule } from '../../../../objects/rule'; import { ALERTS_URL } from '../../../../urls/navigation'; import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; import { - DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_CONTENT, - DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_EVENT_TYPE_ROW, -} from '../../../../screens/expandable_flyout/alert_details_right_panel_table_tab'; -import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT } from '../../../../screens/expandable_flyout/alert_details_left_panel_entities_tab'; + DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_CONTENT, + DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS, + DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS, +} from '../../../../screens/expandable_flyout/alert_details_left_panel_entities_tab'; describe( 'Alert details expandable flyout right panel overview tab', @@ -98,9 +100,9 @@ describe( cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE) .should('be.visible') .within(() => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON) + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON) .should('be.visible') - .and('contain.text', 'View rule'); + .and('have.text', 'Rule summary'); }); cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS) .should('be.visible') @@ -191,17 +193,29 @@ describe( 'be.visible' ); - cy.log('navigate to table tab when clicking on highlighted fields view button'); - - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK) + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL) .should('be.visible') - .click(); + .and('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).click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS).should('be.visible'); - // the table component is rendered within a dom element with overflow, so Cypress isn't finding it - // this next line is a hack that scrolls to a specific element in the table - // (in the middle of it vertically) to ensure Cypress finds it - cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_EVENT_TYPE_ROW).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_CONTENT).should('be.visible'); + collapseDocumentDetailsExpandableFlyoutLeftSection(); + + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL) + .should('be.visible') + .and('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).click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS).should('be.visible'); }); }); diff --git a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts new file mode 100644 index 0000000000000..af278e6e5dd0f --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + RULE_PREVIEW_BODY_TEST_ID, + RULE_PREVIEW_ABOUT_HEADER_TEST_ID, + RULE_PREVIEW_ABOUT_CONTENT_TEST_ID, + RULE_PREVIEW_DEFINITION_HEADER_TEST_ID, + RULE_PREVIEW_DEFINITION_CONTENT_TEST_ID, + RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID, + RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID, + RULE_PREVIEW_FOOTER_TEST_ID, +} from '../../../public/flyout/preview/components/test_ids'; +import { getDataTestSubjectSelector } from '../../helpers/common'; + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SECTION = + getDataTestSubjectSelector('previewSection'); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_HEADER = + getDataTestSubjectSelector('previewSectionHeader'); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_BODY = + getDataTestSubjectSelector(RULE_PREVIEW_BODY_TEST_ID); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER = getDataTestSubjectSelector( + RULE_PREVIEW_ABOUT_HEADER_TEST_ID +); +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_CONTENT = + getDataTestSubjectSelector(RULE_PREVIEW_ABOUT_CONTENT_TEST_ID); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER = + getDataTestSubjectSelector(RULE_PREVIEW_DEFINITION_HEADER_TEST_ID); +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_CONTENT = + getDataTestSubjectSelector(RULE_PREVIEW_DEFINITION_CONTENT_TEST_ID); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER = + getDataTestSubjectSelector(RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID); +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_CONTENT = + getDataTestSubjectSelector(RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID); + +export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_FOOTER = getDataTestSubjectSelector( + RULE_PREVIEW_FOOTER_TEST_ID +); diff --git a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts index 6b036ef481956..13545395a8bba 100644 --- a/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/plugins/security_solution/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -13,14 +13,13 @@ import { DESCRIPTION_DETAILS_TEST_ID, DESCRIPTION_EXPAND_BUTTON_TEST_ID, DESCRIPTION_TITLE_TEST_ID, - DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID, + RULE_SUMMARY_BUTTON_TEST_ID, ENTITIES_CONTENT_TEST_ID, ENTITIES_HEADER_TEST_ID, ENTITIES_VIEW_ALL_BUTTON_TEST_ID, ENTITY_PANEL_CONTENT_TEST_ID, ENTITY_PANEL_HEADER_TEST_ID, HIGHLIGHTED_FIELDS_DETAILS_TEST_ID, - HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK, HIGHLIGHTED_FIELDS_TITLE_TEST_ID, INSIGHTS_CORRELATIONS_CONTENT_TEST_ID, INSIGHTS_CORRELATIONS_TITLE_TEST_ID, @@ -44,6 +43,7 @@ import { REASON_TITLE_TEST_ID, SESSION_PREVIEW_TEST_ID, VISUALIZATIONS_SECTION_HEADER_TEST_ID, + HIGHLIGHTED_FIELDS_CELL_TEST_ID, } from '../../../public/flyout/right/components/test_ids'; /* About section */ @@ -58,8 +58,8 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE = export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_DETAILS = getDataTestSubjectSelector( DESCRIPTION_DETAILS_TEST_ID ); -export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_NAVIGATE_TO_RULE_DETAILS_BUTTON = - getDataTestSubjectSelector(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID); +export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON = + getDataTestSubjectSelector(RULE_SUMMARY_BUTTON_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_EXPAND_BUTTON = getDataTestSubjectSelector(DESCRIPTION_EXPAND_BUTTON_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE = @@ -83,8 +83,11 @@ export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_HEADER_TITL getDataTestSubjectSelector(HIGHLIGHTED_FIELDS_TITLE_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_DETAILS = getDataTestSubjectSelector(HIGHLIGHTED_FIELDS_DETAILS_TEST_ID); -export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK = - getDataTestSubjectSelector(HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK); +export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_FIELD_CELL = + getDataTestSubjectSelector('fieldCell'); +export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_HIGHLIGHTED_FIELDS_TABLE_VALUE_CELL = ( + value: string +) => getDataTestSubjectSelector(`${value}-${HIGHLIGHTED_FIELDS_CELL_TEST_ID}`); export const DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON = getDataTestSubjectSelector(INVESTIGATION_GUIDE_BUTTON_TEST_ID); diff --git a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts new file mode 100644 index 0000000000000..458ba7c70e688 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.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 { + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER, + DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER, +} from '../../screens/expandable_flyout/alert_details_preview_panel_rule_preview'; + +/* About section */ + +/** + * Toggle the About Section in Rule Preview panel + */ +export const toggleRulePreviewAboutSection = () => { + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER).should('be.visible').click(); +}; + +/* Definition section */ + +/** + * Toggle the Definition Section in Rule Preview panel + */ +export const toggleRulePreviewDefinitionSection = () => { + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER) + .should('be.visible') + .click(); +}; + +/* Schedule section */ + +/** + * Toggle the Schedule Section in Rule Preview panel + */ +export const toggleRulePreviewScheduleSection = () => { + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER).scrollIntoView(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER).should('be.visible').click(); +}; diff --git a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel.ts b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel.ts index 830154666e398..350c069639870 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel.ts @@ -22,14 +22,18 @@ import { /** * Expand the left section of the document details expandable flyout by clicking on the expand icon button */ -export const expandDocumentDetailsExpandableFlyoutLeftSection = () => +export const expandDocumentDetailsExpandableFlyoutLeftSection = () => { + cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON).click(); +}; /** * Expand the left section of the document details expandable flyout by clicking on the collapse icon button */ -export const collapseDocumentDetailsExpandableFlyoutLeftSection = () => +export const collapseDocumentDetailsExpandableFlyoutLeftSection = () => { + cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).click(); +}; /** * Open the Overview tab in the document details expandable flyout right section diff --git a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts index dc00063d03e48..b8324353f2013 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -15,6 +15,8 @@ import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_VIEW_ALL_BUTTON, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_VIEW_ALL_BUTTON, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE, + DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON, } from '../../screens/expandable_flyout/alert_details_right_panel_overview_tab'; /* About section */ @@ -114,3 +116,16 @@ export const clickInvestigationGuideButton = () => { .should('be.visible') .click(); }; + +/** + * Click `Rule summary` button to open rule preview panel + */ +export const clickRuleSummaryButton = () => { + 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') + .click(); + }); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx index 88ffb7a6cbbc6..82be0711b75cc 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx @@ -217,7 +217,7 @@ function getFieldsByRuleType(ruleType?: string): EventSummaryField[] { /** This function is exported because it is used in the Exception Component to - populate the conditions with the Highlighted Fields. Additionally, the new + populate the conditions with the Highlighted Fields. Additionally, the new Alert Summary Flyout also requires access to these fields. As the Alert Summary components will undergo changes soon we will go with exporting the function only for now. @@ -255,7 +255,7 @@ interface EventCategories { * @param data The event details * @returns The event's primary category and all other categories in case there is more than one */ -function getEventCategoriesFromData(data: TimelineEventsDetailsItem[]): EventCategories { +export function getEventCategoriesFromData(data: TimelineEventsDetailsItem[]): EventCategories { const eventCategoryField = find({ category: 'event', field: 'event.category' }, data); let primaryEventCategory: string | undefined; diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx index 403d48c38850e..1e10ab18b5783 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx @@ -38,7 +38,7 @@ describe('GroupsFilterPopover', () => { /> ); - wrapper.find('[data-test-subj="groups-filter-popover-button"]').first().simulate('click'); + wrapper.find('button[data-test-subj="groups-filter-popover-button"]').first().simulate('click'); wrapper.update(); wrapper.find('EuiFilterSelectItem').first().simulate('click'); diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx b/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx index 6156a01c70485..bf367a8c57e41 100644 --- a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx @@ -25,7 +25,10 @@ describe('JobsTableFilters', () => { <JobsTableFiltersComponent securityJobs={securityJobs} onFilterChanged={onFilterChanged} /> ); - wrapper.find('[data-test-subj="show-elastic-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); expect( @@ -42,7 +45,10 @@ describe('JobsTableFilters', () => { <JobsTableFiltersComponent securityJobs={securityJobs} onFilterChanged={onFilterChanged} /> ); - wrapper.find('[data-test-subj="show-custom-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); expect( @@ -59,10 +65,16 @@ describe('JobsTableFilters', () => { <JobsTableFiltersComponent securityJobs={securityJobs} onFilterChanged={onFilterChanged} /> ); - wrapper.find('[data-test-subj="show-custom-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); - wrapper.find('[data-test-subj="show-elastic-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); expect( @@ -85,10 +97,16 @@ describe('JobsTableFilters', () => { <JobsTableFiltersComponent securityJobs={securityJobs} onFilterChanged={onFilterChanged} /> ); - wrapper.find('[data-test-subj="show-custom-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); - wrapper.find('[data-test-subj="show-custom-jobs-filter-button"]').first().simulate('click'); + wrapper + .find('button[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); wrapper.update(); expect( diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx index 9672f2563dc5a..6b662ea9e3cb8 100644 --- a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx @@ -61,7 +61,13 @@ export const TestProvidersComponent: React.FC<Props> = ({ onDragEnd = jest.fn(), cellActions = [], }) => { - const queryClient = new QueryClient(); + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, + }); return ( <I18nProvider> <MockKibanaContextProvider> diff --git a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.ts b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.ts index 1485e9434e8bf..8a35bf420a5ba 100644 --- a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.ts +++ b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.ts @@ -29,6 +29,7 @@ export const useResponderActionData = ({ tooltip: ReactNode; } => { const showEndpointResponseActionsConsole = useWithShowEndpointResponder(); + const { data: endpointHostInfo, isFetching, @@ -36,15 +37,16 @@ export const useResponderActionData = ({ } = useGetEndpointDetails(endpointId, { enabled: Boolean(endpointId) }); const [isDisabled, tooltip]: [disabled: boolean, tooltip: ReactNode] = useMemo(() => { - if (!endpointId) { - return [true, NOT_FROM_ENDPOINT_HOST_TOOLTIP]; - } - // Still loading Endpoint host info if (isFetching) { return [true, LOADING_ENDPOINT_DATA_TOOLTIP]; } + // if we got an error, and it's a 404 it means the endpoint is not from the endpoint host + if (error && error.body?.statusCode === 404) { + return [true, NOT_FROM_ENDPOINT_HOST_TOOLTIP]; + } + // if we got an error and it's a 400 with unenrolled in the error message (alerts can exist for endpoint that are no longer around) // or, // the Host status is `unenrolled` @@ -61,7 +63,7 @@ export const useResponderActionData = ({ } return [false, undefined]; - }, [endpointHostInfo, endpointId, error, isFetching]); + }, [endpointHostInfo, error, isFetching]); const handleResponseActionsClick = useCallback(() => { if (endpointHostInfo) showEndpointResponseActionsConsole(endpointHostInfo.metadata); diff --git a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_item.tsx b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_item.tsx index 21a4bebcf4a37..737a862b12809 100644 --- a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_item.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_item.tsx @@ -9,10 +9,7 @@ import React, { useMemo } from 'react'; import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; import { useUserPrivileges } from '../../../common/components/user_privileges'; -import { - isAlertFromEndpointEvent, - isTimelineEventItemAnAlert, -} from '../../../common/utils/endpoint_alert_check'; +import { isTimelineEventItemAnAlert } from '../../../common/utils/endpoint_alert_check'; import { getFieldValue } from '../host_isolation/helpers'; import type { AlertTableContextMenuItem } from '../alerts_table/types'; import { useResponderActionData } from './use_responder_action_data'; @@ -28,17 +25,13 @@ export const useResponderActionItem = ( return isTimelineEventItemAnAlert(eventDetailsData || []); }, [eventDetailsData]); - const isEndpointAlert = useMemo(() => { - return isAlertFromEndpointEvent({ data: eventDetailsData || [] }); - }, [eventDetailsData]); - const endpointId = useMemo( () => getFieldValue({ category: 'agent', field: 'agent.id' }, eventDetailsData), [eventDetailsData] ); const { handleResponseActionsClick, isDisabled, tooltip } = useResponderActionData({ - endpointId: isEndpointAlert ? endpointId : '', + endpointId, onClick, }); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/schedule_item_form/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/schedule_item_form/index.tsx index 4da7f038cf654..4dbbf1f3a9206 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/schedule_item_form/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/schedule_item_form/index.tsx @@ -179,6 +179,7 @@ export const ScheduleItem = ({ options={timeTypeOptions.filter((type) => timeTypes.includes(type.value))} onChange={onChangeTimeType} value={timeType} + aria-label={field.label} data-test-subj="timeType" {...rest} /> diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/status_icon/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/status_icon/index.tsx index b52d317a6ce82..6afb5c2560403 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/status_icon/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/status_icon/index.tsx @@ -31,7 +31,7 @@ const RuleStatusIconComponent: React.FC<RuleStatusIconProps> = ({ name, type }) const color = type === 'passive' ? theme.euiColorLightestShade : theme.euiColorPrimary; return ( <RuleStatusIconStyled> - <EuiAvatar color={color} name={type === 'valid' ? '' : name} size="l" /> + <EuiAvatar color={color} name={type === 'valid' ? '' : name} size="l" aria-label={name} /> {type === 'valid' ? <EuiIcon type="check" color={theme.euiColorEmptyShade} size="l" /> : null} </RuleStatusIconStyled> ); diff --git a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx index b841ae0723eae..d342092dd3d9d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/take_action_dropdown/index.test.tsx @@ -23,8 +23,9 @@ import { mockCasesContract } from '@kbn/cases-plugin/public/mocks'; import { initialUserPrivilegesState as mockInitialUserPrivilegesState } from '../../../common/components/user_privileges/user_privileges_context'; import { useUserPrivileges } from '../../../common/components/user_privileges'; import { - NOT_FROM_ENDPOINT_HOST_TOOLTIP, HOST_ENDPOINT_UNENROLLED_TOOLTIP, + LOADING_ENDPOINT_DATA_TOOLTIP, + NOT_FROM_ENDPOINT_HOST_TOOLTIP, } from '../endpoint_responder/translations'; import { endpointMetadataHttpMocks } from '../../../management/pages/endpoint_hosts/mocks'; import type { HttpSetup } from '@kbn/core/public'; @@ -477,17 +478,45 @@ describe('take action dropdown', () => { expect(findLaunchResponderButton()).toHaveLength(0); }); - it('should disable the button if alert NOT from a host running endpoint', async () => { + it('should enable button for non endpoint event type when defend integration present', async () => { setTypeOnEcsDataWithAgentType('filebeat'); if (defaultProps.detailsData) { defaultProps.detailsData = generateAlertDetailsDataMock() as TimelineEventsDetailsItem[]; } render(); - const consoleButton = findLaunchResponderButton().first(); + expect(findLaunchResponderButton().first().prop('disabled')).toBe(true); + expect(findLaunchResponderButton().first().prop('toolTipContent')).toEqual( + LOADING_ENDPOINT_DATA_TOOLTIP + ); + + await waitFor(() => { + expect(apiMocks.responseProvider.metadataDetails).toHaveBeenCalled(); + wrapper.update(); + + expect(findLaunchResponderButton().first().prop('disabled')).toBe(false); + expect(findLaunchResponderButton().first().prop('toolTipContent')).toEqual(undefined); + }); + }); + + it('should disable the button for non endpoint event type when defend integration not present', async () => { + setAlertDetailsDataMockToEndpointAgent(); + apiMocks.responseProvider.metadataDetails.mockImplementation(() => { + const error: Error & { body?: { statusCode: number } } = new Error(); + error.body = { statusCode: 404 }; + throw error; + }); + render(); + + await waitFor(() => { + expect(apiMocks.responseProvider.metadataDetails).toThrow(); + wrapper.update(); - expect(consoleButton.prop('disabled')).toBe(true); - expect(consoleButton.prop('toolTipContent')).toEqual(NOT_FROM_ENDPOINT_HOST_TOOLTIP); + expect(findLaunchResponderButton().first().prop('disabled')).toBe(true); + expect(findLaunchResponderButton().first().prop('toolTipContent')).toEqual( + NOT_FROM_ENDPOINT_HOST_TOOLTIP + ); + }); }); it('should disable the button if host status is unenrolled', async () => { diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx b/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx index 57d31bd2a03e5..1899c3ae33cc3 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx @@ -44,7 +44,7 @@ describe('Select Flow Direction', () => { ); wrapper - .find(`[data-test-subj="${FlowDirection.biDirectional}"]`) + .find(`button[data-test-subj="${FlowDirection.biDirectional}"]`) .first() .simulate('click', event); wrapper.update(); diff --git a/x-pack/plugins/security_solution/public/flyout/index.tsx b/x-pack/plugins/security_solution/public/flyout/index.tsx index 81ae4ca0e1e61..922c7e55219e0 100644 --- a/x-pack/plugins/security_solution/public/flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/index.tsx @@ -21,6 +21,9 @@ import { SecuritySolutionFlyoutUrlSyncProvider, useSecurityFlyoutUrlSync, } from './shared/context/url_sync'; +import type { PreviewPanelProps } from './preview'; +import { PreviewPanel, PreviewPanelKey } from './preview'; +import { PreviewPanelProvider } from './preview/context'; /** * List of all panels that will be used within the document details expandable flyout. @@ -43,6 +46,14 @@ const expandableFlyoutDocumentsPanels: ExpandableFlyoutProps['registeredPanels'] </LeftPanelProvider> ), }, + { + key: PreviewPanelKey, + component: (props) => ( + <PreviewPanelProvider {...(props as PreviewPanelProps).params}> + <PreviewPanel path={props.path as PreviewPanelProps['path']} /> + </PreviewPanelProvider> + ), + }, ]; const OuterProviders: FC = ({ children }) => { diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx new file mode 100644 index 0000000000000..a0dc9c64d76d9 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { RulePreview } from './rule_preview'; +import { PreviewPanelContext } from '../context'; +import { mockContextValue } from '../mocks/mock_preview_panel_context'; +import { mockFlyoutContextValue } from '../../shared/mocks/mock_flyout_context'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; +import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { + RULE_PREVIEW_BODY_TEST_ID, + RULE_PREVIEW_ABOUT_HEADER_TEST_ID, + RULE_PREVIEW_ABOUT_CONTENT_TEST_ID, + RULE_PREVIEW_DEFINITION_HEADER_TEST_ID, + RULE_PREVIEW_DEFINITION_CONTENT_TEST_ID, + RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID, + RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID, +} from './test_ids'; + +const mockUseRuleWithFallback = useRuleWithFallback as jest.Mock; +jest.mock('../../../detection_engine/rule_management/logic/use_rule_with_fallback'); + +const contextValue = { + ...mockContextValue, + ruleId: 'rule id', +}; +describe('<RulePreview />', () => { + it('should render rule preview and its sub sections', () => { + mockUseRuleWithFallback.mockReturnValue({ + rule: { name: 'rule name', description: 'rule description' }, + }); + const { getByTestId } = render( + <ExpandableFlyoutContext.Provider value={mockFlyoutContextValue}> + <PreviewPanelContext.Provider value={contextValue}> + <RulePreview /> + </PreviewPanelContext.Provider> + </ExpandableFlyoutContext.Provider> + ); + expect(getByTestId(RULE_PREVIEW_BODY_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_ABOUT_HEADER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_ABOUT_CONTENT_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_DEFINITION_HEADER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_DEFINITION_CONTENT_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID)).toBeInTheDocument(); + }); + + it('should not render rule preview when rule is null', () => { + mockUseRuleWithFallback.mockReturnValue({}); + const { queryByTestId } = render( + <ExpandableFlyoutContext.Provider value={mockFlyoutContextValue}> + <PreviewPanelContext.Provider value={contextValue}> + <RulePreview /> + </PreviewPanelContext.Provider> + </ExpandableFlyoutContext.Provider> + ); + expect(queryByTestId(RULE_PREVIEW_BODY_TEST_ID)).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx new file mode 100644 index 0000000000000..8090fe263beb5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx @@ -0,0 +1,88 @@ +/* + * Copyright 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, { memo, useState, useEffect } from 'react'; +import { + EuiTitle, + EuiText, + EuiHorizontalRule, + EuiSpacer, + EuiPanel, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { usePreviewPanelContext } from '../context'; +import { ExpandableSection } from '../../right/components/expandable_section'; +import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import type { Rule } from '../../../detection_engine/rule_management/logic'; +import { + RULE_PREVIEW_BODY_TEST_ID, + RULE_PREVIEW_ABOUT_TEST_ID, + RULE_PREVIEW_DEFINITION_TEST_ID, + RULE_PREVIEW_SCHEDULE_TEST_ID, +} from './test_ids'; +import { + RULE_PREVIEW_ABOUT_TEXT, + RULE_PREVIEW_DEFINITION_TEXT, + RULE_PREVIEW_SCHEDULE_TEXT, +} from './translations'; + +/** + * Rule summary on a preview panel on top of the right section of expandable flyout + */ +export const RulePreview: React.FC = memo(() => { + const { ruleId } = usePreviewPanelContext(); + const [rule, setRule] = useState<Rule | null>(null); + + const { rule: maybeRule, loading } = useRuleWithFallback(ruleId ?? ''); + + // persist rule until refresh is complete + useEffect(() => { + if (maybeRule != null) { + setRule(maybeRule); + } + }, [maybeRule]); + + if (loading) { + return <EuiLoadingSpinner />; + } + + return rule ? ( + <EuiPanel hasShadow={false} data-test-subj={RULE_PREVIEW_BODY_TEST_ID}> + <EuiTitle> + <h6>{rule.name}</h6> + </EuiTitle> + <EuiHorizontalRule /> + <ExpandableSection + title={RULE_PREVIEW_ABOUT_TEXT} + expanded + data-test-subj={RULE_PREVIEW_ABOUT_TEST_ID} + > + <EuiText size="s">{rule.description}</EuiText> + <EuiSpacer size="s" /> + {'About'} + </ExpandableSection> + <EuiSpacer size="m" /> + <ExpandableSection + title={RULE_PREVIEW_DEFINITION_TEXT} + expanded={false} + data-test-subj={RULE_PREVIEW_DEFINITION_TEST_ID} + > + {'Definition'} + </ExpandableSection> + <EuiSpacer size="m" /> + <ExpandableSection + title={RULE_PREVIEW_SCHEDULE_TEXT} + expanded={false} + data-test-subj={RULE_PREVIEW_SCHEDULE_TEST_ID} + > + {'Schedule'} + </ExpandableSection> + </EuiPanel> + ) : null; +}); + +RulePreview.displayName = 'RulePreview'; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx new file mode 100644 index 0000000000000..6a300c42976c9 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render } from '@testing-library/react'; +import React from 'react'; +import { TestProviders } from '../../../common/mock'; +import { mockContextValue } from '../mocks/mock_preview_panel_context'; +import { PreviewPanelContext } from '../context'; +import { RULE_PREVIEW_FOOTER_TEST_ID, RULE_PREVIEW_NAVIGATE_TO_RULE_TEST_ID } from './test_ids'; +import { RulePreviewFooter } from './rule_preview_footer'; + +const contextValue = { + ...mockContextValue, + ruleId: 'rule id', +}; + +describe('<RulePreviewFooter />', () => { + it('renders rule details link correctly when ruleId is available', () => { + const { getByTestId } = render( + <TestProviders> + <PreviewPanelContext.Provider value={contextValue}> + <RulePreviewFooter /> + </PreviewPanelContext.Provider> + </TestProviders> + ); + + expect(getByTestId(RULE_PREVIEW_FOOTER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_PREVIEW_NAVIGATE_TO_RULE_TEST_ID)).toBeInTheDocument(); + }); + + it('should not render rule details link when ruleId is not available', () => { + const { queryByTestId } = render( + <TestProviders> + <PreviewPanelContext.Provider value={mockContextValue}> + <RulePreviewFooter /> + </PreviewPanelContext.Provider> + </TestProviders> + ); + + expect(queryByTestId(RULE_PREVIEW_FOOTER_TEST_ID)).not.toBeInTheDocument(); + expect(queryByTestId(RULE_PREVIEW_NAVIGATE_TO_RULE_TEST_ID)).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx new file mode 100644 index 0000000000000..161a28c53137d --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiFlyoutFooter } from '@elastic/eui'; +import { usePreviewPanelContext } from '../context'; +import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; +import { SHOW_RULE_DETAILS } from './translations'; +import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; +import { RULE_PREVIEW_FOOTER_TEST_ID } from './test_ids'; + +/** + * Footer in rule preview panel + */ +export const RulePreviewFooter: React.FC = memo(() => { + const { scopeId, eventId, ruleId } = usePreviewPanelContext(); + + return ruleId ? ( + <EuiFlyoutFooter data-test-subj={RULE_PREVIEW_FOOTER_TEST_ID}> + <EuiFlexGroup justifyContent="center"> + <EuiFlexItem grow={false}> + <RenderRuleName + contextId={scopeId} + eventId={eventId} + fieldName={SIGNAL_RULE_NAME_FIELD_NAME} + fieldType={'string'} + isAggregatable={false} + isDraggable={false} + linkValue={ruleId} + value={SHOW_RULE_DETAILS} + openInNewTab + /> + </EuiFlexItem> + </EuiFlexGroup> + </EuiFlyoutFooter> + ) : null; +}); + +RulePreviewFooter.displayName = 'RulePreviewFooter'; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts new file mode 100644 index 0000000000000..175992ba45200 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CONTENT_TEST_ID, HEADER_TEST_ID } from '../../right/components/expandable_section'; + +/* Rule preview */ + +export const RULE_PREVIEW_BODY_TEST_ID = 'securitySolutionDocumentDetailsFlyoutRulePreviewBody'; +export const RULE_PREVIEW_ABOUT_TEST_ID = `securitySolutionDocumentDetailsFlyoutRulePreviewAboutSection`; +export const RULE_PREVIEW_ABOUT_HEADER_TEST_ID = RULE_PREVIEW_ABOUT_TEST_ID + HEADER_TEST_ID; +export const RULE_PREVIEW_ABOUT_CONTENT_TEST_ID = RULE_PREVIEW_ABOUT_TEST_ID + CONTENT_TEST_ID; +export const RULE_PREVIEW_DEFINITION_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutRulePreviewDefinitionSection'; +export const RULE_PREVIEW_DEFINITION_HEADER_TEST_ID = + RULE_PREVIEW_DEFINITION_TEST_ID + HEADER_TEST_ID; +export const RULE_PREVIEW_DEFINITION_CONTENT_TEST_ID = + RULE_PREVIEW_DEFINITION_TEST_ID + CONTENT_TEST_ID; +export const RULE_PREVIEW_SCHEDULE_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutRulePreviewScheduleSection'; +export const RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID = RULE_PREVIEW_SCHEDULE_TEST_ID + HEADER_TEST_ID; +export const RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID = + RULE_PREVIEW_SCHEDULE_TEST_ID + CONTENT_TEST_ID; +export const RULE_PREVIEW_FOOTER_TEST_ID = 'securitySolutionDocumentDetailsFlyoutRulePreviewFooter'; +export const RULE_PREVIEW_NAVIGATE_TO_RULE_TEST_ID = 'goToRuleDetails'; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/preview/components/translations.ts new file mode 100644 index 0000000000000..dce205f9f142f --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/components/translations.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const SHOW_RULE_DETAILS = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.viewRuleDetailsText', + { defaultMessage: 'Show rule details' } +); + +export const RULE_PREVIEW_ABOUT_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.rulePreviewAboutSectionText', + { defaultMessage: 'About' } +); + +export const RULE_PREVIEW_DEFINITION_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.rulePreviewDefinitionSectionText', + { defaultMessage: 'Definition' } +); + +export const RULE_PREVIEW_SCHEDULE_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.rulePreviewScheduleSectionText', + { defaultMessage: 'Schedule' } +); diff --git a/x-pack/plugins/security_solution/public/flyout/preview/context.tsx b/x-pack/plugins/security_solution/public/flyout/preview/context.tsx new file mode 100644 index 0000000000000..134036221fdf2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/context.tsx @@ -0,0 +1,72 @@ +/* + * Copyright 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, { createContext, useContext, useMemo } from 'react'; +import type { PreviewPanelProps } from '.'; + +export interface PreviewPanelContext { + /** + * Id of the document + */ + eventId: string; + /** + * Name of the index used in the parent's page + */ + indexName: string; + /** + * Maintain backwards compatibility // TODO remove when possible + */ + scopeId: string; + /** + * Rule id if preview is rule details + */ + ruleId: string; +} + +export const PreviewPanelContext = createContext<PreviewPanelContext | undefined>(undefined); + +export type PreviewPanelProviderProps = { + /** + * React components to render + */ + children: React.ReactNode; +} & Partial<PreviewPanelProps['params']>; + +export const PreviewPanelProvider = ({ + id, + indexName, + scopeId, + ruleId, + children, +}: PreviewPanelProviderProps) => { + const contextValue = useMemo( + () => + id && indexName && scopeId + ? { + eventId: id, + indexName, + scopeId, + ruleId: ruleId ?? '', + } + : undefined, + [id, indexName, scopeId, ruleId] + ); + + return ( + <PreviewPanelContext.Provider value={contextValue}>{children}</PreviewPanelContext.Provider> + ); +}; + +export const usePreviewPanelContext = (): PreviewPanelContext => { + const contextValue = useContext(PreviewPanelContext); + + if (!contextValue) { + throw new Error('PreviewPanelContext can only be used within PreviewPanelContext provider'); + } + + return contextValue; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/index.tsx b/x-pack/plugins/security_solution/public/flyout/preview/index.tsx new file mode 100644 index 0000000000000..a75e6b4890541 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/index.tsx @@ -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 React, { memo, useMemo } from 'react'; +import { css } from '@emotion/react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { panels } from './panels'; + +export type PreviewPanelPaths = 'rule-preview'; +export const PreviewPanelKey: PreviewPanelProps['key'] = 'document-details-preview'; + +export interface PreviewPanelProps extends FlyoutPanelProps { + key: 'document-details-preview'; + path?: PreviewPanelPaths[]; + params?: { + id: string; + indexName: string; + scopeId: string; + banner?: string; + ruleId?: string; + }; +} + +/** + * Preview panel to be displayed on top of the document details expandable flyout right section + */ +export const PreviewPanel: React.FC<Partial<PreviewPanelProps>> = memo(({ path }) => { + const previewPanel = useMemo(() => { + return path ? panels.find((panel) => panel.id === path[0]) : null; + }, [path]); + + if (!previewPanel) { + return null; + } + return ( + <EuiFlexGroup justifyContent="spaceBetween" direction="column" className="eui-fullHeight"> + <EuiFlexItem + css={css` + margin-top: -15px; + `} + > + {previewPanel.content} + </EuiFlexItem> + <EuiFlexItem grow={false}>{previewPanel.footer}</EuiFlexItem> + </EuiFlexGroup> + ); +}); + +PreviewPanel.displayName = 'PreviewPanel'; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_preview_panel_context.ts b/x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_preview_panel_context.ts new file mode 100644 index 0000000000000..b9a5140ce20d3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_preview_panel_context.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. + */ + +import type { PreviewPanelContext } from '../context'; + +/** + * Mock contextValue for right panel context + */ +export const mockContextValue: PreviewPanelContext = { + eventId: 'eventId', + indexName: 'index', + scopeId: 'scopeId', + ruleId: '', +}; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/panels.tsx b/x-pack/plugins/security_solution/public/flyout/preview/panels.tsx new file mode 100644 index 0000000000000..7813e92bf702a --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/panels.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { PreviewPanelPaths } from '.'; +import { RULE_PREVIEW } from './translations'; +import { RulePreview } from './components/rule_preview'; +import { RulePreviewFooter } from './components/rule_preview_footer'; + +export type PreviewPanelType = Array<{ + /** + * Id of the preview panel + */ + id: PreviewPanelPaths; + /** + * Panel name + */ + name: string; + /** + * Main body component to be rendered in the panel + */ + content: React.ReactElement; + /** + * Footer section in the panel + */ + footer: React.ReactElement; +}>; + +/** + * Array of all preview panels + */ +export const panels: PreviewPanelType = [ + { + id: 'rule-preview', + name: RULE_PREVIEW, + content: <RulePreview />, + footer: <RulePreviewFooter />, + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/translations.ts b/x-pack/plugins/security_solution/public/flyout/preview/translations.ts new file mode 100644 index 0000000000000..1db37fbb49bb8 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/preview/translations.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULE_PREVIEW = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.rulePreviewPanel', + { defaultMessage: 'Rule preview' } +); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx index d3d19ff428f8a..c0ee8c64eae81 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx @@ -8,19 +8,21 @@ import React from 'react'; import { render } from '@testing-library/react'; import { ABOUT_SECTION_CONTENT_TEST_ID, ABOUT_SECTION_HEADER_TEST_ID } from './test_ids'; +import { TestProviders } from '../../../common/mock'; import { AboutSection } from './about_section'; import { RightPanelContext } from '../context'; - -const panelContextValue = {} as unknown as RightPanelContext; +import { mockContextValue } from '../mocks/mock_right_panel_context'; jest.mock('../../../common/components/link_to'); describe('<AboutSection />', () => { it('should render the component collapsed', () => { const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <AboutSection /> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={mockContextValue}> + <AboutSection /> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(ABOUT_SECTION_HEADER_TEST_ID)).toBeInTheDocument(); @@ -28,9 +30,11 @@ describe('<AboutSection />', () => { it('should render the component expanded', () => { const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <AboutSection expanded={true} /> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={mockContextValue}> + <AboutSection expanded={true} /> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(ABOUT_SECTION_HEADER_TEST_ID)).toBeInTheDocument(); @@ -39,9 +43,11 @@ describe('<AboutSection />', () => { it('should expand the component when clicking on the arrow on header', () => { const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <AboutSection /> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={mockContextValue}> + <AboutSection /> + </RightPanelContext.Provider> + </TestProviders> ); getByTestId(ABOUT_SECTION_HEADER_TEST_ID).click(); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx index 59bb8b9bb4976..c699f765e9a32 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx @@ -10,7 +10,7 @@ import { render } from '@testing-library/react'; import { DESCRIPTION_EXPAND_BUTTON_TEST_ID, DESCRIPTION_TITLE_TEST_ID, - DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID, + RULE_SUMMARY_BUTTON_TEST_ID, } from './test_ids'; import { DOCUMENT_DESCRIPTION_COLLAPSE_BUTTON, @@ -19,6 +19,7 @@ import { RULE_DESCRIPTION_TITLE, } from './translations'; import { Description } from './description'; +import { TestProviders } from '../../../common/mock'; import { RightPanelContext } from '../context'; import { ThemeProvider } from 'styled-components'; import { getMockTheme } from '../../../common/lib/kibana/kibana_react.mock'; @@ -59,16 +60,18 @@ describe('<Description />', () => { } as unknown as RightPanelContext; const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <ThemeProvider theme={mockTheme}> - <Description /> - </ThemeProvider> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={panelContextValue}> + <ThemeProvider theme={mockTheme}> + <Description /> + </ThemeProvider> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); - expect(getByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_SUMMARY_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toHaveTextContent( DOCUMENT_DESCRIPTION_EXPAND_BUTTON @@ -81,16 +84,18 @@ describe('<Description />', () => { } as unknown as RightPanelContext; const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <ThemeProvider theme={mockTheme}> - <Description expanded={true} /> - </ThemeProvider> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={panelContextValue}> + <ThemeProvider theme={mockTheme}> + <Description expanded={true} /> + </ThemeProvider> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); - expect(getByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RULE_SUMMARY_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toHaveTextContent( DOCUMENT_DESCRIPTION_COLLAPSE_BUTTON @@ -103,11 +108,13 @@ describe('<Description />', () => { } as unknown as RightPanelContext; const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <ThemeProvider theme={mockTheme}> - <Description /> - </ThemeProvider> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={panelContextValue}> + <ThemeProvider theme={mockTheme}> + <Description /> + </ThemeProvider> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(DESCRIPTION_EXPAND_BUTTON_TEST_ID)).toHaveTextContent( @@ -119,22 +126,24 @@ describe('<Description />', () => { ); }); - it('should not render view rule button if rule name is not available', () => { + it('should not render rule preview button if rule name is not available', () => { const panelContextValue = { dataFormattedForFieldBrowser: [ruleUuid, ruleDescription], } as unknown as RightPanelContext; const { getByTestId, queryByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <ThemeProvider theme={mockTheme}> - <Description /> - </ThemeProvider> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={panelContextValue}> + <ThemeProvider theme={mockTheme}> + <Description /> + </ThemeProvider> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toHaveTextContent(RULE_DESCRIPTION_TITLE); - expect(queryByTestId(DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID)).not.toBeInTheDocument(); + expect(queryByTestId(RULE_SUMMARY_BUTTON_TEST_ID)).not.toBeInTheDocument(); }); it('should render document title if document is not an alert', () => { const panelContextValue = { @@ -142,11 +151,13 @@ describe('<Description />', () => { } as unknown as RightPanelContext; const { getByTestId } = render( - <RightPanelContext.Provider value={panelContextValue}> - <ThemeProvider theme={mockTheme}> - <Description /> - </ThemeProvider> - </RightPanelContext.Provider> + <TestProviders> + <RightPanelContext.Provider value={panelContextValue}> + <ThemeProvider theme={mockTheme}> + <Description /> + </ThemeProvider> + </RightPanelContext.Provider> + </TestProviders> ); expect(getByTestId(DESCRIPTION_TITLE_TEST_ID)).toBeInTheDocument(); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx index f8886f7d2f1f2..e1e7f937f3efa 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx @@ -7,25 +7,27 @@ import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; import type { VFC } from 'react'; -import React, { useState, useMemo } from 'react'; +import React, { useState, useMemo, useCallback } from 'react'; import { css } from '@emotion/react'; import { isEmpty } from 'lodash'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { useRightPanelContext } from '../context'; import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; import { DESCRIPTION_DETAILS_TEST_ID, DESCRIPTION_EXPAND_BUTTON_TEST_ID, DESCRIPTION_TITLE_TEST_ID, + RULE_SUMMARY_BUTTON_TEST_ID, } from './test_ids'; import { DOCUMENT_DESCRIPTION_COLLAPSE_BUTTON, DOCUMENT_DESCRIPTION_EXPAND_BUTTON, DOCUMENT_DESCRIPTION_TITLE, RULE_DESCRIPTION_TITLE, - VIEW_RULE_TEXT, + RULE_SUMMARY_TEXT, + PREVIEW_RULE_DETAILS, } from './translations'; -import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; -import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; +import { PreviewPanelKey, type PreviewPanelProps } from '../../preview'; export interface DescriptionProps { /** @@ -43,29 +45,47 @@ export interface DescriptionProps { export const Description: VFC<DescriptionProps> = ({ expanded = false }) => { const [isExpanded, setIsExpanded] = useState(expanded); - const { dataFormattedForFieldBrowser, scopeId, eventId } = useRightPanelContext(); - const { isAlert, ruleDescription, ruleId, ruleName } = useBasicDataFromDetailsData( + const { dataFormattedForFieldBrowser, scopeId, eventId, indexName } = useRightPanelContext(); + const { isAlert, ruleDescription, ruleName, ruleId } = useBasicDataFromDetailsData( dataFormattedForFieldBrowser ); + const { openPreviewPanel } = useExpandableFlyoutContext(); + const openRulePreview = useCallback(() => { + const PreviewPanelRulePreview: PreviewPanelProps['path'] = ['rule-preview']; + openPreviewPanel({ + id: PreviewPanelKey, + path: PreviewPanelRulePreview, + params: { + id: eventId, + indexName, + scopeId, + banner: { + title: PREVIEW_RULE_DETAILS, + backgroundColor: 'warning', + textColor: 'warning', + }, + ruleId, + }, + }); + }, [eventId, openPreviewPanel, indexName, scopeId, ruleId]); const viewRule = useMemo( () => - !isEmpty(ruleName) && ( + !isEmpty(ruleName) && + !isEmpty(ruleId) && ( <EuiFlexItem grow={false}> - <RenderRuleName - contextId={scopeId} - eventId={eventId} - fieldName={SIGNAL_RULE_NAME_FIELD_NAME} - fieldType={'string'} - isAggregatable={false} - isDraggable={false} - linkValue={ruleId} - value={VIEW_RULE_TEXT} - openInNewTab - /> + <EuiButtonEmpty + size="s" + iconType="arrowRight" + onClick={openRulePreview} + iconSide="right" + data-test-subj={RULE_SUMMARY_BUTTON_TEST_ID} + > + {RULE_SUMMARY_TEXT} + </EuiButtonEmpty> </EuiFlexItem> ), - [ruleName, ruleId, scopeId, eventId] + [ruleName, openRulePreview, ruleId] ); if (!dataFormattedForFieldBrowser) { @@ -82,7 +102,7 @@ export const Description: VFC<DescriptionProps> = ({ expanded = false }) => { <EuiFlexItem data-test-subj={DESCRIPTION_TITLE_TEST_ID}> <EuiTitle size="xxs"> {isAlert ? ( - <EuiFlexGroup justifyContent="spaceBetween"> + <EuiFlexGroup justifyContent="spaceBetween" alignItems="center"> <EuiFlexItem> <h5>{RULE_DESCRIPTION_TITLE}</h5> </EuiFlexItem> diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx index 0045f30cecebc..b156006a906ec 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx @@ -9,97 +9,73 @@ import React from 'react'; import { render } from '@testing-library/react'; import { RightPanelContext } from '../context'; import { HIGHLIGHTED_FIELDS_DETAILS_TEST_ID, HIGHLIGHTED_FIELDS_TITLE_TEST_ID } from './test_ids'; -import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { HighlightedFields } from './highlighted_fields'; -import { getMockTheme } from '../../../common/lib/kibana/kibana_react.mock'; -import { ThemeProvider } from 'styled-components'; +import { mockDataFormattedForFieldBrowser } from '../mocks/mock_context'; +import { useHighlightedFields } from '../hooks/use_highlighted_fields'; +import { TestProviders } from '../../../common/mock'; + +jest.mock('../hooks/use_highlighted_fields'); describe('<HighlightedFields />', () => { it('should render the component', () => { - const mockTheme = getMockTheme({ - eui: { - euiSizeL: '10px', - }, - }); - const flyoutContextValue = { - openRightPanel: jest.fn(), - } as unknown as ExpandableFlyoutContext; const panelContextValue = { - eventId: 'eventId', - indexName: 'indexName', - dataFormattedForFieldBrowser: [], - browserFields: {}, + dataFormattedForFieldBrowser: mockDataFormattedForFieldBrowser, } as unknown as RightPanelContext; + (useHighlightedFields as jest.Mock).mockReturnValue([ + { + field: 'field', + description: { + field: 'field', + values: ['value'], + }, + }, + ]); const { getByTestId } = render( - <ThemeProvider theme={mockTheme}> - <ExpandableFlyoutContext.Provider value={flyoutContextValue}> - <RightPanelContext.Provider value={panelContextValue}> - <HighlightedFields /> - </RightPanelContext.Provider> - </ExpandableFlyoutContext.Provider> - </ThemeProvider> - ); - - expect(getByTestId(HIGHLIGHTED_FIELDS_TITLE_TEST_ID)).toBeInTheDocument(); - expect(getByTestId(HIGHLIGHTED_FIELDS_DETAILS_TEST_ID)).toBeInTheDocument(); - }); - - it('should render empty component if dataFormattedForFieldBrowser is null', () => { - const flyoutContextValue = {} as unknown as ExpandableFlyoutContext; - const panelContextValue = { - eventId: 'eventId', - indexName: 'indexName', - dataFormattedForFieldBrowser: null, - browserFields: {}, - } as unknown as RightPanelContext; - - const { container } = render( - <ExpandableFlyoutContext.Provider value={flyoutContextValue}> + <TestProviders> <RightPanelContext.Provider value={panelContextValue}> <HighlightedFields /> </RightPanelContext.Provider> - </ExpandableFlyoutContext.Provider> + </TestProviders> ); - expect(container).toBeEmptyDOMElement(); + expect(getByTestId(HIGHLIGHTED_FIELDS_TITLE_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(HIGHLIGHTED_FIELDS_DETAILS_TEST_ID)).toBeInTheDocument(); }); - it('should render empty component if browserFields is null', () => { - const flyoutContextValue = {} as unknown as ExpandableFlyoutContext; + it(`should render empty component if there aren't any highlighted fields`, () => { const panelContextValue = { - eventId: 'eventId', - indexName: 'indexName', - dataFormattedForFieldBrowser: [], - browserFields: null, + dataFormattedForFieldBrowser: mockDataFormattedForFieldBrowser, } as unknown as RightPanelContext; + (useHighlightedFields as jest.Mock).mockReturnValue([]); const { container } = render( - <ExpandableFlyoutContext.Provider value={flyoutContextValue}> - <RightPanelContext.Provider value={panelContextValue}> - <HighlightedFields /> - </RightPanelContext.Provider> - </ExpandableFlyoutContext.Provider> + <RightPanelContext.Provider value={panelContextValue}> + <HighlightedFields /> + </RightPanelContext.Provider> ); expect(container).toBeEmptyDOMElement(); }); - it('should render empty component if eventId is null', () => { - const flyoutContextValue = {} as unknown as ExpandableFlyoutContext; + it('should render empty component if dataFormattedForFieldBrowser is null', () => { const panelContextValue = { - eventId: null, - indexName: 'indexName', - dataFormattedForFieldBrowser: [], - browserFields: {}, + dataFormattedForFieldBrowser: null, } as unknown as RightPanelContext; + (useHighlightedFields as jest.Mock).mockReturnValue([ + { + field: 'field', + description: { + field: 'field', + values: ['value'], + }, + }, + ]); const { container } = render( - <ExpandableFlyoutContext.Provider value={flyoutContextValue}> - <RightPanelContext.Provider value={panelContextValue}> - <HighlightedFields /> - </RightPanelContext.Provider> - </ExpandableFlyoutContext.Provider> + <RightPanelContext.Provider value={panelContextValue}> + <HighlightedFields /> + </RightPanelContext.Provider> ); expect(container).toBeEmptyDOMElement(); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx index 149547c79b14d..a0ef290b11ea8 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx @@ -6,38 +6,61 @@ */ import type { FC } from 'react'; -import React, { useCallback } from 'react'; -import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle } from '@elastic/eui'; +import React from 'react'; +import type { EuiBasicTableColumn } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiInMemoryTable, EuiPanel, EuiTitle } from '@elastic/eui'; +import { HighlightedFieldsCell } from './highlighted_fields_cell'; +import { + CellActionsMode, + SecurityCellActions, + SecurityCellActionsTrigger, +} from '../../../common/components/cell_actions'; +import type { UseHighlightedFieldsResult } from '../hooks/use_highlighted_fields'; import { HIGHLIGHTED_FIELDS_DETAILS_TEST_ID, HIGHLIGHTED_FIELDS_TITLE_TEST_ID } from './test_ids'; -import { AlertSummaryView } from '../../../common/components/event_details/alert_summary_view'; -import { HIGHLIGHTED_FIELDS_TITLE } from './translations'; +import { + HIGHLIGHTED_FIELDS_FIELD_COLUMN, + HIGHLIGHTED_FIELDS_TITLE, + HIGHLIGHTED_FIELDS_VALUE_COLUMN, +} from './translations'; import { useRightPanelContext } from '../context'; -import { RightPanelKey, RightPanelTableTabPath } from '..'; +import { useHighlightedFields } from '../hooks/use_highlighted_fields'; + +const columns: Array<EuiBasicTableColumn<UseHighlightedFieldsResult>> = [ + { + field: 'field', + name: HIGHLIGHTED_FIELDS_FIELD_COLUMN, + 'data-test-subj': 'fieldCell', + width: '125px', + }, + { + field: 'description', + name: HIGHLIGHTED_FIELDS_VALUE_COLUMN, + 'data-test-subj': 'valueCell', + render: (description: { field: string; values: string[] | null | undefined }) => ( + <SecurityCellActions + data={{ + field: description.field, + value: description.values, + }} + mode={CellActionsMode.HOVER_RIGHT} + triggerId={SecurityCellActionsTrigger.DEFAULT} + visibleCellActions={6} + > + <HighlightedFieldsCell values={description.values} field={description.field} /> + </SecurityCellActions> + ), + }, +]; /** * Component that displays the highlighted fields in the right panel under the Investigation section. - * It leverages the existing {@link AlertSummaryView} component. - * // TODO will require improvements https://github.com/elastic/security-team/issues/6428 */ export const HighlightedFields: FC = () => { - const { openRightPanel } = useExpandableFlyoutContext(); - const { eventId, indexName, dataFormattedForFieldBrowser, browserFields, scopeId } = - useRightPanelContext(); + const { dataFormattedForFieldBrowser } = useRightPanelContext(); - const goToTableTab = useCallback(() => { - openRightPanel({ - id: RightPanelKey, - path: RightPanelTableTabPath, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, indexName, openRightPanel, scopeId]); + const highlightedFields = useHighlightedFields({ dataFormattedForFieldBrowser }); - if (!dataFormattedForFieldBrowser || !browserFields || !eventId) { + if (!dataFormattedForFieldBrowser || highlightedFields.length === 0) { return null; } @@ -50,16 +73,7 @@ export const HighlightedFields: FC = () => { </EuiFlexItem> <EuiFlexItem data-test-subj={HIGHLIGHTED_FIELDS_DETAILS_TEST_ID}> <EuiPanel hasBorder hasShadow={false}> - <AlertSummaryView // TODO consider using x-pack/plugins/security_solution/public/common/components/event_details/summary_view.tsx instead if the link to the table have to be removed - data={dataFormattedForFieldBrowser} - eventId={eventId} - browserFields={browserFields} - isDraggable={false} - scopeId={scopeId} - title={''} - isReadOnly={false} // TODO: set properly - goToTable={goToTableTab} - /> + <EuiInMemoryTable items={highlightedFields} columns={columns} compressed /> </EuiPanel> </EuiFlexItem> </EuiFlexGroup> diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx new file mode 100644 index 0000000000000..67ab4ccb81679 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { + HIGHLIGHTED_FIELDS_AGENT_STATUS_CELL_TEST_ID, + HIGHLIGHTED_FIELDS_BASIC_CELL_TEST_ID, + HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID, +} from './test_ids'; +import { HighlightedFieldsCell } from './highlighted_fields_cell'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; +import { RightPanelContext } from '../context'; +import { LeftPanelInsightsTabPath, LeftPanelKey } from '../../left'; +import { TestProviders } from '../../../common/mock'; + +const flyoutContextValue = { + openLeftPanel: jest.fn(), +} as unknown as ExpandableFlyoutContext; +const panelContextValue = { + eventId: 'event id', + indexName: 'indexName', + scopeId: 'scopeId', +} as unknown as RightPanelContext; + +const renderHighlightedFieldsCell = (values: string[], field: string) => + render( + <ExpandableFlyoutContext.Provider value={flyoutContextValue}> + <RightPanelContext.Provider value={panelContextValue}> + <HighlightedFieldsCell values={values} field={field} /> + </RightPanelContext.Provider> + </ExpandableFlyoutContext.Provider> + ); + +describe('<HighlightedFieldsCell />', () => { + it('should render a basic cell', () => { + const { getByTestId } = render(<HighlightedFieldsCell values={['value']} field={'field'} />); + + expect(getByTestId(HIGHLIGHTED_FIELDS_BASIC_CELL_TEST_ID)).toBeInTheDocument(); + }); + + it('should render a link cell if field is host.name', () => { + const { getByTestId } = renderHighlightedFieldsCell(['value'], 'host.name'); + + expect(getByTestId(HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID)).toBeInTheDocument(); + }); + + it('should render a link cell if field is user.name', () => { + const { getByTestId } = renderHighlightedFieldsCell(['value'], 'user.name'); + + expect(getByTestId(HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID)).toBeInTheDocument(); + }); + + it('should open left panel when clicking on the link within a a link cell', () => { + const { getByTestId } = renderHighlightedFieldsCell(['value'], 'user.name'); + + getByTestId(HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID).click(); + expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ + id: LeftPanelKey, + path: LeftPanelInsightsTabPath, + params: { + id: panelContextValue.eventId, + indexName: panelContextValue.indexName, + scopeId: panelContextValue.scopeId, + }, + }); + }); + + it('should render agent status cell if field is agent.status', () => { + const { getByTestId } = render( + <TestProviders> + <HighlightedFieldsCell values={['value']} field={'agent.status'} /> + </TestProviders> + ); + + expect(getByTestId(HIGHLIGHTED_FIELDS_AGENT_STATUS_CELL_TEST_ID)).toBeInTheDocument(); + }); + + it('should render agent status component if override field is agent.status', () => { + const { container } = render(<HighlightedFieldsCell values={null} field={'field'} />); + + expect(container).toBeEmptyDOMElement(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx new file mode 100644 index 0000000000000..ff5ca1edaadf9 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { VFC } from 'react'; +import React, { useCallback } from 'react'; +import { EuiFlexItem, EuiLink } from '@elastic/eui'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; +import { EndpointAgentStatusById } from '../../../common/components/endpoint/endpoint_agent_status'; +import { useRightPanelContext } from '../context'; +import { + AGENT_STATUS_FIELD_NAME, + HOST_NAME_FIELD_NAME, + USER_NAME_FIELD_NAME, +} from '../../../timelines/components/timeline/body/renderers/constants'; +import { LeftPanelInsightsTabPath, LeftPanelKey } from '../../left'; +import { + HIGHLIGHTED_FIELDS_AGENT_STATUS_CELL_TEST_ID, + HIGHLIGHTED_FIELDS_BASIC_CELL_TEST_ID, + HIGHLIGHTED_FIELDS_CELL_TEST_ID, + HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID, +} from './test_ids'; + +interface LinkFieldCellProps { + /** + * Highlighted field's value to display as a EuiLink to open the expandable left panel + * (used for host name and username fields) + */ + value: string; +} + +/** + * // Currently we can use the same component for both host name and username + */ +const LinkFieldCell: VFC<LinkFieldCellProps> = ({ value }) => { + const { scopeId, eventId, indexName } = useRightPanelContext(); + const { openLeftPanel } = useExpandableFlyoutContext(); + + const goToInsightsEntities = useCallback(() => { + openLeftPanel({ + id: LeftPanelKey, + path: LeftPanelInsightsTabPath, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }, [eventId, indexName, openLeftPanel, scopeId]); + + return ( + <EuiLink onClick={goToInsightsEntities} data-test-subj={HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID}> + {value} + </EuiLink> + ); +}; + +export interface HighlightedFieldsCellProps { + /** + * Highlighted field's name used to know what component to display + */ + field: string; + /** + * Highlighted field's value to display + */ + values: string[] | null | undefined; +} + +/** + * Renders a component in the highlighted fields table cell based on the field name + */ +export const HighlightedFieldsCell: VFC<HighlightedFieldsCellProps> = ({ values, field }) => ( + <> + {values != null && + values.map((value, i) => { + return ( + <EuiFlexItem + grow={false} + key={`${i}-${value}`} + data-test-subj={`${value}-${HIGHLIGHTED_FIELDS_CELL_TEST_ID}`} + > + {field === HOST_NAME_FIELD_NAME || field === USER_NAME_FIELD_NAME ? ( + <LinkFieldCell value={value} /> + ) : field === AGENT_STATUS_FIELD_NAME ? ( + <EndpointAgentStatusById + endpointAgentId={String(value ?? '')} + data-test-subj={HIGHLIGHTED_FIELDS_AGENT_STATUS_CELL_TEST_ID} + /> + ) : ( + <span data-test-subj={HIGHLIGHTED_FIELDS_BASIC_CELL_TEST_ID}>{value}</span> + )} + </EuiFlexItem> + ); + })} + </> +); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide_button.test.tsx b/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide_button.test.tsx index c42f05efb8353..44d435adf4e62 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide_button.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide_button.test.tsx @@ -11,7 +11,7 @@ import { InvestigationGuideButton } from './investigation_guide_button'; import { RightPanelContext } from '../context'; import { INVESTIGATION_GUIDE_BUTTON_TEST_ID } from './test_ids'; import { mockContextValue } from '../mocks/mock_right_panel_context'; -import { mockFlyoutContextValue } from '../mocks/mock_flyout_context'; +import { mockFlyoutContextValue } from '../../shared/mocks/mock_flyout_context'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts index 6c5b8a12e030c..dbb613738fabd 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts @@ -31,12 +31,12 @@ export const FLYOUT_HEADER_CHAT_BUTTON_TEST_ID = 'newChatById'; export const ABOUT_SECTION_TEST_ID = 'securitySolutionDocumentDetailsFlyoutAboutSection'; export const ABOUT_SECTION_HEADER_TEST_ID = ABOUT_SECTION_TEST_ID + HEADER_TEST_ID; export const ABOUT_SECTION_CONTENT_TEST_ID = ABOUT_SECTION_TEST_ID + CONTENT_TEST_ID; +export const RULE_SUMMARY_BUTTON_TEST_ID = 'securitySolutionDocumentDetailsFlyoutRuleSummaryButton'; export const DESCRIPTION_TITLE_TEST_ID = 'securitySolutionDocumentDetailsFlyoutDescriptionTitle'; export const DESCRIPTION_DETAILS_TEST_ID = 'securitySolutionDocumentDetailsFlyoutDescriptionDetails'; export const DESCRIPTION_EXPAND_BUTTON_TEST_ID = 'securitySolutionDocumentDetailsFlyoutDescriptionExpandButton'; -export const DESCRIPTION_NAVIGATE_TO_RULE_TEST_ID = 'goToRuleDetails'; export const REASON_TITLE_TEST_ID = 'securitySolutionDocumentDetailsFlyoutReasonTitle'; export const REASON_DETAILS_TEST_ID = 'securitySolutionDocumentDetailsFlyoutReasonDetails'; export const MITRE_ATTACK_TITLE_TEST_ID = 'securitySolutionAlertDetailsFlyoutMitreAttackTitle'; @@ -53,7 +53,15 @@ export const HIGHLIGHTED_FIELDS_TITLE_TEST_ID = 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsTitle'; export const HIGHLIGHTED_FIELDS_DETAILS_TEST_ID = 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsDetails'; -export const HIGHLIGHTED_FIELDS_GO_TO_TABLE_LINK = 'summary-view-go-to-table-link'; +export const HIGHLIGHTED_FIELDS_CELL_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsCell'; +export const HIGHLIGHTED_FIELDS_BASIC_CELL_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsBasicCell'; +export const HIGHLIGHTED_FIELDS_LINKED_CELL_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsLinkedCell'; +export const HIGHLIGHTED_FIELDS_AGENT_STATUS_CELL_TEST_ID = + 'securitySolutionDocumentDetailsFlyoutHighlightedFieldsAgentStatusCell'; + export const INVESTIGATION_GUIDE_BUTTON_TEST_ID = 'securitySolutionDocumentDetailsFlyoutInvestigationGuideButton'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts index 950d2e848dfc8..bddbede16e557 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts +++ b/x-pack/plugins/security_solution/public/flyout/right/components/translations.ts @@ -45,10 +45,10 @@ export const RISK_SCORE_TITLE = i18n.translate( } ); -export const VIEW_RULE_TEXT = i18n.translate( - 'xpack.securitySolution.flyout.documentDetails.viewRuleText', +export const RULE_SUMMARY_TEXT = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.ruleSummaryText', { - defaultMessage: 'View rule', + defaultMessage: 'Rule summary', } ); @@ -68,6 +68,11 @@ export const RULE_DESCRIPTION_TITLE = i18n.translate( } ); +export const PREVIEW_RULE_DETAILS = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.previewRuleDetailsText', + { defaultMessage: 'Preview rule details' } +); + export const DOCUMENT_DESCRIPTION_TITLE = i18n.translate( 'xpack.securitySolution.flyout.documentDetails.documentDescriptionTitle', { @@ -115,6 +120,16 @@ export const HIGHLIGHTED_FIELDS_TITLE = i18n.translate( { defaultMessage: 'Highlighted fields' } ); +export const HIGHLIGHTED_FIELDS_FIELD_COLUMN = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.highlightedFields.fieldColumn', + { defaultMessage: 'Field' } +); + +export const HIGHLIGHTED_FIELDS_VALUE_COLUMN = i18n.translate( + 'xpack.securitySolution.flyout.documentDetails.highlightedFields.valueColumn', + { defaultMessage: 'Value' } +); + /* Insights section */ export const ENTITIES_TITLE = i18n.translate( diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_highlighted_fields.ts b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_highlighted_fields.ts new file mode 100644 index 0000000000000..20e036145a6ca --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/right/hooks/use_highlighted_fields.ts @@ -0,0 +1,105 @@ +/* + * Copyright 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 { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; +import { find, isEmpty } from 'lodash/fp'; +import { ALERT_RULE_TYPE } from '@kbn/rule-data-utils'; +import { isAlertFromEndpointEvent } from '../../../common/utils/endpoint_alert_check'; +import { + getEventCategoriesFromData, + getEventFieldsToDisplay, +} from '../../../common/components/event_details/get_alert_summary_rows'; + +export interface UseHighlightedFieldsParams { + /** + * An array of field objects with category and value + */ + dataFormattedForFieldBrowser: TimelineEventsDetailsItem[] | null; +} + +export interface UseHighlightedFieldsResult { + /** + * Highlighted field name (label or if null, falls back to id) + */ + field: string; + description: { + /** + * Highlighted field name (overrideField or if null, falls back to id) + */ + field: string; + /** + * Highlighted field value + */ + values: string[] | null | undefined; + }; +} + +/** + * Returns the highlighted fields to display in the right panel under the Investigation section. + */ +export const useHighlightedFields = ({ + dataFormattedForFieldBrowser, +}: UseHighlightedFieldsParams): UseHighlightedFieldsResult[] => { + if (!dataFormattedForFieldBrowser) return []; + + const eventCategories = getEventCategoriesFromData(dataFormattedForFieldBrowser); + + const eventCodeField = find( + { category: 'event', field: 'event.code' }, + dataFormattedForFieldBrowser + ); + + const eventCode = Array.isArray(eventCodeField?.originalValue) + ? eventCodeField?.originalValue?.[0] + : eventCodeField?.originalValue; + + const eventRuleTypeField = find( + { category: 'kibana', field: ALERT_RULE_TYPE }, + dataFormattedForFieldBrowser + ); + const eventRuleType = Array.isArray(eventRuleTypeField?.originalValue) + ? eventRuleTypeField?.originalValue?.[0] + : eventRuleTypeField?.originalValue; + + const tableFields = getEventFieldsToDisplay({ + eventCategories, + eventCode, + eventRuleType, + }); + + return tableFields.reduce<UseHighlightedFieldsResult[]>((acc, field) => { + const item = dataFormattedForFieldBrowser.find( + (data) => data.field === field.id || (field.legacyId && data.field === field.legacyId) + ); + if (!item || isEmpty(item.values)) { + return acc; + } + + // If we found the data by its legacy id we swap the ids to display the correct one + if (item.field === field.legacyId) { + field.id = field.legacyId; + } + + if ( + field.id === 'agent.id' && + !isAlertFromEndpointEvent({ data: dataFormattedForFieldBrowser }) + ) { + return acc; + } + + return [ + ...acc, + { + field: field.label ?? field.id, + description: { + field: field.overrideField ?? field.id, + values: item.values, + }, + }, + ]; + }, []); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/right/mocks/mock_flyout_context.ts b/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_flyout_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/mocks/mock_flyout_context.ts rename to x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_flyout_context.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts index f73242f036c90..f3fa972785673 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts @@ -269,7 +269,13 @@ describe('policy details: ', () => { }, policy: { value: { - meta: { license: '', cloud: false }, + meta: { + license: '', + cloud: false, + license_uid: '', + cluster_name: '', + cluster_uuid: '', + }, windows: { events: { credential_access: true, diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx index 62f1445529066..471561d6eeb0e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx @@ -472,7 +472,7 @@ describe('StatefulOpenTimeline', () => { false ); - wrapper.find('[data-test-subj="only-favorites-toggle"]').first().simulate('click'); + wrapper.find('button[data-test-subj="only-favorites-toggle"]').first().simulate('click'); expect(wrapper.find('[data-test-subj="open-timeline"]').last().prop('onlyFavorites')).toEqual( true diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx index 3b0f2cc4ad7c0..e7bda4a5b79b9 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx @@ -77,7 +77,7 @@ describe('SearchRow', () => { </ThemeProvider> ); - wrapper.find('[data-test-subj="only-favorites-toggle"]').first().simulate('click'); + wrapper.find('button[data-test-subj="only-favorites-toggle"]').first().simulate('click'); expect(onToggleOnlyFavorites).toHaveBeenCalled(); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index 492bebfb585da..50d4ae02eeb9b 100644 --- a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { KibanaRequest, Logger } from '@kbn/core/server'; +import type { KibanaRequest, Logger, ElasticsearchClient } from '@kbn/core/server'; import type { ExceptionListClient, ListsServerExtensionRegistrar } from '@kbn/lists-plugin/server'; import type { CasesClient, CasesStart } from '@kbn/cases-plugin/server'; import type { SecurityPluginStart } from '@kbn/security-plugin/server'; @@ -68,6 +68,7 @@ export interface EndpointAppContextServiceStartContract { messageSigningService: MessageSigningServiceInterface | undefined; actionCreateService: ActionCreateService | undefined; cloud: CloudSetup; + esClient: ElasticsearchClient; } /** @@ -104,6 +105,7 @@ export class EndpointAppContextService { exceptionListsClient, featureUsageService, endpointMetadataService, + esClient, } = dependencies; registerIngestCallback( @@ -131,7 +133,8 @@ export class EndpointAppContextService { licenseService, featureUsageService, endpointMetadataService, - cloud + cloud, + esClient ) ); diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks.ts index af92a9c237eb4..f38d96cbf7063 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks.ts @@ -42,6 +42,7 @@ import { import { createFleetAuthzMock } from '@kbn/fleet-plugin/common/mocks'; import type { RequestFixtureOptions, RouterMock } from '@kbn/core-http-router-server-mocks'; import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; +import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { casesPluginMock } from '@kbn/cases-plugin/server/mocks'; import { createCasesClientMock } from '@kbn/cases-plugin/server/client/mocks'; import type { VersionedRouteConfig, AddVersionOpts } from '@kbn/core-http-server'; @@ -210,6 +211,7 @@ export const createMockEndpointAppContextServiceStartContract = messageSigningService: createMessageSigningServiceMock(), actionCreateService: undefined, createFleetActionsClient: jest.fn((_) => fleetActionsClientMock), + esClient: elasticsearchClientMock.createElasticsearchClient(), }; }; 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 c415fc287fbec..54258638f1230 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 @@ -66,8 +66,12 @@ describe('ingest_integration tests ', () => { const exceptionListClient: ExceptionListClient = getExceptionListClientMock(); let licenseEmitter: Subject<ILicense>; let licenseService: LicenseService; - const Platinum = licenseMock.createLicense({ license: { type: 'platinum', mode: 'platinum' } }); - const Gold = licenseMock.createLicense({ license: { type: 'gold', mode: 'gold' } }); + const Platinum = licenseMock.createLicense({ + license: { type: 'platinum', mode: 'platinum', uid: 'updated-uid' }, + }); + const Gold = licenseMock.createLicense({ + license: { type: 'gold', mode: 'gold', uid: 'updated-uid' }, + }); const generator = new EndpointDocGenerator(); const cloudService = cloudMock.createSetup(); @@ -97,14 +101,21 @@ describe('ingest_integration tests ', () => { const createNewEndpointPolicyInput = ( manifest: ManifestSchema, license = 'platinum', - cloud = cloudService.isCloudEnabled + cloud = cloudService.isCloudEnabled, + licenseUuid = 'updated-uid', + clusterUuid = '', + clusterName = '' ) => ({ type: 'endpoint', enabled: true, streams: [], config: { integration_config: {}, - policy: { value: disableProtections(policyFactory(license, cloud)) }, + policy: { + value: disableProtections( + policyFactory(license, cloud, licenseUuid, clusterUuid, clusterName) + ), + }, artifact_manifest: { value: manifest }, }, }); @@ -367,7 +378,8 @@ describe('ingest_integration tests ', () => { licenseService, endpointAppContextMock.featureUsageService, endpointAppContextMock.endpointMetadataService, - cloudService + cloudService, + esClient ); const policyConfig = generator.generatePolicyPackagePolicy(); policyConfig.inputs[0]!.config!.policy.value = mockPolicy; @@ -384,7 +396,8 @@ describe('ingest_integration tests ', () => { licenseService, endpointAppContextMock.featureUsageService, endpointAppContextMock.endpointMetadataService, - cloudService + cloudService, + esClient ); const policyConfig = generator.generatePolicyPackagePolicy(); policyConfig.inputs[0]!.config!.policy.value = mockPolicy; @@ -415,7 +428,8 @@ describe('ingest_integration tests ', () => { licenseService, endpointAppContextMock.featureUsageService, endpointAppContextMock.endpointMetadataService, - cloudService + cloudService, + esClient ); const policyConfig = generator.generatePolicyPackagePolicy(); policyConfig.inputs[0]!.config!.policy.value = mockPolicy; @@ -434,6 +448,27 @@ describe('ingest_integration tests ', () => { const soClient = savedObjectsClientMock.create(); const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + const infoResponse = { + cluster_name: 'updated-name', + cluster_uuid: 'updated-uuid', + license_uid: 'updated-uid', + name: 'name', + tagline: 'tagline', + version: { + number: '1.2.3', + lucene_version: '1.2.3', + build_date: 'DateString', + build_flavor: 'string', + build_hash: 'string', + build_snapshot: true, + build_type: 'string', + minimum_index_compatibility_version: '1.2.3', + minimum_wire_compatibility_version: '1.2.3', + }, + }; + + esClient.info.mockResolvedValue(infoResponse); + beforeEach(() => { licenseEmitter.next(Platinum); // set license level to platinum }); @@ -441,18 +476,26 @@ describe('ingest_integration tests ', () => { const mockPolicy = policyFactory(); mockPolicy.meta.cloud = true; // cloud mock will return true mockPolicy.meta.license = 'platinum'; // license is set to emit platinum + mockPolicy.meta.cluster_name = 'updated-name'; + mockPolicy.meta.cluster_uuid = 'updated-uuid'; + mockPolicy.meta.license_uid = 'updated-uid'; const logger = loggingSystemMock.create().get('ingest_integration.test'); const callback = getPackagePolicyUpdateCallback( logger, licenseService, endpointAppContextMock.featureUsageService, endpointAppContextMock.endpointMetadataService, - cloudService + cloudService, + esClient ); const policyConfig = generator.generatePolicyPackagePolicy(); + // values should be updated policyConfig.inputs[0]!.config!.policy.value.meta.cloud = false; policyConfig.inputs[0]!.config!.policy.value.meta.license = 'gold'; + policyConfig.inputs[0]!.config!.policy.value.meta.cluster_name = 'original-name'; + policyConfig.inputs[0]!.config!.policy.value.meta.cluster_uuid = 'original-uuid'; + policyConfig.inputs[0]!.config!.policy.value.meta.license_uid = 'original-uid'; const updatedPolicyConfig = await callback( policyConfig, soClient, @@ -467,18 +510,25 @@ describe('ingest_integration tests ', () => { const mockPolicy = policyFactory(); mockPolicy.meta.cloud = true; // cloud mock will return true mockPolicy.meta.license = 'platinum'; // license is set to emit platinum + mockPolicy.meta.cluster_name = 'updated-name'; + mockPolicy.meta.cluster_uuid = 'updated-uuid'; + mockPolicy.meta.license_uid = 'updated-uid'; const logger = loggingSystemMock.create().get('ingest_integration.test'); const callback = getPackagePolicyUpdateCallback( logger, licenseService, endpointAppContextMock.featureUsageService, endpointAppContextMock.endpointMetadataService, - cloudService + cloudService, + esClient ); const policyConfig = generator.generatePolicyPackagePolicy(); // values should be updated policyConfig.inputs[0]!.config!.policy.value.meta.cloud = true; policyConfig.inputs[0]!.config!.policy.value.meta.license = 'platinum'; + policyConfig.inputs[0]!.config!.policy.value.meta.cluster_name = 'updated-name'; + policyConfig.inputs[0]!.config!.policy.value.meta.cluster_uuid = 'updated-uuid'; + policyConfig.inputs[0]!.config!.policy.value.meta.license_uid = 'updated-uid'; const updatedPolicyConfig = await callback( policyConfig, soClient, diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts index 7e68c63f07593..b897441fe1e04 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { Logger } from '@kbn/core/server'; +import type { Logger, ElasticsearchClient } from '@kbn/core/server'; import type { ExceptionListClient } from '@kbn/lists-plugin/server'; import type { PluginStartContract as AlertsStartContract } from '@kbn/alerting-plugin/server'; import type { @@ -21,6 +21,7 @@ import type { UpdatePackagePolicy, } from '@kbn/fleet-plugin/common'; import type { CloudSetup } from '@kbn/cloud-plugin/server'; +import type { InfoResponse } from '@elastic/elasticsearch/lib/api/types'; import type { NewPolicyData, PolicyConfig } from '../../common/endpoint/types'; import type { LicenseService } from '../../common/license'; import type { ManifestManager } from '../endpoint/services'; @@ -47,11 +48,17 @@ const isEndpointPackagePolicy = <T extends { package?: { name: string } }>( const shouldUpdateMetaValues = ( endpointPackagePolicy: PolicyConfig, currentLicenseType: string, - currentCloudInfo: boolean + currentCloudInfo: boolean, + currentClusterName: string, + currentClusterUUID: string, + currentLicenseUID: string ) => { return ( endpointPackagePolicy.meta.license !== currentLicenseType || - endpointPackagePolicy.meta.cloud !== currentCloudInfo + endpointPackagePolicy.meta.cloud !== currentCloudInfo || + endpointPackagePolicy.meta.cluster_name !== currentClusterName || + endpointPackagePolicy.meta.cluster_uuid !== currentClusterUUID || + endpointPackagePolicy.meta.license_uid !== currentLicenseUID ); }; @@ -126,11 +133,14 @@ export const getPackagePolicyCreateCallback = ( createPolicyArtifactManifest(logger, manifestManager), ]); + const esClientInfo: InfoResponse = await esClient.info(); + // Add the default endpoint security policy const defaultPolicyValue = createDefaultPolicy( licenseService, endpointIntegrationConfig, - cloud + cloud, + esClientInfo ); return { @@ -164,7 +174,8 @@ export const getPackagePolicyUpdateCallback = ( licenseService: LicenseService, featureUsageService: FeatureUsageService, endpointMetadataService: EndpointMetadataService, - cloud: CloudSetup + cloud: CloudSetup, + esClient: ElasticsearchClient ): PutPackagePolicyUpdateCallback => { return async (newPackagePolicy: NewPackagePolicy): Promise<UpdatePackagePolicy> => { if (!isEndpointPackagePolicy(newPackagePolicy)) { @@ -185,16 +196,24 @@ export const getPackagePolicyUpdateCallback = ( const newEndpointPackagePolicy = newPackagePolicy.inputs[0].config?.policy ?.value as PolicyConfig; + const esClientInfo: InfoResponse = await esClient.info(); + if ( newPackagePolicy.inputs[0].config?.policy?.value && shouldUpdateMetaValues( newEndpointPackagePolicy, licenseService.getLicenseType(), - cloud?.isCloudEnabled + cloud?.isCloudEnabled, + esClientInfo.cluster_name, + esClientInfo.cluster_uuid, + licenseService.getLicenseUID() ) ) { newEndpointPackagePolicy.meta.license = licenseService.getLicenseType(); newEndpointPackagePolicy.meta.cloud = cloud?.isCloudEnabled; + newEndpointPackagePolicy.meta.cluster_name = esClientInfo.cluster_name; + newEndpointPackagePolicy.meta.cluster_uuid = esClientInfo.cluster_uuid; + newEndpointPackagePolicy.meta.license_uid = licenseService.getLicenseUID(); newPackagePolicy.inputs[0].config.policy.value = newEndpointPackagePolicy; } diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts b/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts index 58dcd24bdf916..b707199aa4738 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts @@ -13,6 +13,7 @@ import { createDefaultPolicy } from './create_default_policy'; import { ProtectionModes } from '../../../common/endpoint/types'; import type { PolicyConfig } from '../../../common/endpoint/types'; import { policyFactory } from '../../../common/endpoint/models/policy_config'; +import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; import type { AnyPolicyCreateConfig, PolicyCreateCloudConfig, @@ -21,13 +22,20 @@ import type { describe('Create Default Policy tests ', () => { const cloud = cloudMock.createSetup(); - const Platinum = licenseMock.createLicense({ license: { type: 'platinum', mode: 'platinum' } }); - const Gold = licenseMock.createLicense({ license: { type: 'gold', mode: 'gold' } }); + const Platinum = licenseMock.createLicense({ + license: { type: 'platinum', mode: 'platinum', uid: '' }, + }); + const Gold = licenseMock.createLicense({ license: { type: 'gold', mode: 'gold', uid: '' } }); let licenseEmitter: Subject<ILicense>; let licenseService: LicenseService; - const createDefaultPolicyCallback = (config: AnyPolicyCreateConfig | undefined): PolicyConfig => { - return createDefaultPolicy(licenseService, config, cloud); + const createDefaultPolicyCallback = async ( + config: AnyPolicyCreateConfig | undefined + ): Promise<PolicyConfig> => { + const esClientInfo = await elasticsearchServiceMock.createClusterClient().asInternalUser.info(); + esClientInfo.cluster_name = ''; + esClientInfo.cluster_uuid = ''; + return createDefaultPolicy(licenseService, config, cloud, esClientInfo); }; beforeEach(() => { @@ -37,10 +45,10 @@ describe('Create Default Policy tests ', () => { licenseEmitter.next(Platinum); // set license level to platinum }); describe('When no config is set', () => { - it('Should return PolicyConfig for events only when license is at least platinum', () => { + it('Should return PolicyConfig for events only when license is at least platinum', async () => { const defaultPolicy = policyFactory(); - const policy = createDefaultPolicyCallback(undefined); + const policy = await createDefaultPolicyCallback(undefined); // events are the same expect(policy.windows.events).toEqual(defaultPolicy.windows.events); @@ -64,11 +72,11 @@ describe('Create Default Policy tests ', () => { expect(policy.linux.popup.malware.enabled).toBeFalsy(); }); - it('Should return PolicyConfig for events only without paid features when license is below platinum', () => { + it('Should return PolicyConfig for events only without paid features when license is below platinum', async () => { const defaultPolicy = policyFactory(); licenseEmitter.next(Gold); - const policy = createDefaultPolicyCallback(undefined); + const policy = await createDefaultPolicyCallback(undefined); // events are the same expect(policy.windows.events).toEqual(defaultPolicy.windows.events); @@ -128,10 +136,10 @@ describe('Create Default Policy tests ', () => { }); const OSTypes = ['linux', 'mac', 'windows'] as const; - it('Should return PolicyConfig for events only when preset is DataCollection', () => { + it('Should return PolicyConfig for events only when preset is DataCollection', async () => { const defaultPolicy = policyFactory(); const config = createEndpointConfig({ preset: 'DataCollection' }); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); // events are the same expect(policy.windows.events).toEqual(defaultPolicy.windows.events); @@ -155,9 +163,9 @@ describe('Create Default Policy tests ', () => { expect(policy.linux.popup.malware.enabled).toBeFalsy(); }); - it('Should return only process event enabled on policy when preset is NGAV', () => { + it('Should return only process event enabled on policy when preset is NGAV', async () => { const config = createEndpointConfig({ preset: 'NGAV' }); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); const events = defaultEventsDisabled(); OSTypes.forEach((os) => { expect(policy[os].events).toMatchObject({ @@ -166,9 +174,9 @@ describe('Create Default Policy tests ', () => { }); }); }); - it('Should return process, file and network events enabled when preset is EDR Essential', () => { + it('Should return process, file and network events enabled when preset is EDR Essential', async () => { const config = createEndpointConfig({ preset: 'EDREssential' }); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); const events = defaultEventsDisabled(); const enabledEvents = { process: true, @@ -182,9 +190,9 @@ describe('Create Default Policy tests ', () => { }); }); }); - it('Should return the default config when preset is EDR Complete', () => { + it('Should return the default config when preset is EDR Complete', async () => { const config = createEndpointConfig({ preset: 'EDRComplete' }); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); const defaultPolicy = policyFactory(); // update defaultPolicy w/ platinum license & cloud info defaultPolicy.meta.license = 'platinum'; @@ -197,14 +205,14 @@ describe('Create Default Policy tests ', () => { type: 'cloud', }); - it('Session data should be enabled for Linux', () => { + it('Session data should be enabled for Linux', async () => { const config = createCloudConfig(); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); expect(policy.linux.events.session_data).toBe(true); }); - it('Protections should be disabled for all OSs', () => { + it('Protections should be disabled for all OSs', async () => { const config = createCloudConfig(); - const policy = createDefaultPolicyCallback(config); + const policy = await createDefaultPolicyCallback(config); const OSTypes = ['linux', 'mac', 'windows'] as const; OSTypes.forEach((os) => { expect(policy[os].malware.mode).toBe('off'); diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts b/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts index b78a8add376ff..d7c3994c05dc9 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts @@ -6,6 +6,7 @@ */ import type { CloudSetup } from '@kbn/cloud-plugin/server'; +import type { InfoResponse } from '@elastic/elasticsearch/lib/api/types'; import { policyFactory as policyConfigFactory, policyFactoryWithoutPaidFeatures as policyConfigFactoryWithoutPaidFeatures, @@ -27,13 +28,21 @@ import { disableProtections } from '../../../common/endpoint/models/policy_confi export const createDefaultPolicy = ( licenseService: LicenseService, config: AnyPolicyCreateConfig | undefined, - cloud: CloudSetup + cloud: CloudSetup, + esClientInfo: InfoResponse ): PolicyConfig => { const factoryPolicy = policyConfigFactory(); // Add license and cloud information after policy creation factoryPolicy.meta.license = licenseService.getLicenseType(); factoryPolicy.meta.cloud = cloud?.isCloudEnabled; + factoryPolicy.meta.cluster_name = esClientInfo?.cluster_name + ? esClientInfo.cluster_name + : factoryPolicy.meta.cluster_name; + factoryPolicy.meta.cluster_uuid = esClientInfo?.cluster_uuid + ? esClientInfo.cluster_uuid + : factoryPolicy.meta.cluster_uuid; + factoryPolicy.meta.license_uid = licenseService.getLicenseUID(); const defaultPolicyPerType = config?.type === 'cloud' diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index badc35993ab03..278aecdf8ce68 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -525,6 +525,7 @@ export class Plugin implements ISecuritySolutionPlugin { this.endpointContext ), createFleetActionsClient, + esClient: core.elasticsearch.client.asInternalUser, }); this.telemetryReceiver.start( diff --git a/x-pack/plugins/serverless_search/common/doc_links.ts b/x-pack/plugins/serverless_search/common/doc_links.ts index 83e378a02d1f4..1055eb844883f 100644 --- a/x-pack/plugins/serverless_search/common/doc_links.ts +++ b/x-pack/plugins/serverless_search/common/doc_links.ts @@ -13,6 +13,9 @@ class ESDocLinks { public connectors: string = ''; public elasticsearchClients: string = ''; public integrations: string = ''; + public goAdvancedConfig: string = ''; + public goBasicConfig: string = ''; + public goClient: string = ''; public jsApiReference: string = ''; public jsAdvancedConfig: string = ''; public jsBasicConfig: string = ''; @@ -20,6 +23,12 @@ class ESDocLinks { public kibanaRunApiInConsole: string = ''; public logStash: string = ''; public metadata: string = ''; + public phpAdvancedConfig: string = ''; + public phpBasicConfig: string = ''; + public phpClient: string = ''; + public pythonAdvancedConfig: string = ''; + public pythonBasicConfig: string = ''; + public pythonClient: string = ''; public roleDescriptors: string = ''; public rubyAdvancedConfig: string = ''; public rubyBasicConfig: string = ''; @@ -32,12 +41,22 @@ class ESDocLinks { this.apiIntro = newDocLinks.apis.restApis; this.elasticsearchClients = newDocLinks.clients.guide; this.integrations = newDocLinks.serverlessSearch.integrations; + this.goAdvancedConfig = newDocLinks.clients.goConnecting; + this.goBasicConfig = newDocLinks.clients.goGettingStarted; + this.goClient = newDocLinks.clients.goOverview; this.jsAdvancedConfig = newDocLinks.clients.jsAdvancedConfig; this.jsApiReference = newDocLinks.clients.jsApiReference; this.jsBasicConfig = newDocLinks.clients.jsBasicConfig; this.jsClient = newDocLinks.clients.jsIntro; this.kibanaRunApiInConsole = newDocLinks.console.guide; this.metadata = newDocLinks.security.mappingRoles; + this.phpAdvancedConfig = newDocLinks.clients.phpConfiguration; + this.phpBasicConfig = newDocLinks.clients.phpConnecting; + this.phpClient = newDocLinks.clients.phpOverview; + this.phpBasicConfig = newDocLinks.clients.phpConnecting; + this.pythonAdvancedConfig = newDocLinks.clients.pythonConfig; + this.pythonBasicConfig = newDocLinks.clients.pythonConnecting; + this.pythonClient = newDocLinks.clients.pythonOverview; this.roleDescriptors = newDocLinks.security.mappingRoles; this.rubyAdvancedConfig = newDocLinks.clients.rubyAdvancedConfig; this.rubyBasicConfig = newDocLinks.clients.rubyBasicConfig; diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/go.ts b/x-pack/plugins/serverless_search/public/application/components/languages/go.ts new file mode 100644 index 0000000000000..f7cd2b3ac2cdc --- /dev/null +++ b/x-pack/plugins/serverless_search/public/application/components/languages/go.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 { i18n } from '@kbn/i18n'; +import { docLinks } from '../../../../common/doc_links'; +import { LanguageDefinition, Languages } from './types'; + +export const goDefinition: LanguageDefinition = { + advancedConfig: docLinks.goAdvancedConfig, + basicConfig: docLinks.goBasicConfig, + buildSearchQuery: `searchResp, err := es.Search(). + Index("books"). + Q("snow"). + Do(context.Background()) + +fmt.Println(searchResp, err)`, + configureClient: ({ url, apiKey }) => `import ( + "context" + "fmt" + "log" + "strings" + + "github.com/elastic/elasticsearch-serverless-go" +) + +func main() { + cfg := elasticsearch.Config{ + Address: "${url}", + APIKey: "${apiKey}", + } + es, err := elasticsearch.NewClient(cfg) + if err != nil { + log.Fatalf("Error creating the client: %s", err) + } +}`, + docLink: docLinks.goClient, + iconType: 'go.svg', + id: Languages.GO, + ingestData: `ingestResult, err := es.Bulk(). + Index("books"). + Raw(strings.NewReader(\` +{"index":{"_id":"9780553351927"}} +{"name":"Snow Crash","author":"Neal Stephenson","release_date":"1992-06-01","page_count": 470} +{ "index": { "_id": "9780441017225"}} +{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585} +{ "index": { "_id": "9780451524935"}} +{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328} +{ "index": { "_id": "9781451673319"}} +{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227} +{ "index": { "_id": "9780060850524"}} +{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} +{ "index": { "_id": "9780385490818"}} +{"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}\n\`)). + Do(context.Background()) + +fmt.Println(ingestResult, err)`, + ingestDataIndex: ({ apiKey, url, indexName }) => `import ( + "context" + "fmt" + "log" + "strings" + + "github.com/elastic/elasticsearch-serverless-go" +) + +func main() { + cfg := elasticsearch.Config{ + Address: "${url}", + APIKey: "${apiKey}", + } + es, err := elasticsearch.NewClient(cfg) + if err != nil { + log.Fatalf("Error creating the client: %s", err) + } + res, err := es.Bulk(). + Index("${indexName}"). + Raw(strings.NewReader(\` +{ "index": { "_id": "1"}} +{"name": "foo", "title": "bar"}\n\`)). + Do(context.Background()) + + fmt.Println(res, err) +}`, + installClient: 'go get -u github.com/elastic/elasticsearch-serverless-go@latest', + name: i18n.translate('xpack.serverlessSearch.languages.go', { + defaultMessage: 'Go', + }), + testConnection: `infores, err := es.Info().Do(context.Background()) +if err != nil { + log.Fatalf("Error getting response: %s", err) +} + +fmt.Println(infores)`, +}; 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 9a3978081e404..d2ed8c016df85 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 @@ -85,7 +85,7 @@ console.log(result); `, installClient: 'npm install @elastic/elasticsearch@8', name: i18n.translate('xpack.serverlessSearch.languages.javascript', { - defaultMessage: 'JavaScript / Node.js', + defaultMessage: 'JavaScript', }), testConnection: `const resp = await client.info(); diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/languages.ts b/x-pack/plugins/serverless_search/public/application/components/languages/languages.ts index 8d5028641e308..38b7cf2beacb0 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/languages.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/languages.ts @@ -6,13 +6,19 @@ */ import { curlDefinition } from './curl'; +import { goDefinition } from './go'; import { javascriptDefinition } from './javascript'; +import { phpDefinition } from './php'; +import { pythonDefinition } from './python'; import { rubyDefinition } from './ruby'; import { Languages, LanguageDefinition } from './types'; const languageDefinitionRecords: Partial<Record<Languages, LanguageDefinition>> = { [Languages.CURL]: curlDefinition, + [Languages.PYTHON]: pythonDefinition, [Languages.JAVASCRIPT]: javascriptDefinition, + [Languages.PHP]: phpDefinition, + [Languages.GO]: goDefinition, [Languages.RUBY]: rubyDefinition, }; diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/php.ts b/x-pack/plugins/serverless_search/public/application/components/languages/php.ts new file mode 100644 index 0000000000000..5e6824dc174b2 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/application/components/languages/php.ts @@ -0,0 +1,143 @@ +/* + * Copyright 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 { docLinks } from '../../../../common/doc_links'; +import { INDEX_NAME_PLACEHOLDER } from '../../constants'; +import { LanguageDefinition, Languages } from './types'; + +export const phpDefinition: LanguageDefinition = { + advancedConfig: docLinks.phpAdvancedConfig, + basicConfig: docLinks.phpBasicConfig, + buildSearchQuery: `$params = [ + 'index' => 'books', + 'body' => [ + 'q' => 'snow' + ] +]; + +$response = $client->search($params); +print_r($response->asArray());`, + configureClient: ({ url, apiKey }) => `$client = ClientBuilder::create() + ->setHosts(['${url}']) + ->setApiKey('${apiKey}') + ->build();`, + docLink: docLinks.phpClient, + iconType: 'php.svg', + id: Languages.PHP, + ingestData: `$params = [ +'body' => [ +[ +'index' => [ +'_index' => 'books', +'_id' => '9780553351927', +], +], +[ +'name' => 'Snow Crash', +'author' => 'Neal Stephenson', +'release_date' => '1992-06-01', +'page_count' => 470, +], +[ +'index' => [ +'_index' => 'books', +'_id' => '9780441017225', +], +], +[ +'name' => 'Revelation Space', +'author' => 'Alastair Reynolds', +'release_date' => '2000-03-15', +'page_count' => 585, +], +[ +'index' => [ +'_index' => 'books', +'_id' => '9780451524935', +], +], +[ +'name' => '1984', +'author' => 'George Orwell', +'release_date' => '1985-06-01', +'page_count' => 328, +], +[ +'index' => [ +'_index' => 'books', +'_id' => '9781451673319', +], +], +[ +'name' => 'Fahrenheit 451', +'author' => 'Ray Bradbury', +'release_date' => '1953-10-15', +'page_count' => 227, +], +[ +'index' => [ +'_index' => 'books', +'_id' => '9780060850524', +], +], +[ +'name' => 'Brave New World', +'author' => 'Aldous Huxley', +'release_date' => '1932-06-01', +'page_count' => 268, +], +[ +'index' => [ +'_index' => 'books', +'_id' => '9780385490818', +], +], +[ +'name' => 'The Handmaid\'s Tale', +'author' => 'Margaret Atwood', +'release_date' => '1985-06-01', +'page_count' => 311, +], +], +]; + +$response = $client->bulk($params); +echo $response->getStatusCode(); +echo (string) $response->getBody();`, + ingestDataIndex: ({ apiKey, url, indexName }) => `$client = ClientBuilder::create() + ->setHosts(['${url}']) + ->setApiKey('${apiKey}') + ->build(); + +$params = [ +'body' => [ +[ +'index' => [ +'_index' => '${indexName ?? INDEX_NAME_PLACEHOLDER}', +'_id' => '1', +], +], +[ +'name' => 'foo', +'title' => 'bar', +], +], +]; + +$response = $client->bulk($params); +echo $response->getStatusCode(); +echo (string) $response->getBody(); +`, + installClient: 'composer require elasticsearch/elasticsearch', + name: i18n.translate('xpack.serverlessSearch.languages.php', { + defaultMessage: 'PHP', + }), + testConnection: `$response = $client->info(); +echo $response->getStatusCode(); +echo (string) $response->getBody();`, +}; diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/python.ts b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts new file mode 100644 index 0000000000000..9f5031a0993ca --- /dev/null +++ b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts @@ -0,0 +1,65 @@ +/* + * Copyright 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 { docLinks } from '../../../../common/doc_links'; +import { LanguageDefinition, Languages } from './types'; +import { INDEX_NAME_PLACEHOLDER } from '../../constants'; + +export const pythonDefinition: LanguageDefinition = { + advancedConfig: docLinks.pythonAdvancedConfig, + basicConfig: docLinks.pythonBasicConfig, + buildSearchQuery: `client.search(index="books", q="snow")`, + configureClient: ({ url, apiKey }) => `from elasticsearch import Elasticsearch + +client = Elasticsearch( + "${url}", + api_key="${apiKey}" +)`, + docLink: docLinks.pythonClient, + iconType: 'python.svg', + id: Languages.PYTHON, + ingestData: `documents = [ + { "index": { "_index": "books", "_id": "9780553351927"}}, + {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}, + { "index": { "_index": "books", "_id": "9780441017225"}}, + {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}, + { "index": { "_index": "books", "_id": "9780451524935"}}, + {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}, + { "index": { "_index": "books", "_id": "9781451673319"}}, + {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}, + { "index": { "_index": "books", "_id": "9780060850524"}}, + {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}, + { "index": { "_index": "books", "_id": "9780385490818"}}, + {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}, +] + +client.bulk(operations=documents)`, + ingestDataIndex: ({ apiKey, url, indexName }) => `from elasticsearch import Elasticsearch + +client = Elasticsearch( + "${url}", + api_key="${apiKey}" +) + +documents = [ + {"index": {"_index": "${indexName ?? INDEX_NAME_PLACEHOLDER}"}}, + {"name": "foo", "title": "bar"}, +] + +client.bulk(operations=documents) +`, + installClient: `python -m pip install elasticsearch + +# If your application uses async/await in Python you can install with the async extra +# python -m pip install elasticsearch[async] + `, + name: i18n.translate('xpack.serverlessSearch.languages.python', { + defaultMessage: 'Python', + }), + testConnection: `client.info()`, +}; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 10deeb381fe87..25df36482bf41 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -13596,7 +13596,6 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "Sélectionnez un champ existant ou tapez un nom de champ.", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "Sélectionner un champ de schéma", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "Champ source", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.defaultValue": "Ceci est créé automatiquement", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "Ce nom est créé automatiquement en fonction de votre champ source.", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "Champ cible (facultatif)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "Champ cible", @@ -33508,7 +33507,6 @@ "xpack.securitySolution.flyout.documentDetails.technicalPreviewTitle": "Version d'évaluation technique", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceButton": "Threat Intelligence", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceTitle": "Threat Intelligence", - "xpack.securitySolution.flyout.documentDetails.viewRuleText": "Afficher la règle", "xpack.securitySolution.flyout.documentDetails.visualizationsTitle": "Visualisations", "xpack.securitySolution.flyout.documentDetails.visualizeOptions": "Options Visualize", "xpack.securitySolution.flyout.documentDetails.visualizeTab": "Visualiser", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 91c12ea264847..82e0aa106bc3c 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -13610,7 +13610,6 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "既存のフィールドを選択するか、フィールド名を入力してください。", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "スキーマフィールドを選択", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "ソースフィールド", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.defaultValue": "これは自動的に作成されます", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "この名前は、ソースフィールドに基づいて自動的に作成されます。", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "ターゲットフィールド(任意)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "ターゲットフィールド", @@ -33507,7 +33506,6 @@ "xpack.securitySolution.flyout.documentDetails.technicalPreviewTitle": "テクニカルプレビュー", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceButton": "脅威インテリジェンス", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceTitle": "脅威インテリジェンス", - "xpack.securitySolution.flyout.documentDetails.viewRuleText": "ルールを表示", "xpack.securitySolution.flyout.documentDetails.visualizationsTitle": "ビジュアライゼーション", "xpack.securitySolution.flyout.documentDetails.visualizeOptions": "Visualizeオプション", "xpack.securitySolution.flyout.documentDetails.visualizeTab": "可視化", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ad863e29342aa..9ee3362111e9e 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -13609,7 +13609,6 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "选择现有字段或键入字段名称。", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "选择架构字段", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "源字段", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.defaultValue": "这是自动创建的内容", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "此名称基于您的源字段自动创建。", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "目标字段(可选)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "目标字段", @@ -33502,7 +33501,6 @@ "xpack.securitySolution.flyout.documentDetails.technicalPreviewTitle": "技术预览", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceButton": "威胁情报", "xpack.securitySolution.flyout.documentDetails.threatIntelligenceTitle": "威胁情报", - "xpack.securitySolution.flyout.documentDetails.viewRuleText": "查看规则", "xpack.securitySolution.flyout.documentDetails.visualizationsTitle": "可视化", "xpack.securitySolution.flyout.documentDetails.visualizeOptions": "Visualize 选项", "xpack.securitySolution.flyout.documentDetails.visualizeTab": "Visualize", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/event_log/event_log_list_status_filter.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/event_log/event_log_list_status_filter.test.tsx index d3e8b38a8a557..df1cb6b7a1e2c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/event_log/event_log_list_status_filter.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/common/components/event_log/event_log_list_status_filter.test.tsx @@ -42,7 +42,7 @@ describe('event_log_list_status_filter', () => { <EventLogListStatusFilter selectedOptions={[]} onChange={onChangeMock} /> ); - wrapper.find(EuiFilterButton).simulate('click'); + wrapper.find(EuiFilterButton).find('button').simulate('click'); const statusItems = wrapper.find(EuiFilterSelectItem); expect(statusItems.length).toEqual(4); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx index 27eddb21177cd..7221736830917 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_filter.test.tsx @@ -35,7 +35,7 @@ describe('RuleStatusFilter', () => { expect(wrapper.find('[data-test-subj="ruleStateFilterSelect"]').exists()).toBeFalsy(); - wrapper.find(EuiFilterButton).simulate('click'); + wrapper.find(EuiFilterButton).find('button').simulate('click'); const statusItems = wrapper.find(EuiSelectableListItem); expect(statusItems.length).toEqual(3); @@ -46,7 +46,7 @@ describe('RuleStatusFilter', () => { <RuleStatusFilter selectedStatuses={[]} onChange={onChangeMock} /> ); - wrapper.find(EuiFilterButton).simulate('click'); + wrapper.find(EuiFilterButton).find('button').simulate('click'); wrapper.find(EuiSelectableListItem).at(0).simulate('click'); expect(onChangeMock).toHaveBeenCalledWith(['enabled']); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/es_deprecations.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/es_deprecations.helpers.ts index e6e87087ed55d..87f022fc4f47b 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/es_deprecations.helpers.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecations/es_deprecations.helpers.ts @@ -56,7 +56,7 @@ const createActions = (testBed: TestBed) => { // EUI doesn't support data-test-subj's on the filter buttons, so we must access via CSS selector find('searchBarContainer') .find('.euiPopover') - .find('.euiFilterButton') + .find('button.euiFilterButton') .at(index) .simulate('click'); }); @@ -75,7 +75,7 @@ const createActions = (testBed: TestBed) => { clickCriticalFilterButton: async () => { await act(async () => { // EUI doesn't support data-test-subj's on the filter buttons, so we must access via CSS selector - find('searchBarContainer').find('.euiFilterButton').at(0).simulate('click'); + find('searchBarContainer').find('button.euiFilterButton').at(0).simulate('click'); }); component.update(); diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana_deprecations/kibana_deprecations.helpers.ts b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana_deprecations/kibana_deprecations.helpers.ts index 8899212ca341c..adf24716ca932 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana_deprecations/kibana_deprecations.helpers.ts +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/kibana_deprecations/kibana_deprecations.helpers.ts @@ -64,7 +64,7 @@ const createActions = (testBed: TestBed) => { find('kibanaDeprecations') .find('.euiSearchBar__filtersHolder') .find('.euiPopover') - .find('.euiFilterButton') + .find('button.euiFilterButton') .at(0) .simulate('click'); }); @@ -77,7 +77,7 @@ const createActions = (testBed: TestBed) => { // EUI doesn't support data-test-subj's on the filter buttons, so we must access via CSS selector find('kibanaDeprecations') .find('.euiSearchBar__filtersHolder') - .find('.euiFilterButton') + .find('button.euiFilterButton') .at(0) .simulate('click'); }); diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap index f71c1d6885b99..e0aaefdf9d549 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap @@ -2,18 +2,18 @@ exports[`FilterStatusButton renders without errors for valid props 1`] = ` <button - class="euiButtonEmpty euiFilterButton euiFilterButton-hasActiveFilters euiFilterButton--withNext emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text" + class="euiButtonEmpty euiFilterButton euiFilterButton-hasActiveFilters emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiFilterButton-withNext-hasActiveFilters" data-test-subj="foo" type="button" > <span - class="euiButtonEmpty__content emotion-euiButtonDisplayContent" + class="euiButtonEmpty__content emotion-euiButtonDisplayContent-euiFilterButton__content" > <span - class="eui-textTruncate euiButtonEmpty__text" + class="eui-textTruncate euiButtonEmpty__text euiFilterButton__text emotion-euiFilterButton__text" > <span - class="euiFilterButton__textShift" + class="euiFilterButton__textShift emotion-euiFilterButton__textShift" data-text="Up" title="Up" > diff --git a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap index 094a4a4771d3b..7048df79a12d3 100644 --- a/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap +++ b/x-pack/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap @@ -2,21 +2,21 @@ exports[`StatusFilterComponent renders without errors for valid props 1`] = ` <div - class="euiFilterGroup" + class="euiFilterGroup emotion-euiFilterGroup-uncompressed" > <button - class="euiButtonEmpty euiFilterButton euiFilterButton-hasActiveFilters euiFilterButton--withNext emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text" + class="euiButtonEmpty euiFilterButton euiFilterButton-hasActiveFilters emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiFilterButton-withNext-hasActiveFilters" data-test-subj="xpack.synthetics.filterBar.filterStatusAll" type="button" > <span - class="euiButtonEmpty__content emotion-euiButtonDisplayContent" + class="euiButtonEmpty__content emotion-euiButtonDisplayContent-euiFilterButton__content" > <span - class="eui-textTruncate euiButtonEmpty__text" + class="eui-textTruncate euiButtonEmpty__text euiFilterButton__text emotion-euiFilterButton__text" > <span - class="euiFilterButton__textShift" + class="euiFilterButton__textShift emotion-euiFilterButton__textShift" data-text="All" title="All" > @@ -26,18 +26,18 @@ exports[`StatusFilterComponent renders without errors for valid props 1`] = ` </span> </button> <button - class="euiButtonEmpty euiFilterButton euiFilterButton--withNext emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text" + class="euiButtonEmpty euiFilterButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiFilterButton-withNext" data-test-subj="xpack.synthetics.filterBar.filterStatusUp" type="button" > <span - class="euiButtonEmpty__content emotion-euiButtonDisplayContent" + class="euiButtonEmpty__content emotion-euiButtonDisplayContent-euiFilterButton__content" > <span - class="eui-textTruncate euiButtonEmpty__text" + class="eui-textTruncate euiButtonEmpty__text euiFilterButton__text emotion-euiFilterButton__text" > <span - class="euiFilterButton__textShift" + class="euiFilterButton__textShift emotion-euiFilterButton__textShift" data-text="Up" title="Up" > @@ -47,18 +47,18 @@ exports[`StatusFilterComponent renders without errors for valid props 1`] = ` </span> </button> <button - class="euiButtonEmpty euiFilterButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text" + class="euiButtonEmpty euiFilterButton emotion-euiButtonDisplay-euiButtonEmpty-m-empty-text-euiFilterButton" data-test-subj="xpack.synthetics.filterBar.filterStatusDown" type="button" > <span - class="euiButtonEmpty__content emotion-euiButtonDisplayContent" + class="euiButtonEmpty__content emotion-euiButtonDisplayContent-euiFilterButton__content" > <span - class="eui-textTruncate euiButtonEmpty__text" + class="eui-textTruncate euiButtonEmpty__text euiFilterButton__text emotion-euiFilterButton__text" > <span - class="euiFilterButton__textShift" + class="euiFilterButton__textShift emotion-euiFilterButton__textShift" data-text="Down" title="Down" > diff --git a/x-pack/test/accessibility/apps/security_solution.ts b/x-pack/test/accessibility/apps/security_solution.ts index ef930f093eb4a..ba7d22fd2d39d 100644 --- a/x-pack/test/accessibility/apps/security_solution.ts +++ b/x-pack/test/accessibility/apps/security_solution.ts @@ -14,8 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const toasts = getService('toasts'); const testSubjects = getService('testSubjects'); - // FLAKY: https://github.com/elastic/kibana/issues/95707 - describe.skip('Security Solution Accessibility', () => { + describe('Security Solution Accessibility', () => { before(async () => { await security.testUser.setRoles(['superuser'], { skipBrowserRefresh: true }); await common.navigateToApp('security'); 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 922963a5fa2e3..598678359dd8a 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 @@ -522,7 +522,7 @@ export default function ({ getService }: FtrProviderContext) { pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` ); - expect(packagePolicy.package.version).eql('1.0.1'); + expect(packagePolicy.package.version).eql('1.0.3'); await supertestAPI.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); const policyResponseAfterUpgrade = await supertestAPI.get( @@ -532,7 +532,7 @@ export default function ({ getService }: FtrProviderContext) { (pkgPolicy: PackagePolicy) => pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` ); - expect(semver.gte(packagePolicyAfterUpgrade.package.version, '1.0.1')).eql(true); + expect(semver.gte(packagePolicyAfterUpgrade.package.version, '1.0.3')).eql(true); } finally { await supertestAPI .delete(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) 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 b14fd9320f57d..f5db2f6a230c1 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 @@ -29,7 +29,7 @@ export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => { version: 'WzE2MjYsMV0=', name: 'test-monitor-name-Test private location 0-default', namespace: namespace ?? 'testnamespace', - package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.1' }, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.3' }, enabled: true, policy_id: '5347cd10-0368-11ed-8df7-a7424c6f5167', inputs: [ @@ -72,6 +72,7 @@ export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => { origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -109,6 +110,8 @@ export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => { origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, + test_run_id: { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -175,9 +178,11 @@ export const getHttpInput = ({ id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -238,9 +243,11 @@ export const getHttpInput = ({ id: { value: JSON.stringify(id), type: 'text' }, config_id: { value: id, type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { value: projectId ? 'project' : 'ui', type: 'text' }, 'monitor.project.id': { type: 'text', value: projectId ?? null }, 'monitor.project.name': { type: 'text', value: projectId ?? null }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text', value: 'any' }, @@ -423,9 +430,11 @@ export const getBrowserInput = ({ id, params, isBrowser, projectId }: PolicyProp id: { value: id, type: 'text' }, config_id: { value: id, type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { value: 'ui', type: 'text' }, 'monitor.project.id': { value: projectId ?? null, type: 'text' }, 'monitor.project.name': { value: projectId ?? null, type: 'text' }, + 'monitor.id': { type: 'text' }, } : { __ui: { type: 'yaml' }, @@ -462,9 +471,11 @@ export const getBrowserInput = ({ id, params, isBrowser, projectId }: PolicyProp id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, }; return { 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 e9763c6426582..0f908b05b57fa 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 @@ -37,7 +37,7 @@ export const getTestProjectSyntheticsPolicyLightweight = ( version: 'WzEzMDksMV0=', name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-Test private location 0`, namespace: 'default', - package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.1' }, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.3' }, enabled: true, policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', inputs: [ @@ -130,6 +130,7 @@ export const getTestProjectSyntheticsPolicyLightweight = ( type: 'text', value: 'any', }, + test_run_id: { type: 'text' }, 'monitor.project.id': { type: 'text', value: JSON.stringify(projectId), @@ -138,6 +139,9 @@ export const getTestProjectSyntheticsPolicyLightweight = ( type: 'text', value: JSON.stringify(projectId), }, + 'monitor.id': { + type: 'text', + }, name: { type: 'text', value: JSON.stringify(name), @@ -317,9 +321,11 @@ export const getTestProjectSyntheticsPolicyLightweight = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -355,9 +361,11 @@ export const getTestProjectSyntheticsPolicyLightweight = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -427,9 +435,11 @@ export const getTestProjectSyntheticsPolicyLightweight = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ...inputs, }, id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, @@ -532,7 +542,7 @@ export const getTestProjectSyntheticsPolicy = ( version: 'WzEzMDksMV0=', name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-Test private location 0`, namespace: 'default', - package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.1' }, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: '1.0.3' }, enabled: true, policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', inputs: [ @@ -584,9 +594,11 @@ export const getTestProjectSyntheticsPolicy = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -630,9 +642,11 @@ export const getTestProjectSyntheticsPolicy = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -667,9 +681,11 @@ export const getTestProjectSyntheticsPolicy = ( id: { type: 'text' }, config_id: { type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { type: 'text' }, 'monitor.project.id': { type: 'text' }, 'monitor.project.name': { type: 'text' }, + 'monitor.id': { type: 'text' }, ipv4: { type: 'bool', value: true }, ipv6: { type: 'bool', value: true }, mode: { type: 'text' }, @@ -746,9 +762,11 @@ export const getTestProjectSyntheticsPolicy = ( id: { value: id, type: 'text' }, config_id: { value: configId, type: 'text' }, run_once: { value: false, type: 'bool' }, + test_run_id: { type: 'text' }, origin: { value: 'project', type: 'text' }, 'monitor.project.id': { value: JSON.stringify(projectId), type: 'text' }, 'monitor.project.name': { value: JSON.stringify(projectId), type: 'text' }, + 'monitor.id': { type: 'text' }, ...inputs, }, id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, 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 bfa3c2bbd3dfd..5ad234bcb804e 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 @@ -22,12 +22,12 @@ export class PrivateLocationTestService { async installSyntheticsPackage() { await this.supertest.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); const response = await this.supertest - .get('/api/fleet/epm/packages/synthetics/1.0.1') + .get('/api/fleet/epm/packages/synthetics/1.0.3') .set('kbn-xsrf', 'true') .expect(200); if (response.body.item.status !== 'installed') { await this.supertest - .post('/api/fleet/epm/packages/synthetics/1.0.1') + .post('/api/fleet/epm/packages/synthetics/1.0.3') .set('kbn-xsrf', 'true') .send({ force: true }) .expect(200); diff --git a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts index d38f4830ee538..e8182d97e0fee 100644 --- a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts +++ b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts @@ -21,8 +21,7 @@ import { PrivateLocationTestService } from './services/private_location_test_ser import { comparePolicies, getTestSyntheticsPolicy } from './sample_data/test_policy'; export default function ({ getService }: FtrProviderContext) { - // Failing: See https://github.com/elastic/kibana/issues/162594 - describe.skip('SyncGlobalParams', function () { + describe('SyncGlobalParams', function () { this.tags('skipCloud'); const supertestAPI = getService('supertest'); const kServer = getService('kibanaServer'); diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts index 1e34a577f34a7..77cae02f3cfcb 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/results_view_content.ts @@ -268,8 +268,7 @@ export default function ({ getService }: FtrProviderContext) { }); for (const testData of testDataList) { - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/162427 - describe.skip(`${testData.suiteTitle}`, function () { + describe(`${testData.suiteTitle}`, function () { before(async () => { await ml.navigation.navigateToMl(); await ml.navigation.navigateToDataFrameAnalytics(); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts index cc8a8a751bcb0..4acb5cb73fb04 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts @@ -635,12 +635,20 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('filter activity', () => { createOneCaseBeforeDeleteAllAfter(getPageObject, getService); + it('filters by all by default', async () => { + const allBadge = await find.byCssSelector( + '[data-test-subj="user-actions-filter-activity-button-all"] span.euiNotificationBadge' + ); + + expect(await allBadge.getAttribute('aria-label')).equal('1 active filters'); + }); + it('filters by comment successfully', async () => { const commentBadge = await find.byCssSelector( '[data-test-subj="user-actions-filter-activity-button-comments"] span.euiNotificationBadge' ); - expect(await commentBadge.getVisibleText()).equal('0'); + expect(await commentBadge.getAttribute('aria-label')).equal('0 available filters'); const commentArea = await find.byCssSelector( '[data-test-subj="add-comment"] textarea.euiMarkdownEditorTextArea' @@ -651,7 +659,9 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await header.waitUntilLoadingHasFinished(); - expect(await commentBadge.getVisibleText()).equal('1'); + await testSubjects.click('user-actions-filter-activity-button-comments'); + + expect(await commentBadge.getAttribute('aria-label')).equal('1 active filters'); }); it('filters by history successfully', async () => { @@ -659,7 +669,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { '[data-test-subj="user-actions-filter-activity-button-history"] span.euiNotificationBadge' ); - expect(await historyBadge.getVisibleText()).equal('1'); + expect(await historyBadge.getAttribute('aria-label')).equal('1 available filters'); await cases.common.selectSeverity(CaseSeverity.MEDIUM); @@ -669,7 +679,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await testSubjects.click('user-actions-filter-activity-button-history'); - expect(await historyBadge.getVisibleText()).equal('3'); + expect(await historyBadge.getAttribute('aria-label')).equal('3 active filters'); }); it('sorts by newest first successfully', async () => { diff --git a/x-pack/test/security_solution_ftr/page_objects/detections/index.ts b/x-pack/test/security_solution_ftr/page_objects/detections/index.ts index 9d5abd2631be1..a8ff43a8e06bf 100644 --- a/x-pack/test/security_solution_ftr/page_objects/detections/index.ts +++ b/x-pack/test/security_solution_ftr/page_objects/detections/index.ts @@ -121,7 +121,7 @@ export class DetectionsPageObject extends FtrService { async preview(): Promise<void> { await this.common.clickAndValidate( - 'queryPreviewButton', + 'previewSubmitButton', 'queryPreviewCustomHistogram', undefined, 500 diff --git a/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts b/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts index b434edcef44d8..01d1c1b147aa8 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts @@ -40,9 +40,9 @@ export default function ({ getService }: FtrProviderContext) { it('redirect endpoint response contains default security headers', async () => { const { header } = await supertest - .get(`/login`) + .get(`/logout`) .set(svlCommonApi.getInternalRequestHeader()) - .expect(302); + .expect(200); expect(header).toBeDefined(); expect(header['content-security-policy']).toEqual(defaultCSP); diff --git a/yarn.lock b/yarn.lock index 3dfd4bedfdf25..ee25f0572f1dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1552,10 +1552,10 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@84.0.0": - version "84.0.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-84.0.0.tgz#0d37da1fe3f2f9af54b62e127c9682d381111ba6" - integrity sha512-hgDWyXwlhpbNzQgIvGLppqSRMEVt2zMlXIxMzvlV6PYPJUh1K9f5pOyXtNyouFgYZG2bkltvG3cUrMLeBbgUkg== +"@elastic/eui@85.0.1": + version "85.0.1" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-85.0.1.tgz#835b77f20670918d0f30ccfa47f0f94cb1fdc9e8" + integrity sha512-OZ8XClOdiRTyhAcipaw3wGgA8HogNqNESJZ8jqUTGbVxN+hsLjAA64rKcqkTndid+7mbxV3+UePieRVnOkzMEg== dependencies: "@types/chroma-js" "^2.0.0" "@types/lodash" "^4.14.194"